第一题
# 1.写出完整的装饰器(不用考虑带参装饰器,就是普通装饰器)语法 def outter(fn): def inner(*args,**kwargs): res=fn(*args,**kwargs) print("新增功能") return res return inner @outter def fn(*args,**kwargs): print("你好") fn() """ """ 第二题 #2.有一个计算两个数和的方法,为其添加一个确保两个参数都是int或float 类型的装饰器,保证运算不会抛异常。 def check_num(func): def indder(n1,n2): b1=isinstance(n1,int) or isinstance(n1,float) b2=isinstance(n2,int) or isinstance(n2,float) if not (b1 and b2): print("不能求和") return return func(n1,n2) return indder @check_num def add(n1,n2): return n1+n2 print(add(3,4)) """ """ 第三题 3.有一个一次性录入人名并返回人名的方法(人名只考虑存英文),为其添加 一个装饰器,使得处理后人名首字母一定大写 def outter(func): def inner(): res=func() return res.title() return inner @outter def get_name(): name=input('name: ') return name print(get_name())
4.需求:用函数修改文件 def check_file(filename,old,new): import os with open(filename,'r',encoding='utf-8') as read_f: with open('.filename','w',encoding='utf-8') as write_f: for line in read_f: if old in line: write_f.write(line.replace(old,new)) else: write_f.write(line) os.remove(filename) os.rename('.filename',filename) check_file('001.txt','鱼','胡')
5.需求:写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 def check_list(list): if len(list)>2: list=list[0:2] return list else: return list print(check_list([1])) 难点:list=list[0:2]
5、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 def check_list(list): return list[::2] print(check_list([1,2,3,4,5,6]))