当前位置: 首页 > 面试题库 >

Python-如何制作跨模块变量?

琴正初
2023-03-14
问题内容

__debug__变量很方便,部分原因是它会影响每个模块。如果我想创建另一个工作方式相同的变量,我该怎么做?

从某种意义上说,如果我在一个模块中更改foo,而在其他模块中对其进行更新,则该变量(让我们为原始变量,并将其称为“ foo”)不必是真正全局的。如果我可以在导入其他模块之前设置foo,然后它们会看到相同的值,那很好。


问题答案:

我不以任何方式,形状或形式认可该解决方案。但是,如果你将变量添加__builtin__模块,则__builtin__默认情况下,就像所有其他模块(包括所有模块)中的全局变量一样,将可以对其进行访问。

a.py包含

print foo

b.py包含

import __builtin__
__builtin__.foo = 1
import a

结果是打印了“ 1”。

编辑:该__builtin__模块可用作本地符号__builtins__-这就是其中两个答案之间存在差异的原因。另请注意,__builtin__它已builtins在python3中重命名为。



 类似资料:
  • 问题内容: 该变量很方便,部分原因是它会影响每个模块。如果我想创建另一个工作方式相同的变量,我该怎么做? 从某种意义上说,如果我在一个模块中更改foo,而在其他模块中对其进行更新,则该变量(让我们成为原始变量,并将其称为“ foo”)不必是真正的全局变量。如果我可以在导入其他模块之前设置foo,然后它们会看到相同的值,那很好。 问题答案: 我不以任何方式,形状或形式认可该解决方案。但是,如果您将变

  • 问题内容: 我有一个似乎很基本的问题,但我似乎在任何地方都找不到任何帮助。 XYZ.doSomething()无法说出NameError:未定义名称“ XYZ”即使从file_a完成的标准导入(如“ import sys”)似乎也无法使其在file_b中可用。我以为应该工作。我的理解错了吗?如果是,那么是否有办法在文件之间具有通用的导入和全局变量?(如果没有帮助,我曾经是C ++和Java程序员,

  • 问题内容: 我需要制作一个套接字模块的副本才能使用它,并且还要对猴子的另一个套接字模块进行修补并以不同的方式使用它。 这可能吗? 我的意思是真正地复制一个模块,即在 运行时 获得与复制,将功能更改为并将其安装为扩展程序相同的结果。 问题答案: 您总是可以做一些技巧,例如导入模块,然后将其从sys.modules中删除或尝试复制模块。但是,Python已经在其标准库中提供了所需的内容。 Python

  • 问题内容: 我知道标准示例:如果直接执行模块,则其全局变量定义为。但是,在文档的任何地方都找不到关于一般情况下如何定义的精确描述。该模块的文件说… 在模块内,模块名称(作为字符串)可用作全局变量的值。 …但是“模块名称”是什么意思?它仅仅是模块的名称(已删除的文件名),还是包括标准的软件包名称? 如何确定Python模块中变量的值?为了获得加分,请准确指出此操作在Python源代码中的何处执行。

  • 问题内容: 假设我有一个名为的软件包,其中包含: 和: 然后我执行以下脚本: 这是我的期望: 这是我得到的: 谁能解释我的误解? 问题答案: 您正在使用。在导入模块的全局范围(或​​发生import语句的任何范围)中成为符号。 当您为指定新值时,您也只是在更改哪些值点,而不是实际值。尝试直接使用in导入,并通过设置在那里进行实验。这样,您实际上将在此上下文中修改哪个是“实际”值。 它有点令人费解,

  • 问题内容: 有没有办法在模块内部设置全局变量?当我尝试以最明显的方式进行操作(如下所示)时,Python解释器说该变量不存在。 并将模块导入其他文件后 追溯是: … UnboundLocalError:赋值之前引用了本地变量’ DBNAME ‘ 问题答案: 这是怎么回事。 首先,Python真正唯一的全局变量是模块范围的变量。您不能创建真正全局变量。您所要做的就是在特定范围内创建变量。(如果您在P