python 闭包初识
1 def func_100(val): 2 passline = 60 3 if val >= passline: 4 print('pass') 5 else: 6 print('failed') 7 8 def func_150(val): 9 passline = 90 10 if val >= passline: 11 print('pass') 12 else: 13 print('failed') 14 15 func_100(89) 16 func_150(89) 17 18 输出:pass 19 failed
def set_passline(passline): def cmp(val): if val >= passline: print('pass') else: print('failed') return cmp f_100 = set_passline(60) f_150 = set_passline(90) f_100(89) f_150(89) 输出:pass failed
1 def my_sum(*arg): 2 if len(arg) == 0: 3 return 0 4 for val in arg: 5 if not isinstance(val, int): 6 return 0 7 return sum(arg) 8 9 def my_average(*arg): 10 if len(arg) == 0: 11 return 0 12 for val in arg: 13 if not isinstance(val, int): 14 return 0 15 return sum(arg)/len(arg) 16 17 print(my_sum(1, 2, 3, 4, 5)) 18 print(my_sum(1, 2, 3, 4, 5, '6')) 19 print(my_average(1, 2, 3, 4, 5)) 20 print(my_average()) 21 22 输出:15 23 0 24 3 25 0
1 def my_sum(*arg): 2 return sum(arg) 3 4 def my_average(*arg): 5 return sum(arg)/len(arg) 6 7 def dec(func): 8 def in_dec(*arg): 9 if len(arg) == 0: 10 return 0 11 for val in arg: 12 if not isinstance(val, int): 13 return 0 14 return func(*arg) 15 return in_dec 16 17 my_sum = dec(my_sum) 18 my_average = dec(my_average) 19 20 print(my_sum(1, 2, 3, 4, 5)) 21 print(my_sum(1, 2, 3, 4, 5, '6')) 22 print(my_average(1, 2, 3, 4, 5)) 23 print(my_average()) 24 25 输出:15 26 0 27 3 28 0
闭包作用
1:封装
2:代码复用