欢迎访问宙启技术站
智能推送

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

可以看到,调用函数时,可以按照参数名传参,这样就可以自由指定参数的顺序。