惯例:将Python函数输出存储在常量中?

时间:2016-11-21 20:04:06

标签: python pep8

我知道Python中的常量更像是一种约定,但是我在同一个程序员的参与下面进行了一次争论:

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

另一种看待它的方法是,当你在程序中看到一个常量的使用时,你只需找到它的初始化就知道它的值是什么。但是如果你从文件初始化常量,你就不能告诉它的值是什么。

PEP8没有定义"常数",所以你可以做任何你喜欢的事情,但我认为大多数程序员会发现你对FILE的预期用法令人困惑或非惯用的。考虑到在某些编程语言中,您尝试的内容甚至不可能 - 如果它们具有明确的constant声明,则它们要求在编译时可以计算该值。