Python函数的参数传递方式及默认参数设置
发布时间:2023-05-29 02:18:11
Python函数的参数传递方式:
在Python中,函数的参数传递方式有两种:值传递和引用传递。
值传递:就是把变量的值复制一份,然后将复制的值传递给函数,函数内对该值进行改变不影响原变量的值。比如:
def func(x):
x += 1
print(x)
a = 1
func(a)
print(a)
输出结果为:
2 1
可以看到,函数内对x进行了改变,但原变量a的值并未受到影响。
引用传递:就是把变量的内存地址传递给函数,函数内对该变量的值进行改变会直接影响原变量的值。比如:
def func(lst):
lst.append(4)
print(lst)
a = [1, 2, 3]
func(a)
print(a)
输出结果为:
[1, 2, 3, 4] [1, 2, 3, 4]
可以看到,函数内对lst进行了改变,原变量a的值也随之改变了。
默认参数设置:
在Python中,可以为函数的参数设置默认值,当函数调用时没有传入该参数值,就使用默认值。比如:
def func(x=0, y=0):
print(x, y)
func() # 不传参,使用默认参数值
func(1) # 只传一个参数,使用默认参数值
func(1, 2) # 传两个参数,不使用默认参数值
输出结果为:
0 0 1 0 1 2
可以看到,在 次和第二次调用时,使用了默认参数值0。在第三次调用时,没有使用默认参数值。
除了给一个参数设置默认值,还可以给多个参数设置默认值。但需要注意:给参数设置默认值时,必须将有默认值的参数放在没有默认值的参数后面。比如:
def func(x, y=0, z=0):
print(x, y, z)
func(1) # 只传一个参数,使用默认参数值
func(1, 2) # 传两个参数,使用一个默认参数值
func(1, 2, 3) # 传三个参数,不使用默认参数值
输出结果为:
1 0 0 1 2 0 1 2 3
可以看到,在 次和第二次调用时,使用了默认参数值0。在第三次调用时,没有使用默认参数值。
需要注意的是,调用函数时,可以使用关键字参数来指定参数的值,这样可以不按照参数位置顺序传参。比如:
def func(x, y=0, z=0):
print(x, y, z)
func(x=1) # 只传一个参数,使用默认参数值
func(y=2, x=1) # 传两个参数,使用一个默认参数值,参数顺序不一样
func(z=3, x=1, y=2) # 传三个参数,不使用默认参数值,参数顺序不一样
输出结果为:
1 0 0 1 2 0 1 2 3
可以看到,调用函数时,可以按照参数名传参,这样就可以自由指定参数的顺序。
