我知道Python中的常量更像是一种约定,但是我在同一个程序员的参与下面进行了一次争论:
FILE = open("file.txt").readlines()
以后使用FILE
多次,例如在for line in FILE
我们希望编码尽可能好。我相信FILE
永远不会被声明为常量,因为它依赖于open()
和readlines()
函数的输出。然而反驳的论点是FILE
在我们的程序中永远不会改变,所以表现得像常数一样。它是哪一个?
除了例外,它不应该是变量,即根据命名约定写成变量,所以file
全部小写?
答案 0 :(得分:2)
常量不仅仅是在程序运行的生命周期内不会改变的东西,它是一个名称,它的值是预定义的,通常独立于应用程序或环境的动态状态。典型用途适用于PI
等数学常量或NUMBER_OF_PLAYERS
等应用参数。
在您的示例中,FILE
的值取决于文件的内容。它不是预定义的常量,因为文件可以从程序的一次运行更改为下一次。
另一种看待它的方法是,当你在程序中看到一个常量的使用时,你只需找到它的初始化就知道它的值是什么。但是如果你从文件初始化常量,你就不能告诉它的值是什么。
PEP8没有定义"常数",所以你可以做任何你喜欢的事情,但我认为大多数程序员会发现你对FILE
的预期用法令人困惑或非惯用的。考虑到在某些编程语言中,您尝试的内容甚至不可能 - 如果它们具有明确的constant
声明,则它们要求在编译时可以计算该值。