📜  按值传递 (1)

📅  最后修改于: 2023-12-03 15:10:08.460000             🧑  作者: Mango

关于按值传递

当我们调用一个函数时,其实是将函数参数的值传递给了该函数,并不是传递整个变量对象。这种传递方式被称为按值传递。

在按值传递中,函数接收到的是传递给它的参数的值的一个副本,而不是传递的变量本身。因此,如果函数修改了该参数的值,在函数外部看不到这些变化。

下面是一个简单的例子,展示了按值传递的情况。

def my_func(x):
    x += 1
    print("在函数内部,x的值为:", x)

# 主程序
x = 5
print("在函数调用之前,x的值为:", x)
my_func(x)
print("在函数调用之后,x的值为:", x)

输出结果为:

在函数调用之前,x的值为: 5
在函数内部,x的值为: 6
在函数调用之后,x的值为: 5

可以看到,在函数内部修改了 x 的值,但是在函数外部打印 x 的值时却没有变化。

这里再给出一个例子,来展示可变对象在按值传递时的情况。

def my_func(my_list):
    my_list.append(4)
    print("在函数内部,my_list的值为:", my_list)

# 主程序
my_list = [1, 2, 3]
print("在函数调用之前,my_list的值为:", my_list)
my_func(my_list)
print("在函数调用之后,my_list的值为:", my_list)

输出结果为:

在函数调用之前,my_list的值为: [1, 2, 3]
在函数内部,my_list的值为: [1, 2, 3, 4]
在函数调用之后,my_list的值为: [1, 2, 3, 4]

可以看到,在函数内部修改了 my_list 的值,函数外部也能看到修改后的结果。这是因为 my_list 是一个可变对象,在函数中修改了这个对象的值,实际上修改的是它所指向的内存空间中的值。

总的来说,按值传递是一种常用的参数传递方式,在 Python 中所有的参数传递都是按值传递的。在编写函数时,需要注意按值传递的特性,特别是当参数是可变对象时。