如何将python脚本拆分为多个部分,并在循环中导入这些部分?

2024-06-28 11:46:53 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,对不起我愚蠢的标题:)这是我的问题。。其实这不是问题。一切正常,但我想有更好的结构。。。在

我有一个python脚本,每秒循环一次。 在循环中有许多IFs。是否可以将每个IF放入单独的文件中,然后将其包含在循环中?所以每次循环被“循环”时,所有的IFs也会被传递。。在

在我的脚本中有太多的条件,而且所有的条件通常都不同于其他的,所以我想有一种带有modules-mod的文件夹_惠瑟.py,国防部_运动.py,国防部_星座.py等等。。在

提前谢谢。我希望我写的一切都可以理解。。在

编辑: 以下是我现在所拥有的结构示例:

while True:
   if condition=='news':
      #do something

   if condition=='sport':
      #so something else

   time.sleep(1)

如果我能有这样的东西就好了:

^{pr2}$

这些IFs来自第一个例子,在files mod中被分开_新闻.py,国防部_运动.py... 在


Tags: 文件py脚本文件夹modulesmod标题if
3条回答

也许您想知道如何使用自己的模块。 制作一个名为'天气.py'并让它包含适当的if语句,如:

""" weather.py - conditions to check """

def check_all(*args, **kwargs):
    """ check all conditions """
    if check_temperature(kwargs['temperature']):
        ... your code ...

def check_temperature(temp):
    -- perhaps some code including temp or whatever ...
    return temp > 40

同样适用于运动.py, 星座.py等等

那么你的主脚本应该是:

^{pr2}$

编辑:根据您的问题编辑。请注意,我建议只导入一次所有模块,在脚本的开头,并使用其函数。这比通过导入执行代码要好。但是如果您坚持,您可以使用reload(weather),它实际上执行一个包括代码执行在内的重新加载。但是我不能过分强调使用外部模块的功能是一个更好的方法!在

我相信您正在寻找某种PHP,比如include()或C前置器{}。您将拥有一个如下included.py的文件:

a = 2
print "ok"

以及另一个具有以下代码的文件:

^{pr2}$

你希望结果等于

for i in values:
    a = 2
    print "ok"

这就是你要找的吗?如果是的话。。。不,不可能。一旦Python导入了一个模块,那么该模块的代码就被执行,并且在相同模式下的导入只检索已经导入的模块实例。模块的代码不是每次导入时都执行。在

我可以发明一些疯狂的方法(比如,file.read()+eval(),或者在导入的模块中调用reload()),但无论如何,这都是个坏主意。我敢打赌我们能想出一个更好的办法来解决你的问题:)

将它们放在不同文件中的函数中,然后导入它们:

"""thing1.py
   A function to demonstrate
"""

def do_things(some_var):
    print("Doing things with %s" % (some_var))

``

^{pr2}$

``

"""main_program.py"""
import thing1, thing2

myvar = "cats"
thing1.do_things(myvar)
thing2.do_things(myvar)

相关问题 更多 >