1.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def func(dic): for k in dic: if len(dic[k]) > 2: dic[k] = dic[k][:2] return dic dic = {"name": "风光无极", "adress": "3435", "s": "erre34", "s": [2, 3, 4, 5], "s": "3"} print(func(dic))
2.写函数,接收两个数字参数,并返回比较大的那个数字。
def func(x, y): return x if x > y else y print(func(5, 8))
3.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码。
FLAG = False def login(func): def inner(*args, **kwargs): global FLAG if FLAG: ret = func(*args, **kwargs) return ret else: username = input('请输入用户名:') password = input('请输入密码:') if username == '林彬' and password == '123': FLAG = True ret = func(*args, **kwargs) return ret else: print("用户名或密码错误") return inner @login def name(): print("赖玉英") @login def love(): print('大狗屎') name() love()
4.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名写入文件。
def log(func): def inner(*args, **kwargs): ret = func(*args, **kwargs) with open('log', 'a', encoding='utf-8') as f: f.write(func.__name__ + '\n') return ret return inner @log def love(): print('赖狗屎我爱你') @log def love2(): print('赖狗屎吃狗屎') @log def love3(): print('赖美女我爱你') love3() love2() love() love3()
5.监听文件输入的列子。
def func(filename): with open(filename, encoding='utf-8') as f: while 1: line = f.readline() if line.strip(): yield line.strip() g = func('file') for i in g: print(i)