Python 约定:具有可变内容的常量应该大写吗?

问题描述 投票:0回答:1

我正在努力遵守 Python 中的约定和最佳实践,例如使用 UPPER_SNAKE_CASE 表示常量。但是,我不确定值可变的常量赋值是否在该语言中被规范地视为常量。

我正在考虑JavaScript,你可以去哪里

const someVar = someObject;
并且你可以自由地修改
someObject
,事实上,
someVar
将始终指向其当前形式。它是一个常量引用,如果它指向一个复杂的数据类型,那么它的内容允许不是常量。

具体来说,我有一个全局变量,它始终是遵循特定模式的字典列表,但列表的长度和其中字典的值可能会改变。应该是

SOME_LIST
还是
some_list

python constants conventions
1个回答
0
投票

问问自己,常量的意义是什么以及它如何适合您的情况?我个人对常量的期望(这里我们进入意见区域)是,您始终可以从多个线程使用它而无需同步,并且其内容永远不会改变。如果你只保证它总是引用同一个对象,但该对象可能会改变,那么这不符合我的期望。

如果这应该是可变的,那么它听起来就像某种单例。 IE。变量始终引用同一个对象,但该对象具有可变状态。单例(以及一般的全局可变状态)是一种反模式,因为它们有各种缺点。

如果这应该始终保持不变,请考虑例如a

namedtuple
左右,这可以提供更好的保证,甚至可以防止意外修改。

© www.soinside.com 2019 - 2024. All rights reserved.