在PEP8中,一般规则是在UPPER_CASE字符中声明常量。在现实生活中,可能存在许多情况:
#!env python
DATABASE_HOST = 'localhost'
app = Flask('myapp')
base_two = partial(int, base=2)
通常我们认为字符串类型或数字类型变量是不可变的,因此是常量,而不是对象或函数。问题是linter无法进行类型检查。
你如何处理这个案子?我应该将它们大写,还是仅在我的linter中禁用此规则?
答案 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没有常量的概念。每个变量都可以被覆盖,因此,在变量没有变化的情况下,也许是通过使用大写来实现这一点的时候。
如果短信抱怨你没有把不需要的东西都用掉,我就禁用那个选项。