7.28 学习笔记
# 6、写函数,检查用户传入的对象(字符串、列表、元组)
import time
# 的每一个元素是否含有空内容,并返回结果。
# def chek5(a):
# for i in a:
# for s in i:
# if s==' ':
# return i
# break
# print(chek5([123,456,'ss' ,123,4,5,666,'dskjaldj sd']))
# def cheak5(a):
# for i in a:
# if i==' ':
# return True
# print(cheak5(['asdusagjdgadsgjsaghai54d5a6d55d62a','asdad123d1a32s',' ']))
# #7、写函数,检查传入字典的每一个value的长度,如果大于2,
# # 那么仅保留前两个长度的内容,并将新内容返回给调用者。
# def cheak8(a):
# for i in a:
# a[i]=a[i][0:2]
# return a
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# print(cheak8(dic))
# # 8、写函数,接收两个数字参数,返回比较大的那个数字。
# def turn(a,b):
# if a>b:return a
# else: return b
# 9、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。
# import os #加载模块
# def func(filename,a,b):
# with open(filename,encoding='utf-8',mode='r+') as d ,open('bak',encoding='utf-8',mode='w+') as e: #两个文件之间用,隔开
# for line in d:
# if a in line:
# line=line.replace(a,b) #修改后的值写入源文件
# e.write(line)
# os.remove(filename) #移除修改前的文件
# os.rename('bak',filename) #重命名之后的文件
# # d.seek(0)
# # print(d.read())
# pass
# func('log','a','*')
#最简单的闭包:
# def fun1():
# a=1
# def inner():
# nonlocal a
# a += 1
# print(a)
# return inner
# i=fun1()
# i()
# 2、写函数,接收n个数字,求这些参数数字的和。
# def num(*args):
# a=0
# for i in args:
# a+=i
# print(a)
# pass
# num(1231,1,2,3,455,6465,4,5,6)
# 3、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
# a=10
# b=20
# def test5(a,b):
# print(a,b)
# c = test5(b,a)
# print(c)
#c为print()的返回值,为none
# 4、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
# a=10
# b=20
# def test5(a,b):
# a=3
# b=5
# print(a,b)
# c = test5(b,a)
# print(c)
#函数体内定义了函数则以函数内部的值为准
#装饰器
# import time
# def func():
# time.sleep(0.1)
# print('sdikulafakey')
# def timmer(f): #装饰器函数
# def inner():
# start=time.time() #获取当前时间
# f()
# end=time.time()
# print(end-start)
# return inner #传内部函数名字
# fun=timmer(func)
# func()
# 装饰器的作用 —— 不想修改函数的调用方式 但是还想在原来的函数前后添加功能
# timmer就是一个装饰器函数,只是对一个函数 有一些装饰作用
##装饰带参数函数的装饰器
'''
def timmer(f): #装饰器函数,表层只需要局部函数名
def inner(*args,**kwargs): #为了防止被修饰函数有多个元素需要输入
#(1,2) /(1)
start = time.time() #前增功能
ret = f(*args,**kwargs) #f(1,2) #被装饰的函数
end = time.time() #后加功能
print(end - start)
return ret #一级一级往上传递返回值
return inner
#@timmer #语法糖 @装饰器函数名
def func(a,b): #被装饰的函数
time.sleep(0.01)
print('老板好同事好大家好',a,b)
return '新年好'
'''
# @timmer #语法糖 @装饰器函数名
# def func1(a): #被装饰的函数
# time.sleep(0.01)
# print('老板好同事好大家好',a)
# return '新年好'
# #func = timmer(func)
# ret = func(1,2) #inner()
# ret = func(1,b = 2) #inner()
# print(ret)
#自己写
'''
def wrapper(f): #第一层只需要假设函数名
def inner(*args,**kwargs): #在inner函数中进行处理,需要顾及无限种输入情况*****要输入无敌格式*******
print('前增加功能')
ret=f(*args,**kwargs) #两个无敌格式名字不一样
print('后增加功能')
return ret #返回原函数及其格式
return inner #2连
@wrapper
def asd(a,b):
print('现有功能',a,b)
asd(1,2)
'''
不用羡慕他人,只管静心钻研这一刻!