-
列出5个python标准库
os:提供了不少与操作系统相关联的函数
sys:通常用于命令行参数
re: 正则匹配
math: 数学运算
datetime:处理日期时间
json: 处理字典和Json格式
urllib,types,cmath,,
-
python实现列表去重的方法
先通过集合去重,在转列表
-
fun(args,**kwargs)中的args,**kwargs什么意思?
可选参数,关键字参数。
-
python2和python3的range(100)的区别
python2返回列表,python3返回迭代器,节约内存
-
简述with方法打开处理文件帮我我们做了什么?
打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的f.open
写法,我们需要try,except,finally,做异常判断,并且文件最终不管遇到什么情况,都要执行finally f.close()关闭文件,with方法帮我们实现了finally中f.close
-
python中断言方法举例
assert()方法,断言成功,则程序继续执行,断言失败,则程序报错
-
10个Linux常用命令
ls pwd cd touch rm mkdir tree cp mv cat more grep echo
-
python2和python3区别?列举5个
1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print(‘hi’)
Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print ‘hi’
2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存
3、python2中使用ascii编码,python中使用utf-8编码
4、python2中unicode表示字符串序列,str表示字节序列
python3中str表示字符串序列,byte表示字节序列
5、python2中为正常显示中文,引入coding声明,python3中不需要
6、python2中是raw_input()函数,python3中是input()函数
-
列出python中可变数据类型和不可变数据类型,并简述原理
不可变数据类型:数值型、字符串型string和元组tuple
可变数据类型:列表list和字典dict;
允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
-
用lambda函数实现两个数相乘
def mul(data, fuc): one_data = data[0] two_data = data[1] res = fuc(one_data, two_data) return res list=[2,3] print(mul(list,lambda x,y:x*y))
-
利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
a="kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h" from collections import Counter c=Counter(a) print(c) #Counter({'l': 9, ';': 6, 'h': 6, 'f': 5, 'a': 4, 'j': 3, 'd': 3, 's': 2, 'k': 1, 'g': 1, 'b': 1})
-
字符串a = “not 404 found 张三 99 深圳”,每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"
import re a = "not 404 found 张三 99 深圳" l1 = a.split(" ") res = re.findall('\d+|[a-zA-Z]+',a) for i in res: if i in l1: l1.remove(i) new_str = " ".join(l1) print(new_str)
-
正则re.complie作用
re.compile是将正则表达式编译成一个对象,加快速度,并重复使用
-
用python删除文件和用linux命令删除文件方法
python:os.remove(文件名)
linux: rm 文件名
-
写一段自定义异常代码
自定义异常用raise抛出异常
-
正则表达式匹配中,(.)和(.?)匹配区别?
(.*)是贪婪匹配,会把满足正则的尽可能多的往后匹配
(.*?)是非贪婪匹配,会把满足正则的尽可能少匹配
-
举例说明异常模块中try except else finally的相关意义
try…except…else没有捕获到异常,执行else语句
try…except…finally不管是否捕获到异常,都执行finally语句
-
a=“张明 98分”,用re.sub,将98替换为100
import re
a=“张明 98分”
ret = re.sub(r’\d+’,‘100’,a)
print(ret) -
遇到bug如何处理
1、细节上的错误,通过print()打印,能执行到print()说明一般上面的代码没有问题,分段检测程序是否有问题,如果是js的话可以alert或console.log
2、如果涉及一些第三方框架,会去查官方文档或者一些技术博客。
3、对于bug的管理与归类总结,一般测试将测试出的bug用teambin等bug管理工具进行记录,然后我们会一条一条进行修改,修改的过程也是理解业务逻辑和提高自己编程逻辑缜密性的方法,我也都会收藏做一些笔记记录。
4、导包问题、城市定位多音字造成的显示错误问题
-
正则匹配,匹配日期2018-03-20
url=‘https://sycm.taobao.com/bda/tradinganaly/overview/get_summary.json?dateRange=2018-03-20%7C2018-03-20&dateType=recent1&device=1&token=ff25b109b&_=1521595613462’
import re
reg = r’.(\d±\d±\d+).’
res = re.findall(reg,url)
print(res) -
python中copy和deepcopy区别
1、复制不可变数据类型,不管copy还是deepcopy,都是同一个地址当浅复制的值是不可变对象(数值,字符串,元组)时和=“赋值”的情况一样,对象的id值与浅复制原来的值相同。
2、复制的值是可变对象(列表和字典)浅拷贝copy有两种情况:
第一种情况:复制的 对象中无 复杂 子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
第二种情况:复制的对象中有 复杂 子对象 (例如列表中的一个子元素是一个列表), 改变原来的值 中的复杂子对象的值 ,会影响浅复制的值。
深拷贝deepcopy:完全复制独立,包括内层列表和字典 -
列出几种魔法方法并简要介绍用途
__init__:对象初始化方法 __new__:创建对象时候执行的方法,单列模式会用到 __str__:当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据 __del__:删除对象执行的方法
-
C:\Users\ry-wu.junya\Desktop>python 1.py 22 33命令行启动程序并传参,print(sys.argv)会输出什么数据?
['1.py','22','33']
-
请将[i for i in range(3)]改成生成器
(i for i in range(3))
-
对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函数从小到大排序
res = sorted(foo,key=lambda x:x) print(res)
-
使用lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为
[0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小res = sorted(foo,key=lambda x:(x<0,abs(x))) print(res)
-
s=“info:xiaoZhang 33 shandong”,用正则切分字符串输出[‘info’, ‘xiaoZhang’, ‘33’, ‘shandong’]
s = "info:xiaoZhang 33 shandong" import re pattern = re.compile(r'\d+|[a-zA-Z]+') res = re.findall(pattern, s) print(res) for i in res: if not i: res.remove(i) print(res)
-
正则匹配以163.com结尾的邮箱
-
列举3条以上PEP8编码规范
1、顶级定义之间空两行,比如函数或者类定义。
2、方法定义、类定义与第一个方法之间,都应该空一行
3、三引号进行注释
4、使用Pycharm、Eclipse一般使用4个空格来缩进代码
-
r、r+、rb、rb+文件打开模式区别
r:只读模式
r+:读写,可以写,内容在文件最开头
rb:二进制读取非文本。
rb+:读取打开一个二进制文件,允许读写数据,文件必须存在 -
python传参数是传值还是传址?
-
不可变参数传递:像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可改变的对象。
-
可变对象的传参:比如像列表,字典这样的对象是通过引用传递,和C语言里面的指针传递数组很相似,可能对象能再函数内部改变。
-
find和grep(linux)
grep命令是一种强大的文本搜索工具,grep搜索内容串可以是正则表达式,允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。
find通常用来再特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。
-
如何提高python的运行效率?
- 使用生成器;
- 关键代码使用外部功能包(Cython,pylnlne,pypy,pyrex);
- 针对循环的优化–尽量避免在循环中访问变量的属性