3.24 作业

1:还记得我们用函数对象的概念,制作一个函数字典的操作吗,来来来,我们有更高大上的做法,在文件开头声明一个空字典,然后在每个函数前加上装饰器,完成自动添加到字典的操作

"""

dict = {}
def func_dict_1(name):
def wrapper(func):
dict[name]= func
return wrapper

@func_dict_1("my_sum")
def my_sum(x,y,z):
return x+y+z

@func_dict_1("func_1")
def func_1(x,y,z):
print("%s %s %s" %(x,y,z))

print(func_dict_1)
"""

3、 编写日志装饰器,实现功能如:一旦函数f1执行,则将消息2017-07-21 11:12:11 f1 run写入到日志文件中,日志文件路径可以指定

注意:时间格式的获取

import time

time.strftime('%Y-%m-%d %X')

"""
import time

def logger(file):
def func(func):
def wrapper(*args,**kwargs):
res=func(*args,**kwargs)
with open(file,'a',encoding='utf-8') as f:
f.write('%s %s run\n' %(time.strftime('%Y-%m-%d %X'),func.name))
return res
return wrapper
return func

@logger(file='file_01.log')
def my_sum(x,y,z):
return x+y+z

@logger(file='file_01.log')
def func_1(x,y,z):
print("%s %s %s" %(x,y,z))

my_sum(1,2,3)
func_1(4,5,6)
"""

4、基于迭代器的方式,用while循环迭代取值字符串、列表、元组、字典、集合、文件对象

dic={'a':1,'b':2,'c':3}
str ="swfergnymymuy"
dic_iter=dic.iter()
str_iter = str.iter()
"""
while True:
try:
k=next(dic_iter)
print(k,end= " ")
print(dic[k])
except StopIteration:
break
"""
"""
while True:
try:
print(next(str_iter))
except StopIteration:
break
"""

5、自定义迭代器实现range功能

"""
def my_range(start,stop,step=1):
while start < stop:
yield start
start+=step
"""

猜你喜欢

转载自www.cnblogs.com/ydz1993/p/12563282.html