Python使用全局vs指定模块

gnr*_*gnr 5 python variables module global python-3.x

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

import sys
mod = sys.modules[__name__]

counter = 0

def incrementGlobal():
    global counter
    counter += 1

def incrementMod():
    mod.counter += 1
Run Code Online (Sandbox Code Playgroud)

显然他们两个都很好,但如果有人有任何强烈的意见(什么是pythonic,表演等),我很乐意听到他们.

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

Fat*_*man 5

global每次都去.该global关键字是在模块级修改的东西一个明显的和容易识别的图案.给一个模块一个引用它自己sys.modules似乎是一个不必要的复杂的绕过它的方式,并且可能会混淆下一个看它的程序员.