name = "小猿圈" def change(): name = "小猿圈,自学编程" def change2(): # global name 如果声明了这句,下面的name改的是最外层的全局变层 name = "小猿圈,自学编程不要钱" #这句注释掉的话,下面name打印的是哪个值? print("第3层打印", name) change2() # 调用内层函数 print("第2层打印", name) change() print("最外层打印", name)
输出:
第3层打印 小猿圈,自学编程不要钱
第2层打印 小猿圈,自学编程
最外层打印 小猿圈
1 通过上面的例子,我们理解了,每个函数里的变量是互相独立的,变量的查找顺序也是从当前层依次往上层找。
2 匿名函数
def cal(x,y): return x**y print(cal(2,5)) #换成匿名函数 c = lambda x,y:x**y print(c(2,8))
res = map(lambda x:x**2, [1,2,3,4,8]) for i in res: print(i)
3 高阶函数
def get_abs(n):
return int(str(n).strip("-") ) #取绝对值
#print(get_abs(-9))
def add(x,y,f):
return f(x)+f(y)
print(add(5,-10,get_abs))
只需满足以下任意一个条件,即是高阶函数
-
接受一个或多个函数作为输入
-
return 返回另外一个函数