python使用另一个文件中的变量

python使用另一个文件中的变量,python,Python,我是新来的,想做一个简单的随机句子生成器- 如何从另一个.py文档中存储的列表中提取随机项? 我正在使用 random.choice(verb_list) 从列表中删除。如何告诉python动词列表在另一个文档中 此外,了解解决方案背后的原则是什么也会有所帮助。我想这就像是“文件引用”、“文件桥接”等等 这叫做导入 如果这是data.py: verb_list = [ 'run', 'walk', 'skip', ] #!/usr/bin/env python2.7

我是新来的,想做一个简单的随机句子生成器- 如何从另一个.py文档中存储的列表中提取随机项? 我正在使用

random.choice(verb_list) 
从列表中删除。如何告诉python动词列表在另一个文档中


此外,了解解决方案背后的原则是什么也会有所帮助。我想这就像是“文件引用”、“文件桥接”等等

这叫做导入

如果这是
data.py

verb_list = [
    'run',
    'walk',
    'skip',
]
#!/usr/bin/env python2.7

import data
print data.verb_list
这是
foo.py

verb_list = [
    'run',
    'walk',
    'skip',
]
#!/usr/bin/env python2.7

import data
print data.verb_list
然后运行
foo.py
将从
data.py
访问
verb\u列表


你可能想把这件事做完


如果
verb\u list
存储在一个脚本中,您还想做其他事情,那么您将遇到一个问题,即当您只想导入它的变量时,脚本就会运行。在这种情况下,标准做法是将所有脚本功能保留在名为
main()
的函数中,然后使用魔法咒语:

verb_list = [
    'run',
    'walk',
    'skip',
]

def main():
    print 'The verbs are', verb_list

if __name__ == '__main__':
    main()

现在,如果只需导入数据,则
main()
中的代码将不会运行。如果您感兴趣,Python创建者Guido van Rossum已经写了一篇关于编写更详细的文章。

您可以从文件中导入变量:

vardata.py

verb_list = [x, y, z]
other_list = [1, 2, 3]
something_else = False
from vardata import verb_list, other_list
import random

print random.choice(verb_list) 
mainfile.py

verb_list = [x, y, z]
other_list = [1, 2, 3]
something_else = False
from vardata import verb_list, other_list
import random

print random.choice(verb_list) 
您还可以执行以下操作:

from vardata import *
从该文件导入所有内容。不过要小心。您不希望出现名称冲突

或者,您可以只导入文件并通过其命名空间访问变量:

import vardata
print vardata.something_else

请注意,不必将该代码放入
main()
函数中,只需将其放入
if
子句中即可。True,但这样其他模块也可以在导入时访问脚本的
main
功能。我已经更新了我的答案,以链接到一篇有进一步详细说明的文章。谢谢你-使用main是成功的关键。我一直在使用import,但正如您所说,我的verb_list脚本将运行。如果您需要导入的变量是在函数中定义的,则这不起作用。如何解决这个问题?@gmonz尝试从函数返回变量并导入所有内容