开发者社区> 问答> 正文

python从函数中返回函数

python从函数中返回函数

展开
收起
montos 2020-04-16 18:43:12 1270 0
2 条回答
写回答
取消 提交回答
  • 代码改变世界,我们改变代码

    这是一个闭包,或者在python中叫装饰器

    2020-05-04 12:22:25
    赞同 展开评论 打赏
  • 其实并不需要在一个函数里去执行另一个函数,我们也可以将其作为输出返回出来:

    def hi(name="yasoob"):
        def greet():
            return "now you are in the greet() function"
    
        def welcome():
            return "now you are in the welcome() function"
    
        if name == "yasoob":
            return greet
        else:
            return welcome
    
    a = hi()
    print(a)
    #outputs: <function greet at 0x7f2143c01500>
    
    #上面清晰地展示了`a`现在指向到hi()函数中的greet()函数
    #现在试试这个
    
    print(a())
    #outputs: now you are in the greet() function
    

    再次看看这个代码。在if/else语句中我们返回greetwelcome,而不是greet()welcome()。为什么那样?这是因为当你把一对小括号放在后面,这个函数就会执行;然而如果你不放括号在它后面,那它可以被到处传递,并且可以赋值给别的变量而不去执行它。 你明白了吗?让我再稍微多解释点细节。 当我们写下a = hi()hi()会被执行,而由于name参数默认是yasoob,所以函数greet被返回了。如果我们把语句改为a = hi(name = "ali"),那么welcome函数将被返回。我们还可以打印出hi()(),这会输出now you are in the greet() function

    2020-04-16 18:44:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载