首页常见问题正文

参数如何通过值或引用传递?

更新时间:2023-06-23 来源:黑马程序员 浏览量:

IT培训班

  在Python中,参数传递可以通过值传递或引用传递。当你将一个参数传递给一个函数时,它可以是通过值传递还是通过引用传递,取决于参数的类型和如何在函数中处理它。

  值传递意味着在函数调用时,参数的值被复制给了一个新的变量。这意味着在函数内部修改参数的值不会影响原始变量的值。

  引用传递意味着在函数调用时,参数的引用(内存地址)被传递给了函数。这意味着在函数内部对参数进行的修改会影响原始变量的值。

  接下来我们看一段具体的代码,演示了参数如何通过值或引用传递:

# 通过值传递
def modify_value(x):
    x = 10  # 修改参数的值
    print("Inside modify_value: x =", x)

a = 5
print("Before modify_value: a =", a)
modify_value(a)
print("After modify_value: a =", a)

  输出:

Before modify_value: a = 5
Inside modify_value: x = 10
After modify_value: a = 5

  在这个例子中,我们定义了一个函数modify_value,它接受一个参数x。在函数内部,我们将x的值修改为10。然而,在调用modify_value函数后,原始变量a的值并没有改变。这是因为参数x是通过值传递给函数的,所以在函数内部对x的修改不会影响原始变量a的值。

  如下,我们再看一个通过引用传递的例子:

# 通过引用传递
def modify_list(lst):
    lst.append(4)  # 修改列表参数
    print("Inside modify_list: lst =", lst)

my_list = [1, 2, 3]
print("Before modify_list: my_list =", my_list)
modify_list(my_list)
print("After modify_list: my_list =", my_list)

  输出:

Before modify_list: my_list = [1, 2, 3]
Inside modify_list: lst = [1, 2, 3, 4]
After modify_list: my_list = [1, 2, 3, 4]

  在这个例子中,我们定义了一个函数modify_list,它接受一个列表参数lst。在函数内部,我们向列表中添加了一个新元素4。当我们调用modify_list函数后,原始列表my_list的值也被修改了。这是因为参数lst是通过引用传递给函数的,所以在函数内部对lst进行的修改会影响原始列表my_list的值。

分享到:
在线咨询 我要报名
和我们在线交谈!