为了应对面试,记录下Python相关的问题。
Python中的装饰器(Decorator)
- 作用: 在代码运行期间可以使用装饰器动态添加新的功能,比如,打印logger,或者是使用别人写好的API。
-
Python中一些内置的装饰器:
特性装饰器:@property
类方法装饰器:@classmethod
静态方法装饰器:@staticmethod
- 举例:
def decorator(func):
def wrapper(*args, **kwargs):
print('123')
return func(*args, **kwargs)
return wrapper
##这里的@decorator就代替了say_hello = decorator(say_hello)
@decorator
def say_hello():
print('同学你好')
say_hello()
作者:三眼鸭的编程教室
链接:https://www.zhihu.com/question/26930016/answer/1904166977
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
ps: 个人感觉微软这个教程把装饰器的作用讲的还蛮通俗易懂的,link: https://www.bilibili.com/video/BV1nJ411M7gm
深拷贝和浅拷贝
- 深拷贝: 新的变量指向新的地址
- 浅拷贝:拷贝后的地址和原地址一样
这里比较具体的应用是我在刷题的时候做到回溯算法,需要把每一次遍历好的内容放在res数组里,因为回溯算法是递归的,所以赋值的时候需要深拷贝,复制path的内容并指向新的地址res.append(path[:])
。
可变(mutable)变量和不可变(immutable)变量
-
可变:list(列表),dict(字典)
列表在append操作后地址没变 -
不可变:int, long, bool, float, str, tuple
原地加1后,指向新的地址