Python函数的参数

位置参数:

比如:

其中x和n分别占了一个位置,所以称为位置参数,

位置参数是必须传进来的!

默认参数:

比如:

>>> def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

  

必选参数在前,默认参数在后,当不传入默认参数时,

函数会默认为指定的值。传入默认参数时,会修改为

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

可变参数:

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

  

调用该函数时,可以传入任意个参数,包括0个参数

Python允许你在list或tuple前面加一个*号,变成可变

参数传进去。

关键字参数:

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

关键字参数允许你传入0个或任意个含参数名的参数

调用该函数时,可以只传入必选参数,

也可以传入任意个数的关键字参数。

也可以先组装出一个dict,在前面加**,

传进去。

命名关键字参数:

>>> def person(name, age, *, city, sex):
    print(name, age, city, sex)

要限制关键字参数的名字,就可以用命名关键字参数

命名关键字参数需要一个特殊分隔符*

若已经有了一个可变参数,就不再需要一个特殊分隔符*

>>> def person(name, age, *args, city, sex):
    print(name, age, args, city, sex)

命名关键字参数必须传入参数名

指定的命名关键字参数也必须传入:

>>> person('a',12,1212,212,1212,city='aaa')
Traceback (most recent call last):
  File "<pyshell#365>", line 1, in <module>
    person('a',12,1212,212,1212,city='aaa')
TypeError: person() missing 1 required keyword-only argument: 'job'

当命名关键字参数有默认值时,可以不传入该参数

如果没有可变参数,就必须在命名关键字参数前

有*号,否则无法分辨命名关键字参数与位置参数

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数

原文地址:https://www.cnblogs.com/kwebi/p/9125122.html