约定:将 Python 函数输出存储为常量?

Convention: Storing Python function output in constant?

我知道 Python 中的常量更像是一种约定,但我与一位程序员就以下行发生争执:

FILE = open("file.txt").readlines()

With FILE 以后多次使用,例如在 for line in FILE

我们希望编码尽可能好。我相信 FILE 不应该 声明为常量,因为它依赖于 open()readlines() 函数的输出。然而,反对意见是 FILE 在我们的程序中永远不会改变,所以表现得像一个常数应该。是哪一个?

除了例外,它不应该是一个变量,即根据命名约定写成变量,所以 file 全部小写吗?

常量不仅仅是在程序的生命周期中不会改变的东西 运行,它是预定义值的名称,通常独立于应用程序或环境的动态状态.典型用途是 PI 等数学常数,或 NUMBER_OF_PLAYERS.

等应用程序参数

在您的示例中,FILE 的值取决于文件的内容。它不是预定义的常量,因为文件可以从程序的一个 运行 更改为下一个。

另一种看待它的方式是,当你在程序中看到一个常量的使用时,你只要找到它的初始化就可以知道它的值是多少。但是如果你从文件中初始化这个常量,你就不知道它的值是多少。

PEP8 没有定义 "constant",所以你可以随心所欲,但我认为大多数程序员会发现你对 FILE 的预期用途令人困惑或不惯用的。考虑到在某些编程语言中,您尝试的事情甚至是不可能的——如果它们有明确的 constant 声明,它们要求该值在编译时是可计算的。