Python使用global和指定modu

2024-10-04 11:29:55 发布

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

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

import sys
mod = sys.modules[__name__]

counter = 0

def incrementGlobal():
    global counter
    counter += 1

def incrementMod():
    mod.counter += 1

显然他们两个都很好,但如果有人有什么强烈的意见(什么更像Python,表演等等),我很乐意听听。在

顺便说一句,当模块自然地封装一个类的所有方法和属性,而不是引用时,我会使用这两种方法中的任何一种incrementmodule.IncrementClass.counter我可以用递增模块计数器. 在


Tags: 模块方法nameimportmodulesmoddefsys
2条回答
  • 性能:使用global样式将比使用global更快,因为它只需要一个名称查找而不是两个(只在数千个紧密循环中起作用)。

  • 样式:mod.xxx样式反映了从另一个导入的模块访问全局变量的方式:

`

import foo
foo.eggs = 'scrambled'

global方法更为常见,但是您的mod.xxx方法也很容易理解并且非常易读。在

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

相关问题 更多 >