如果我在模块级别声明一个实例,且该实例只能设置一次且永不更改,那么我应该坚持使用PEP8中的大写命名约定吗?
例如
entity_manager = EntityManager(config)
vs
ENTITY_MANAGER = EntityManager(config)
当常量是原始类型时,通常不讨论。一个整数。但是呢?
答案 0 :(得分:3)
PEP8的基本精神是“保持代码一致”,无论该常量是int,字符串还是类实例。
根据PEP8,请使用下划线分隔的大写字母表示不会在您的代码中更改的常量。再加上一致性,应在整个常量(包括类实例)中全部应用。
常量通常在模块级别定义,并以全部形式编写 带下划线的大写字母分隔单词。例子包括 MAX_OVERFLOW和TOTAL。
答案 1 :(得分:0)
我同意PEP8的总体精神,并保持您的代码一致。如果您在使用PEP8时遇到问题,请在与团队达成共识后更新.pylintrc。
关于原始帖子,我也同意“常量”的大写声明,无论它们是基元还是对象。我不同意的是,这违背了惯例,就是在模块级别对所有可能不变的东西使用所有大写字母。由于Python不会直接强制执行此操作,因此我们需要定义命名约定,这些约定隐含了开发人员从您离开的地方开始的目的和范围。如果我不希望从其他模块访问“常量”,那么除了用下划线前缀,小写字母或以某种方式混淆名称之外,在Python中我无能为力。