【问题标题】:Can i access python function inside in same function? [closed]我可以在同一个函数中访问 python 函数吗? [关闭]
【发布时间】:2014-04-19 04:49:43
【问题描述】:

我可以在主函数的同一个函数或子函数中访问python 函数吗?

def main_function():
   def sub_function():
       main_function() # i need to call main function.can i or not.any solution?

NameError: name 'main_function' 未定义

【问题讨论】:

  • 一个普遍的问题,为什么需要一个函数来声明另一个函数?我没有看到这个的应用
  • @lightandlight 这是标准做法。它用于装饰器,python 标准库中充满了它的实例。
  • @lightandlight 一个原因是您可以在内部函数中使用非局部变量,甚至可以通过“闭包”保留对它们的引用。另一个只是用于命名空间,因此该函数不会泄漏出本地命名空间。另一个是如果您希望函数定义本身以某种方式是程序化的。

标签: python function python-2.7 python-3.x


【解决方案1】:

你可以这样做,是的。

我认为您发布的代码没有任何问题。但是,它实际上不会做任何事情,因为您只能从 main_function 中调用 sub_function,而目前您只定义了 sub_function,但实际上并未调用它。如果你以某种方式得到了NameError,尽管你的代码实际上并没有以任何真正的方式执行任何东西,那么肯定还有其他原因。

如果您这样做,这与您所做的类似,只是它在main_function 内添加了对sub_function 的实际调用:

def main_function():
   def sub_function():
       main_function()
   sub_function()

然后你调用main_function(),你会得到一个Maximum call stack size exceeded错误,因为它是一个无限递归函数。

【讨论】:

  • 谢谢....我想我理解我的错误。我想重新启动我的程序,这就是为什么我记得 main_function.by 我找到另一个解决方案的方式。我认为使用 while 循环可以满足我的要求。
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
相关资源
最近更新 更多