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

Python函数的参数传递和默认参数设置

发布时间:2023-07-04 12:33:04

在Python中,参数传递有两种方式:值传递和引用传递。默认情况下,Python使用的是引用传递。

值传递是指将实际参数的值复制一份传递给函数中的形式参数。这种方式下,函数内对形式参数的修改不会影响到实际参数的值。例如:

def change_value(a):
    a = 10

x = 5
change_value(x)
print(x)  # 输出 5

在上面的例子中,change_value函数将实际参数x的值5复制一份到形式参数a,然后将a的值修改为10。但是这个修改不会影响到实际参数x的值。

引用传递是指将实际参数的引用传递给函数中的形式参数。这意味着形式参数和实际参数指向同一块内存地址,对形式参数的修改将会影响到实际参数的值。例如:

def change_list(lst):
    lst.append(4)

numbers = [1, 2, 3]
change_list(numbers)
print(numbers)  # 输出 [1, 2, 3, 4]

在上面的例子中,change_list函数中的形式参数lst和实际参数numbers指向同一块内存地址。所以函数内对形式参数的修改将直接影响到实际参数。

另外,在定义函数时,可以为某些参数设置默认值。这样在调用函数时,如果不传递对应的参数,则会使用默认值。例如:

def greet(name, message='Hello'):
    print(f'{message}, {name}!')

greet('Alice')  # 输出 Hello, Alice!
greet('Bob', 'Hi')  # 输出 Hi, Bob!

在上面的例子中,greet函数中的参数message有一个默认值'Hello'。当调用函数时,如果不传递message参数,函数会使用默认值。如果传递了message参数,则会使用传递的值。

需要注意的是,使用默认参数时,要将有默认值的参数放在没有默认值的参数之后。否则会引发SyntaxError语法错误。例如:

def greet(message='Hello', name):
    print(f'{message}, {name}!')

# 错误的函数定义,会引发 SyntaxError 语法错误

总结起来,Python中的函数参数传递方式默认为引用传递,可以通过修改形式参数来改变实际参数的值。同时,函数参数可以设置默认值,在调用函数时如果不传递对应的参数,则会使用默认值。