在另一个函数中导 入函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在另一个函数中导 入函数相关的知识,希望对你有一定的参考价值。
让我们说我有一个脚本test.py
,它有一个函数,它在另一个函数中:
x = 3
def function_1(x):
...
y = x + 7
def function_2():
return value
现在我想在另一个脚本中使用function_1
和function_2
。我怎么做?
我试过这个:
import test
from test import function_1
from function_1 import function_2
我基本上只是得到一个错误说No module named function_1
。它确实导入function_1
,我可以使用它,但不是function_2
。我不能只让function_1
成为一个类(它需要一个参数)。我怎样才能解决这个问题?我可以以某种方式使用_main_
来取代function_1
?我可以然后导入function_2
吗?
答案
嵌套函数function_2
是外部函数的本地命名空间中的对象。当function_1
没有运行时,它甚至不作为函数存在。
通常,嵌套函数要么对外部函数执行私有计算,要么以某种形式返回。在后一种情况下,您可以运行function_1
来获取对function_2
的引用。
您要导入的任何对象都应位于全局命名空间中,或至少可直接从其引用。一个更好的设计
x = 3
def function_1(x):
y = x + 7
# Do some stuff, including using function_2
return y
def function_2(value):
# Do some stuff
return value
请记住,定义函数与运行函数不同。作为推论,x
中的function_1
与你在模块级别设置为3的x
不同。
更新更新
你绝对可以将function_1
变成一个类,并使function_2
成为它的一种方法:
class function_1:
def __call__(self, x):
y = x + 7
value = self.function_2(y)
return y, value
@staticmethod
def function_2(value):
return value
在这种情况下,您可以在其他脚本中执行以下操作:
from test import function_1
f1 = function_1()
# Call it:
f1(7)
# Call function_2:
function_1.function_2('blah')
# Or alternatively:
f1.function_2('foo')
以上是关于在另一个函数中导 入函数的主要内容,如果未能解决你的问题,请参考以下文章