#函数闭包(内部函数引用外部函数的变量)
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中是第一...