为什么python(3.7.9(允许这种语法?
a = 3
b = a*+2
它觉得这很烦人,因为如果你想打字b = a**2
它可以很快发生在你写的德语键盘布局b = a*+2
上。在没有sytnax错误的情况下,查找这样的错误可能非常耗时。此外,它违反了通常的数学规则,即相邻的运算符应该用括号分隔。
这是因为python支持一元算术运算。您还可以检查python如何使用ast
模块将源表达式向下编译为抽象语法树。
>>导入ast>>>>>>print(ast.dump(ast.parse("b=a*+2"(,indent=4((模块(车身=[分配(目标=[名称(id='b',ctx=Store(((],value=BinOp(left=名称(id='a',ctx=Load(((,op=Mult((,right=UnaryOp(op=UAdd((,操作数=常量(值=2((],type_ignores=[](
另请参阅
- 以下表达式如何在python中工作