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