函数参数

Python中函数定义时,可以使用默认参数、可变参数及关键字参数,下面详细说明
  • 默认参数

    必须使用不变对象,如字符串等,如果默认参数是一个变量,多次调用的时候,参数就会发生改变,不是定义时的值。
    
def addFunc(T=[]):
    T.append("End")
    return T

正常使用时,不会发生错误:

>>> addFunc([1,2,3])
[1, 2, 3, 'End']
>>> addFunc(['x', 'y', 'z'])
['x', 'y', 'z', 'End']

但是,多次使用默认参数时,结果就会出错:

>>> addFunc()
['End']
>>> addFunc()
['End', 'End']

解释如下:
Python函数在定义的时候,默认参数T的值为[],默认参数T是一个变量,指向[],每次调用的时候,如果改变了T的值,则下次调用时,默认参数的值就会改变。

  • 可变参数

     传入的参数个数可变,从0到任意多个,需要在参数的前面加上一个*号。
    

    定义以下函数:

def sumFunc(*nums):
    total = 0
    for i in nums:
        total += i
    return total

然后使用:

>>> nums = [1, 2, 3]
>>> sumFunc(*nums)
6
  • 关键字参数

      允许传入0个或任意多个含参数名的参数,这些参数会自动组装成一个dict。
    

    定义以下函数:

def person(name, age, **kw):
    print 'name:', name, 'age:', age, 'other:', kw

使用如下:

>>> kw = {'city': 'Shenzhen', 'job': 'Student'}
>>> person('Jack', 24, **kw)
name: Jack age: 24 other: {'city': 'Shenzhen', 'job': 'Student'}
  • 参数组合
    可将必选参数、默认参数、可变参数和关键字参数组合使用,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数组合使用。
    定义一个函数,包含4种参数:
def func(a, b, c=0, *args, **kw):
    print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw
>>> func(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> func(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> func(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
>>> func(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}

通过一个tuple和dict,也可以调用该函数:

>>> args = (1, 2, 3, 4)
>>> kw = {'x': 99}
>>> func(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {'x': 99}

所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

注释
*args是可变参数,接收的是一个tuple;
**kw是关键字参数,接收的是一个dict。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值