充分利用python对列表等可变数据结构的传递共享吗?

凯蒂·拜尔斯

我知道在Python中,因为它是通过共享的,所以如果我将一个可变对象(如列表)传递给一个函数,然后使用该函数对其进行变异,则不需要显式地将其传递回去,因为呼叫者可以看到更改:

def add_to_list(list_of_nums):
    list_of_nums.append(26)

my_list = [12]
add_to_list(my_list)
print my_list  # >>>[12, 26]

所以这可行。但这是一个好主意/良好的python做法吗?我的直言不尽(用相同的方法,全局变量几乎总是一个坏主意),但这也许只是因为我第一次学习了C ++的所有传递值的荣耀。

是的,我知道我可以对此进行编码(例如,通过创建一个类),但是问题是,我应该这样做,还是通常将其视为可接受的做法?

Skrrgwasme

我认为这是否“可以接受”将取决于上下文以及该函数的命名方式。保持佩普20记:“显式优于隐式”。

Python完全支持函数式编程,在这种情况下,通常希望修改传入的对象。如果该函数的名称正确并有据可查,我认为很好。您的示例很好地说明了这一点。该函数称为add_to_list,它非常明确地说明了函数的作用。

如果您的程序/脚本采用了更多的面向对象的方法,则应该通过创建适当的类来代替修改传入的对象,例如list您的示例中的本机类-它具有一种append()修改列表而不是传递列表的方法变成一个单独的功能。

关键是要与您的范例保持一致并有据可查。如果您涵盖了这两个基础,我认为这是可以接受的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

充分利用Ubuntu

来自分类Dev

gparted是否充分利用了坏块列表?

来自分类Dev

充分利用火力数据的特定类别

来自分类Dev

如何通过python充分利用多核

来自分类Dev

充分利用我的工厂

来自分类Dev

充分利用Julia的整合能力

来自分类Dev

MySQL充分利用了联接

来自分类Dev

如何充分利用XSD

来自分类Dev

硬盘驱动器可以充分利用SATA III吗?

来自分类Dev

无法充分利用cssrewrite产品映像

来自分类Dev

Apache Hadoop Yarn-核心的未充分利用

来自分类Dev

充分利用Perl Data :: Dumper输出

来自分类Dev

充分利用多个线性容器空间的算法

来自分类Dev

RyuJIT没有充分利用SIMD内部函数

来自分类Dev

MySQL没有充分利用服务器

来自分类Dev

如何充分利用葡萄酒?

来自分类Dev

如何使Row在Flutter中充分利用其子代?

来自分类Dev

充分利用InfoPath 2010中的强大功能

来自分类Dev

如何充分利用葡萄酒?

来自分类Dev

Erlang中的可变数据结构

来自分类Dev

初始化可变数据结构中的共享指针向量

来自分类Dev

具有不可变数据结构的RxJS?

来自分类Dev

如何为Node.js Web Apps充分利用服务器容量

来自分类Dev

如何充分利用集群中的所有Spark节点?

来自分类Dev

MySQL服务器未得到充分利用;thread_running小于2

来自分类Dev

如何充分利用RAM来提高整体系统性能

来自分类Dev

充分利用公司的FireStore一个ArrayList和文件名

来自分类Dev

Kubernetes Deployment充分利用了cpu和内存而无须强调

来自分类Dev

如何充分利用RAM来提高整体系统性能