【问题标题】:python using variables from another filepython使用另一个文件中的变量
【发布时间】:2013-01-12 10:33:35
【问题描述】:

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

random.choice(verb_list) 

从列表中拉出。我如何告诉 python verb_list 在另一个文档中?

此外,了解解决方案背后的原理是什么也很有帮助。我想这类似于“文件引用”“文件桥接”等。

【问题讨论】:

    标签: python


    【解决方案1】:

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

    vardata.py

    verb_list = [x, y, z]
    other_list = [1, 2, 3]
    something_else = False
    

    ma​​infile.py

    from vardata import verb_list, other_list
    import random
    
    print random.choice(verb_list) 
    

    你也可以这样做:

    from vardata import *
    

    从该文件导入所有内容。不过要小心。您不想发生名称冲突。

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

    import vardata
    print vardata.something_else
    

    【讨论】:

    • 如果您需要导入的变量是在函数中定义的,这将不起作用。你如何解决这个问题?
    • @gmonz 尝试从您的函数中返回变量并导入所有内容
    【解决方案2】:

    这叫做导入。

    如果这是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 功能。我已经更新了我的答案,以链接到一篇更详细的文章。
    • 谢谢你-使用 main 是什么伎俩。我一直在使用 import 但就像你说的那样,我的 verb_list 脚本会运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2014-05-03
    • 2019-10-23
    • 1970-01-01
    • 2021-04-17
    相关资源
    最近更新 更多