在导入模块之前,正在从模块调用函数
A function is being called from a module, before the module was imported
我在看 code golf solution, 它的代码是(由 TFeld 编写):
lambda s:all(''.join(p)in s for p in permutations({*s}))
from itertools import*
这怎么可能?
提前致谢!
该代码是空操作。它定义了一个永远不会执行的 lambda,所以 Python 永远不会遇到 NameError。
在导入之前实际执行 lambda itertools
会显示错误。
真的,应该先导入。
PPCG 站点的通常标准允许答案创建满足挑战要求的函数,而无需实际将其保存在任何地方。 lambda
创建函数的时候,permutations
不可用,但是函数没有执行,所以没有报错。如果由 lambda
创建的函数在此代码块的末尾执行,则 permutations
将在该点可用,因此不会发生错误。
但是,lambda
创建的函数不会存活到 import
之后的那个点。在这段代码的执行过程中,实际上没有一个函数可以满足挑战的要求。函数的依赖项在函数的生命周期结束后才可用。
切换 lambda 和导入将解决此问题,而无需额外字符。
我在看 code golf solution, 它的代码是(由 TFeld 编写):
lambda s:all(''.join(p)in s for p in permutations({*s}))
from itertools import*
这怎么可能? 提前致谢!
该代码是空操作。它定义了一个永远不会执行的 lambda,所以 Python 永远不会遇到 NameError。
在导入之前实际执行 lambda itertools
会显示错误。
真的,应该先导入。
PPCG 站点的通常标准允许答案创建满足挑战要求的函数,而无需实际将其保存在任何地方。 lambda
创建函数的时候,permutations
不可用,但是函数没有执行,所以没有报错。如果由 lambda
创建的函数在此代码块的末尾执行,则 permutations
将在该点可用,因此不会发生错误。
但是,lambda
创建的函数不会存活到 import
之后的那个点。在这段代码的执行过程中,实际上没有一个函数可以满足挑战的要求。函数的依赖项在函数的生命周期结束后才可用。
切换 lambda 和导入将解决此问题,而无需额外字符。