Python 使用全局 vs 指定模块

标签 python variables module python-3.x global

想知道是否有人对使用 Python 的全局与引用模块本身有任何想法。虽然过去我在需要时使用 global,但我发现使用第二种方法会更清楚一些(并且最近倾向于使用这种语法):

import sys
mod = sys.modules[__name__]

counter = 0

def incrementGlobal():
    global counter
    counter += 1

def incrementMod():
    mod.counter += 1

显然它们都工作得很好,但如果有人有任何强烈的意见(什么是更 pythonic、性能等),我很想听听他们。

顺便说一句,在模块自然地封装了单个类的所有方法和属性的情况下,我最终使用了其中任何一个,而不是引用 incrementmodule.IncrementClass.counter 我可以只使用 incrementmodule.counter。

最佳答案

每次都使用globalglobal 关键字是一种明显且易于识别的模式,用于在模块级别修改某些内容。从 sys.modules 中为模块提供对自身的引用似乎是绕过它的一种不必要的复杂方式,并且可能会使下一个查看它的程序员感到困惑。

关于Python 使用全局 vs 指定模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679849/

相关文章:

javascript - 变量内的 if 语句

Shell 脚本在 crontab 上无法正常工作,在手动调用时可以工作

perl - 评估和使用问题

perl - 用于神经网络的易于使用的 Perl 模块

python - Django 模板加载器行为? (得到 Django TemplateDoesNotExist 异常)

python - 播种和重用 Python 随机种子

mysql - 具有未知值的 SQL if 语句

python - 为什么 matplotlib 无法在同一个图上绘制多条线?

python - 为什么python中的显式协议(protocol)不需要@runtimechecks的属性实现,而隐式协议(protocol)呢?

python - 导入相关包进行测试