Python 从未使用大括号来定义代码块,而是依赖于缩进;这是该语言的定义特征之一。 CPython 甚至还提供了一个小 cookie 来展示他们对此的强烈感受:
>>> from __future__ import braces
SyntaxError: not a chance
当我看到这个小片段发布到论坛(已删除)时,我认为它不可能工作。但确实如此!
>>> def hi(): {
print('Hello')
}
>>> hi()
Hello
当这段代码似乎违反了语言语法时,为什么它可以工作?
最佳答案
大括号没有像在其他语言中那样定义代码块——它们定义了一个set
。 .正在评估 print
函数并将其返回值 (None
) 放入集合中。一旦集合被创建,它就会立即被丢弃,因为它没有被分配给任何东西。
此处使用了一些 Python 语法功能。首先,Python 允许单语句代码块紧跟在 :
之后。其次,在某些情况下允许表达式跨越多行。
如果 block 的主体超过一行,或者如果尝试了除函数调用之外的赋值或语句,则此代码将无法运行。
这里重做函数以使其更清楚发生了什么:
>>> def hi2(): print(
{ print('Hello') }
)
>>> hi2()
Hello
{None}
关于python - 为什么在此 Python 代码中允许使用大括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49496091/