我应该在Python中大写常量吗?

时间:2018-06-11 09:41:36

标签: python

在PEP8中,一般规则是在UPPER_CASE字符中声明常量。在现实生活中,可能存在许多情况:

#!env python

DATABASE_HOST = 'localhost'
app = Flask('myapp')
base_two = partial(int, base=2) 

通常我们认为字符串类型或数字类型变量是不可变的,因此是常量,而不是对象或函数。问题是linter无法进行类型检查。

你如何处理这个案子?我应该将它们大写,还是仅在我的linter中禁用此规则?

1 个答案:

答案 0 :(得分:0)

就个人而言,我唯一一次将资本化的东西就是在外部提供永远不会改变的价值。否则,它会发现将它保留为小写,特别是如果该值只是逻辑流程的一部分。 所以

FLAG = object()

def func(arg_with_default = FLAG):
    if arg_with_default is FLAG:
         do_default()
    else:
         do_something_else(arg_with_default)

我认为你将不变性与常量混为一谈。

t = (1, 2)
t[0] = 3  # error -- immutable
t = 3.14  # fine -- not constant

Python没有常量的概念。每个变量都可以被覆盖,因此,在变量没有变化的情况下,也许是通过使用大写来实现这一点的时候。

如果短信抱怨你没有把不需要的东西都用掉,我就禁用那个选项。