1.闭包:
函数内部的子函数返回,在外部调用子函数时,其实函数已经结束,但是在调用子函数时,函数内部的局部变量任然有效。
1 def fun(): 2 n = 10 3 def fun1(): 4 print('n为:', n) 5 return fun1 6 7 f = fun() 8 print(f) 9 f() 10 11 <function fun.<locals>.fun1 at 0x000001DF0E6DFA60> 12 n为: 10
--------------------------------------------------
2.装饰器:
参考:http://www.cnblogs.com/alex3714/articles/5765046.html
软件开发的一个原则:开放-封闭 原则
开放:对现有功能的扩展开放
封闭:已实现的功能代码块不应该被修改
------------------
# 对河南和欧美专区认证,若是已经登录过,就不需要在登录。
# 2.1.语法糖 装饰器
1 user_state = False 2 def login(func): 3 def inner(): 4 _username = 'alice' 5 _password = '123' 6 global user_state 7 if user_state == False: 8 username = input('username:').strip() 9 password = input('password:').strip() 10 11 if username == _username and password == _password: 12 print('welcome to login...') 13 user_state = True 14 else: 15 print('wrong username or password') 16 else: 17 print('用户已经登录,认证通过') 18 if user_state == True: 19 func() 20 return inner 21 22 def home(): 23 print('-----首页-----') 24 @login # america=login(america) 25 def america(): 26 print('-----欧美专区-----') 27 28 def japan(): 29 print('-----日韩专区-----') 30 @login # henan=login(henan) 31 def henan(): 32 print('-----河南专区-----') 33 34 home() 35 henan() 36 america() 37 38 -----首页----- 39 username:alice 40 password:123 41 welcome to login... 42 -----河南专区----- 43 用户已经登录,认证通过 44 -----欧美专区-----