3 回答
TA贡献1848条经验 获得超10个赞
从词法之间的空白的词法分析文档中:
除了逻辑行的开头或字符串文字外,空格字符空格,制表符和换页符可以互换使用以分隔标记。仅当两个令牌的级联可以另外解释为其他令牌(例如,ab是一个令牌,而ab是两个令牌)时,才需要在两个令牌之间使用空格。
倒数最后一句话,任何两个标记之间都允许有空格,只要它们不应该被解释为没有空格的一个标记即可。对使用多少空白没有限制。
前面的部分定义了组成逻辑线的内容,以上内容仅适用于逻辑线之内。以下也是合法的:
result = (foo ())
因为逻辑行通过括号扩展到换行符。
的调用表达式是一个单独的系列从什么先于令牌; foo
只是要在全局命名空间中查找的名称,您可以从字典中查找对象,也可以从另一个调用中返回对象,依此类推。因此,该()
部分是两个单独的标记,并且在和中有任意数量的空格围绕这些是允许的。
TA贡献1818条经验 获得超11个赞
你应该明白
foo()
Python中的内容由两部分组成:foo和()。
第一个是您在globals()字典中找到的名称,并且与它关联的值是一个函数对象。
表达式后的右括号表示call应进行运算。考虑例如:
def foo():
print "Hello"
def bar():
return foo
bar()() # Will print "Hello"
因此,他们要理解的关键点是()可以应用于它之前的任何表达式...例如,mylist[i]()将获取i-th元素,mylist并使其不传递任何参数。
该语法还允许表达式和(字符之间的可选空格,对此没有什么奇怪的。请注意,您也可以例如写p . x为mean p.x。
TA贡献1829条经验 获得超6个赞
Python从C编程语言中汲取了很多线索。这当然是其中之一。考虑以下事实:
int add(int a, int b)
{
return a + b;
}
int main(int argc, char **argv)
{
return add (10, 11);
}
函数名称和参数之间可以有任意数量的空格。
其他语言也是如此。以Ruby为例,
def add(a, b)
a + b
end
add (10, 11)
当然,您会收到警告,但它仍然可以正常工作,尽管我不知道如何,但是我敢肯定,警告很容易被抑制。
添加回答
举报