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

问题描述 投票:0回答:1

为什么 python (3.7.9) 允许这种语法?

a = 3
b = a*+2

它觉得这很烦人,因为如果你想打字

b = a**2
它可以在您编写的德语键盘布局上很快发生
b = a*+2
。如果没有 sytnax 错误,查找此类错误可能会非常耗时。此外,它违反了通常的数学规则,即相邻运算符应该用括号分隔。

python syntax
1个回答
6
投票

这是因为 python 支持一元算术运算。您还可以检查 python 如何使用 ast 模块将源表达式编译为

抽象语法树

>>> 导入 ast
>>>
>>> print(ast.dump(ast.parse("b = a*+2"), indent=4))
模块(
    身体=[
        分配(
            目标=[
                名称(id='b', ctx=Store())],
            值=BinOp(
                左=名称(id='a', ctx=Load()),
                op=Mult(),
                右=一元运算(
                    op=UAdd(),
                    操作数=常数(值=2))))],
    类型_忽略=[])

另请参阅:

© www.soinside.com 2019 - 2024. All rights reserved.