在Python中,什么是常量?

在Python中,什么是常量?,python,python-3.x,pep8,Python,Python 3.x,Pep8,政治公众人物8 常量通常是在模块级别定义的,并以所有形式写入 用下划线分隔单词的大写字母。例子包括 最大溢出和总计 我知道这只是一种命名约定,但我很好奇,对于常数和半私有变量的实际构成,是否有官方或广泛接受的定义 这是否仅限于你所说的范围?(即float、int、complex) 或者它会包括在模块级别定义的对象或字符串,比如datetime.date?使用混合类型的键/值的字典怎么样?如果答案是否定的,那么这些类型的对象是否应该定义为带有下划线的(准)私有变量呢 本文档给出了Python代码的

政治公众人物8

常量通常是在模块级别定义的,并以所有形式写入 用下划线分隔单词的大写字母。例子包括
最大溢出
总计

我知道这只是一种命名约定,但我很好奇,对于常数和半私有变量的实际构成,是否有官方或广泛接受的定义

这是否仅限于你所说的范围?(即float、int、complex)

或者它会包括在模块级别定义的对象或字符串,比如
datetime.date
?使用混合类型的键/值的字典怎么样?如果答案是否定的,那么这些类型的对象是否应该定义为带有下划线的(准)私有变量呢

本文档给出了Python代码的编码约定,该代码包含Python主发行版中的标准库

浏览Python3.5标准库中的一些模块,以及常见的字符串和数字,您会发现

UUID
s,UUID.py:

NAMESPACE_URL = UUID('6ba7b811-9dad-11d1-80b4-00c04fd430c8')
正则表达式,smtplib.py

OLDSTYLE_AUTH = re.compile(r"auth=(.*)", re.I)
字典,plistlib.py:

_BINARY_FORMAT = {1: 'B', 2: 'H', 4: 'L', 8: 'Q'}
frozenset
s,asyncore.py:

_DISCONNECTED = frozenset({ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED, EPIPE, ...
a
datetime.date
在calendar.py中

_EPOCH_ORD = datetime.date(EPOCH, 1, 1).toordinal()
因此,基本上,在整个执行过程中应该保持不变的任何内容,即使它是可变类型(plistlib.py中的字典)。

好的,编码约定主要是为Python标准库编写的:

本文档给出了Python代码的编码约定,该代码包含Python主发行版中的标准库

浏览Python3.5标准库中的一些模块,以及常见的字符串和数字,您会发现

UUID
s,UUID.py:

NAMESPACE_URL = UUID('6ba7b811-9dad-11d1-80b4-00c04fd430c8')
正则表达式,smtplib.py

OLDSTYLE_AUTH = re.compile(r"auth=(.*)", re.I)
字典,plistlib.py:

_BINARY_FORMAT = {1: 'B', 2: 'H', 4: 'L', 8: 'Q'}
frozenset
s,asyncore.py:

_DISCONNECTED = frozenset({ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED, EPIPE, ...
a
datetime.date
在calendar.py中

_EPOCH_ORD = datetime.date(EPOCH, 1, 1).toordinal()

因此,基本上,在整个执行过程中应该保持不变的任何东西,即使它是可变类型(plistlib.py中的字典)。

在python中,常量的命名约定主要是为了帮助正在阅读代码的任何编程人员知道不要更改特定的“常量”在像C这样的其他语言中,它实际上可以减少执行代码所需的时间

请参阅上的这篇文章

常数只是一个永远不变的值

在OOP中,声明私有或公共常量很有用,但对于python来说,没有从“常量”和正则变量中分离出函数


在支持true常量的其他编程语言中,还有一件事是,如果您将一个值声明为常量,那么即使您稍后尝试重新分配该值,该值也无法更改。然而,在Python中没有真正的常量,因此我们使用命名约定来帮助我们记住不要更改该值。

在Python中,常量的命名约定主要是为了帮助正在阅读代码的任何编程人员知道不要更改该特定的“常量”在像C这样的其他语言中,它实际上可以减少执行代码所需的时间

请参阅上的这篇文章

常数只是一个永远不变的值

在OOP中,声明私有或公共常量很有用,但对于python来说,没有从“常量”和正则变量中分离出函数


在支持true常量的其他编程语言中,还有一件事是,如果您将一个值声明为常量,那么即使您稍后尝试重新分配该值,该值也无法更改。然而,在Python中没有真正的常量,因此我们使用命名约定来帮助我们记住不要更改该值。

Python实际上没有真正的常量。命名约定只是为了可读性。本质上,由于Python没有实际的“常量”,因此某些模块级对象(不限于数学常量)的大写字母只是向那些阅读代码的人发出信号“不要弄乱它,这不应该改变”在所有编程语言中,常量都是不变的。这里有一个关于常量使用的问题的链接。在其他语言中,它有一个好处,但在python中,它只是一种说“不要改变这个”的方式@BradSolomon:一个常量应该是常量。“Private”和“constant”是完全独立的概念,对于私有常量,可以使用类似于
\u FOO
的东西。Python实际上没有真正的常量。命名约定只是为了可读性。本质上,由于Python没有实际的“常量”,因此某些模块级对象(不限于数学常量)的大写字母只是向那些阅读代码的人发出信号“不要弄乱它,这不应该改变”在所有编程语言中,常量都是不变的。这里有一个关于常量使用的问题的链接。在其他语言中,它有一个好处,但在python中,它只是一种说“不要改变这个”的方式@BradSolomon:一个常量应该是常量。“Private”和“constant”是完全独立的概念,对于Private常量,可以使用类似于
\u FOO
的内容。