为什么要有闭包
#内部函数对外部函数作用域里变量的引用def func():#外部函数print("this is func")def func1():#内部函数print("this is func1")func()#运行外部函数,内部函数就被创建了func1()#创建过程在func函数的执行过程中
闭包解释
def func():# 函数内的属性,都是有生命周期print('this is func')def func1():print('this is func1')# 虽然死掉了,但是可以用return返回生命print('this is func1')return func1closure=func()closure()
闭包是什么
内部函数完成了对数据的封装,类似于面向对象
def func():#外部函数a = 1#外部函数作用域里的变量print('this is func')def func1(num):#内部函数print('this is func1')print (num +a)return func1closure=func()closure(3)
闭包怎么用
mylist = [1,2,3,4,5]def func(obj):print('func:',obj)def func1():obj[0] +=1print('func1:',obj)return func1closure=func(mylist)closure()closure()closure()
定义:在函数嵌套的前提下,内部函数使用外部函数的变量,并且外部函数返回了内部函数,那么我们]把内部函数称为闭包。
# 外部函数def func_out(num1):# 定义内部函数def func1_inner(num2):# 内部函数中使用外部函数的变量result = num1+num2print('sum:',result)# 返回的内部函数,就是闭包return func1_innerf=func_out(1) #指向func1_inner# 执行闭包f(2)
def check(f):def inner():print('please log in')f()# 返回的是函数名,是闭包函数return innerdef comment():print('add a comment')# 使用装饰器来装饰函数comment = check(comment)comment()
装饰器使用语法糖
def check(f):def inner():print('please log in')f()# 返回的是函数名,是闭包函数return inner# @装饰器函数的名字@check # comment = check(comment)def comment():print('add a comment')# 函数装饰器名字# comment = check(comment)# comment()comment()
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号