zoukankan      html  css  js  c++  java
  • Python函数闭包

    定义:如果在一个内部函数里,对外部作用域(单不是在全局作用域)的变量进行引用。

     1 def outer():
     2     x=10
     3     def inner():#条件一:内部函数
     4         print(x)#条件二:对外部环境变量的一个引用
     5     return inner  #结论:内部函数就是一个闭包
     6  
     7 #outer()()
     8 #f=outer()
     9 #f()
    10 #inner()#局部变量,全局无法调用
    11  
    12 f=outer()
    13 f()
    14  

    关于闭包:闭包=内部函数块 + 定义函数时的环境

    下面的例子没有定义函数的环境,所以不是闭包

    1 def outer1():
    2     x=10
    3     def inner():
    4         c=100
    5         print(c)
    6     return inner 
    7 f=outer1()
    8 f()

    闭包作用:在不修改原有的功能基础上增加功能

     1 import time
     2 def foo():
     3     print('foo...')
     4 def bar():
     5     print('bar...........')
     6  
     7  
     8  
     9 def show_time(f):
    10     def inner():
    11         start = time.time()
    12         f()
    13         end = time.time()
    14         print('spend %s'%(end-start))
    15     return inner
    16  
    17  
    18 foo=show_time(foo)
    19 foo()
    20 bar=show_time(bar)
    21 bar()

    原函数只实现了打印,但是我后面需要增加打印耗费时间,因此放在inner函数下面

  • 相关阅读:
    Socket与系统调用深度分析
    需求分析:未来的图书会是怎么样的?
    构建调试Linux内核网络代码的环境MenuOS系统
    jmeter--开始
    pytest---api
    pytest---mark
    pytest---数据处理
    pytest---fixture运行规则
    pytest---allure(mac版本)
    pytest---pytest.ini
  • 原文地址:https://www.cnblogs.com/softtester/p/11583276.html
Copyright © 2011-2022 走看看