Python - 从导入的文件调用父文件中的函数

标签 python python-import

作为我在学校从事的项目的一部分,我有一个主文件 (SM.py) 和一个名为“mods”的文件夹,您可以在其中放置其他 .py 文件,这些文件已导入到我的程序中,并且向其中添加内容(我不想开始解释我实际在做什么,因为这会花费很长时间,但如果相关,我可以解释)。

我想要做的是在我的一个 mod 文件中运行一个计时器,它从主文件 (SM.py) 调用一个名为 call_trigger(trigger) 的函数。问题是,我无法将主文件导入 mod 文件,因为那样会产生循环依赖。所以我基本上想做的是:

a.py 导入 b.py,a.py 有一个 foo() 函数。 我想在不先导入 a.py 的情况下从 b.py 调用 foo()。

希望我解释得很好,如果您需要进一步的解释,我可以提供:)

最佳答案

您可以使用回调来实现此目的:

# 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 函数,稍后可以调用此参数。

关于Python - 从导入的文件调用父文件中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443249/

相关文章:

python - 在 Python 中将多个图像添加到一个 Canvas

Python阿拉伯字符串与数字连接

python - 使用 imblearn 对多类数据进行过采样

python - 使用 Python 3.4.1 导入 http.client encouter 导入错误

python - 无法让子模块在另一个应用程序中正确导入

javascript - Python Selenium : Possible to change value when clicking option in dropdown menu?

python - 禁用 python 内置函数

python - 在 python 3.4 中将字符串日期转换为时间戳

python - 为什么安装了opencv3却无法导入?

Python 在同一文件夹中找不到模块