Python 从另一个文件使用变量
我刚开始学习编程,想做一个简单的随机句子生成器。请问我怎么从另一个.py文件里提取一个随机的项目?
random.choice(verb_list)
我用这个来从列表中提取。那我怎么告诉Python,verb_list是在另一个文件里的呢?
另外,知道这个解决方案背后的原理叫什么也会很有帮助。我想这可能叫做“文件引用”或者“文件连接”等等。
2 个回答
10
这叫做导入。
如果这个是 data.py
:
verb_list = [
'run',
'walk',
'skip',
]
而这个是 foo.py
:
#!/usr/bin/env python2.7
import data
print data.verb_list
那么运行 foo.py
就可以从 data.py
里获取 verb_list
。
你可能想看看 Python教程中的模块部分。
如果 verb_list
存在于一个你还想做其他事情的脚本里,那么你可能会遇到一个问题:当你只想导入它的变量时,脚本却会自动运行。在这种情况下,通常的做法是把所有脚本的功能放在一个叫 main()
的函数里,然后使用一个神奇的咒语:
verb_list = [
'run',
'walk',
'skip',
]
def main():
print 'The verbs are', verb_list
if __name__ == '__main__':
main()
现在,如果你只是 import data
,那么 main()
里的代码就不会运行。如果你感兴趣的话,Python的创始人Guido van Rossum写过一篇关于如何编写更复杂的 Python main()
函数的文章。
87
你可以从文件中导入变量:
vardata.py
verb_list = [x, y, z]
other_list = [1, 2, 3]
something_else = False
mainfile.py
from vardata import verb_list, other_list
import random
print random.choice(verb_list)
你也可以这样做:
from vardata import *
这样可以从那个文件中导入所有内容。不过要小心,这样可能会有名字冲突。
另外,你也可以直接导入文件,然后通过它的命名空间来访问变量:
import vardata
print vardata.something_else