【发布时间】:2013-01-12 10:33:35
【问题描述】:
我是新手,正在尝试制作一个简单的随机句子生成器- 如何从存储在另一个 .py 文档中的列表中提取随机项? 我正在使用
random.choice(verb_list)
从列表中拉出。我如何告诉 python verb_list 在另一个文档中?
此外,了解解决方案背后的原理是什么也很有帮助。我想这类似于“文件引用”“文件桥接”等。
【问题讨论】:
标签: python
我是新手,正在尝试制作一个简单的随机句子生成器- 如何从存储在另一个 .py 文档中的列表中提取随机项? 我正在使用
random.choice(verb_list)
从列表中拉出。我如何告诉 python verb_list 在另一个文档中?
此外,了解解决方案背后的原理是什么也很有帮助。我想这类似于“文件引用”“文件桥接”等。
【问题讨论】:
标签: python
您可以从文件中导入变量:
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
【讨论】:
这叫做导入。
如果这是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。
您可能想通过Modules section of the Python tutorial 工作。
如果verb_list 存储在您还想做其他事情的脚本中,那么当您只想导入其变量时,您将遇到脚本运行的问题。在这种情况下,标准做法是将所有脚本功能保留在一个名为 main() 的函数中,然后使用魔法咒语:
verb_list = [
'run',
'walk',
'skip',
]
def main():
print 'The verbs are', verb_list
if __name__ == '__main__':
main()
现在main() 中的代码将不会运行,如果你所做的只是import data。如果你有兴趣,Python 的创造者 Guido van Rossum 写了一篇关于写得更详细的文章Python main() functions。
【讨论】:
main() 函数中,只需将其放在if 子句中即可。
main 功能。我已经更新了我的答案,以链接到一篇更详细的文章。