zoukankan      html  css  js  c++  java
  • 20.03.24作业

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

    dic={}
    def func(choice):
        def wrapper(f):
            dic[choice]=f
            def inner(*args,**kwargs):
                f(*args,**kwargs)
            return inner
        return wrapper
    @func('1')
    def login():
        pass
    @func('2')
    def register():
        pass
    

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

    import time
    
    def wrapper(func):
        def inner(*args,**kwargs):
    
            with open('a.txt','w',encoding='utf-8') as f:
                func(*args, **kwargs)
                res = time.strftime('%Y-%m-%d %X')
                f.write(res)
    
        return inner
    
    @wrapper
    def f1():
    
        print('你个傻逼')
    f1()
    
    

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

    d='abcdfe'
    d_iterator=d.__iter__()
    while True:
        try:
            print(d_iterator.__next__())
        except StopIteration:
            break
    lis=[1,2,3,4]
    list=lis.__iter__()
    while True:
        try:
            print(list.__next__())
        except StopIteration:
            break
    tupe=('a','b','c','d')
    tup=tupe.__iter__()
    while True:
        try:
            print(tup.__next__())
        except StopIteration:
             break
    dic={'a':1,'b':2}
    di=dic.__iter__()
    while True:
        try:
            print(di.__next__())
        except StopIteration:
            break
    a={'a','b','c'}
    b=a.__iter__()
    while True:
        try:
            print(b.__next__())
        except  StopIteration:
            break
    
    with open('a.txt',mode='r') as f:
        res=f.read()
        f1=res.__iter__()
    while True:
        try:
            print(f1.__next__())
        except StopIteration:
            break
    

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

    def re_range(start,end,step=1):
        while start<end:
            yield start
            start+=step
    cc=re_range(1,10,2)
    print(cc)
    for line in cc:
        print(line)
  • 相关阅读:
    带你了解 MySQL Binlog 不为人知的秘密
    算法的空间复杂度
    算法的时间复杂度
    xargs--冬天里的一丝暖意
    "三剑客"之awk心中无剑
    hadoop之yarn(优化篇)
    对hadoop RPC的理解
    mysql优化篇(基于索引)
    [python学习手册-笔记]003.数值类型
    [python学习手册-笔记]001.python前言
  • 原文地址:https://www.cnblogs.com/zhangjinyi97/p/12562639.html
Copyright © 2011-2022 走看看