1、一行代码实现1—100之和
>>> sum([x for x in range(0,101)])
5050
2、如何在一个函数内部修改全局变量
global 语句
3、列出5个python标准库
itertools --- 为高效循环而创建迭代器的函数
collections --- 容器数据类型
re --- 正则表达式操作
math --- 数学函数
datetime --- 处理日期和时间的类
io --- 模块提供了Python用于处理各种I / O类型的主要工具
os ---操作文件路径
pickle --- 实现了对一个Python对象结构的二进制序列化和反序列化。
sys --- 系统相关的参数和函数
shutil --- 模块提供了一系列对文件和文件集合的高阶操作。
time --- 时间的访问和转换
unittest --- 单元测试框架
4、字典如何删除键和合并两个字典
del dict['key']
>> > d1 = {'a': 1}
>> > d2 = {'b': 2}
# 1
>> > d3 = dict(d1, **d2)
>> > d3
{'a': 1, 'b': 2}
# 2
>> > d4 = d1.copy()
>> > d4
{'a': 1}
>> > d4.update(d2)
>> > d4
{'a': 1, 'b': 2}
5、谈下python的GIL
表示:GIL全称是global interpreter lock,即全局解释器锁,GIL是一种互斥锁,仅允许一个线程持有Pyhton解释器的控制权,也就是说在任何时刻只有一个处于执行状态。
意义:Python的内存管理使用了引用计数,如果两个线程同时尝试增大 / 减小一个引用计数变量,会导致内存泄漏。为了保证引用计数变量的安全,解决此问题,Python使用GIL。
缺点:受CPU约束的多线程程序,由于GIL会阻止并行运行,而相当于单线程执行。
6、python实现列表去重的方法
不保存原列表的顺序:
>>> def f(ls):
return [set(ls)]
>>> f([1,3,2,3,2,4])
[{1, 2, 3, 4}]
保存原列表的顺序:
>>> def fn(ls):
tl = []
for i in ls:
if i not in tl:
tl.append(i)
return tl
>>> fn([1,3,2,3,2,4])
[1, 3, 2, 4]
7、fun(*args,**kwargs)中的*args,**kwargs什么意思?
*args能让函数接受任意数量的关键字参数,使用拆包运算符( * )将所有参数打包到一个名为args的元组中。
** kwargs能让函数接受任意数量的命名参数,使用拆包运算符( ** )将所有参数打包到一个名为kwargs的字典中。
8、python2和python3的range(100)的区别
Python2返回值是一个包含结果的列表,Python3返回值是一个range类的可迭代对象。
9、一句话解释什么样的语言能够用装饰器?
函数可以作为参数,函数可以作为返回值
10、python内建数据类型有哪些
集合
字典
序列:字符串、元组、列表
数字:整形数、布尔型、浮点数型
11、简述面向对象中__new__和__init__区别
__new_()和__init_()都是类的初始化程序。
__new_(cls)先被调用, 将lcs类作为第一个参数,和其余参数传递给对象构造器表达式,返回值为新对象实例 。__new__是静态方法(不需要显示声明)。
__init_()在__new_()创建实例后 ,以 __init__(self[, ...]) 的形式被发起调用。
12、简述with方法打开处理文件帮我们做了什么?
打开处理文件的代码会放到 with 语句块中执行:
特殊方法 __enter__() 的返回值会被赋值给 as 声明的变量;
然后,with 语句块里面的代码开始执行;
代码块执行完后,特殊方法 __exit__() 被触发进行清理工作。__exit__() 方法的三个参数包含了异常类型、异常值和追溯信息,所以即便代码块中发生了异常,with 语句后面的程序也能够继续执行下去。
13、列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]
>>> ls = [1,2,3,4,5]
>>> def s(x):
return x*x
>>> [i for i in map(s,ls) if i >10]
[16, 25]
14、python中生成随机整数、随机小数、0—1之间小数方法
>>> import random
>>> random.random()
0.16871810607912407
>>> random.randint(1,5)
5
random.random()在区间[0, 1) 均匀随机生成浮点数
random.randint(a, b)在区间[a, b]随机生成整数
15、避免转义给字符串加哪个字母表示原始字符串?
r
16、<div class="nam">中国</div>,用正则匹配出标签里面的内容(“中国”),其中class的类名是不确定的
s= "<div