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中的函数参数传递方式默认为引用传递,可以通过修改形式参数来改变实际参数的值。同时,函数参数可以设置默认值,在调用函数时如果不传递对应的参数,则会使用默认值。
