函数的参数

1.默认参数。定义默认参数要牢记一点:默认参数必须指向不变对象!
为什么要设计str、None这样的不变对象呢?因为不变对象一旦创建,对象内部的数据就不能修改,这样就减少了由于修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有。我们在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。

def add_end(L=None):
    if L is None:
        L = []
    L.append('END')
    return L

2.可变参数(参数前面加*)

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

print(calc(1, 2, 3))

3.关键字参数(**kw)
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

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

person('Jack', 18)
person('Mike', 30, city='Beijing', job='Engineer')

4.命名关键字参数(*后面的参数被视为命名关键字参数)
如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。

def person(name, age, *, city='Beijing', job):
    print(name, age, city, job)

# 如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*
def person2(name, age, *args, city, job):
    print(name, age, args, city, job)

# 命名关键字参数必须传入参数名。由于命名关键字参数city具有默认值,调用时,可不传入city参数
person('Jack', 18, job='Engineer')

转载于:https://my.oschina.net/u/3646781/blog/1587052

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值