python中值传递和地址传递的区别和用法,并举例
时间: 2024-05-15 17:14:43 浏览: 101
值传递与地址传递
好的,我可以回答关于Python中值传递和地址传递的区别和用法。在Python中,传递对象时并不存在传值和传引用的概念,它是通过对象引用来实现的。对于可变类型的对象,如列表、字典等,它们作为函数参数传递时,实际上是传递了对象的引用。这意味着在函数内修改对象会影响到函数外的对象。而对于不可变类型的对象,如整数、字符串等,它们作为函数参数传递时,实际上是传递了对象的值的副本,因此在函数内修改对象并不会影响到函数外的对象。
下面是一个例子,假设我们有一个可变类型的对象——列表,和不可变类型的对象——整数。
```
def change_list(list1):
list1[0] = 100
def change_num(num1):
num1 = 100
my_list = [1, 2, 3]
change_list(my_list)
print(my_list) # [100, 2, 3]
my_num = 1
change_num(my_num)
print(my_num) # 1
```
可以看到,在`change_list`函数中,我们修改了`list1`对象的第一个元素,这个修改也反映在了函数外的`my_list`对象上;而在`change_num`函数中,我们修改了`num1`对象的值,但是并没有影响到函数外的`my_num`对象。
阅读全文