【自学python】 遇到闭包和装饰器里面有个地方不太理解:什么时候函数应该加括号,什么时候不用加?

查看:97
本文介绍了【自学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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆