首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在递归函数中定义内部函数是个坏主意吗?

在递归函数中定义内部函数是个坏主意吗?
EN

Stack Overflow用户
提问于 2014-04-17 16:37:55
回答 2查看 820关注 0票数 9

我有一些递归的回溯代码,在做出选择之前测试选择是否有效。在递归的is_legal_choice函数中嵌套solve函数是个坏主意吗?每次调用solve函数时,会重新定义这个内部函数吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-17 16:41:37

是的,每次调用函数时,内部函数都会被重新定义。但是,它并不像您想象的那样糟糕;Python代码只被解析成代码对象一次,每次只重新构建函数对象(它作为代码对象的包装器)。

票数 6
EN

Stack Overflow用户

发布于 2014-04-17 16:43:34

是的,每次调用它时都会重新定义它。然而,这并不总是一个坏主意。这就是你如何做一个结束,这有时是有用的。

如果您的is_legal_choice函数需要使用一些只能在外部函数范围内可用的数据,那么我建议您继续使用它。性能开销不会太大(如果需要,可以随时分析)。

如果is_legal_choice不需要来自solve参数的任何数据,那么做任何让您的代码最容易理解的事情。

您可以通过google找到更多关于闭包的信息,但下面是一个示例:http://ynniv.com/blog/2007/08/closures-in-python.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23138783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档