python参数传递机制

Python参数传递机制(简洁笔记)

核心机制:对象引用传递

Python中所有参数传递都是对象引用的传递(即传递对象的地址),既不是值传递也不是引用传递。


关键特性:

  1. 不可变对象(int, str, tuple等)

    • 函数内修改会创建新对象
    • 原始对象不受影响
    def modify(num):
        num += 10  # 创建新对象
    
    n = 5
    modify(n)
    print(n)  # 输出: 5 (未改变)
    
  2. 可变对象(list, dict, set等)

    • 函数内修改直接影响原对象
    def append_item(lst):
        lst.append(4)  # 修改原对象
    
    my_list = [1, 2, 3]
    append_item(my_list)
    print(my_list)  # 输出: [1, 2, 3, 4] (已修改)
    
  3. 重新赋值 vs 原地修改

    • = 赋值:创建新引用
    • 方法调用:修改原对象
    def reassign(lst):
        lst = [10, 20]  # 新引用,不影响外部
    
    def modify_inplace(lst):
        lst[0] = 99  # 原地修改
    
    a = [1, 2]
    reassign(a)
    print(a)  # 输出: [1, 2]
    
    modify_inplace(a)
    print(a)  # 输出: [99, 2]
    

面试要点总结:

对象类型 函数内操作 外部影响
不可变 修改值 ❌ 无影响
可变 原地修改(如append) ✅ 受影响
可变 重新赋值(=) ❌ 无影响

关键理解:Python传递的是对象的"地址副本",通过地址副本:

  • 修改不可变对象 → 创建新地址
  • 修改可变对象内容 → 原地址内容变化
posted @ 2025-08-29 11:12  清澈的澈  阅读(8)  评论(0)    收藏  举报