函数调用的参数传递方式
函数调用的参数传递方式分为两种:传值调用与传引用(传址)调用。
传值调用
x = 7
def double(x):
x *= 2
print("函数内部:x =",x)
return x
double(x)
print("函数外部:x =", x)
函数内部: x = 14
函数外部: x = 7
传引用(传址)调用
l = [1,2,3]
print("函数外部:l =", l)
def append(l, a = 0):
l.append(a)
print("函数内部:l =", l)
append(l)
print("函数外部:l =", l)
函数外部:l = [1, 2, 3]
函数内部:l = [1, 2, 3, 0]
函数外部:l = [1, 2, 3, 0]
不固定长度参数
*args
def sum(*args):
print(*args)
print(args)
sum = 0;
for i in args:
sum += i
return sum
print(sum(1, 2, 3, 4))
'''
1 2 3 4
(1, 2, 3, 4)
10
'''
**kwargs
def f(**kwargs):
print(f.__name__ + ":")
print(kwargs)
g(**kwargs)
def g(**kwargs):
print(g.__name__ + ":")
print(kwargs)
f(a=1, b=2, c=3, d=4)
'''
f:
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
g:
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
'''
def test_kwargs(**kwargs):
if kwargs is not None:
for key, value in kwargs.iteritems():
print("{} = {}".format(key,value))
# Or you can visit kwargs like a dict() object
# for key in kwargs:
# print("{} = {}".format(key, kwargs[key]))
test_kwargs(name="python", value="5")