函数-冗余参数
- 向函数传 元组 - *tupleName
def functionName(arg1, arg2) :
print arg1, arg2
tupleName = (1, 2)
functionName(*tupleName)
- 向函数传 字典 - **dictName
def functionName(arg1, arg2) :
print arg1, arg2
dictName = {"arg1":"value1", "arg2":"value2"}
functionName(**dictName) # 传value
functionName(*dictName) # 传key
- 处理多余参数
- functionName(*args)
- functionName(**keywordargs)
1. 引入
>>> def f(x):
... print x
...
>>> f(123)
123
>>> f('hello')
hello
>>> f(range(3))
[0, 1, 2]
>>> f( (1,2,3) )
(1, 2, 3)
>>> f( {1:'a', 2:'b'} )
{1: 'a', 2: 'b'}
2. 格式化输出
>>> print "%s"
%s
>>> print "%s" % "abc"
abc
>>> print "%s, %s" % ("a", "b")
a, b
3. 用 元组的元素 给 每个 形参 赋值
3.1 error
>>> def f(arg1, arg2) :
... print arg1, arg2
...
>>> t = ('a', 'b')
>>> f(t)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() takes exactly 2 arguments (1 given)
3.2 正确
------------------------
def f(arg1, arg2) :
print arg1, arg2
print "%s, %s" % (arg1, arg2)
t = (1, 2)
f(*t)
-------output----------
1 2
1, 2
------------------------
4. 用 字典的元素 给 每个 形参 赋值
------------------------
def f(arg1, arg2) :
print arg1, arg2
d = {"arg2":"value2" , "arg1":"value1"}
f(*d)
f(**d)
-------output----------
arg1 arg2
value1 value2
------------------------
5. 处理多余实参
5.1 以 元组 处理 冗余参数
------------------------
def f(x, *args) :
print "x =", x
print "args =", args
f(1)
f(1,2)
f(1,2,3)
-------output----------
x = 1
args = ()
x = 1
args = (2,)
x = 1
args = (2, 3)
------------------------
5.2 以 元组+字典 处理 冗余参数
------------------------
def f(x, *args, **kwargs) :
print "x =", x
print "args =", args
print "kwargs =", kwargs
f(1)
f(1, 2)
f(1, 2, z = 3)
# f(x = 1, 2, z = 3) # error
f(x = 1, y = 2, z = 3)
-------output----------
x = 1
args = ()
kwargs = {}
x = 1
args = (2,)
kwargs = {}
x = 1
args = (2,)
kwargs = {'z': 3}
x = 1
args = ()
kwargs = {'y': 2, 'z': 3}
------------------------