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)