一、如何提高python的运行效率?
答:
使用生成器;关键代码使用外部功能,针对循环的优化-尽量避免在循环中访问变量的属性。
二、什么是生成器?
答:
我们创建列表的时候,受到内存限制,容量肯定是有限的,而且不可能全部给他一次枚举出来。这里可以使用列表生成式,但是它有一个致命的缺点就是定义即生成,非常的浪费空间和效率。
所以,如果列表元素可以按照某种算法推算出来,那我们可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
要创建一个 generator ,最简单的方法是改造列表生成式
[x*x for x in range(10)] # 列表推导式 --> (x * x for x in range(10)) # 生成器
三、什么是可迭代对象?
答:
简单的来理解就是可以使用for循环遍历的对象。比如常见的list、set和dict。
可以使用测试对象是否是可迭代:
from collections import Iterable
isinstance(对象,Iterable)
四、什么是迭代器?
答:
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
五、什么是装饰器?
答:
装饰器(Decorator)是python中最吸引人的特性,装饰器本质上还是一个函数,它可以让已有的函数不做任何改动的情况下增加功能。
六、生成器、迭代器和可迭代对象的区别和应用?
答:
能使用for循环遍历的叫可迭代对象,能使用next方法的就是迭代器,生成器是特殊的迭代器。
七、python中yield的用法?
答:
yield简单来说是一个生成器,这样函数记住上次返回时在函数中的位置,对于生成器第二次或n次调用跳转至该函数。
八、python中如何进行内存管理的?
答:
垃圾回收、内存池机制
九、描述数组,链表,队列,堆栈的区别?
答:
数组和链表时存储方式的概念,数组在连续的空间中存储数据,链表在非连续的空间中存储数据
队列和堆栈时描述数据存取的方法概念,队列是先进先出,而堆栈是后进后出,队列和堆栈可以用链表来实现,也可以用数组来实现。
十、如何实现0-100的和?
答:
sum(range(0,101))
十一、请说几个python的标准库
答:
os:操作系统相关联的函数
datetime:日期时间
sys:命令行参数
re:正则匹配
math:数学运算
十二、字典如何删除键和合并两个字典的?
答:
dict_first = {'name': 'wangwu', 'age': 20}
del.dict_first['name'] # 删除键
dict_second['gender': 'female'}
dict_first.update(dict_second) # 字典合并
san
十三、谈一谈python中的GIL
答:
GIL是python中的全局解释其所。
每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。
1、什么时候释放GIL锁?
答:
① 时间片耗尽(cpu时间)
② 任务遇到I/O等待
③ 任务结束后
十四、GIL和互斥锁的区别
答:
GIL是全局解释器锁,是解释器层面的,不可控的。
互斥锁是代码层面的锁,是可控的
GIL和互斥锁都是解决共享资源竞争的问题
十五、python中的可变类型与不可变类型
答:
可变类型:在原来的内存地址上修改元素,比如:列表字典
不可变类型:不会在原来的内存地址上修改元素,而是指向了一个新的内存引用,比如整型、字符串、元组
十六、break和continue的区别
答:
continue是跳过本次循环,继续执行下一次循环
break是结束整个循环
十七、对不定长参数的理解?
答:
*args:可以接收任意多个实参,用元组类型保存数据。
**kwargs:可以接收任意多个的命名参数,用子弹类型保存
十八、对缺省参数的理解?
答:
在调用函数时,缺省参数的值如果没有传入,则被认为是默认值,缺省参数一定要位于参数列表的最后面。
十九、什么是lambda函数?
答:
Lambda函数能接收任何数量的参数但只能返回一个表达式的值
匿名函数不能直接调用print,因此lambda需要一个表达式
二十、read、readline和readlines的区别
答:
read():读取整个文件
read(num):读取文件中的数据长度,单位为字节
readline():读取一行
readlines():读取所有内容并返回一个列表
二十一、上下文管理器了解吗?
答:
with有两个方法,一个是enter,它主要负责上下文的准备工作,一般是打开文件,准备环境;另一个是exit主要负责善后工作,比如关闭文件,一些回收机制。
作者:InnerPeac's Blog