MST

星途 面试题库

面试题:Python按引用调用机制基础理解

在Python中,解释按引用调用机制的基本原理,并举例说明不可变对象(如整数、字符串)和可变对象(如列表、字典)在按引用调用时的不同表现。
22.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

按引用调用机制基本原理

在Python中,按引用调用意味着函数传递的是对象的引用(内存地址)而不是对象本身的副本。当函数被调用时,参数被绑定到函数内部的局部变量,这些局部变量指向与传入参数相同的对象。这使得函数内部对对象的修改会反映到函数外部,前提是对象是可变的。

不可变对象在按引用调用时的表现

不可变对象(如整数、字符串)一旦创建,其值就不能被修改。当不可变对象作为参数传递给函数时,虽然传递的是引用,但由于对象不可变,函数内无法直接修改传入的对象。例如:

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

original_num = 5
result = modify_number(original_num)
print(original_num)  
print(result)  

在上述代码中,original_num的值仍然是5,因为num在函数内得到了一个新的对象(num + 1),而不是修改了传入的original_num对象。

可变对象在按引用调用时的表现

可变对象(如列表、字典)可以在创建后修改其内容。当可变对象作为参数传递给函数时,函数内对对象的修改会直接影响到函数外部的对象。例如:

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

original_list = [1, 2, 3]
result_list = modify_list(original_list)
print(original_list)  
print(result_list)  

在上述代码中,original_listresult_list都为[1, 2, 3, 4],因为函数modify_list通过引用直接修改了传入的列表对象。