让我们说有一个函数定义为:
def thingy(arg1):
pass
根据书籍和PEP8(error code E211),我知道正确的称呼方式是:
thingy(true)
但是,我在现有代码中也看到了以下形式:
thingy (true)
除了反对PEP8外,它是否有害?
特别是,它是否可以使用推荐的方式创建不会引发的不需要的错误/副作用?
答案 0 :(得分:5)
不,在可调用对象和调用括号之间使用时,空格不重要。
来自lexical analysis reference documentation:
除了在逻辑行的开头或字符串文字中,空白字符空格,制表符和换页符可以互换使用以分隔标记。只有当两个令牌的串联被解释为不同的令牌时才需要空格(例如,ab是一个令牌,但b是两个令牌)。
和
除NEWLINE,INDENT和DEDENT外,还存在以下类别的标记:标识符,关键字,文字,运算符和分隔符。 空格字符(前面讨论过的行终止符除外)不是标记,但用于分隔标记。在存在歧义的情况下,当从左到右阅读时,令牌包含形成合法令牌的最长字符串。
强调我的。
在不需要空格的情况下,除了在视觉上分离标记之外没有任何意义。 thingy
和(
已经是两个独立的令牌,当没有空格时,它不会被混淆为一个令牌。因此,空格的存在并不会改变对该线的解释。