Python 面试时被问装饰器:从答偏到理解透
Python 面试考装饰器,真不是看你背没背语法。
我面外包岗时,只会拿 pytest 举例。结果被面试官三个追问问懵了:
到底改不改原函数:不改源码,而是包一层新函数。用 @wraps 保住原名。
带参数的怎么写:得套三层。外层收参数,中层收函数,内层收参数并执行。
跟直接调函数有啥区别:它专治“横切关注点”。像日志、计时、鉴权这些到处都要插一脚的事,用它最干净。
回家补完课,作者把装饰器分成了三类:函数的、类的和第三方的。比如类装饰器,能不动源码就给现成类动态加方法。
说白了,装饰器就是个“套壳工厂”:扔进旧函数,出来带新能力的新函数。
平时工作有人兜底,面试全靠自己。
原文Python 面试时被问装饰器:从答偏到理解透,我补上了这 3 个认知