python3函数的参数

函数的定义能简化代码的逻辑,对于函数的调用者来说,只需要知道如何正确的传递参数,以及知道函数将返回什么值就可以了,而函数内部的复杂逻辑被封装起来,调用者不必了解。

位置参数

调用函数时,传入实参的值按照位置顺序以此赋给形参。

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

上面这个函数中的x和n就是位置参数。

默认参数

python的函数同时还允许你给函数的参数设置默认值,当调用者没有给出参数的值时自动使用默认值。设置默认参数时要注意,必选参数必须在默认参数之前。

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

注意:默认参数必须指向不可变对象,否则会发生不可预知的错误。

可变参数

在Python函数中还可以定义可变的参数,参数的个数可以是任意个,定义参数时,只需要在参数的前面加一个 * 符号即可。

def N(×num):
    s = 1
    for n in num:
        s = s * n
    return s

A = N(1,2,3,4,5,6,7,8,9,10) #A = 3628800

关键字参数

python的关键字参数允许你传入任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。传入关键字参数的时候必须指定参数的名称(参数名由调用者自行取定),否则该参数会被认为是位置参数从而报错。

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

preson("J",33,city = "Beaijing",job = "Engineer")

命名关键字参数

命名关键字参数:调用者传递参数必须给出参数名,而且参数名是函数定义者预先定义好的。

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

#如果函数的参数中有可变参数,那么后面的命名关键字参数就不需要 * 符号来定义了
def person(name, age, *args, city, job):
    print(name, age, args,city, job)

总结:对于任意函数,都可以通过类似func(*args,**kw)的形式调用它,无论它的参数形式是怎样的。

猜你喜欢

转载自www.cnblogs.com/jxc321/p/9249725.html