外层函数返回内层函数就是闭包
上一级无法访问下一级
函数里面的都叫做局部,函数外面都叫做全局
a = 1
def f():
print(a)
def f2():
print('f2')
return f2
a = f()
a()
全局变量会占据整个资源,整个程序执行完后才被释放,节约性能,空间被释放
- 闭包:递归, 回调
递归: 函数自身调用自身,更占内存,很少用,比如阶乘
回调:一个函数当做一个参数传给另一个参数执行
def f(a):
a() # a() = f2()
def f2():
print('123')
f(f2) #a=f2函数体
def f(a,j):
if j > 13:
a()
def f2():
print('122')
f(f2,40)
操作:
def xd(a,b):
print(dict(zip(a,b)))
def zd1():
b = a.values()
print(tuple(b))
zd1()
p = {'name':'小绿','age': 20}
p1 = ('小花',30)
xd(p,p1)
print('-------------')
li = [1,2,3]
li1 = ('aa','vv','dd')
print(dict(zip(li,li1))) #zip的用法
print('-------------')
#好的写法
def zd(*args, **kwargs):
vs = dict(zip(kwargs, args))
tp = tuple(kwargs.values())
print(vs)
print(tp)
# return vs,tp
# f(1,2,3,name='aa',age=30,sex='F')
zd(1,2,3,name='aa',age=30,sex='F')