Python 的传参是传值还是传址?

时间:2022-07-28
本文章向大家介绍Python 的传参是传值还是传址?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Python对可变对象(字典或列表)传址, 对不可变对象(数字、字符或元祖)传值。

def demo_func(parm):
    """输出整数或者列表改变后的值
    
    :param parm: 整数或者列表
    :return: 
    """
    if isinstance(parm, int):
        parm += 1
    elif isinstance(parm, list):
        parm.append(1)
    print(parm)


if __name__ == '__main__':
    # 定义整数类型
    int_parm = 1
    # 函数内整数值修改(不可变类型不能修改值,其实这里是变量另外赋值)
    demo_func(int_parm)   # 输出为2
    # 输出整数值,查看对象的值是否被修改
    print(int_parm)       # 输出为1,值未改变,说明传值
    # 定义列表类型
    list_patm = [1,2,3]
    # 函数修改列表
    demo_func(list_patm)   # 输出[1, 2, 3, 1]
    # 查看函数外部列表是否发生改变
    print(list_patm)       # 输出[1, 2, 3, 1],列表发生改变,说明传址