我有两种特殊的情况,我不明白导入是如何在Python中工作的:
第一种具体情况:
当我在两个不同的Python脚本中导入相同的模块时,这个模块不会被导入两次,对吗?Python第一次遇到它时,它会被导入,第二次,它是检查模块是否已经导入,还是复制?
第二种具体情况:
考虑以下模块,称为bla.py
a = 10然后,我们有foo.py,一个导入bla.py的模块。
from bla import *
def Stuff ():
return a在此之后,我们有一个名为bar.py的脚本,它由用户执行:
from foo import *
Stuff() #This should return 10
a = 5
Stuff()这里我不知道:Stuff()是返回10还是5?
发布于 2012-05-08 15:46:29
要回答你的第一个问题:
不,python不会被“导入”两次。当python加载一个模块时,它会检查sys.modules中的模块。如果它不在里面,它就放进去,装上子弹。
回答你的第二个问题:
模块可以定义它们将导出到from camelot import *场景中的名称,其行为是为现有值创建名称,而不是引用现有变量(python没有引用)。
在一个有点相关的主题上,做from camelot import *就是与正常进口不一样。
https://stackoverflow.com/questions/10501724
复制相似问题