python教程—为什么这不是python中的语法错误?-Python实用宝典

python教程—为什么这不是python中的语法错误?

注意到我们今天的代码库中有一行代码,我认为它肯定会因为语法错误而导致构建失败,但是测试通过了,所以它实际上是有效的python(在这两个版本中都有)。x和3)。

注意到我们今天的代码中有一行代码,我认为它肯定会因为语法错误而导致构建失败,但是测试通过了,所以它实际上是有效的python(在这两个版本中都有)。x和3)。

条件表达式中有时不需要空格:

    >>> 1if True else 0 1

如果LHS是一个变量,它就不能工作:

    >>> x = 1 >>> xif True else 0 File "<stdin>", line 1 xif True else 0 ^ SyntaxError: invalid syntax

但它似乎仍然适用于其他类型的文字:

    >>> {'hello'}if False else 'potato' 'potato'

这里发生了什么,它是出于某种原因故意成为语法的一部分吗?这种奇怪的怪癖是已知的/有记录的行为吗?

回答

除了在逻辑行开头或字符串文本中,空白字符空间、制表符和formfeed可以互换使用,以分隔标记。只有当两个令牌之间的连接可以解释为不同的令牌时(例如,ab是一个令牌,但是ab是两个令牌),才需要两个令牌之间的空格。

所以在本例中,1if不是有效的令牌,所以空格是可选的。1被解释为一个整数文字,if不是其中的一部分。因此,if被单独解释并被识别为关键字。

然而,在xif中,标识符是可识别的,因此Python无法看到您想要执行的x。

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论