Python 面经

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

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ATOM_123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值