【发布时间】:2026-02-07 03:00:01
【问题描述】:
我有一个名为main.py 的文件,其中包含以下代码:
def function(a):
def inner_function(b):
return b**2
print("Reached here!")
现在我有一个名为test.py 的不同文件,我想从main.py 导入函数inner_function。目前我正在我的test.py 中执行此操作,但它不起作用:
from main import function
from function import inner_function
print(inner_function(2))
【问题讨论】:
-
那行不通。你到底想做什么?见XY Problem。
-
由于词法范围规则,这是不可能的。你甚至不能从
main.py中使用inner_function,除非只能在function内使用(它在内部是词法范围)。 -
不仅仅是范围规则,它也不起作用,因为当您尝试使用它时,
inner_function甚至不存在。 -
内部函数仅在外部函数执行时存在,在导入时不存在。此外,导入语句不起作用,因为您一直在使用它。您不能从对象(如函数)导入,只能从模块和包导入。
-
这通常只针对不需要保留在外部的 helper 函数。否则它应该在 module 级别。
标签: python function nested-function