开放-封闭原则:
- 封闭:已实现的功能代码块不应该被修改.
- 开放:对现有功能的扩展开放.
装饰器:
定义:在符合‘开放-封闭‘的原则下,给程序扩展其他的功能!
1 def tokyo(): 2 print(‘日本专区‘.center(30, ‘-‘)) 3 4 5 def america(): 6 print(‘美洲专区‘.center(30, ‘-‘)) 7 8 9 def euro(): 10 print(‘欧洲专区‘.center(30, ‘-‘)) 11 12 user_status = False 13 14 15 def login(func): 16 def inner(): 17 global user_status 18 if user_status == False: 19 user = input(‘user:‘).strip() 20 password = input(‘password:‘) 21 if user == ‘alex‘ and password == ‘123‘: 22 print(‘welcome....‘) 23 user_status = True 24 if user_status: 25 func() 26 return inner # 把inner的内存地址返回给login(func),所以下面tokyo = login(tokyo)的时候,其实等于tokyo = inner 27 # 相当于用闭包和函数的重新赋值,完成了装饰器. 28 29 tokyo = login(tokyo) 30 tokyo()