python - 我应该在 Python 中大写常量吗?
问题描述
在 PEP8 中,一般规则是在 UPPER_CASE 字符中声明常量。在现实生活中,可能有多种情况:
#!env python
DATABASE_HOST = 'localhost'
app = Flask('myapp')
base_two = partial(int, base=2)
通常我们认为字符串类型或数值类型的变量是不可变的,因此是常量,而不是对象或函数。问题是 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)
我认为您将不变性与常量混淆了。
t = (1, 2)
t[0] = 3 # error -- immutable
t = 3.14 # fine -- not constant
Python 没有常量的概念。每个变量都可以被覆盖,因此为什么在重要的变量不改变的情况下,这也许是通过使用大写来使这一点变得明显的时候了。
如果 linter 抱怨您没有大写不需要的东西,我会禁用该选项。
推荐阅读
- python - ImportError:导入 _multiarray_umath 时 DLL 加载失败
- parallel-processing - FPGA 的并行度如何?
- javascript - Vue.JS 未捕获类型错误:this.method 不是函数
- python - pymongo 中不允许用于 atlasAdmin 角色的 MongoDB reIndex 命令
- python - 我正在制作基于文本的冒险游戏,但动作命令不起作用
- function - 将线型整合到 MA/EMA 趋势线中
- python - Django 单个查询来计算和使用 for 循环上的数据?
- python - 将 numpy 值/颜色从红色更改为黑色
- javascript - 为什么 Bootstrap 5 中的 tcollapse 在示例中不起作用?
- kendo-ui - kendoUI- 函数返回到 ClientFooterTemplate 中的调用脚本与预期不匹配