📅  最后修改于: 2023-12-03 14:49:12.437000             🧑  作者: Mango
在编程语言中,函数的参数传递方式分为按值调用和按引用调用两种。不同的语言可能有不同的默认传递方式,但大部分语言都支持两种方式。
按值调用是指函数调用时,将实参值复制一份,并将其传递给函数形参。在函数内部修改形参的值并不会影响到实参的值。
def change_number(num):
num = num + 1 # 在函数内部修改形参的值
print("Inside function: ", num)
x = 5
change_number(x) # 调用函数并传递实参
print("Outside function: ", x) # 输出实参的值
输出:
Inside function: 6
Outside function: 5
可以看到,在函数内部将形参加 1 并没有修改实参的值。
按引用调用是指函数调用时,将实参的引用(指针)传递给函数形参。在函数内部修改形参的值会直接影响到实参的值。
def modify_list(lst):
lst.append("new item") # 在函数内部修改形参的值
print("Inside function: ", lst)
my_list = ["item 1", "item 2", "item 3"]
modify_list(my_list) # 调用函数并传递实参
print("Outside function: ", my_list) # 输出实参的值
输出:
Inside function: ['item 1', 'item 2', 'item 3', 'new item']
Outside function: ['item 1', 'item 2', 'item 3', 'new item']
可以看到,函数内部对形参的修改直接影响了实参的值。
按值调用和按引用调用是两种不同的参数传递方式,在实际编程中需要根据需求选择合适的方式。如果要在函数内部修改实参的值,就需要使用按引用调用方式。如果不想修改实参的值,则可以使用按值调用方式。