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

Ben*_*mes 23 python

我是新手,并尝试制作一个简单的随机句子生成器 - 如何从存储在另一个.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)

  • 如果在函数中定义了需要导入的变量,则此方法无效.你怎么解决这个问题? (2认同)

and*_*otn 5

它叫做导入.

如果是这样的话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_listdata.py.


您可能想要学习Python教程Modules部分.


如果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()函数的文章.