gpt4 book ai didi

Python - 导入模块获取全局变量

转载 作者:行者123 更新时间:2023-12-01 02:38:11 25 4
gpt4 key购买 nike

我有两个 Python 脚本,一个 testclass.py:

import numpy
zz = numpy

class Something(object):
def __init__(self):
self.xp = zz

和一个 testscript.py:

from testclass import Something
x = Something()
print(x.xp)

我预计 testscript.py 会抛出错误,因为我认为 testscript 只导入类 Something (及其 __init__ 方法),而不是全局变量 zz。因此,考虑到这种行为,我的问题是,当从模块导入时,Python 是否“运行”模块文件中的所有内容?

最佳答案

是的。当你执行时:

from testclass import Something

其效果与以下内容相同:

import testclass
Something = testclass.Something

更一般地说,Python 解释器无法事先知道您的模块公开了哪些对象(除非您在 __all__ 中明确命名它们)。对于极端情况,请考虑以下因素:

a.py:

import random

if random.random() > 0.5:
class Foo(object):
pass
else:
class Bar(object):
pass

从 import Foo 运行 有 50% 的失败机会,因为 a 模块对象可能有也可能没有 Foo 属性。

关于Python - 导入模块获取全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46009743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com