python 函数的参数

函数的参好几种类型:位置参数、默认参数、可变参数、关键字参数、命名关键字参数。这些参数可以混合使用,但是顺序不能变。

位置参数

举个例子:

def my_power1(x,n):
    return x**n

其中,x和n就是位置参数,在函数调用时必须传入这两个值。

默认参数  (默认参数必须指向不变对象!list是可变的,因此默认参数不可以指向list。)

举个例子:

def my_power2(x,n=2):
    return x**n

其中,x是位置参数,n是默认参数,当函数被调用时,可以传入n的值,也可以不传入n的值。不传入时,默认为2。

可变参数

可变参数就是说,传入的参数的个数是可变的,可以是0个,1个,2个....

举个例子:

def my_calc(*numbers):    #求取传入的所有参数的平方和
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

此时,参数numbers前边加上了*,表示这是一个可变参数,这些可变参数在函数调用时自动组装成一个tuple。

关键字参数

关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装成一个dict。

举个例子:

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

在函数调用时,可以只传入name和age,也可以在传入name和age的同时传入其他参数。

调用及结果:

>>>person('Bob',10)
name:Bob age:10 other:{}
>>>person('Bob',10,city='Beijing')
name:Bob age:10 other:{'city':'Beijing'}
>>>person('Bob',10,city='Beijing',sex='Man')
name:Bob age:10 other:{'city':'Beijing','sex':'Man'}

命名关键字参数

对于关键字参数,函数的调用者可以传入不受限制的关键字参数,但是命名关键字参数可以限制关键字参数的名字,只接收特定的关键字参数。

举个例子:

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

使用*作为特殊分隔符,*后边的参数被视为命名关键字参数。在调用时,命名关键字参数要将参数名一起写出来。

调用及结果:

>>>person('Jack',24,job='Engineer',city='Beijing')
Jack 24 Engineer Beijing

ps:不是很懂为什么要有命名关键字参数,调用时也不能省



猜你喜欢

转载自blog.csdn.net/sime_km/article/details/79488035
今日推荐