1.列表和数组的区别
列表可以存不同类型的数据,但是数组只能存想同类型的数据,效率会高跟多
2.元祖与列表的区别
列表中数据可修改
元祖内数组不可修改
3.f'{表达式}'(3.6以后新增的方法)
4.Python读取大数据
现在考虑有一个 jsonline 格式的文件 file.txt 大小约为 10K,之前处理文件的 代码如下所示:
现在要处理一个大小为 10G 的文件,但是内存只有 4G,如果在只修改 get_lines 函数而其他代 码保持不变的情况下,应该如何实现?需要考虑的问题都有哪些?
要考虑到的问题有: 内存只有 4G 无法一次性读入 10G 的文件,需要分批读入。分批读入数据要记录每次读入数据的位 置。分批每次读入数据的大小,太小就会在读取操作上花费过多时间。
readlines:读取整个文件到一个迭代器以供我们遍历
5__init__ 和__new__的区别
init 在对象创建后,对对象进行初始化。 new 是在对象创建之前创建一个对象,并将该对象返回给 init
6.线程间通信用Queue(线程安全)
7.解释一下什么是闭包?
在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为 闭包。
8.python中yield的用法详解
如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了。
def foo():
print("starting...")
while True:
res = yield 4
print("res:",res)
g = foo() #这个并不是让函数执行,因为函数内有yield
print(next(g)) #next会开始执行整个函数,但是执行到yield程序就停了
print("*"*20)
print(next(g)) #程序从print("res:",res)开始执行这时候要注意,这个时候赋值操作的右边是没有值的 (因为刚才那个是return出去了,并没有给赋值操作的左边传参数),所以这个时候res赋值是None,所以接着下面的输出就是res:None,
就这么简单的几行代码就让你明白什么是yield,代码的输出这个(每next一下,运行yield一下):
starting...
4
********************
res: None
4