📜  什么是按值调用和按引用调用 (1)

📅  最后修改于: 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']

可以看到,函数内部对形参的修改直接影响了实参的值。

总结

按值调用和按引用调用是两种不同的参数传递方式,在实际编程中需要根据需求选择合适的方式。如果要在函数内部修改实参的值,就需要使用按引用调用方式。如果不想修改实参的值,则可以使用按值调用方式。