我有个问题。假设我们有函数 hello()。带括号和不带括号调用有什么区别?当我调用 hello() 时,它引用的是一个值等于此函数的对象。或者也许我错了?当我不带括号调用它时会发生什么?
我想知道为什么
def hello():
pass
print(id(hello))
print(id(hello()))
返回不同的结果
4400606744
4398942536
简短回答:参见https://nedbatchelder.com/text/names.html https://nedbatchelder.com/text/names.html更好地理解对象和用于引用对象的名称之间的区别。
如果满足以下条件,则调用函数only如果你使用括号。hello()
调用该函数;hello
简单来说就是一个name绑定到函数,并且可以用于例如将函数对象作为参数传递给另一个函数。
def caller(f):
f()
def hello():
print("hi")
def goodbye():
print("bye")
caller(hello) # Prints "hi"
caller(goodbye) # Prints "bye"
关于您的更新,id
返回不同的值,因为每次调用id
接收一个完全独立的对象作为其参数。和id(hello)
, id
获取函数对象本身。和id(hello())
, id
正在获取对象returned通过致电hello
;它是一样的
x = hello()
print(id(x))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)