在 PEP8 中,一般规则是在 UPPER_CASE 字符中声明常量。现实生活中,可能存在多种情况:
#!env python
DATABASE_HOST = 'localhost'
app = Flask('myapp')
base_two = partial(int, base=2)
Run Code Online (Sandbox Code Playgroud)
通常我们认为字符串类型或数字类型变量是不可变的,因此是常量,但不是对象或函数。问题是 linter 无法进行类型检查。
您如何处理此案?我应该将它们大写还是只是在我的 linter 中禁用此规则?
就我个人而言,我唯一一次利用某些东西是在外部提供永远不应该改变的价值时。否则,会发现将其保留为小写,特别是当该值只是逻辑流的一部分时。所以
FLAG = object()
def func(arg_with_default = FLAG):
if arg_with_default is FLAG:
do_default()
else:
do_something_else(arg_with_default)
Run Code Online (Sandbox Code Playgroud)
我认为您将不变性与常量混淆了。
t = (1, 2)
t[0] = 3 # error -- immutable
t = 3.14 # fine -- not constant
Run Code Online (Sandbox Code Playgroud)
Python 没有常量的概念。每个变量都可以被覆盖,因此,为什么在变量不改变很重要的情况下,也许是时候通过使用大写来使这一点变得明显了。
如果 linter 抱怨你没有将不需要的东西大写,我会禁用该选项。