我是新手,并尝试制作一个简单的随机句子生成器 - 如何从存储在另一个.py文档中的列表中提取一个随机项?我正在使用
random.choice(verb_list)
Run Code Online (Sandbox Code Playgroud)
从列表中拉出来.如何告诉python verb_list在另一个文档中?
此外,了解解决方案背后的原理是有帮助的.我想它就像'文件引用''文件桥接'等等.
Kar*_*tik 53
您可以从文件中导入变量:
vardata.py
verb_list = [x, y, z]
other_list = [1, ,2, 3]
something_else = False
Run Code Online (Sandbox Code Playgroud)
mainfile.py
from vardata import verb_list, other_list
import random
print random.choice(verb_list)
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
from vardata import *
Run Code Online (Sandbox Code Playgroud)
从该文件导入所有内容.但要小心这一点.您不希望发生名称冲突.
或者,您可以导入文件并通过其命名空间访问变量:
import vardata
print vardata.something_else
Run Code Online (Sandbox Code Playgroud)
它叫做导入.
如果是这样的话data.py:
verb_list = [
'run',
'walk',
'skip',
]
Run Code Online (Sandbox Code Playgroud)
这是foo.py:
#!/usr/bin/env python2.7
import data
print data.verb_list
Run Code Online (Sandbox Code Playgroud)
然后运行foo.py将访问verb_list的data.py.
如果verb_list存储在您想要执行其他操作的脚本中,那么当您要执行的操作是导入其变量时,您将遇到脚本运行的问题.在这种情况下,要做的标准事情是将所有脚本功能保留在一个被调用的函数中main(),然后使用魔术咒语:
verb_list = [
'run',
'walk',
'skip',
]
def main():
print 'The verbs are', verb_list
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
现在,main()只要您所做的一切都不会运行代码import data.如果你有兴趣,Python创建者Guido van Rossum写了一篇关于编写更精细的Python main()函数的文章.