【问题标题】:How do I import other scripts?如何导入其他脚本?
【发布时间】:2011-12-22 20:09:44
【问题描述】:

好的,我尝试查找问题,但我得到了很多让我感到困惑的答案(抱歉我的无知)。我写了一个脚本,我想导入另一个脚本,这样当我在终端中运行它时,就好像第二个脚本是第一个脚本的一部分。我该怎么做呢?感谢您的帮助。

【问题讨论】:

    标签: python file import


    【解决方案1】:

    假设您希望 a.py 使用 b.py。如果b.py 中的代码是在任何函数或类之外编写的,运行它所需要做的只是:

    import b
    

    如果代码在某个函数中,例如:

    # Code in b.py
    def some_func():
        # Implementation
    

    那么你需要:

    import b
    b.some_func()
    

    或:

    from b import some_func
    some_func()
    

    最后,如果你的代码在一个类的函数中,例如:

    # Code in b.py
    class ClassB():
        def some_func(self):
            # Implementation
    

    你可以:

    from b import ClassB
    obj_b = ClassB()
    obj_b.some_func()
    

    【讨论】:

    • 解释这些文件应该在文件系统中的什么位置(在同一文件夹中)可能很有价值,以便示例 import 语句起作用。您的来电。
    • @Jeff - 我认为这是题外话,并证明了一个专门的问题
    【解决方案2】:

    如果您希望仅将脚本插入内联(如#include),那么您做错了。

    这将从您的其他脚本中导入所有符号,就好像它们是在本地定义的一样(除了导入代码中的全局变量访问范围将限于导入的模块,而不是本地模块)。

    from OtherScript import *
    

    【讨论】:

    • @RaymondHettinger:as if defined locally 的说法不正确。名称将被导入到本地命名空间,但如果他们访问任何全局变量,它将是导入模块的全局变量,而不是本地模块的全局变量。
    • @EthanFurman:注意到了,尽管从执行导入的代码的角度来看,这并不重要。导入的符号将出现在本地命名空间中,就好像它们是在本地定义的一样,无论导入的代码在内部如何运行。
    【解决方案3】:

    如果你有一个名为first.py的脚本:

    def print_something():
        print("something")
    

    然后你可以import来自另一个脚本(在同一目录中):

    import first
    
    first.print_something()
    

    【讨论】:

      【解决方案4】:

      导入,所以如果其他脚本名为FirstScrity.py

      import FirstScript
      

      要使用该脚本中的某些内容,您必须执行 FirstScript。“使用的名称”

      如果你不想这样做,你可以这样做

      from FirstScript import "NAME OF THING TO USE"
      

      from FirstScript import *
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        • 2020-07-14
        • 2019-11-19
        • 1970-01-01
        相关资源
        最近更新 更多