#函数闭包(内部函数引用外部函数的变量)
def outfunc():
a='test'
def intfunc():
print(a)
return intfunc
v = outfunc()
v()
#装饰器
import time
def time_func(f):
def inner():
start = time.time()
ret=f()
end = time.time()
print(end-start)
return ret
return inner
@time_func
def func1():
time.sleep(1)
print('2025 happy new year!')
func1()
#装饰带参数的装饰器
import time
def time_func(f):
def inner(*args, **kwargs):
start = time.time()
ret = f(*args, **kwargs)
end = time.time()
print(end - start)
return ret
return inner
@time_func
def func1(a,b):
time.sleep(2)
print('2025 happy new year!',a,b)
func1('joy','mimi')
#装饰器模板格式
def wrapper(f):
def inner(*args, **kwargs):
#被装饰函数之前要做的事情
ret=f(*args, **kwargs)
#被装饰函数之后要做的事情
return ret
return inner
@wrapper
def func(a,b):
print(a,b)
return 'value'
func(1,2)
#登录装饰器
def login(func):
def inner(*args, **kwargs):
auth_list={}
count=0
while True:
count=count+1
if count > 3:
print('输入错误次数过多')
break
else:
username = input("登录用户: ")
password = input("登陆密码: ")
with open('auth',mode='r',encoding='utf-8') as f:
for line in f:
line_list = line.split(':')
auth_list[line_list[0]] = line_list[1].strip()
if auth_list.get(username) == password:
print("登陆成功")
ret = func(*args, **kwargs)
return ret
else:
print("用户或密码错误")
return inner
@login
def select_func():
print('查询程序运行')
select_func()
python装饰器,闭包
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1、装饰器 什么叫装饰器?本质上就是一个函数,用来处理其他函数。它可以让其他函数在不修改代码前提下增加额外的功能,...
- 闭包的定义 将组成函数的语句和这些语句的执行环境打包在一起时,得到的对象称为闭包我们知道函数在Python中是第一...