python中def中def是如何实现的?

比如这段代码 [图片] 每次调用f,内部的函数都会重新覆盖定义一遍吗?这岂不是要慢很多?不嵌套定义会显得很难看,有什么好的方法吗? 另外python绝…
关注者
36
被浏览
68,899

6 个回答

这要看你怎么理解“定义”

其实py的作法是:

先编译整段代码,每个函数的代码部分弄成一个code对象

然后执行def这句的时候,把code对象和当时一些信息打包一个func对象,赋值给f1code对象是唯一的,但func对象是实时生成的

你先定义好这些函数,建立起它们和n的映射,然后使用就好了。

具体可以把它们放到字典里,作为值。或者定义一个类,作为类的方法。

根据n大小dispatch用二分法,if else语句块多了很丑。