当我们调用函数时,我们经常需要向函数传递一些参数,这些参数被称为函数的形参,它们只在函数内部可见。在函数内部,我们可以使用这些形参执行计算和操作,并将结果返回到函数调用的位置。
然而,在某些情况下,我们可能需要传递一些变量、数据结构、对象等到函数中,并在函数内部进行修改或者操作,从而在函数外部获取到修改的结果。为了实现这一点,Python 采用了传递参数的方式。
在 Python 中,函数参数的传递可以分为两种方式:传值调用和传引用调用。
传值调用:
在 Python 中,当我们传递基本数据类型(例如数字、字符串、布尔型等)给函数作为参数时,会使用传值调用的方式。这意味着函数会接收一个参数的值的拷贝,并在其内部进行操作。当函数返回时,函数内部修改的那个参数的值被丢弃,原始值不受影响。
下面是一个例子:
def my_func(x):
x = x + 1
print("在函数内部,x 的值为:", x)
x = 3
my_func(x)
print("在函数外部,x 的值为:", x)
运行结果为:
在函数内部,x 的值为: 4
在函数外部,x 的值为: 3
可以看到,尽管我们在函数内部将 x
的值加了 1,但是在函数外部,x
的值并没有变化。这是因为在函数调用时,Python 自动将 x
的值复制了一份,并将其传递给函数,函数在内部进行操作时,只会修改复制的这个值,而不会影响原始值。
传引用调用:
与传值调用相反,当我们传递列表、元组、字典等对象给函数作为参数时,会使用传引用调用的方式。这意味着函数接收的是一个指向该参数的引用,而不是实际的参数或参数的拷贝。当函数在内部进行修改时,原始参数的值也会被修改。
下面是一个例子:
def my_func(nums):
nums[0] = 100
print("在函数内部,nums 的值为:", nums)
nums = [1, 2, 3]
my_func(nums)
print("在函数外部,nums 的值为:", nums)
运行结果为:
在函数内部,nums 的值为: [100, 2, 3]
在函数外部,nums 的值为: [100, 2, 3]
可以看到,在函数内部我们将 nums
列表的第一个元素设置为了 100,但是在函数外部,nums
的值也被同样修改了。因为函数接收到的是 nums
参数的引用,函数内对 nums
进行的操作同样会影响外部的 nums
。这是传引用调用的典型操作。
需要注意的是,在传引用调用中,函数内部不仅可以修改对象的值,还可以修改对象的状态。例如,我们可以在一个实例方法中修改对象的属性,在函数外部可以看到这种修改。
总结来说,Python 中调用函数时,参数传递的方式有传值调用和传引用调用两种方式。在传值调用中,函数接收到的是参数的拷贝,函数操作时不会影响原始值;在传引用调用中,函数接收到的是参数的引用,函数操作时会直接修改原始值。开发者可以根据自己的需求,选择使用不同的参数传递方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python调用函数里面的变量 - Python技术站