3.7之前版本的python压根不认识:=
这个运算符,这也就意味着,在解释器编译成pyc的过程中就会直接发生SyntaxError
,因此下面这种写法在老版本中还是会报错:
try:
var = <带赋值运算符的表达式>
except SyntaxError:
var = <等效的不带赋值运算符的表达式>
因为报SyntaxError
的时候这段代码甚至还没执行
解决方式是套eval:
try:
var = eval(r'<带赋值运算符的表达式>')
except SyntaxError:
var = <等效的不带赋值运算符的表达式>
有人说,eval危险啊!但是它危险的原因是能动态执行,这里它执行的就是静态的字符串,所以没那种危险。