Python 问题

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值