打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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.dataquest.io/blog/tutorial-functions-modify-lists-dictionaries-python

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
儿童节快乐:python基础变量赋值 | 为什么在python变量中copy()函数如此重要,普通的变量赋值隐藏着怎样的秘密?
Python Course: Shallow and Deep Copy
Python编程语言学习:for循环中常用方法经验技巧(利用enumerate函数对列表实现自带索引等)之详细攻略
一步学会Python高级编程
Python:eval的妙用和滥用
中文查重原理 及算法实例(python)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服