[英]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__'
下的部分(如您所想)在您将脚本导入另一个脚本时未执行。 但是,如果您只是将那部分代码放在主脚本中,则在将该脚本导入另一个脚本时会直接执行(即使在声明变量VAR1
、 VAR2
等之前)。 所以这也行不通。 将要使用的部分放入 function 中,可以使用单独脚本中的变量从单独的脚本中执行该部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.