-- 1-1 python装饰器之函数作用域 https://www.imooc.com/video/10834
passline=60
def func(val):
passline=90
if val>passline:
print('pass')
else:
print('failed')
def Max(v1,v2):
return max(v1,v2)
func(44)
print(Max(2,33))
-- 2-1 python装饰器之闭包 https://www.imooc.com/video/10832
def f_150(val):
passline=90
if val>=passline:
print('%d pass'%val)
else:
print('failed')
def f_100(val):
passline=60
if val>=passline:
print('%d pass'%val)
else:
print('failed')
def set_passline(passline):
def cmp(val):
if val>=passline:
print("pass")
else:
print('failed')
return cmp
f_20=set_passline(12)
f_20(13)
print(type(f_20))
print(f_20.__closure__)
#
# f_150(89)
# f_100(89)
-- 2-2 python装饰器之闭包2 https://www.imooc.com/video/10833
def my_sum(*arg):
print('in my_sum')
# if len(arg)==0:
# return 0
# for val in arg:
# if not isinstance(val,int):
# return 0
return sum(arg)
def my_average(*arg):
# if len(arg)==0:
# return 0
# for val in arg:
# if not isinstance(val,int):
# return 0
return sum(arg)/len(arg)
def dec(func):
def in_dec(*arg):
print('in dec arg=',arg )
if len(arg) == 0:
return 0
for val in arg:
if not isinstance(val, int):
return 0
return func(*arg)
return in_dec
# my_sum=in_dec(*arg)
my_sum=dec(my_sum)
print(my_sum(1,2,3,4,5))
# print(my_average(1,2,3,4,5))
# print(my_average())
-- 3-1 python装饰器 https://www.imooc.com/video/10835
def dec(func):
print('call dec')
def in_dec(*arg):
print('in dec arg=',arg )
if len(arg) == 0:
return 0
for val in arg:
if not isinstance(val, int):
return 0
return func(*arg)
print('return in_dec')
return in_dec
# dec
def my_sum(*arg):
print('in my_sum........')
return sum(arg)
my_sum=dec(my_sum)
my_sum(1,23)
print(my_sum(1,23))
--
def deco(func):
print('xxxxxxx')
def in_deco(x,y):
print('in deco')
func(x,y)
print('call deco...')
print('yyyyyyyyyyyy')
return in_deco
@deco
def bar(x,y):
print('in bar ',x+y)
print(type(bar))
bar(1,2)