python面试总结

1. python在读取文件时,read(),readline()和readlines()有什么区别?

举例说明:

1 with open('a.txt', 'r') as f:
2     result1 = f.read(n)    # 表示读取n个字节到result1中
3     result2 = f.readline()    # 表示读取下一行到result2中
4     result3 = f.readlines()    # 表示读取整个文件到result3中

2、使用一行代码输出[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

result = [i ** 2 for i in range(1, 11)]
print(result)

3、编写一个递归函数

# 编写一个n的阶乘
def factorial(n):
    if n < 2:
        return 1
    return n * factorial(n-1)

if __name__ == "__main__":
    factorial(5)

 4、简述python的垃圾回收机制

1. python在内存中存储了每个对象的引用计数,如果计数值变成0,那么相应的对象就会减小,分配给该对象的内存就会自动释放出来用作他用。

2. 偶尔也会出现循环引用。垃圾回收器会定时寻找这个循环,并将其回收。例如

1 list1 = []
2 list2 = []
3 list1.append(list2)
4 list2.append(list1)

list1和list2相互引用,如果不存在其他对象对他们的引用,list1和list2的引用计数也仍然为1,所占用的内存永远无法被收回。

  3. python中使用了某些启发式算法来加速垃圾回收。例如,越晚创建的对象更有可能被回收,对象被创建之后,垃圾回收器会分配它们所属的代,每个对象都会被分配一个代,而被分配更年轻的代会先被处理。原理:将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”,垃圾收集的频率随着“代”的存活时间的增大而减小。也就是说,活得越长的对象,就越不可能是垃圾,就应该减少对它的垃圾收集频率。那么如何来衡量这个存活时间:通常是利用几次垃圾收集动作来衡量,如果一个对象经过的垃圾收集次数越多,可以得出:该对象存活时间就越长

  

  

  

原文地址:https://www.cnblogs.com/l5623064/p/9127683.html