分享

Python中list与dictionary作为函数的形参时,会该改变实参

 行走在理想边缘 2023-03-20 发布于四川

python 中,数据类型分为 可变(mutable) 和 不可变(unmutable)。
例如 integers, floats, strings, booleans, tuples 皆为 不可变的。
但 list 和 dictionaries 时可变的。 这意味着,当函数有 list 或者 dictionary 作为形参时, 会改变其 实参的值(在函数中若改动其值)。
(对比, 在c或者c++ 中,函数调用 发生的数据传递时单向的, 即, 只能把实参的值 传递给形参, 而不能把形参的值传给实参。在函数调用中, 形参的改动并不会影响实参。)

initial_list = [1, 2, 3]

def duplicate_last(a_list):
    last_element = a_list[-1]
    a_list.append(last_element)
    return a_list

new_list = duplicate_last(a_list = initial_list)
print(new_list)
print(initial_list)
[1, 2, 3, 3]
[1, 2, 3, 3]

这种性质在某些情况下很有用, 但是 若不想 实参的值收到影响, 可以使用[].copy 方法。list 和dictionary 都有 copy 方法。

initial_list = [1, 2, 3]

def duplicate_last(a_list):
    last_element = a_list[-1]
    a_list.append(last_element)
    return a_list

new_list = duplicate_last(initial_list.copy())
print(new_list)
print(initial_list)
[1, 2, 3, 3]
[1, 2, 3,]

参考: https://www./blog/tutorial-functions-modify-lists-dictionaries-python

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多