python - 可变常量安全吗?

标签 python constants mutability

是否存在与列表常量或任何其他可变对象相关的任何类型的“陷阱”?

Currently my context has to do with constants that will be passed to a call, but I ask the question generically as I don't feel that topic impacts the question meaningfully.

考虑这个示例代码:

#!/usr/bin/env python
# This file was not tested before posting.

import subprocess

LS_FLAGS = ['-l', '-a']

def main():
    subprocess.call(['ls'] + LS_FLAGS)

if __name__ == '__main__':
    main()

我问这个是因为我非常清楚mutable objects in function definitions引起的问题。 ;而且,即使据我了解,也不应该对受尊重的常量进行赋值或突变;而且“常量”并不是真正的东西:我问,并进一步问,是否可能存在一些语义上保护自己的约定,而不是意外突变?

最佳答案

不必担心突变可以使代码更容易推理,因此,它是纯函数式编程的核心原则之一。

在这种特定情况下,这似乎不是一个严重的问题,甚至可能被认为是一个功能。如果您认为没有理由修改 LS_FLAGS,您始终可以将其定义为元组,但代码的用户可以随时完全重新声明 LS_FLAGS(如果他们愿意)。

关于python - 可变常量安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640142/

相关文章:

python - 在每一步从列表中切出大小为 N 的窗口

python - Tensorflow:如何对矩阵的每个元素执行操作

python - 从Python列表列表的内部列表中获取第n个元素

vector - 无法通过索引访问向量中的可变引用

methods - 如何在 Rust 中将对象用作其自身方法的参数?

performance - Scala:可变对象与不可变对象(immutable对象)性能 - OutOfMemoryError

python - 使用Python pptx获取图像文件名

c++ - 通过 const 引用传递后使用 Eigen::Map 发生错误

python - python中的常量lambda函数

c++ - 类型引用的无效初始化