-
__closure__:返回属性
查看全部 -
闭包概念:内部函数中 对enclosing作用域 的变量 进行引用
查看全部 -
当解释器查找变量时或方法,查找顺序:
L:先查找local作用域中有没有,
E:函数内部与内嵌函数之间
G:再去查找全局
B:build-in内置作用域(系统方法或者系统常量)
查看全部 -
作用域说明
查看全部 -
__closure__ 闭包其实就是一个def函数使用其外部的参数
查看全部 -
函数做参数,返回函数
原理不变由外向里,原本导入函数被储存入__closure__属性中,所以到最后还能调用导入函数
查看全部 -
f(a)(b)向里执行
将s指向f(a),f(a)返回一个函数,s转而指向这个返回函数,成为这个函数
查看全部 -
装饰器讲的非常清楚查看全部
-
语法糖是把函数作为一个参数传给原函数,然后把它的返回值作为原参数的结果。
注意#bar()->in_deco()->bar()
代码里面有一个return func(*arg)调用传入的函数,完成sum aveage这样的功能
装饰器存在的目的是为本来要进行的函数(sum,average)进行包装,包装的意思一方面是多进行一些操作,另一方面是对一些函数具有想同逻辑的进行抽象,如果没有return操作,那就是包装袋里没有实物,就失去了本来的意义
查看全部 -
func是功能函数,用来引用其他的函数功能(?)
在这个例题中,先用dec判断整个arg的值是否合理,然后再把函数return给my_sum和my_average求值
查看全部 -
装饰器是使用闭包
查看全部 -
抽象出代码中一致的地方。
查看全部 -
在内部定义所需函数,返回函数,引用时确定参数,就确定了所需函数,再引用返回的函数
查看全部 -
调用一次,返回再调用一次
查看全部 -
装饰器用来装饰函数
返回一个函数对象
被装饰函数标识符指向返回的函数对象
语法:@被装饰函数
实质:装饰器是对闭包的使用
def dec(func): print ('call dec') def in_dec(*arg): #*arg表示返回任意多个无名参数,返回类型为tuple if len(art) == 0: return 0 for val in arg: if not isinstance(val, int): return 0 return func(*arg) return in_dec @dec #调用dec函数-->dec(my_sum)-->返回in_dec函数对象,my_sum=in_dec-->my_sum接收in_dec函数调用的my_sum函数 def my_sum(*arg): return sum(arg) print (my_sum(1,2,3,4,5)) def my_average(*arg): return sum(arg)/len(arg)
def deco(func): def in_deco(x, y): print('in deco') func(x, y) print ('call deco') return in_deco #不写return的话,默认返回None @deco def bar(x, y): print ('in bar', x+y) print (type(bar)) bar(1, 2)
查看全部
举报