Python中的导入(import)与imp之内

2024-06-02 00:52:31 发布

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

我正在尝试导入模块中的模块,然后从顶部访问较低级别的模块,但是它不可用。这种行为正常吗?你知道吗

# caller.py
import first
print second.some_var

# first.py
import second

# second.py
some_var = 1

运行caller.py会产生错误

NameError: name 'second' is not defined

我必须在caller.py之内import second吗?这对我来说似乎有悖常理。你知道吗


Tags: 模块namepyimportisvar错误not
3条回答

而是使用:

from first import second
print first.second.some_var

它也被压缩了很多。你为什么这么做?你知道吗

import first将名称first导入全局命名空间,但不会将first中的所有内容导入命名空间。因此,您可以执行以下操作之一:

  • 通过first访问second

    import first
    print first.second.some_var
    
  • second直接导入来电.py地址:

    from first import second
    print second.some_var
    

请注意,可以使用from first import *first中的所有名称导入命名空间,但通常不建议这样做。你知道吗

你可以用

import first
print first.second.some_var

仅仅通过导入first就可以让second自动出现在名称空间中,这会导致很多冲突

这也行

from first import second
print second.some_var

通配符的使用

from first import *

不鼓励这样做,因为如果有人向first添加了额外的属性/函数,如果它们碰巧选择了相同的名称,则可能会覆盖您在本地使用的属性

相关问题 更多 >