📅  最后修改于: 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 中所有的参数传递都是按值传递的。在编写函数时,需要注意按值传递的特性,特别是当参数是可变对象时。