Python 引用传递和值传递详解(实参,形参)
在 Python 中,函数传递参数既可以是引用传递(传递的是对象的指针),也可以是值传递(传递的是对象的值)。理解这两种传递方式的区别,可以帮助我们更加灵活地使用 Python,编写出更加优秀的程序。
值传递
值传递是指在调用函数时,将实际参数的值复制一份传递给形式参数,在函数内修改形式参数的值并不会影响实际参数的值。在 Python 中,整型、浮点型、布尔型等都是不可变类型,传递时采用值传递的方式。
下面是一个简单的示例,帮助你理解 Python 中的值传递方式:
def func(a):
a = 2
print('函数内:a =', a)
x = 1
func(x)
print('函数外:x =', x)
上述代码中,我们定义了一个函数 func(a),并传递了 x 作为实际参数。在函数内部,我们将 a 的值修改为 2,并打印出了函数内部的值。在函数外部,我们再次打印 x 的值。你将得到如下输出:
函数内:a = 2
函数外:x = 1
由此可见,函数内部修改形式参数 a 的值,并不会影响实际参数 x 的值。这就是 Python 的值传递方式。
引用传递
引用传递是指在调用函数时,将实际参数的引用(也就是地址)传递给形式参数,在函数内部修改形式参数的值,也会影响实际参数的值。在 Python 中,列表、字典等可变类型采用引用传递的方式。
下面是一个示例,帮助你理解 Python 中的引用传递方式:
def func(a):
a.append(2)
print('函数内:a =', a)
x = [1]
func(x)
print('函数外:x =', x)
上述代码中,我们定义了一个函数 func(a),并传递了 x 作为实际参数。在函数内部,我们向 a 中添加了元素 2,并打印出了函数内部的值。在函数外部,我们再次打印 x 的值。你将得到如下输出:
函数内:a = [1, 2]
函数外:x = [1, 2]
由此可见,函数内部修改形式参数 a 中的值,同时也改变了实际参数 x 的值。
总结
在 Python 中,函数传递参数有两种方式,即值传递和引用传递。简单的说,不可变类型采用值传递,可变类型采用引用传递。
在 Python 中,引用传递(也就是传递对象的引用,而不是对象的值)是最常见的方式。对于不熟悉的 Python 程序员来说,理解这个概念是至关重要的。
以上就是 Python 引用传递和值传递的详细攻略。
示例
示例一
# 定义一个函数,传递一个字符串
def text(name):
name = "hello " + name
print("函数内 name 的值为:", name)
# 调用函数,传递一个字符串参数
my_name = "Tom"
text(my_name)
print("函数外 my_name 的值为:", my_name)
运行上述代码,将会输出:
函数内 name 的值为: hello Tom
函数外 my_name 的值为: Tom
由此可见,函数内部修改形式参数 name 的值,并不会影响实际参数 my_name 的值。
示例二
# 定义一个函数,传递一个列表
def add(item_list):
item_list.append("apple")
print("函数内 item_list 的值为:", item_list)
# 调用函数,传递一个列表参数
my_list = ["orange", "banana"]
add(my_list)
print("函数外 my_list 的值为:", my_list)
运行上述代码,将会输出:
函数内 item_list 的值为: ['orange', 'banana', 'apple']
函数外 my_list 的值为: ['orange', 'banana', 'apple']
由此可见,函数内部修改形式参数 item_list 中的值,同时也改变了实际参数 my_list 的值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 引用传递和值传递详解(实参,形参) - Python技术站