对python中函数参数的认识

本文介绍了Python函数中的五种参数类型:位置参数、默认参数、可变参数、关键字参数和命名关键字参数。位置参数按顺序传入,而默认参数在定义时设定默认值。可变参数允许传入任意数量的参数,以元组形式接收。关键字参数需指定参数名,以字典形式接收,而命名关键字参数需在其他参数之后,确保参数明确。

Python的函数中有五种参数,分别为位置参数、默认参数、可变参数、关键字参数和命名关键字参数,命名关键字参数只在python3中使用,在python2中不可用。

1、位置参数
def test(a,b,c):
    print(c,b,a)

test(1,2,3)

运行结果为:

3 2 1

解释说明:
语句test(1,2,3)中的123分别对应test(a,b,c)中的abc,与位置有关,如果要调整位置,需要在调用函数的时候把参数名写上,例如:

def test(a,b,c):
    print(c,b,a)

test(1,c=2,b=3)

运行结果为:

2 3 1

2、默认参数
def test(a,b,c=4,d=5,e=6):
    print(a,b,c,d,e)

test(1,2,e=8,c=19)

运行结果为:

1 2 19 5 8

解释说明:
ab是位置参数,cde是默认参数,默认参数是在定义函数是有一个默认的值,在调用函数时如果没给默认参数赋值,就会使用默认值。例如本例中,12对应abc虽然有默认值4,但是在调用函数的时候给c的赋值是19,结果19生效·;调用函数的时候没给d赋值,所以d会使用默认值5;最后给e赋值为8。定义函数的时候,默认参数必须写在位置参数的后边,默认参数的位置可以不按顺序调用,当不按顺序调用时,需要写参数名。

3、可变参数
def test(a,b,*nums):
    print(a,b,nums)

test(1,2,4,3,5)
test(1,2)

运行结果为:

1 2 (4, 3, 5)
1 2 ()

解释说明:
可变参数的形式是*参数名,调用函数时,在位置参数后边可以写任意多个参数,也可以是0个参数。这些任意多个参数以元组(tuple)的形式呈现。

可变参数也可以这样用:

def test(a,b,*nums):
    print(a,b,nums)

s = (4,3,5)
test(1,2,8,*s,7)

运行结果为:

1 2 (8, 4, 3, 5, 7)

解释说明:
可变参数可以直接使用现成的元组,*号加上元组对应的变量名。

4、关键字参数
def person(name,age,**kw):
    print(name,age,kw)

person('xiaoming',8,gender='male',job='student')

运行结果为:

xiaoming 8 {‘gender’: ‘male’, ‘job’: ‘student’}

解释说明:
关键字参数的形式是**参数名,在调用函数的时候,在位置参数后边可以写任意多个参数,但是必须写上参数名,例如本例中的genderjob,关键字参数以字典(dict)的形式呈现。

和可变参数类似的地方是,如果已经有现成的字典,关键字参数也可以这样用:

def person(name,age,**kw):
    print(name,age,kw)
other = {'gender':'male','job':'student'}
person('xiaoming',8,hobby='swimming',**other,height='130')

运行结果为:

xiaoming 8 {‘hobby’: ‘swimming’, ‘gender’: ‘male’, ‘job’: ‘student’, ‘height’: ‘130’}

解释说明:
在使用现成的字典时,形式是**加上字典的变量名

5、命名关键字参数
def test(a,b,*,c,d):
    print(a,b,c,d)

test(1,2,c=3,d=4)

运行结果为:

1 2 3 4

解释说明:
命名关键字和位置关键字之间有一个*,在调用函数时,必须写上参数名,例如本例中的c,d,不然会报错。此处的*也可以是可变参数,使用方法如下:

def test(a,b,*nums,c,d):
    print(a,b,nums,c,d)

test(1,2,7,8,c=3,d=4)

运行结果为:

1 2 (7, 8) 3 4

5、五种参数定义的顺序

从左往右依次为,位置参数,默认参数,可变参数/命名关键字参数,关键字参数。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值