我需要使用在其他函数中定义的函数。_f1是在f中定义的,在f2中可以使用_f1吗?
def f():
def _f1():
return "f1"
return _f1()
def f2():
return f._f1()
print(f2())发布于 2021-12-21 13:29:27
这里有很多东西混在一起。要运行_f1函数,首先必须从f返回它。但是您正在调用它,所以从f返回的是_f1的返回值。
若要在函数外部调用_f1,请使用:
def f():
def _f1():
return "f1"
return _f1
def f2():
return f()()
print(f2()) 正如您所看到的,f2现在正在调用f,它正在返回_f1而不执行它。然后,您可以“执行此返回值”(这就是()()出现的原因,实际上是同时调用两个函数),而ta-da则是在函数f之外调用_f1。
发布于 2021-12-21 13:26:41
我看到三个选择:
func_variable = None
def f():
def _f1():
return "f1"
func_variable = _f1
def f2():
return func_variable()
print(f2()) def f():
def _f1():
return "f1"
return _f1
def f2():
inner_func = f()
return inner_func()
print(f2()) class InnerFuncClass:
inner_func = None
def __init__(self):
def _f1():
return "f1"
self.inner_func = _f1
f = InnerFuncClass()
def f2():
return f.inner_func()
print(f2()) 顺便说一句,Python中不需要分号。
发布于 2021-12-21 13:25:12
你要找的是一门课。
class f:
def __new__(self):
return f._f1()
@staticmethod
def _f1():
return 'f1'
def f2():
return f._f1()
print(f())
>>> 'f1'
print(f2())
>>> 'f1'虽然其他答案是正确的,但我认为应该考虑一个更复杂的问题。例如,如果函数f具有它使用的多个内部函数,并且它返回1值。在这种情况下,仅在其他函数中使用所有子函数是不合理的。
使用此解决方案,您可以创建多个子函数,并在调用类f() (在__new__函数中定义)时只返回一个值。
例如,当您想要计算圆周乘以一个圆的面积时:
import math
class f:
def __new__(self, radius):
circumference = self.circumference(radius)
area = self.area(radius)
return circumference * area
@staticmethod
def circumference(radius):
return math.pi * 2 * radius
@staticmethod
def area(radius):
return math.pi * radius**2
def area(radius):
return f.area(radius)https://stackoverflow.com/questions/70436047
复制相似问题