Python语言中函数参数都有哪些类型?老男孩Python线下面授班
老男孩IT教育
常见问题
2022年1月5日 14:24
Python语言中,函数参数由实参传递给形参的过程,是由参数传递机制去控制的,根据实际参数类型的不同,函数参数的传递方式分为值传递和引用传递,其中引用传递也被称为地址传递,你知道Python函数参数都有哪些类型吗?请看下文:
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代表未知次数,字符串也是未知字符串,这时大家可以看到输出的结果也是正确的,但是我们本身是想把num=5,str='www.wakey.com.cn',而函数里面的参数是按照顺序穿进去的,所以虽然结果没有问题,但是在有些场景中会出现不必要的错误。
比如,我们要对字符串str进行处理后再计算,就不行了,这时候,python引入关键字参数来指定形参和实参的关系。
def test(num, str):
print(str * num)
test('www.wakey.com.cn', 5)
四、缺省参数
这时候出现另一种场景,就是上面的字符串在大多数情况下都是www.wakey.com.cn,偶尔会出现其他字符串的情况,如果使用上面关键字参数的话,每次都要输入一下固定值,这样写起来比较麻烦,所以看看缺省参数是怎么解决这个问题的。
def test(num, str='www.wakey.com.cn'):
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)
注意这里两个调用的结果都是元组,但是结果不太一样,看看返回结果。
((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语言中函数参数都有哪些类型?”的话题到这里就结束了,老男孩IT教育Python课程针对企业用人需求不断改善,并且结合市场最新技术进行精进,既可以让学员学习到最新技术,也可以提高项目实战能力。
推荐阅读:
