1、对参数的修改
正常使用
元组,字符串,int类型不可变,作为参数传入,也不会更改本身的值
列表,字典是可变数据结构,作为参数传入,如果在函数执行时,本身值会被函数内的操作更改
例外情况
如果想修改不可变数据结构:
只能通过函数返回的值重新赋值。如果想不更改可变数据结构的参数:
只能复制改结构,name[:]
2、关键字参数和默认值
参数的传递,默认根据函数定义时的位置,也可以手动指定:
def hello(greeting,name): print "%s, %s!" %(greeting,name) hello(greeting="hello",name="qujun")
3、收集参数
当有大量的参数需要传递的时候,函数的参数定义可以使用*params,如:
def muli_paramter(*params): print params
注:这样收集到的多个参数将是元组格式存储
由于*params收到的是位置固定的参数,想要使用关键字参数赋值时就会报错,此时需要使用**params
def print_params(x,y,z=3, *pospar,**keypar): print x,y,z print pospar print keypar
注:**params收集到的参数是字典格式
4、参数的逆向使用
def add(x,y): return x + y params=(1,2) add(*params) def hello(greeting="hello",name="qujun"): print "%s,%s!" %(greeting,name) keypar={'name'="xixi","greeting"="haha") hello(**keypar)