python相关

为了应对面试,记录下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后,指向新的地址

你可能感兴趣的:(python相关)