python 闭包
python 闭包
什么是闭包
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/8
# 闭包,是在函数中提出的概念。
def func():
    a=100
    def func1():
        b=200
        print (a,b)
#    return a
#注意,下面不能加括号,加括号相当于调用了
    return func1
#外部调用func1 是没办法调用的,直接执行会报错,
# 也无法在这里调用a,因为a是全局变量,我们可以return a ,然后再外面有一个容器来接住a
#同理,我们也可以吧 func1扔出来,这时候,x就是里面的内部函数
x=func()
print (x)
#这时候执行x()就相当于执行func1了
x()
#像这种格式的,就叫闭包
#条件1:外部函数定义内部函数  条件2:外部函数是有返回值的, 条件3:return返回的值是内部函数名 条件4:内部函数引用了外部函数的变量。符合这样条件的叫闭包
示例
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/8
def func(a,b):
    c=100
    def func1():
        s=a+b+c
        print ('sum is :',s)
    return func1
x=func(200,200)
print (x)
x()
示例
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/9
def func():
    a=100
    def func1():
        b=90
        s=a+b
        print (s)
    def func2():
        func1()
        print ('>>>>>>>>>>func2',a)
        return 'hello'
    return func2
x=func()
print (x)
xx=x()
print (xx)
示例
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# BY:wenchao.li time: 2020/7/9
def counter():
    count=[0]
    def sumcounter():
        count[0]=count[0]+1
        print ('当前是第{}次访问' .format(count))
    return sumcounter
x=counter()
x()
x()
x()
本文来自博客园,作者:liwenchao1995,转载请注明原文链接:https://www.cnblogs.com/liwenchao1995/p/17549684.html
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号