Skip to content

Latest commit

 

History

History
48 lines (29 loc) · 1.99 KB

面试题.md

File metadata and controls

48 lines (29 loc) · 1.99 KB

深拷贝和浅拷贝的区别是什么?

深拷贝:将对象本身复制给另一个对象,对新的副本做任何的改动,不会影响原对象。

浅拷贝:将对象的引用给另一个对象,对这个对象副本做改动,会影响到原对象。

is和==的区别

is表示对象标识符,检查对象的id是否一样(对象在内存中的地址是否一样),而==表示两个对象是否相等。

从代码上讲,a is b检查的是id(a) == id(b), 而 == 实际调用的是a对象的__eq__()方法,即a.__eq__(b)的结果。

可变对象

可变对象 dict,list,不可变对象 str,int,tuple,float。

连接字符串用join还是+

由于字符串是不可变对象,如果要连接N个字符:S1+S2+...+SN,执行一次操作就会在内存申请一块新空间,将上次的操作结果和本次右操作数复制到新的内存空间,重复。因此,在N个字符连接的过程中,会有N-1次中间结果,严重影响执行效率。时间复杂度接近为O(n^2).

当用join()时,会首先计算需要的内存空间,然后一次申请将每个元素都复制到内存中去,所以时间复杂度为O(N)

with语句

一个实现了__enter__和__exit__方法的对象就称之为上下文管理器

自定义一个上下文管理器:

class ContextManager(object):
    def __enter__(self):
        print("entering")
    def __exit__(self, exception_type, exception_value, traceback):
        print("exiting")
        if exception_type is None:
            print("exit without exception")
        else:
            print("exit with exception: %s" % exception_value)
            return False

百度大牛总结的十条Python面试题 https://blog.csdn.net/lingpy/article/details/80313633

整理的最全 python常见面试题(基本必考)https://blog.csdn.net/changkai456/article/details/80372198

100道python真实面试题(附答案)https://blog.csdn.net/weixin_41666747/article/details/79942847