那是one.py:
test = {'1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]}
import two
two.example()
那是两个.py:
def example():
print test[1][5]
你能告诉我为什么会因以下错误而失败吗?
NameError: global name 'test' is not defined
谢谢!
答案 0 :(得分:1)
因为你的two.py不知道test
是什么,所以你应该将其作为参数传递给example
:
one.py:
test = {1: [1, 2, 3, 4, 5, 6]}
import two
two.example(test)
two.py:
def example(test):
print test[1][5]
注意:我冒昧地将test
dict条目从'1'
更改为1
,因为您拨打了test[1][5]
而不是{{} 1}}。
答案 1 :(得分:1)
在Python中,一切都是对象。 甚至模块。
test
是one
模块对象的属性,而不是two
模块对象的属性。因此,在two
的代码中,它不在范围内。
答案 2 :(得分:0)
每个模块(包括脚本文本)都有自己的全局变量名称空间(global symbol table)。可以访问其他模块的变量,但不是那么容易。此外,通常更好的方法是将它们作为函数参数传递。
答案 3 :(得分:0)
您需要在two.py文件中导入one.py,以使其位于命名空间中。
Two.py:
from one import *
print test
答案 4 :(得分:-1)
您可以在功能
中导入它def example():
from one import test
print test[1][5]
或者您可以将测试作为变量传递
#one.py
two.example(test)
#two.py
def example(test):
print test[1][5]