使用时减少变量名重复os.geten

2024-10-05 14:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常发现自己在用下面的风格编写重复的感觉代码(碰巧,在Djangosettings.py内,但这个问题的含义更广泛):

STACKEXCHANGE_CLIENT_ID = os.getenv('STACKEXCHANGE_CLIENT_ID')
STACKEXCHANGE_CLIENT_SECRET = os.getenv('STACKEXCHANGE_CLIENT_SECRET')
# et cetera

当然,在很多情况下,我不希望我的局部变量名与环境变量名匹配,但是这种情况已经发生了,我想知道是否有一种好方法可以避免名称重复。在

以下代码适用于我:

^{pr2}$

但我不打算在生产中使用这个,比如引用the Python documentation on ^{}

Note: The contents of this dictionary should not be modified;

所以我想知道是否存在一个有效的“支持”/“批准”的解决方案,如果是,它可能是什么样子?在


Tags: 代码pyclientidsecretos风格情况
2条回答

引用:How to programmatically set a global (module) variable?

import sys, os

opts = (
    'STACKEXCHANGE_CLIENT_ID', 
    'STACKEXCHANGE_CLIENT_SECRET'
)

module = sys.modules[__name__]
for o in opts:
    setattr(module, o, os.getenv(o))

在引用答案的注释中,它链接到另一个建议globals()对于直接更新也是可靠的。。。在

^{pr2}$

我想,这在一定程度上是一个品味的问题,但我倾向于把这些放进字典里,所以:

STACKEXCHANGE_CLIENT_ID = os.getenv('STACKEXCHANGE_CLIENT_ID')
STACKEXCHANGE_CLIENT_SECRET = os.getenv('STACKEXCHANGE_CLIENT_SECRET')

会变成:

^{pr2}$

或者,您可以直接使用os.environ字典。在

相关问题 更多 >