只有深度理解Python函数基础才能开始真正接触装饰器。正如数学、物理、化学这些基础学科,正因为我们在这些基础学科的缺陷,让我们在科技发展上总遇到瓶颈。甚至大学都在做投其所好的实用主义,急于搭建空中楼阁。计算机发展日新月异,未来的竞争会更加激烈;如果基础不牢,即便换别的行业也不好做。
对于Python的函数,下面的这些原理是你需要知道的。如果使用关键字的方法记忆,我们可以使用下面的清单进行记忆:
- 函数是用来封装的,Python函数的特点是不需要注明参数类型,非常灵活,这带来了Python的入门容易。但是,约束少,自由度大也带来了很大潜在问题。这样,我们在使用Python时候一定要注意类型判断。
- 标识符和函数对象建立了关系,这个关系是利用参数实现的。
- 函数体要注意返回值的return None的情况。
- 函数的作用域,内部是局部作用域,当使用嵌套函数时候,LEGB(local enclosing global buildin)内部对外不可见,外部对内可见是作用域的原则。
- x+=1与x=x+1是不一样的;
- unbound local error的解决使用global解决不推荐,我们推荐使用Nonlocal
- 闭包当函数没有释放时候发生,往往通过return函数实现。
- 函数调用是通过压栈实现的,每一次调用之间是没有关系的。
- 递归的原理也是压栈,但python递归是有递归深度的。循环是可以改版成递归的,循环次数等于递归次数。但因为入栈和出栈是有损耗的所以我们一般尽量避免递归的产生;一般的递归比较容易避免,但是往往间接递归不同意发现。
有的人习惯使用脑图或者其它的方法记忆,那也可以使用自己的方法,但如果一直在用的方法没有成效,就可以尝试别的方法。