作为我在学校工作的项目的一部分,我有一个主文件(SM.py)和一个名为“mods”的文件夹,你可以在其中放入其他.py文件,这些文件被导入到我的程序中添加东西(我不想开始解释我实际在做什么,因为它需要很长时间,但如果相关我可以解释它。)
我想要做的是在我的一个mod文件中运行一个定时器,它从主文件(SM.py)调用一个名为call_trigger(trigger)的函数。问题是,我无法将主文件导入到mod文件中,因为这会产生循环依赖。所以我基本上要做的是:
a.py导入b.py,而a.py有一个foo()函数。 我想从b.py调用foo()而不先导入.py。
希望我能很好地解释自己,如果你需要进一步的解释,我可以提供它:)
答案 0 :(得分:0)
您可以使用回调来实现此目的:
# Some code from your top level
def foo():
print("Foobar")
def bar(param):
print("param=%s" % param)
# Code in the module
def baz(callback):
print("Do something")
callback()
baz(foo) # notice that there are no () after foo
baz(lambda: bar(23)) # lambda creates an anonymous function,
# which is called by baz. The call within
# baz is the point when bar(23) will be executed.
您可以将任何可调用对象作为参数传递给python函数,稍后可以调用此参数。