函数调用 复习

---恢复内容开始---

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

可变参数

定义函数的时候 ()内可定义是可变参数 *参数

已经有一个list或者tuple,要调用一个可变参数怎么办?Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去

例如 

>>> nums = [1, 2, 3]
>>> calc(*nums)
14 #*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见


关键字参数

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

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

函数person除了必选参数nameage外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数

命名关键字参数

和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数

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

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收cityjob作为关键字参数

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

def person(name, age, *args, city, job):
    print(name, age, args, city, job)
命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错

参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。
虽然可以组合多达5种参数,但不要同时使用太多的组合,否则函数接口的可理解性很差。

练习

以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积:

def product(x,*number):
    sum1=1
    for n in number:
        sum1=sum1*n
    return x*sum1



---恢复内容结束---

原文地址:https://www.cnblogs.com/009NotFound/p/10465656.html