Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
约定:以常量存储Python函数输出?_Python_Pep8 - Fatal编程技术网

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

约定:以常量存储Python函数输出?,python,pep8,Python,Pep8,我知道Python中的常量更像是一种约定,但我与一位程序员同事就以下几行进行了争论: FILE = open("file.txt").readlines() 使用文件以后多次使用,例如在中用于文件中的行 我们希望代码尽可能好。我认为FILE永远不应该声明为常量,因为它依赖于open()和readlines()函数的输出。然而,相反的论点是,文件在我们的程序中从不更改,因此其行为应该像常量一样。是哪一个 除了例外,它不应该是一个变量吗,即根据命名约定作为变量写入,所以文件都是小写的吗 常数不仅仅

我知道Python中的常量更像是一种约定,但我与一位程序员同事就以下几行进行了争论:

FILE = open("file.txt").readlines()
使用
文件
以后多次使用,例如在
中用于文件中的行

我们希望代码尽可能好。我认为
FILE
永远不应该声明为常量,因为它依赖于
open()
readlines()
函数的输出。然而,相反的论点是,
文件
在我们的程序中从不更改,因此其行为应该像常量一样。是哪一个


除了例外,它不应该是一个变量吗,即根据命名约定作为变量写入,所以
文件
都是小写的吗

常数不仅仅是在程序运行的整个生命周期内不会改变的东西,它是一个预定义值的东西的名称,通常与应用程序或环境的动态状态无关。典型的用途是数学常数,如
PI
,或应用参数,如
numberofu播放器

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

另一种看待它的方式是,当你在程序中看到一个常数的用法时,你只需要找到它的初始化,就可以知道它的值是什么。但是如果从文件中初始化常量,则无法判断其值


没有定义“常量”,所以你可以做任何你想做的事情,但是我认为大多数程序员会发现你对
FILE
的预期用途令人困惑或不习惯。考虑到在某些编程语言中,您尝试的甚至不可能——如果它们具有明确的代码>常数< /Cord>声明,它们要求在编译时计算该值。

< P>一个常量不只是在程序运行的过程中不改变的东西,它是一个预定义值的名称,通常独立于应用程序或环境的动态状态。典型的用途是数学常数,如
PI
,或应用参数,如
numberofu播放器

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

另一种看待它的方式是,当你在程序中看到一个常数的用法时,你只需要找到它的初始化,就可以知道它的值是什么。但是如果从文件中初始化常量,则无法判断其值



没有定义“常量”,所以你可以做任何你想做的事情,但是我认为大多数程序员会发现你对
FILE
的预期用途令人困惑或不习惯。考虑到在某些编程语言中,您尝试的甚至不可能——如果它们具有显式<代码>常数< /C>声明,它们要求在编译时计算该值。您用来命名变量的大小写与解释器完全无关。@jwodder他显然指的是关于常量的指南。我添加了相关的标签。我不明白为什么它不能是常数。一些公认的常数是
XXX=“foo”+“bar”
。这也是经过计算的,但显然是一个常数。这里的细微差别是列表是可变的。字符串不是(但引用也可能被删除)无关:
file
open()
函数结果的适当名称。
.readlines()
'返回值的适当名称是
。更好的名称取决于
file.txt
实际存储的内容。2-在问题中指定脚本运行时,
file.txt
是否会更改。@J.F.Sebastian在这种情况下,
file.txt
在运行时不会更改;但如果真的发生了呢?而且,如果你不知道呢?似乎
file
总是比
file
Python没有常量更好的选择。您用来命名变量的大小写与解释器完全无关。@jwodder他显然指的是关于常量的指南。我添加了相关的标签。我不明白为什么它不能是常数。一些公认的常数是
XXX=“foo”+“bar”
。这也是经过计算的,但显然是一个常数。这里的细微差别是列表是可变的。字符串不是(但引用也可能被删除)无关:
file
open()
函数结果的适当名称。
.readlines()
'返回值的适当名称是
。更好的名称取决于
file.txt
实际存储的内容。2-在问题中指定脚本运行时,
file.txt
是否会更改。@J.F.Sebastian在这种情况下,
file.txt
在运行时不会更改;但如果真的发生了呢?而且,如果你不知道呢?似乎
file
总是比
file
更好的选择,如果函数是纯函数呢?e、 例如,计算π到1000位。我会运行它一次,然后将结果复制到程序中的文本中。:)这既损害了可读性,也使更改变得不必要的困难。无论如何,这是一种边缘情况,不适合任何一类,你可以做你喜欢的事情。在一个编译时间常数(例如C++)的语言中,这将是一个变量,所以我认为这是一个很好的模型,它是用常量只是命名约定的语言来完成的。我不认为提到C++会简化事情,但是在那里可以使用<代码> CONTXPRPR <代码>。