繁体   English   中英

在其他脚本中使用脚本

[英]Using script in other scripts

我对 Python 并不陌生,但不知何故,我总是在一个脚本中创建所有内容,然后按原样运行。

但是,现在我发现自己必须创建一个脚本,然后为包含不同变量等的不同场景创建不同的文件,然后在另一个脚本中使用这些文件。 所以我想做的是将此主脚本导入其他不同的脚本(主要包含不同的变量),然后按预期运行所有内容。

所以基本上我现在拥有的是:

    import matplotlib.pyplot as plt


    VAR1 = [1, 3, 5]
    VAR2 = "Foo Bar"
    VAR3 = {"foo": 1, "bar": 2}


    def my_func(arg):
        something something


    def my_func2(arg2):
        something something
        if VAR2 == "Foo Bar":
            print("Awesome var name")
        else:
            print("Not awesome var name")


    if __name__ = '__main__':
        something something
        
        my_stuff = [my_func(my_argument) for my_argument in some_list]

        print(VAR3["foo"])
        plt.hist(VAR1)
    
        plt.show()

所以这当然只是一个例子,但正如你所见,我使用了函数和if __name__ = '__main__'中的变量,以及函数中的一些变量。

我想做的是创建多个文件,每个文件都包含不同的变量,这样我自己或同事就可以找到正确的脚本,并在需要时运行它。

但同样,我从未尝试过组合多个脚本,所以我真的不确定这是如何工作的。 如果我尝试只导入我认为是主脚本的内容,即:

    import matplotlib.pyplot as plt


    def my_func(arg):
        something something


    def my_func2(arg2):
        something something
        if VAR2 == "Foo Bar":
            print("Awesome var name")
        else:
            print("Not awesome var name")


    if __name__ = '__main__':
        something something
        
        my_stuff = [my_func(my_argument) for my_argument in some_list]

        print(VAR3["foo"])
        plt.hist(VAR1)
    
        plt.show()

进入我想创建多个文件的脚本,即:

    import main_script


    VAR1 = [1, 3, 5]
    VAR2 = "Foo Bar"
    VAR3 = {"foo": 1, "bar": 2}

然后它只是运行变量,甚至没有加载其他脚本。 如果我尝试删除if __name__ = '__main__' (如果我没记错的话)确保在脚本加载后它里面的东西不会运行(这可能是我想要它做的,或者。 ..?),然后我认为它运行脚本,但现在它缺少变量脚本中的变量。

所以基本上,我该如何解决这个问题? :)

尝试将if __name__ = '__main__':下的部分更改为 function。

主脚本:

import matplotlib.pyplot as plt


def my_func(arg):
    something something


def my_func2(arg2):
    something something
    if VAR2 == "Foo Bar":
        print("Awesome var name")
    else:
        print("Not awesome var name")


def executeMainFunction(VAR1, VAR2, VAR3):
    something something
    
    my_stuff = [my_func(my_argument) for my_argument in some_list]

    print(VAR3["foo"])
    plt.hist(VAR1)

    plt.show()

单独的脚本

import main_script

VAR1 = [1, 3, 5]
VAR2 = "Foo Bar"
VAR3 = {"foo": 1, "bar": 2}

main_script.executeMainFunction(VAR1, VAR2, VAR3)

说明if __name__ = '__main__'下的部分(如您所想)在您将脚本导入另一个脚本时未执行。 但是,如果您只是将那部分代码放在主脚本中,则在将该脚本导入另一个脚本时会直接执行(即使在声明变量VAR1VAR2等之前)。 所以这也行不通。 将要使用的部分放入 function 中,可以使用单独脚本中的变量从单独的脚本中执行该部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM