装饰器

装饰器:本质是个函数,主要功能给其他函数附加新的功能

1,给其他函数附加新的功能

2,在不修改其他函数的内部和不修改其调用方式前提下,给函数装饰新的功能

函数其实是个变量

装饰器有高阶函数和嵌套函数组成

高阶函数定义

1以函数名为实参给另一个函数作为传递变量

2,返回值包含函数名(其它是返回了一个函数的内存地址)

例子:

 1 user_status= False
 2 
 3 def login(*args,**kwargs):
 4     # args
 5     print(*args)
 6     def out_wrapper(func):
 7         def inner(*args,**kwargs):
 8             user_name="yuan"
 9             user_password="123456"
10             global user_status
11             # print(user_status)
12             if user_status==False :
13                 _user_name=input("usename:")
14                 _user_password=input("passwor:")
15                 if user_name==_user_name and user_password==_user_password :
16                     user_status=True
17                     print("welcome login")
18                 else:
19                     print("usename or password is wrong")
20             if user_status==True:
21                 ret=func(*args,**kwargs)
22                 return ret
23         return inner
24     return out_wrapper
25 
26 def home():
27     print("主页")
28 
29 @login("sd")
30 def henan(name):
31     print("河南",name)
32 @login()
33 def guangdong():
34     print("广东")
35 
36 
37 '''
38 #hennan=login(hennan)这个打印出来的是内存地址======
39 # print(hennan)
40 '''
41 
42 henan("河南页面")
43 guangdong()
View Code
原文地址:https://www.cnblogs.com/JIM-FAN/p/8495667.html