Python面试题
- 列出5个常用的Python标准库?
1.操作系统接口 os
2.字符串正则匹配 re
3.math模块为浮点运算提供了对底层C函数库的访问:math
4.日期和时间 time
5.数据压缩 zlib
6.性能度量 Timer - Pyhon内建数据类型有哪些?
整型–int
布尔型–bool
字符串–str
列表–list
元组–tuple
字典–dict
- 简述with方法打开处理文件帮我们做了什么?
打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的f.open写法,我们需要try,except,finally,做异常判断,并且文件最终不管遇到什么情况,都要执行finally f.close()关闭文件,with方法帮我们实现了finally中f.close
- 列出Python中可变数据类型和不可变数据类型,为什么?
可变类型(mutable):变量进行append、+=等这种操作后 == 改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
- list
- dict
- set
- bytearray
- user-defined classes (除非是特别定义的不可变)
不可变类型(immutable):改变了变量的值 == 新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址), python的id() 方法让你明白。
- int
- float
- decimal
- complex
- bool
- string
- tuple
- range
- frozenset
- bytes
- Python获取当前日期?
1.先导入库:import datetime
2.获取当前日期和时间:now_time = datetime.datetime.now()
3.格式化成我们想要的日期:strftime()
比如:“2019-09-21”:datetime.datetime.now().strftime(’%Y-%m-%d’)
4.在当前时间增加1小时:add_hour=datetime.datetime.now()+datetime.timedelta(hours=1) #需要导入timedelta库
格式“小时”:now_hour=add_hour.strftime(’%H’)
5.时间的三种存在方式:时间对象,时间字符串,时间戳。
(1)字符串转datetime:
string = ‘2014-01-08 11:59:58’
time1 = datetime.datetime.strptime(string,’%Y-%m-%d %H:%M:%S’)
print time1
2014-01-08 11:59:58
(2)datetime转字符串:
time1_str = datetime.datetime.strftime(time1,’%Y-%m-%d %H:%M:%S’)
time1_str
‘2014-01-08 11:59:58’
(3)时间戳转时间对象:
time1 = time.localtime()
time1_str = datetime.datetime.fromtimestamp(time1)
6.格式参数:
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
- 统计字符串每个单词出现的次数?
使用collections里的Counter方法即可:Counter(str)
- 用Python删除文件和用linux命令删除文件的方法?
python:os.remove(文件名)
linux: rm 文件名
- 写一段自定义异常代码
#自定义异常用raise抛出异常
def fn():
try:
for i in range(5):
if i>2:
raise Exception("数字大于2了")
except Exception as ret:
print(ret)
fn() ==》数字大于2了
- 举例说明异常模块中try except else finally的相关意义
try…except…else没有捕获到异常,执行else语句
try…except…finally不管是否捕获到异常,都执行finally语句
- 遇到bug如何处理
1、细节上的错误,通过print()打印,能执行到print()说明一般上面的代码没有问题,分段检测程序是否有问题,如果是js的话可以alert或console.log
2、如果涉及一些第三方框架,会去查官方文档或者一些技术博客。
3、对于bug的管理与归类总结,一般测试将测试出的bug用teambin等bug管理工具进行记录,然后我们会一条一条进行修改,修改的过程也是理解业务逻辑和提高自己编程逻辑缜密性的方法,我也都会收藏做一些笔记记录。
4、导包问题、城市定位多音字造成的显示错误问题