面试中问了些python的基本问题,发现时间久远加之学习中也没太注意这些理论上的细节,答得不行。学习并记录下
python的闭包
直接看链接里的文章,文章总结的已经很好。尤其注意典型问题(文章里都有具体的例子):
1.闭包陷阱:返回闭包前,闭包中父函数可能发生意料外变化。因此返回闭包中不要引用任何循环变量或者后续会发生变化的变量
2.经过装饰器装饰的函数或者类不再是原来的函数或者类了。这也是使用装饰器改变函数或者类的行为与直接修改定义最根本的差别。
在前一链接学习中,对于示例代码如图,一开始产生了疑惑
为什么可以这样返回呢?
总结就是,这样相当于函数通过函数名返回了对一个函数对象的引用。在查询过程中发现了一篇相关好文
包含内容参考如下:
1.python中一切皆对象的理解
2.函数也是一类对象
3.函数对象vs函数调用
4.闭包&LEGB法则
5.装饰器&语法糖
6.回归问题(5.6.还没看,之后回顾再看!)
__init__()和new()的区别
直接看文章吧
数据类型的可变与否
总的来说就是变化后内存地址变不变的问题
看的时候想到的一个问题,为什么这么设计呢。
没有查到很详细的内容解释这个,大概查到应该和内容合并,并发访问(需要加锁),cow难度有关。这个问题先留着,之后再说!
*参数和**参数的用法
很详细