EDA365电子工程师网
标题:
命令list与撇号的区别问题
[打印本页]
作者:
l888888h
时间:
2014-5-26 11:51
标题:
命令list与撇号的区别问题
使用撇号创建list
a='((1 2) (3 4) 5 6)
结果
((1 2)
(3 4) 5 6
)
使用命令list来创建
a=list((1 2) (3 4) 5 6)
结果
E- *Error* eval: not a function - 1
ERROR
为什么使用撇号可以直接的创建?
作者:
yneda
时间:
2014-5-27 10:14
本帖最后由 yneda 于 2014-5-27 10:16 编辑
从字面上理解,()前面要一个函数名,语法错误? 比如list或带反回值的函数,改成这样是可以的:
a = list(list(1 2) list(3 4) 5 6)
=>((1 2) (3 4) 5 6)
查了别人写的资料,有说当有字符出现的时候,用list创建的话,前面要加’
比如:
a = "abc"
list(a)=>("abc")
这里a是一个变量
list('a)=>(a) 等同与 '(a)=>(a)
这里a是一个字符
至于两者的区别,还不是很明白,望有会的人讲解下。
作者:
l888888h
时间:
2014-5-27 10:45
撇号 在 skill language user guide 内的第二章“skill 中的特殊符号”一章中的解释是“引用表达式而不是其值”
用在变量前时还好理解
Skill > a=1
1
Skill > b='a
a
Skill > b
a
Skill > a
1
Skill > eval(b)
1
但是用于创建list时就不是很理解了
作者:
deargds
时间:
2014-5-29 21:29
l888888h 发表于 2014-5-27 10:45
撇号 在 skill language user guide 内的第二章“skill 中的特殊符号”一章中的解释是“引用表达式而不是其 ...
可以这样理解,'创建list时,是直接引用数值,例如'((1 2) (3 4) 5 6),其中的(1 2)在Skill中就是表示一个List实体
[attach]84477[/attach]
使用List来创建时,会对元素进行eval求值,如你所写
a=list((1 2) (3 4) 5 6)
其中对(1 2)会进行eval求值操作,而(1 2)仅表示一个list实体,没办法进行eval求值,你可以试下以下代码,会有同样错误产生
[attach]84478[/attach]
欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/)
Powered by Discuz! X3.2