Python 从另一个文件使用变量

45 投票
2 回答
146184 浏览
提问于 2025-04-17 13:59

我刚开始学习编程,想做一个简单的随机句子生成器。请问我怎么从另一个.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

撰写回答