Python的文档指定是是合法的省略括号如果一个函数只采用单个参数,但可能调用单参数Python函数而不使用括号?
myfunction "Hello!"
生成语法错误。那么,交易是什么?
(我使用Python 3.1)
编辑:
,我读仅适用于generator expressions声明:
The parentheses can be omitted on calls with only one argument.
Python的文档指定是是合法的省略括号如果一个函数只采用单个参数,但可能调用单参数Python函数而不使用括号?
myfunction "Hello!"
生成语法错误。那么,交易是什么?
(我使用Python 3.1)
编辑:
,我读仅适用于generator expressions声明:
The parentheses can be omitted on calls with only one argument.
为了您的编辑:
如果你写下一台发电机的表情,像stuff = (f(x) for x in items)
你所需要的支架,就像你所需要的[ .. ]
周围列表理解。但是当你将一些东西从一个生成器表达式传递给一个函数(这是一个非常常见的模式,因为这几乎是发生器背后的大想法),那么你不需要两组括号 - 而不是像s = sum((f(x) for x in items))
(括号外,表示一个函数调用,内为发电机表达式),你可以只写sum(f(x) for x in items)
没有括号那些不会functions
但statements
或keywords
(语言固有)。
This StackOverflow thread(有一些非常好的答案)contains a lead as如何在纯Python中创建自己的(通过高级hackery,而不是在99.99%的情况下是个好主意)。
据我了解规则是只有约发电机表情... 因此,例如:SUM(X 2 X在范围内(10)),但您仍然必须编写: reduce(operator.add,(x 2 for x in range(10)))。
虽然这不适用于泛型函数。
你可以用iPython做到这一点 - 在-autocall命令行选项可以控制这个功能(使用-autocall 0
禁用该功能,-autocall 1
,默认,只具有一种论点是目前它的工作,并-autocall 2
有它即使没有参数的可调参数也可以工作)。
确定吗?你能告诉我们你在哪里阅读该规则?你对红宝石感到困惑吗? – 2010-05-28 22:30:37
您可能会将Python与Ruby或Lua混淆,在这种情况下可能会省略鬼臼。 – interjay 2010-05-28 22:36:47
@Jen:他们讨论了表示生成器的括号,而不是函数调用。 – SilentGhost 2010-05-28 23:00:35