美文网首页
Python面试知识点

Python面试知识点

作者: 繁花似锦之流年似水 | 来源:发表于2019-06-09 22:20 被阅读0次

    1、字典是可变对象,执行 l.append(a)的操作中是把字典 a 的引用传到列表 l 中,当后

    续操作修改 a[‘num’]的值的时候,l 中的值也会跟着改变,相当于浅拷贝。

    2、Python2 中 range 和 xrange 的区别

    两者用法相同,不同的是 range 返回的结果是一个列表,而 xrange 的结果是一个生成器,前者是直接开辟一块内存空间来保存列表,后者是边循环边使用,只有使用时才会开辟内存空间,所以当列表很长时,使用 xrange 性能要比 range 好

    3、print 方法默认调用 sys.stdout.write 方法,即往控制台打印字符串

    4、在 Python3 中,input()获取用户输入,不论用户输入的是什么,获取到的都是字符串类型的。在 Python2 中有 raw_input()和 input(), raw_input()和 Python3 中的 input()作用是一样的,input()输入的是什么数据类型的,获取到的就是什么数据类型的

    5、4G 内存怎么读取一个 5G 的数据?

    方法一:可以通过生成器,分多次读取,每次读取数量相对少的数据(比如 500MB)进行处理,处理结束后在读取后面的 500MB 的数据。

    方法二:可以通过 linux 命令 split 切割成小文件,然后再对数据进行处理,此方法效率比较高。可以按照行数切割,可以按照文件大小切割。

    【注】yield用来生成生成器,后面用for循环遍历的时候每次返回yield暂存的data值。

    6、在except中return后仍然会执行finally中的代码

    except: #捕获所有异常

    except: <异常名>: #捕获指定异常

    except:<异常名 1, 异常名 2> : 捕获异常 1 或者异常 2

    except:<异常名>,<数据>:捕获指定异常及其附加的数据

    except:<异常名 1,异常名 2>:<数据>:捕获异常名 1 或者异常名 2,及附加的数据

    7、浅拷贝和深拷贝

    浅拷贝会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用。

    浅拷贝有三种形式:切片操作、工厂函数、copy 模块中的 copy 函数。

    比如上述的列表 a;

    切片操作:b = a[:] 或者 b = [x for x in a];

    工厂函数:b = list(a);

    copy 函数:b = copy.copy(a);

    浅拷贝

    【注】我们修改原列表中嵌套的列表的时候,浅拷贝出来的对象也会发生变化。这是因为,浅拷贝执行的时候只拷贝了一层,拷贝的是对象的引用。当嵌套的列表值发生变化的时候,引用不变。儿对于列表中的其他不可变对象来说,列表的重新赋值即改变了原列表的引用。不会影响新的列表。

    运行结果

    深拷贝(deep copy):深拷贝只有一种形式,copy 模块中的 deepcopy()函数。深拷贝和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。因此,它的时间和空间开销要高。同样的对列表 a,如果使用 b = copy.deepcopy(a),再修改列表 b 将不会影响到列表 a,即使嵌套的列表具有更深的层次,也不会产生任何影响,因为深拷贝拷贝出来的对象根本就是一个全新的对象,不再与原来的对象有任何的关联。

    拷贝的注意点:对于非容器类型,如数字、字符,以及其他的“原子”类型,没有拷贝一说,产生的都是原对象的引用。如果元组变量值包含原子类型对象,即使采用了深拷贝,也只能得到浅拷贝。

    8、__init__ 和__new__的区别

    init 在对象创建后,对对象进行初始化。

    new 是在对象创建之前创建一个对象,并将该对象返回

    9、随机数

    random.random():生成一个 0-1 之间的随机浮点数;

    random.uniform(a, b):生成[a,b]之间的浮点数;

    random.randint(a, b):生成[a,b]之间的整数;

    random.randrange(a, b, step):在指定的集合[a,b)中,以 step 为基数随机取一个数;

    random.choice(sequence):从特定序列中随机取一个元素,这里的序列可以是字符串,列表,元组等

    random.shuffle(alist)  :打乱一个序列

    10、

    os.path 主要是用于对系统路径文件的操作。

    os.path所有方法 所有属性

    sys.path 主要是对 Python 解释器的系统环境参数的操作(动态的改变 Python 解释器搜索路径)

    相关文章

      网友评论

          本文标题:Python面试知识点

          本文链接:https://www.haomeiwen.com/subject/krjoxctx.html