Python函数的参数

1. 位置参数

比如power(x,y)中的x和y就是一个位置参数,调用函数时按位置顺序赋值给参数x和y。

 

2. 默认参数

当定义多个参数时,在调用函数时部分参数可能不需要传值,就需要将该参数赋一个默认值,比如:

def child_info(name,gender,age=6,city='Chengdu'):

    pass

当不需要提供年龄和城市,只提供必需的两个参数,调用结果就是默认值;只有和默认参数不一致的学生才需要提供。注:当不按顺序提供参数时,调用需提供参数名,比如:child_info('Adam','male',city='Tianjing'),此时age仍然使用默认值。

定义默认参数要牢记一点:默认参数必须指向不变对象!

 

3. 可变参数

定义函数的参数个数不固定时,而定义函数必须要输入确定的参数,此时普通做法是通过作为list或tuple传进来,但此方法不实用可演变为在参数前面加一个*号。在函数内部,参数接收到的仍是一个tuple,当调用该函数时,可以传入任意的参数,包括0个参数。比如:

def cal(*numbers)

    sum=0

    for n in numbers:

        sum=sum+n*n

        return sum

计算1的平方+2的平方时:cal(1,2)   ----而不是写成cal([1,2])。

如果已有一个list或tuple(如:nums=[1,2,3],要调用一个可用参数的话可以这样写:cal(nums[0],nums[1],nums[2])

总结:*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。

 

4. 关键字参数

允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组长为一个dict。比如:

def person(name,age,**kw):

    print(name,age,kw)

即表示除了name和age是必选参数外,还接受关键字参数kw。

1)在调用函数时可以只传入必选参数:person('Lily',30)

2)也可传入任意个数的关键字参数:person('Bob',35,city='Beijing')或person('Adam',45,gender='M',job='Tester')

3)如果已有一个dict(如:extra={'city':'Beijing','job':'Tester}),要调用一个关键字参数的话可以这样写:person(Jack',22,**extra)

总结:“”extra表示把extra这个dict的所有key-value用关键字参数传入到函数**kw参数,kw就获得了一个dict。

 

5.命名关键字参数

是关键字函数的补充使用,当传入任意含参数名的参数时,需要在函数内部对传入的参数通过kw检查。当需要限制关键字参数的名字时,可以用命名关键字参数。用法:参数中需要一个特分隔符*,*后面的参数被视为命名关键字参数。

 

6.参数组合

对以上参数类型组合使用,除了可变参数和命名关键字参数无法混合。注:参数定义的顺序:必选参数,默认参数,可变参数/命名关键字参数,关键字参数。

 

总结:对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。*args是可变参数,接收的是一个tuple;**kw是关键字参数,接收的是dict。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值