首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python导入到底是如何工作的?

Python导入到底是如何工作的?
EN

Stack Overflow用户
提问于 2012-05-08 15:31:02
回答 1查看 29.5K关注 0票数 61

我有两种特殊的情况,我不明白导入是如何在Python中工作的:

第一种具体情况:

当我在两个不同的Python脚本中导入相同的模块时,这个模块不会被导入两次,对吗?Python第一次遇到它时,它会被导入,第二次,它是检查模块是否已经导入,还是复制?

第二种具体情况:

考虑以下模块,称为bla.py

代码语言:javascript
复制
a = 10

然后,我们有foo.py,一个导入bla.py的模块。

代码语言:javascript
复制
from bla import *

def Stuff ():
    return a

在此之后,我们有一个名为bar.py的脚本,它由用户执行:

代码语言:javascript
复制
from foo import *
Stuff() #This should return 10 
a = 5
Stuff()

这里我不知道:Stuff()是返回10还是5?

EN

回答 1

Stack Overflow用户

发布于 2012-05-08 15:46:29

要回答你的第一个问题:

不,python不会被“导入”两次。当python加载一个模块时,它会检查sys.modules中的模块。如果它不在里面,它就放进去,装上子弹。

回答你的第二个问题:

模块可以定义它们将导出到from camelot import *场景中的名称,其行为是为现有值创建名称,而不是引用现有变量(python没有引用)。

在一个有点相关的主题上,做from camelot import *就是与正常进口不一样

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10501724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档