【发布时间】:2020-11-26 10:13:27
【问题描述】:
我对 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__' (如果我没记错的话)确保它里面的东西在脚本被加载时不会运行(这可能是我想要它做的,或者......? ),然后我认为它运行脚本,但现在它缺少变量脚本中的变量。
所以基本上,我该如何解决这个问题? :)
【问题讨论】:
-
在你实际运行的脚本中调用导入的函数。
-
可能是this? (如何即时修改导入的源代码?)
-
这实际上是我的第一个想法。但是
if __name__部分中的内容是相当多的代码。理想情况下,我希望变量文件,即我的同事应该能够运行和更改变量的文件尽可能干净。如果所有if __name__内容也都在该文件中,那将是很好的 imo。但也许可以将if __name__部分中的所有内容放入一个函数中? -
是的,你可以。请参阅下面的答案
标签: python