我现在才发现,当导入一个模块时,它似乎运行了所有的代码,而不是我希望它只运行一个函数。我一直在想办法解决这个问题,但似乎没办法。这就是正在发生的事情。你知道吗
#mainfile.py
from elsewhere import something_else
number = 0
def main():
print('What do you want to do? 1 - something else')
donow = input()
if donow == '1':
something_else()
while 1:
main()
#elsewhere.py
print('I dont know why this prints')
def something_else():
from mainfile import number
print('the variable number is',number)
现在,虽然这段代码的工作方式和我想要的一样,但当我第一次启动它时,它会进入主菜单两次。例如:我启动程序,按一,然后它又问我想做什么。如果我再按一次,它会打印“变量号为0”。你知道吗
一旦我得到这个工作,我想是导入了很多变量来回。唯一的问题是,如果我添加更多的import语句到“别处.py“我认为它会越来越多地启动这个项目。如果我把“从主文件导入编号”放在别处.py“,我认为这是一个错误。有什么解决办法吗?我能换个文件吗?如果我创建了一个类来存储变量呢,如果可能的话?我是一个非常新的编程,我会很感激如果答案是容易阅读的初学者。谢谢你的帮助。你知道吗
import
执行导入的代码import
只需获取Python源文件并执行它。这就是它打印的原因,因为该指令在代码中,并且随着import,所有指令都被执行。你知道吗为防止执行部分导入包/模块,您应使用著名的:
请注意,这种行为在Python3中并不新鲜,在Python2.x中也是如此。你知道吗
正如简所说,import就是这么做的。当您运行import时,它将运行模块中的所有代码。你可能会想:不,不是的!那
something_else
里面的代码呢?那可跑不了!对,当def语句被执行时,它会创建一个新函数,但不会运行它。基本上,它会保存代码以备将来使用。你知道吗解决方案是,几乎所有有趣的代码都应该在一个函数中。有一些情况可以放在顶层,但如果有疑问,可以放在函数中。在您的特定情况下,不应该在顶层打印,如果出于某种原因需要打印,请将其放入函数中,并在需要时调用它。如果你在乎什么时候发生什么事,就把它放在一个函数里。你知道吗
在第二个节点上,不要在其他脚本中导入主脚本。也就是说,如果你的主文件.py直接,不要在其他文件中导入。你可以但它会产生令人困惑的结果,最好假装它不起作用。你知道吗
不要试图来回导入变量。在那条路上只有痛苦。你应该只导入不变的东西。函数、类等。在任何其他情况下,你都很难让它做你想做的事情。你知道吗
如果要在不同位置之间移动变量,可以使用其他选项:
我将留给读者练习如何做这些事情。你知道吗
相关问题 更多 >
编程相关推荐