参数
参数:函数的参数是存在内存中的栈信息,函数执行完后便会释放掉。
***************************普通参数****************************
def test_args(a, b):
print a, b,
print a+b
test_args(1, 2)
***************************默认参数****************************
def test_args(a, b=1, c=3):
print a, b, c,
print a+b+c
test_args(2)
test_args(23, c=4.56)
test_args('abc',123, 'xyz', 456.789)
需求:某一天我的函数想增加一个参数怎么办?
解决:通过默认参数去解决。
*************************高阶 变长参数 ****************************
可变长参数: 达到调用函数的时候,可以传入任意形式任意个数的参数。
*用来传递任意个无名字参数,这些参数会一个Tuple的形式访问。
**用来处理传递任意个有名字的参数,这些参数用dict来访问。
*args : tuple
**kwargs : 就是当你传入key=value是存储的字典
假如我定义一个函数, 参数设置成 *args, **kwargs的变长参数,那么也就是说定义的函数,参数不限定。
*args, **kwargs:代表着可以支持传入的任何形式的参数。
def test(a, *args, **kwargs):
print a
print args
print kwargs
test(1, 2, 3, t=4, f=5)
def foo(*args, **kwargs):
print 'args = ', args
print 'kwargs = ', kwargs
print '---------------------------------------'
foo(1,2,3,4)
foo(a=1,b=2,c=3)
foo(1,2,3,4, a=1,b=2,c=3)
foo('a', 1, None, a=1, b='2', c=3)