闭包
在函数嵌套的前提下,内层函数引用了外层函数的变量,外层函数又把内层函数当做返回值进行返回,这个内层函数加所引用的外层变量,称为闭包
def text(n):
a = n
def text2():
print(a)
return text2
result = text(5)
result()
装饰器
##在函数名以及函数体不改变的前提下,给一个函数附加一些额外代码
def newFunc(func):
def inner():
print(‘xxxx’)
func()
return inner
@newFunc
def newFunc2():
print(‘11111’)
newFunc2()
生成器
是一个特殊的迭代器
yield函数
def test():
yield 1
print(1)
yield 2
print(2)
g = test()
print(next(g))
send函数
def test():
res = yield 1 #yield不会给变量赋值,返回是None,除非用send函数
print(res)
res2 = yield 2
print(res2)
res3 = yield 3
print(res3)
g = test()
print(next(g))
print(g.send(‘xxx’))
print(next(g))
关闭生成器直接用 g.close()即可
递归函数
在函数内部,继续调用函数
def jiechen(n):
if n == 1:
return 1
return n * jiechen(n-1)
g = jiechen(5)
print(g)