【发布时间】:2014-06-26 07:13:25
【问题描述】:
我有两个 python 脚本,其中一个包含一个全局变量 globVar,我希望在另一个文件中使用它。文件结构如下:
File1.py
from File2 import *
globVar = []
def func1(a,b):
globVar.append(range(a,b))
printLast()
def main():
for i in range(1,10):
for j in range(1,5):
func1(i,j)
if __name__=="__main__":
main()
文件2.py
from File1 import globVar
def printLast():
element = globVar[-1]
print 'Latest element is ',element
不要'打扰代码的生产力,这只是一个示例手头的问题。
在运行脚本 File1.py 时,会弹出一个错误,即 globVar[-1] 是 list index out of range。或者简单地说,列表为空。
为什么会这样?
编辑:
正如最初发布的那样,这个问题包含 “from File2 import printLast” 作为 File1.py 的第一行。但正如 @user2357112 在 cmets 中指出的那样,该语法导致 ImportError。
现在它已更改为 from File2 import *,错误是 IndexError,我一开始就试图指出。
任何合理的解释将不胜感激。
【问题讨论】:
-
因为,您只是导入 globVar 变量,而不是初始化它。如果你想使用初始化的 globVar 那么你应该在 File2.py 文件中运行 main() 函数
-
除了语法错误和拼写错误的函数名称(
lastPrint而不是printLast)之外,此代码还有一个循环导入问题,会导致ImportError在IndexError可能出现之前. When you post code to show your problem, please actually run what you post to verify that it correctly shows the problem. -
@user2357112 更正。对不起,菜鸟的错误。虽然我相信这个示例代码会模拟我的问题的要点,但事实并非如此。以后会处理这些事情的。
-
@user2357112 另一件事。当我将 from File2 import printLast 更改为 from File2 import * 时,错误已更改为 IndexError 而不是最初的 Import Error。
标签: python