函数基础
一、函数的参数
1.位置参数和关键字参数(实参)
根据函数调用的时候实参的传递方式将实参分为位置参数和关键字参数。
- 位置参数 - 调用函数的时候直接在括号里面写多个实参,实参和形参是一一对应的。
- 关键字 - 调用函数的时候以 形参名=实参 的形式来确定实参。(位置不影响结果)
注意:位置参数和关键字参数可以 一起使用,但是位置参数必须在关键字参数的前面,不管以什么样的形式传参,最终都要保证每个参数都有值。
def func1(a, b, c):
print(f'a:{a}, b:{b}, c:{c}')
# 位置参数
func1(20, 30, 40) # a:20, b:30, c:40
func1(30, 20, 40) # a:30, b:20, c:40
# 关键参数
func1(a=100, b=200, c=300) # a:100, b:200, c:300
func1(b=200, c=300, a=100) # a:100, b:200, c:300
# 关键参数不能重复
# func1(a=100, b=200, a=300, c=400) # SyntaxError: keyword argument repeated
# 每次形参都必须赋值
# func1(a=100, c=300) # TypeError: func1() missing 1 required positional argument: 'b'
# 位置参数和关键字参数一起用
func1(10, c=30, b=20) # a:10, b:20, c:30
func1(100, 200, c=300) # a:100, b:200, c:300
# 位置参数必须在关键字参数的前面
# func1(a=10, 20, c=30) # SyntaxError: positional argument follows keyword argument
2.参数默认值(形参)
在定义函数的时候,可以给形参赋值默认值;如果一个形参有默认值,那么这个参数在调用的时候可以不用传参。如果定义函数的时候有的参数有默认值,有的参数没有默认值;没有默认值得参数必须在有默认值得参数的前面。
def func2(a=10, b=20, c=30):
print(f'a:{a}, b:{b}, c:{c}')
func2() # a:10, b:20, c:30
func2(100) # a:100, b:20, c:30
func2(100, 200) # a:100, b:200, c:30
func1(100, 200, 300) # a:100, b:200, c:300
func2(c=300) # a:10, b:20, c:300
func2(100, c=300) # a:100, b:20, c:300