MST

星途 面试题库

面试题:Python函数中可变与不可变对象的传递剖析

解释在Python函数信息传递中,可变对象(如列表、字典)和不可变对象(如整数、字符串)传递时的不同表现。通过编写具体代码,展示并说明函数对这两类对象的修改操作会如何影响原始对象。
45.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

不可变对象(如整数、字符串)

在Python中,不可变对象在函数传递时,传递的是对象的值的副本。当在函数内部对其进行修改时,不会影响原始对象。

def modify_number(num):
    num = num + 1
    return num

original_num = 5
result = modify_number(original_num)
print(f"原始对象: {original_num}")
print(f"函数内修改后返回值: {result}")

在上述代码中,original_num作为整数是不可变对象,传递给modify_number函数时,函数内对num的修改(num = num + 1)只是修改了num这个副本的值,而original_num本身并未改变。

可变对象(如列表、字典)

可变对象在函数传递时,传递的是对象的引用。当在函数内部对其进行修改时,会直接影响原始对象。

def modify_list(lst):
    lst.append(4)
    return lst

original_list = [1, 2, 3]
result_list = modify_list(original_list)
print(f"原始对象: {original_list}")
print(f"函数内修改后返回值: {result_list}")

在这段代码中,original_list作为列表是可变对象,传递给modify_list函数时,函数内对lst的修改(lst.append(4))通过引用直接修改了原始的original_list。所以original_listresult_list都发生了改变。