后来屡次测试: python
>>> a=1 if x==0 else b=1
File "<stdin>", line 1
SyntaxError: can't assign to conditional expression
>>> a if x==0 else b=1
File "<stdin>", line 1
SyntaxError: can't assign to conditional expression
>>> c = a if x==0 else b
>>> express
在stack overflow找到了相似问题,http://stackoverflow.com/questions/14474168/using-statements-on-either-side-of-a-python-ternary-conditional ide
怪我基础不扎实。还有expression和statement是什么?expression是表达式,就是加减乘除等各类运算符号联接起来 的式子
,statement是语句,如if语句,while,复制语句等。 函数
好了,这个问题弄明白了。 测试
第一个错误在expression中包含了statement,语法错误。第二个和第三个错误是由于三木运算是expression只能做为左值,这也说明了四是正确的。 spa
在c中if(a--) 能正确执行,而python中if a-=1会报错,这也说明了python与c的不一样。 string
python中还有两个函数exec和eval,这两个函数的参数都是str,但exec执行statement,而eval执行expression。 it
>>> exec('a=1')
>>> exec('a==1')
>>> eval('a=1')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
a=1
^
SyntaxError: invalid syntax
>>> eval('a==1')
True
>>> io
eval就只能执行expression了,有返回值。 ast
expression有返回值,statement没有返回值。
记住此次的教训,基础的东西不可忽视,最基础的东西可能就是之后项目中最难以解决的bug!