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函数下面

  • 相关阅读:
    Git :版本控制工具进阶
    Git 提交本地代码
    Git创建代码仓库
    Git
    SQLlite数据库的增删改查
    Android学习第十天
    Android学习第九天
    Android学习第八天
    Android学习第七天
    【k8s】Deployment
  • 原文地址:https://www.cnblogs.com/softtester/p/11583276.html
Copyright © 2011-2022 走看看