在Python中的方法中使用括号和不使用括号有什么区别

时间:2014-07-14 23:51:33

标签: python parentheses

d=dict(a=1)

以下两个有什么区别?

d.clear
d.clear()

为什么不能先清除字典?

3 个答案:

答案 0 :(得分:4)

使用括号调用不使用它们的函数创建对该函数的引用。

见下文:

>>> def t():
...     return "Hi"
...
>>> a = t
>>> a
<function t at 0x01BECA70>
>>> a = t()
>>> a
'Hi'
>>>

这是一个很好的链接,可以进一步解释:http://docs.python.org/2/tutorial/controlflow.html(向下滚动到&#34;定义函数&#34;部分)。

答案 1 :(得分:1)

第一个实际上并没有调用该函数。在Python中,您可以将函数用作值,因此您可以将函数分配给新变量,如下所示:

def timeTen(n):
    return n * 10

fn = timesTen

然后你可以稍后再打电话:

print(fn(5))   # 50

函数只是恰好具有某个属性的值(可以调用它们)。

答案 2 :(得分:1)

使用()执行功能。如果没有(),您将获得对函数的引用 - 您可以将其分配给变量并稍后使用新名称执行。

new_d = d.clear # assign

new_d() # execute
Ruby和Perl中的 BTW:你可以在没有括号的情况下调用函数。