本人也是抱着不成功则成仁的想法去的
先说一下肯定有干货
反正不管过不过 总的榨点他身上的东西 对吧! 抓到了总要一顿乱问
晚上7点半接到面试邀请电话
请先简单的自我介绍一下自己
吧啦吧啦说了有两三分钟 主要干什么的 毕业哪里的 为什么选python 以及除了python还会不会别的语言等等
然后直接进入正题
说说你知道的python变量作用域
LEGB 总体来说就是先当前外部函数 然后全局变量 然后内建
python2 用过没 xrange和range的区别是什么?
就拿最简单的例子来说 for i in range(5)
xrange的类型是列表 range的类型是int
那你说说python的 装饰器迭代器和生成器吧
装饰器的本质又是什么?
装饰器的本质就是函数 外层函数的返回值是内部函数的引用
再详细一些。
我曾看过flask 路由的源码 就是运用装饰器原理实现的
第一层是带参数就是url
第二层和第三层是装饰器
简单来说就是定义一个字典 以url为键以视图函数为值
但是用了falsk装饰器路由的同时再加上另一个装饰器会发生循环导入问题
这就要刨地层了 因为装饰器并不是简单的装饰 是把被装饰的函数的内存也更改了。
用大白话来说 就是被装饰器的函数的内存 放到了装饰器的内存里简单来说
就是成为了装饰器的一小部分
那解决方案呢?
一在外层函数上加上@functoolwraps(被装饰函数)
或者 在外层函数返回时把人家的内存地址给返回
为什么django没事呢?
因为django的路由是循环。 如果需要优化路由的话
最简单的方式就是把常访问的路由放在第一位
那你知道装饰器的args和kwars的解包解出来是什么