1.ascii、Unicode、utf-8、gbk的区别
- ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符
- Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2^16=65556个,称为万国语言,特点:速度快,但浪费空间
- utf-8 为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来的
gbk 是中文的字符编码,用2个字节代表一个字符
2.三元运算编写格式
表达式1 if 布尔表达式2 else 表达式3
例如:a=3 if 3 > 4 else 5
3.列举字符串、列表、元组、字典每个常用的5个方法
- 字符串---字符串方法总结
- strip() ->去掉字符串两端的空白符
- split() ->对字符串进行分割,默认按照空格分割
- join() ->字符串连接
- startwith(),endwith() ->判断是否以啥开头或者结尾
- replace() -> 字符串替换
- find() -> 查找字符串,存在返回第一个索引,不存在返回-1
- 列表---列表方法总结
- count() ->统计在列表中出现的个数
- apped() ->在列表末尾添加值
- pop() ->删除一个对象,默认最后一个
- remove() ->删除指定的第一个匹配项
- insert() ->插入对象
- index() ->获取索引
- 元组
- count() ->统计在元组中出现的个数
- index() ->获取索引
- 字典
- keys() ->获取所有的键
- pop() ->删除指定的键的键值对
- popitem() ->随机删除一个键值对
- update() ->更新字典,参数为一个字典,如果键已存在,则更改,不存在则添加
- setdefault() ->如果键存在则,返回该键对应的值,如果不存在,设置该键为设置的默认值,然后返回该键对应的值
- get() ->返回键对应的值
- fromkeys() ->创建字典,第一个参数为可迭代对象,每个值变成字典的键,第二个参数为每个键的默认值
4.什么是断言(assert)?应用场景?
- assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。
- 应用场景:
- 防御型编程
- 运行时检查程序逻辑
- 检查约定
- 程序常量
- 检查文档
5.解决哈希冲突的算法有哪几种?分别有什么特点?
哈希冲突参考 1. 开放定址法 2. 再哈希法 3. 链地址法 4. 建立公共溢出区
6.简述python字符串的驻留机制
- 相同对象的引用都指向内存中的同一个位置,这个也叫python的字符串驻留机制
- python的引用计数机制,并不是对所有的数字,字符串,他只对”[0-9][a-z][A-Z] 和"_"(下划线) ”有效“,当字符串中由其他字符比如“! @ # ¥ % -”时字符驻留机制是不起作用的。
7.描述以下字典的items()方法和iteritems()方法有啥不同?
- 字典的items方法作用:是可以将字典中的所有项,以列表方式返回。因为字典是无序的,所以用items方法返回字典的所有项,也是没有顺序的。
8.介绍一下try except的用法和作用?
- 主要用来处理异常
- 完整用法如下:
- :
Normal execution block
except A:
Exception A handle
except B:
Exception B handle
except:
Other exception handle
else:
if no exception,get here
finally:
print("finally")
9.关于Python程序的运行方面,有什么手段能提升性能?
- 使用多进程,充分利用机器的多核性能
- 对于性能影响较大的部分代码,可以使用C或C++编写
- 对于IO阻塞造成的性能影响,可以使用IO多路复用来解决
- 尽量使用Python的内建函数5、尽量使用局部变量
10.什么是闭包
- 在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。
- 内部函数使用了外部函数的变量,就相当于闭包
def func1():
a=1
def inner():
return a
return inner
print(func1()())
11.简述生成器,迭代器,装饰器以及应用场景
- 迭代器对象实现了iter()方法
- 迭代器实现了iter()和next()方法,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束
- 生成器是迭代器的一种,一个函数调用时返回一个迭代器,这个函数就叫生成器。通常带有yield
- 装饰器是一个以函数作为参数,并返回一个替换函数的可执行函数,是闭包的一种应用。通常用来给一个函数添加功能
12.生成器与函数的区别?
- 生成器和函数的主要区别在于函数 return a value,生成器 yield a value同时标记或记忆point of the yield 以便于在下次调用时从标记点恢复执行。 yield 使函数转换成生成器,而生成器反过来又返回迭代器。 ```python # 简单实现生成器 def dec(): n=0 for i in range(10): yield n n+=i
for i in dec(): print(i) ```
13.是否使用过functools中的函数?他的作用是什么?
- functools.wraps()
- 在装饰器中用过,如果不使用wraps,则原始函数的__name__和__doc__的值就会丢失
- functools.reduce()
- 第一个参数是一个函数,第二个参数是一个可迭代对象,代码如下:
-
- 下面代码相当于从1加到9
from functools import reduce
a=reduce(lambda x,y:x+y,range(10))
print(a)
- 下面代码相当于从1加到9
http://t.csdnimg.cn/OYwt7
http://t.csdnimg.cn/OYwt7链接:https://pan.baidu.com/s/1g5Ompkh4_E-Zb3j7X6GVhg?pwd=cvcz
提取码:cvcz
--来自百度网盘超级会员V4的分享