总结Python函数参数的六种类型
⽬录
⼀、函数的单参数传递
⼆、多参数传递
三、关键字参数
四、缺省参数
五、不定长参数-元组
六、不定长参数-字典
前⾔:
Python函数之所以很好⽤,还有⼀点就的能传递参数实现不同场景的灵活使⽤,对于函数参数的类型⼩编总结了6种不同的形式。下⾯来⼀⼀学习下。
⾸先来⼀个问题:使⽤⼀个函数来打印3*2,3*3,3*4的结果。
正常情况下⼤家可能直接封装⼀个函数,在函数体内来完成这三个数的乘法,如下:
def p_num():
print(3 * 2)
print(3 * 3)
print(3 * 4)
p_num()
返回结果:
6
9
12
上⾯的结果实现了题⽬要求,这时候如果再来⼀个问题:⽤⼀个函数输出5*2,5*3,5*4的结果。
这时候你就会发现,你必须再封装⼀个函数来实现这样的效果,但是很多同学会发现,这个效果和我们上⾯的效果很相似。有的同学就会想到,第⼀题函数中的3我们可不可以⽤⼀个变量来代替,恭喜你,python也是这样想的,所以就引⼊参数这个概念,我们来看看python是怎么实现的吧。
⼀、函数的单参数传递
def p_num(n): # 设置⼀个形参n
print(n * 2)
print(n * 3)
print(n * 4)
p_num(5) # 传递实参为5
上⾯函数中的n就是形参,你也可以把它理解为⼀个变量名,调⽤函数的时候⼩括号中要传⼊实参,你可以把他理解为给上⾯形参(变量)赋的值。这样你给n赋什么值,那函数体内参与运算的就是什么值,这样⼀来我们就能实现不同的数字实现上⾯的相同的⽅法了,⼀个函数搞定。
⼆、多参数传递
换种情况,如果我们想得到两个数字相乘和相减的值,⽽且在不同的场景中这两个数会随时变化,那⼜怎么实现呢?估计有同学已经想到了,只要把上⾯的函数中⼀个形参变成两个就可以了,是的,就是这样的。
下⾯来演⽰⼀下:
def test():
print(5 * 3)
print(5 - 3)
test()
# 1.固定参数def test(m, n):
print(m * n)
print(m - n)
test(5, 3)
test(985, 211)
三、关键字参数
通过⼀个函数把⼀个字符串反复输出n次,注意这⾥的n代表未知次数,字符串也是未知字符串,我们从这个题⽬就可以看出来,⼀定属于⼀个多参数函数。那么很简单就实现了,
如下:
def test(num, str):
print(str * num)
test('www.wakey', 5)
这时候⼤家可以看到输出的结果也是正确的,但是我们本⾝是想把num=5,str='www.wakey',⽽函数⾥⾯的参数是按照顺序穿进去的,所以虽然结果没有问题,但是在有些场景中会出现不必要的错误,⽐如,我们要对字符串str进⾏处理后再计算,就不⾏了,这时候,python引⼊关键字参数来指定形参和实参的关系。
def test(num, str):
print(str * num)
test(str='www.wakey', num=5)
四、缺省参数
这时候出现另⼀种场景,就是上⾯的字符串在⼤多数情况下都是www.wakey,偶尔会出现其他字符串的情况,如果使⽤上⾯关键字参数的话,每次都要输⼊⼀下固定值,这样写起来⽐较⿇烦,所以看看缺省参数是怎么解决这个问题的。
def test(num, str='www.wakey'):
print(str * num)
test(num=5)
test(num=5, str='www')
这⾥的缺省参数也可以说成默认值参数,就是不传递参数的时候⽤⾃⼰的默认值,传递参数的时候使⽤传递进去的实参。五、不定长参数 - 元组
如果⼀个函数不知道未来要接收多少个参数的时候可以使⽤⼀个元组来接受不定长参数,
下⾯来直接实现效果:
def test(*m): # 这⾥加了⼀个*号,当成元组的形式来接受参数,⼀般写成:*args
print(m) # 注意这⾥的形参不能带*号
print(type(m))
test((3, 5, 7))
test(3, 5, 7)
printform注意这⾥两个调⽤的结果都是元组,但是结果不太⼀样,
看看返回结果:
((3, 5, 7),)
<class 'tuple'>
(3, 5, 7)
<class 'tuple'>
六、不定长参数 - 字典
还有⼀种情况就是每个参数都⽤⾃⼰的含义,但是不是固定参数,这⾥可以借⽤字典的键值对特性来实现。
def test(**m): # 这⾥加了2个*号,当成字典的形式接受参数,⼀般写成:**kwargs
print(m)
print(type(m))
# print(**m) # 这⾥不能加**
test(a=3, b=5, c=7)
返回结果:
{'a': 3, 'b': 5, 'c': 7}
<class 'dict'>
上⾯两种不定长参数可以放在⼀起使⽤,表⽰可以接受任意参数,下⾯不给⼤家举例的,我们看看⽂档,很多内建⽅法都使⽤这样的写法。
def pow(*args, **kwargs): # real signature unknown
"""
Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments
Some types, such as ints, are able to use a more efficient algorithm when
invoked using the three argument form.
"""
pass
到此这篇关于总结Python函数参数的六种类型的⽂章就介绍到这了,更多相关Python函数参数类型内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论