我们可向函数传递动态参数,*args,**kwargs,首先我们来看*args,示例如下:
1.show(*args)
def show(*args):print(args,type(args))#以元组的形式向列表传递参数show(11,22,33,44,55,66)
首先我们定义了一个函数,函数show(*args)里面的*args可以接收动态参数,这里我们接收一个元组形式的参数,我们可以向show()里面传递很多参数,函数默认把这些参数作为一个元组进行接收。
2.show(**args)
def show(**kwargs):print(kwargs,type(kwargs))#以字典的形式向函数传递参数show(k1=80,k2="alex")
由上面代码可以看出,**kwargs是以字典的形式接收参数的,我们知道,字典是由键-值对组成的,key-value,因而我们必须向里面传入键-值对的参数形式才能够接收,因此我们在里面传入了参数k1=80,k2="alex".这样生成了一个字典,从代码可以看出来。
3.show(k,*args)
def show(k,*args):
print(k,type(k))
print(args,type(args))
show([11,22],33,44,55,88)
运行结果如下:
[11, 22] <class 'list'>(33, 44, 55, 88) <class 'tuple'>
由上面代码可以看出,我们向函数定义了两个参数,一个是k,一个是*args,我们知道,形参k只能接收一个对象参数,*args可以接收多个参数并且放在一个元组中,下面我们向函数传递了多个参数,看是如何接收的。从运行结果(1)可以看出,形参k接收了参数[11,22];而后面输入的值传递给了*args,并在存放在一个列表中。
4.show(*args,**kwargs)
只要函数有这两个参数那么,可以传递任何形式的实参进来,人当杀人,佛当杀佛,因为可以接收任意形式的参数,但是我们知道,字典必须是由键值对组成,传递的参数要满足key=value的格式,否则会报错。这点一定要记得,Python中默认给字典传递参数的方法就是键-值对。
def show(*args,**kwargs):print(args,type(args))print(kwargs,type(kwargs))show(123,"alex",666,alex="sb",nanyang="degnzhou")
运行结果如下:
(123, 'alex', 666) <class 'tuple'>{'nanyang': 'degnzhou', 'alex': 'sb'} <class 'dict'>
我们可以看到,前面的元素被放到了一个元组tuple中,后面的元素被放到了一个字典dict中,但是我们一定要记得,*args,一定要在**kwargs前面,不然会报错,顺序一定是单个参数,动态元组,动态字典方式。
下面我们来看一个实例:
def show(*args,**kwargs):print(args,type(args))print(kwargs,type(kwargs))l = [11,22,33,44]d = {"n1":88,"alex":"sb"}#我们想把列表l传递给形参*args,把字典传递给形参**kwargs,看下面方式是否可以show(l,d) (1)
#如果向实现上面功能,要进行表示,指定把哪个参数传递给形参*args,另一个参数传递给形参××kwargs
新闻热点
疑难解答