第二模块 3.7 嵌套&匿名&高阶函数

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 返回另外一个函数

 
原文地址:https://www.cnblogs.com/kissfire008/p/11743878.html