从我的角度来看,共有三种类型的全局数据:
(我不确定上面的术语,所以请随时对其进行纠正。)我设计了一个快速的虚拟示例代码,其中包含变量,常量和标签的几个示例,以证明我的意思:
"""
Paper area calculator script
"""
import requests
# variables
REQUEST_COUNT = int()
# constants
URL = {
'login': 'https://booksonline.com/login',
'book': 'https://booksonline.com/?book={book}',
}
USERNAME = 'foo'
PASSWORD = '123456'
# labels
PAPER_SIZES = {
'A4': [210, 297],
'A5': [148, 210],
}
def calculate_area(book: str, size: str = 'A4') -> int:
with requests.Session() as s:
s.post(
URL['login'],
data={'username': USERNAME, 'password': PASSWORD},
)
res = s.get(URL['book'].format(book=book))
global REQUEST_COUNT
REQUEST_COUNT += 2
page_count = res.json()['PageCount']
area = PAPER_SIZES[size][0] * PAPER_SIZES[size][1] * int(page_count)
return area
全局变量和常量(代码应修改请求计数而不是密码)和全局常量和标签(用户应修改其密码而不是纸张尺寸)之间有明显的区别。我已经了解到全局变量的过度使用是not considered a good practice,而通常建议使用全局常量。但是我没有找到关于我称为 labels 的概念的任何信息-接近常数但应该永远不要修改的全局数据。像PI
(3.14),ZIP_HEADER
(504B),LOCALHOST
(127.0.0.1)之类的东西。使用它们是否被认为是一种好习惯?
从我的角度来看,使用全局标签的优点和缺点:
目前,我不确定是否应该在代码中使用它们。