【自学python】 遇到闭包和装饰器里面有个地方不太理解:什么时候函数应该加括号,什么时候不用加?
本文介绍了【自学python】 遇到闭包和装饰器里面有个地方不太理解:什么时候函数应该加括号,什么时候不用加?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
以下是我写的代码:
def w1(funC):
def inner():
print("-----1-----")
funC()
return inner()
def f1():
print("-----2-----")
def f2():
print("-----3-----")
innerfunC = w1(f1)
innerfunC()
执行结果是:
后来我发现错误在于:
return inner() 这个地方不应该加括号。
虽然我知道我写代码的问题是出在这里,但我就不理解了,我的w1函数 既然要return 不是应该return一个具体的东西么 如果不加括号,那算什么意思?
换句话说,到底什么时候应该加括号,什么时候不应该加括号?
解决方案
加括号是运行函数, 不加是函数索引
你的代码可以这样两种方式改都行
def w1(funC):
def inner():
print("-----1-----")
funC()
return inner
def f1():
print("-----2-----")
def f2():
print("-----3-----")
innerfunC = w1(f1)
innerfunC()
或者
def w1(funC):
def inner():
print("-----1-----")
funC()
return inner()
def f1():
print("-----2-----")
def f2():
print("-----3-----")
w1(f1)
这篇关于【自学python】 遇到闭包和装饰器里面有个地方不太理解:什么时候函数应该加括号,什么时候不用加?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文