zoukankan      html  css  js  c++  java
  • Python闭包实践

    1 def multiplier(factor):
    2     def multiplyByFactor(number):
    3         return (number+1)*factor
    4     return multiplyByFactor
    5 
    6 double = multiplier(2)
    7 print double(5)
    8 
    9 print multiplier(2)(5)

    输出都是12

    闭包:把函数作为参数传递给其他函数,放在数据结构中,作为函数的返回结果。

    为什么叫闭包:将组成函数的语句和这些语句的执行环境打包在一起,得到的对象称为闭包。

    1 #foo.py
    2 x=42
    3 def callf(func):
    4     return func()
    1 import foo
    2 x = 37
    3 def helloworld():
    4     return "Hello World. x is %d" % x
    5 
    6 foo.callf(helloworld)

    调用结果为 'Hello World. x is 37'

    即helloworld()使用的x的值是在与它相同的环境中定义的。

    闭包有什么用:

    惰性求值 || 延迟求值 || 在一系列函数调用中保持某个状态

    闭包会捕捉内部函数的环境,因为可用于包装现有函数。

  • 相关阅读:
    window下启动tomcat输出日志乱码
    Mybatis
    JAVA-Stream
    记录-linux安装supervisor来监控elasticsearch
    草稿
    定时任务
    阿里云linux6.9 64位安装mysql5.7.23记录
    归并排序
    快速排序
    HTML DOM
  • 原文地址:https://www.cnblogs.com/mess4u/p/2735468.html
Copyright © 2011-2022 走看看