import time
def foo():
"""打印"""
time.sleep(2)
print("Hello boy!")
foo() import time
def timmer(func):
def wrapper():
"""计时功能"""
time_start=time.time()
func()
time_end=time.time()
print("Run time is %f "%(time_end-time_start))
return wrapper
def foo():
"""打印"""
time.sleep(2)
print("Hello boy!")
foo=timmer(foo)
foo()
#运行结果
Hello boy!
Run time is 2.000446 import time
def timmer(func):
def wrapper():
"""计时功能"""
time_start=time.time()
func()
time_end=time.time()
print("Run time is %f "%(time_end-time_start))
return wrapper
@timmer #等于 foo=timmer(foo)
def foo():
"""打印"""
time.sleep(2)
print("Hello boy!")
foo() <function timmer.<locals>.wrapper at 0x00000180E0A8A950> #打印foo的结果 <function timmer.<locals>.wrapper at 0x000001F10AD8A950> #打印wrapper的结果 foo()
time_start=time.time()
time.sleep(2)
print("Hello boy!") Hello boy! Run time is 2.000161
import time
def timmer(func):
def wrapper(*args,**kwargs):
"""计时功能"""
start_time=time.time()
res=func(*args,**kwargs)
end_time=time.time()
print("Run time is %f"%(end_time-start_time))
return res
return wrapper
@timmer
def my_max(x,y):
"""返回两个值的最大值"""
res=x if x > y else y
time.sleep(2)
return res
res=my_max(1,2)
print(res)
#运行结果
Run time is 2.000175 def auth(filetype):
def auth2(func):
def wrapper(*args,**kwargs):
if filetype == "file":
username=input("Please input your username:")
passwd=input("Please input your password:")
if passwd == '123456' and username == 'Frank':
print("Login successful")
func()
else:
print("login error!")
if filetype == 'SQL':
print("No SQL")
return wrapper
return auth2
@auth(filetype='file') #先先返回一个auth2 ==》@auth2 ==》 index=auth2(index) ==》 index=wrapper
def index():
print("Welcome to China")
index() def auth(filetype): def auth2(func): def wrapper(*args,**kwargs): return wrapper return auth2
def wrapper(*args,**kwargs): return wrapper
if filetype == "file":
username=input("Please input your username:")
passwd=input("Please input your password:")
if passwd == '123456' and username == 'Frank':
print("Login successful")
func() Please input your username:Frank Please input your password:123456 Login successful Welcome to China
import time
#
def timmer(func):
def wrapper():
"""计时功能"""
time_start=time.time()
func()
time_end=time.time()
print("Run time is %f "%(time_end-time_start))
# print("---",wrapper)
return wrapper
def auth(filetype):
def auth2(func):
def wrapper(*args,**kwargs):
if filetype == "file":
username=input("Please input your username:")
passwd=input("Please input your password:")
if passwd == '123456' and username == 'Frank':
print("Login successful")
func()
else:
print("login error!")
if filetype == 'SQL':
print("No SQL")
return wrapper
return auth2
@timmer
@auth(filetype='file') #先先返回一个auth2 ==》@auth2 ==》 index=auth2() ==》 index=wrapper
def index():
print("Welcome to China")
index()
#测试结果
Please input your username:Frank
Please input your password:123456
Login successful
Welcome to China
Run time is 7.966267 import time
def timmer(func):
def wrapper():
"""计算程序运行时间"""
start_time=time.time()
func()
end_time=time.time()
print("Run time is %s:"%(end_time-start_time))
return wrapper
@timmer
def my_index():
"""打印欢迎"""
time.sleep(1)
print("Welcome to China!")
my_index()
print(my_index.__doc__)
#运行结果
Welcome to China!
Run time is 1.0005640983581543:
计算程序运行时间 import time
from functools import wraps
def timmer(func):
@wraps(func)
def wrapper():
"""计算程序运行时间"""
start_time=time.time()
func()
end_time=time.time()
print("Run time is %s:"%(end_time-start_time))
return wrapper
@timmer
def my_index():
"""打印欢迎"""
time.sleep(1)
print("Welcome to China!")
my_index()
print(my_index.__doc__)
#运行结果
Welcome to China!
Run time is 1.0003223419189453:
打印欢迎 my_list=[1,2,3] li=iter(my_list) #li=my_list.__iter__() print(li) print(next(li)) print(next(li)) print(next(li)) #运行结果 <list_iterator object at 0x000002591652C470> 2
my_list=[1,2,3]
li=iter(my_list)
while True:
try:
print(next(li))
except StopIteration:
print("Over")
break
else:
print("get!")
#运行结果
get!
get!
get!
Over from collections import Iterable
s="hello" #定义字符串
l=[1,2,3,4] #定义列表
t=(1,2,3) #定义元组
d={'a':1} #定义字典
set1={1,2,3,4} #定义集合
f=open("a.txt") #定义文本
# 查看是否都是可迭代的
print(isinstance(s,Iterable))
print(isinstance(l,Iterable))
print(isinstance(t,Iterable))
print(isinstance(d,Iterable))
print(isinstance(set1,Iterable))
print(isinstance(f,Iterable))
#运行结果
True
True
True
True
True
True from collections import Iterable,Iterator
s="hello"
l=[1,2,3,4]
t=(1,2,3)
d={'a':1}
set1={1,2,3,4}
f=open("a.txt")
# 查看是否都是可迭代的
print(isinstance(s,Iterator))
print(isinstance(l,Iterator))
print(isinstance(t,Iterator))
print(isinstance(d,Iterator))
print(isinstance(set1,Iterator))
print(isinstance(f,Iterator))
#运行结果
False
False
False
False
False
True def my_yield():
print('first')
yield 1
g=my_yield()
print(g)
#运行结果
<generator object my_yield at 0x0000024366D7E258> from collections import Iterator
def my_yield():
print('first')
yield 1
g=my_yield()
print(isinstance(g,Iterator))
#运行结果
True print(next(g)) #运行结果 first 1
def my_yield():
print('first')
yield 1
print('second')
yield 2
print('Third')
yield 3
g=my_yield()
next(g)
next(g)
next(g)
#运行结果
first
second
Third def my_yield(): g=my_yield()
print('first')
yield 1 print('second')
yield 2
print('Third')
yield 3 def foo(): i=0 while True: yield i i+=1 g=foo() for num in g: if num < 10: print(num) else: break #运行结果
def eater(name):
print('%s start to eat food'%name)
while True:
food=yield
print('%s get %s ,to start eat'%(name,food))
print('done')
e=eater('Frank')
next(e)
e.send('egg') #给yield送一个值,并继续执行代码
e.send('tomato')
#运行结果
Frank start to eat food
Frank get egg ,to start eat
Frank get tomato ,to start eat def init(func):
def wrapper(*args):
res = func(*args)
next(res) # 在这里执行next
return res
return wrapper
@init
def eater(name):
print('%s start to eat food'%name)
while True:
food=yield
print('%s get %s ,to start eat'%(name,food))
print('done')
e=eater('Frank')
e.send('egg')
e.send('tomato') 所以在程序中有更多的生成器需要初始化的时候,直接调用这个装饰器就可以了。
以上就是Python中关于装饰器与迭代器以及生成器的实例详解的详细内容,更多请关注Gxl网其它相关文章!
查看更多关于Python中关于装饰器与迭代器以及生成器的实例详解的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did84674