面试题答案
一键面试不可变对象(如整数、字符串)
在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_list
和result_list
都发生了改变。