点击跳转
《Python入门系列目录》
- 参数可以理解为“随机应变的容器”,不需要声明参数类型,所以编程时最好主动检查所传参数类型的正确性
- 参数的分类
- 位置参数
- 关键字参数
- 默认参数
- 可变参数
1. 默认参数
- def 函数名(…, 参数名=默认值):
- 注意:在定义带有默认参数的函数时,默认参数只能出现在所有参数的最右端,并且任何一个默认参数的右侧都不能再定义非默认参数
# 默认参数示例
def interest(money, day=1, interest_rate=0.05):
income = 0
income = money * interest_rate * day / 365
print(income)
interest(5000)
interest(10000)
2. 任意数量的位置可变参数
- 在定义函数时无法得知参数个数的情况下,可以在Python中使用*args和**kwargs定义可变参数
- 只要在变量前面加*即可,并不意味着必须要定义名为args或kwargs
- 可变参数之前可以定义0到任意多个参数
- 可变参数永远放在参数的最后面
- 在传递参数时,可以在原有的参数后面添加0个或多个参数,这些参数将会被放在元组内并传入函数
def exp(x, y, *args):
print('x:', x)
print('y:', y)
print('args:', args)
exp(1, 5, 66, 55, 'abc')
'''
输出
x: 1
y: 5
args: (66, 55, 'abc')
'''
3. 任意数量的关键字可变参数
- 参数传递时,这些参数会被放在字典内并传入函数中
- 带两个星号前缀的参数必须在所有带默认值的参数之后
def exp(x, y, *args, **kwargs):
print('x:', x)
print('y:', y)
print('args:', args)
print('kwargs:', kwargs)
exp(1, 2, 2, 4, 6, a='c', b=1)
'''
输出
x: 1
y: 2
args: (2, 4, 6)
kwargs: {'a': 'c', 'b': 1}
'''
4. 调用函数
-
位置参数调用
- 严格函数定义时的位置传入,顺序不可以调换,否则会影响输出结果或者直接报错
-
关键字参数调用
- 可以不严格按照位置
- 关键字参数可以和位置参数混用,但必须在位置参数后面
-
可变参数调用
-
*args可变参数列表直接将元组或者列表转换为参数
arg = [0, 10, 2] print(range(*arg)) # range(0, 10, 2)
-
**kwargs关键字参数列表直接将字典转换为关键字参数
-
5. 函数返回值
- return函数返回的运行结果可以保存为一个对象供其他函数调用
- 返回值的数据类型没有限制,个数可以是一个或一组