python函数迭代器+万能参数(动态参数)
- args:接收的是按照位置传参的值,然后组成一个元组
- **kwargs:接收的是按照关键字传参的值,然后组成一个字典
- 传参的时候必须先按照位置传,然后是默认参数,然后再按照关键字传递(形参和实参中的都一样)
在参数前面加*,这样可以传入多个参数,默认以元组的形式储存
如果直接传入一个list=[1,2,3,4],即func(list),则将list作为一个整体传入,即a=([1,2,3,4])
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。如果这样传入:func(*list),则是将list中的元素一一传入,即a=(1,2,3,4)
def func(a,*args,**kwargs): print(a) print(args) #这是一个元组 print(*args) #加*传参,就将元组拆分开来,一个一个传过去 print(kwargs) #以字典的形式存储 print(*kwargs)#加一个*表示表示字典的键,func1(**kwargs)可传入另一个函数 #print(**kwa rgs) func(1,2,3,b = 4,c = 5)
1 (2, 3) 2 3 {'b': 4, 'c': 5} b c
def a(*args, **kwargs): # 此处的args表示装包,即将1,34,5装包成一个元组 print(args, type(args)) # (1, 34, 5) <class 'tuple'> # 拆包,在args前加入* print(*args) # 1 34 5 # 一个*时表示获取键值key print(*kwargs) # a b c # 注意直接将字典拆开时时无法打印的,此时借助一个函数打印 # 此时相当直接使用b(a=1,b=24,c=5)进行赋值,如果函数b中不是a,b,c会报错 b(**kwargs) def b(a, b, c): print(a) print(b) print(c)
迭代器
需求:在不改变func()函数的前提下,测试func函数运行所需要的时间。也可批量测试其他函数。

import time def times(f):#装饰函数 def inner(*args,**kwargs): begain = time.time() ret = f(*args,**kwargs) #被装饰的函数,用万能参数传递参数 end = time.time() ues_time = end - begain print(ues_time) return ret return inner @times #语法糖,相当于func = times(func) def func(a,b,c,d): time.sleep(0.01) total = a + b + c + d print('这个程序运行用了多长时间') return total ret = func(1,3,c = 4,d = 5) print(ret)View Code
迭代器模型
def times(f):#装饰函数 def inner(*args,**kwargs): #在被装饰的函数之前加的内容 ret = f(*args,**kwargs) #被装饰的函数,用万能参数传递参 # 在被装饰的函数之后加的内容 return ret return inner @times #语法糖,相当于func = times(func) def func(): pass

更多精彩