python函数输⼊参数数量_如何实现Python函数的参数不限个
数?
我们在写Python代码的时候,有的时候需要设计⼀种函数,这种函数的参数个数不确定,或者说要求函数的参数不限个数,只有在函数被调⽤的时候,才能确定参数的数量。本⽂介绍如何实现这样的函数参数接⼝的设计。
tuple参数(*args)
我们在设计函数参数的时候,如果使⽤⼀个*符号后跟字母,表⽰这是⼀个tuple参数,tuple内数据的个数,就不限制了。
我们来设计⼀个简单的函数,这个函数的作⽤就是将tuple参数内所有的数据相加求和:
>>> def add(*args):
... print(args)
... print(type(args))
.
.. sum = 0
... for i in range(len(args)):
... sum += args[i]
... print(sum)
...
>>> add(1,2,3)
(1, 2, 3)
6
>>> add(1,2,3,8,9,666)
(1, 2, 3, 8, 9, 666)
689
>>> add()
()
add函数的参数,*args,*符号后⾯必须要有字母跟随,如果参数是⼀个独⽴的*符号,语义是不⼀样的!
*args参数在函数内部,是⼀个tuple类型的对象,使⽤时要去掉前⾯的*符号,直接使⽤args。在调⽤函数时,看不出来这是⼀个tuple,调⽤时并⽆特别之处,只是参数的数量不确定,可以很多,注意哦,也可以没有参数。
实现不限参数个数的函数接⼝,⼀般都使⽤这种⽅式,tuple对象内的各数据类型应该保持⼀致,如果不⼀致,⼤概率这不是⼀个好的设计,因为对各数据的处理⽅式会不⼀样。
dict参数(**kwargs)
设计函数参数时,如果使⽤两个**符号后跟字母,表⽰这个参数是⼀个dict对象。这种⽅式也可实现函数参数的个数不限。
下⾯的代码⽰例,是⼀个输⼊dict参数的函数,函数的作⽤,将dict对象中的数据,全部以 key : value 配对的⽅式显⽰出来:
>>> def test_kw(**kwargs):
... print(kwargs)
... print(type(kwargs))
... for k,v in kwargs.items():
... print(k,':',v)
...
>>> test_kw(a=1,b=2,c=3,d=4)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
a : 1
b : 2
c : 3
d : 4
>>> test_kw(a=1,b=2,c=3,d=4,x=999)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'x': 999}
a : 1
b : 2
c : 3
d : 4菜鸟教程python如何用函数将长度不同的数列相加
x : 999
>>> test_kw()
{}
采⽤**kwargs参数,函数调⽤时,要写成key=value的形式。同样的,这种⽅式也兼容没有参数输⼊。
使⽤这种⽅式的dict参数,函数内部可能需要预先知道有哪些key值可以使⽤,或者就是直接遍历所有的key和value。我想到了这样⼀个应⽤场景,设计⼀个函数,作⽤是替换输⼊字符串中的某些字符,返回新字符串,替换规则通过**kwargs传⼊。代码实现如下:
>>> def char_replace(originstr, **kwargs):
... newstr = ''
... for c in originstr:
... if c in kwargs.keys():
... newstr += kwargs[c]
... else:
... newstr += c
... return newstr
...
>>>
>>> char_replace('abcde', a='x')
'xbcde'
>>> char_replace('abcde', a='x',c='y')
'xbyde'
>>> char_replace('abcde', a='x',c='y',e='z')
'xbydz'
以上就是在Python中,实现函数参数个数不确定的两种⽅法。-- EOF --
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论