b=a*+2是有效语法.为什么



为什么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中工作

最新更新