想知道是否有人对使用 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。
最佳答案
每次都使用global
。 global
关键字是一种明显且易于识别的模式,用于在模块级别修改某些内容。从 sys.modules
中为模块提供对自身的引用似乎是绕过它的一种不必要的复杂方式,并且可能会使下一个查看它的程序员感到困惑。
关于Python 使用全局 vs 指定模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679849/