Python文档指定如果函数只接受单个参数,则省略括号是合法的,但是
myfunction "Hello!"
Run Code Online (Sandbox Code Playgroud)
生成语法错误.那么,这笔交易是什么?
(我正在使用Python 3.1)
编辑:
我读的语句只适用于生成器表达式:
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)
您可以使用 IPython 来完成此操作 - %autocallmagic 命令控制此功能(以及-autocall命令行选项)。用于%autocall 0禁用该功能(%autocall 1默认值),使其仅在存在参数时才起作用,并且%autocall 2甚至对于无参数的可调用项也起作用。
In [2]: %autocall 1
Automatic calling is: Smart
In [3]: int '5'
------> int('5')
Out[3]: 5
In [4]: %autocall 2
Automatic calling is: Full
In [5]: int
------> int()
Out[5]: 0
Run Code Online (Sandbox Code Playgroud)