Python学习11--函数(二)
程序员文章站
2022-04-19 12:37:22
Python学习11--函数(二)Python学习11函数内部函数闭包装饰器学习视频:b站 【千锋教育】Python 900集书籍: Head First Python(中文版)学习总结笔记,侵删Python学习11函数内部函数在函数内再声明一个函数。内部函数修改外部函数的局部不可变变量,需要关键字nonlocal。对于可变变量可直接访问修改。def x1() : a = 100 def x2() : nonlocal a a+=100...
学习视频:b站 【千锋教育】Python 900集
书籍: Head First Python(中文版)
学习总结笔记,侵删
Python学习11
函数
内部函数
在函数内再声明一个函数。
内部函数修改外部函数的局部不可变变量,需要关键字nonlocal。对于可变变量可直接访问修改。
def x1() :
a = 100
def x2() :
nonlocal a
a+=100
x2()
print(a)
x1()
闭包
依据函数提出的概念,在函数内定义一个内部函数,然后将内部函数进行返回,使之可以在外部进行调用。
def x1() :
a = 100
def x2() :
nonlocal a
a+=100
print(a)
return x2
x = x1()
x()
装饰器
在闭包的基础上,函数作为参数。
def x1(func) :
def x2() :
func()
print(1)
return x2
@x1
def f() :
print("xxxxxx")
f()
f()为被装饰函数,x1()为装饰器
@x1会将被装饰函数f()作为参数传给装饰器x1(),然后执行x1()
又因为x1()返回了函数x2(),所以此时f = x2
执行语句f()时执行了内部函数x2()
当存在多层装饰器时,离得近的先进行装饰
def x1(func) :
def x3() :
func()
print(1)
return x3
def x2(func) :
def x3() :
func()
print(2)
return x3
@x2
@x1
def f() :
print("xxxxxx")
f()
装饰器也可带参数,需多封装一层(三层),最外层的函数负责接收装饰器参数
匿名函数
s = lambda a,b : a+b
r = s(1,2)
print(r)
递归函数
本文地址:https://blog.csdn.net/CCH1125/article/details/107125323