1.python基础
1.Python和Java、PHP、C、C#、C++等其他语言的对比?
答:
2.简述解释型和编译型编程语言?
答:解释型语言,在运行时才进行翻译,每条语句都是执行时才进行翻译,效率比较低;
编译型语言,执行前需将高级语言编译成机器语言,翻译只做一次,执行效率较高;
3.位和字节的关系?
答:位,数据传输单位;字节,数据存储单位;
4.b、B、KB、MB、GB 的关系?
答:B->GB为1024关系;1B=8bit
5.通过代码实现如下转换:
二进制转换成十进制:v = “0b1111011”
int("0b1111011",base=2)
十进制转换成二进制:v = 18
bin(18)
八进制转换成十进制:v = “011”
int("011",base=8)
十进制转换成八进制:v = 30
oct(30)
十六进制转换成十进制:v = “0x12”
int("0x12",base=16)
十进制转换成十六进制:v = 87 hex(87)
6.请编写一个函数实现将IP地址转换成一个整数。
7.python递归的最大层数?
答:由sys.setrecursionlimit()设置;
8.求结果:
v1 = 1 or 3
1
v2 = 1 and 3
3
v3 = 0 and 2 and 1 0
v4 = 0 and 2 or 1 1
v5 = 0 and 2 or 1 or 4 1
v6 = 0 or Flase and 1 False
9.ascii、unicode、utf-8、gbk 区别?
答:ascii ,美国制定了一套字符编码,对英文字符与二进制之间做了联系,这被称为ASCII码;
unicode,所有符号的编码;
utf-8,它是一种变长编码,可以使用1-4个字节表示一个符号,根据不同的符号来变化字节长度;
gbk,GB2312的扩展,完全兼容GB2312;
10.字节码和机器码的区别?
答:机器码,名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。
字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。
11.三元运算规则以及应用场景?
答:在赋值变量的时候,可以直接加判断,然后赋值
12.列举 Python2和Python3的区别?
答:
13.用一行代码实现数值交换:
a = 1
b = 2
答:a,b = b,a
14.Python3和Python2中 int 和 long的区别?
答:3中没有long
15.xrange和range的区别?
答:xrange返回的是一个生成器对象;
16.文件操作时:xreadlines和readlines的区别?
17.列举布尔值为False的常见值?
答:None,False,所有为0的数,“”,[],(),{};
18.字符串、列表、元组、字典每个常用的5个方法?
答:字符串,strip、lstrip、rstrip、count、center、find、index、replace、capitalize、startwith、endwith、split、rsplite、join
列表,append、insert、extend、pop、del、reverse、sort、len、max、min、count、index、sorted、insert
字典,get、pop、len、del
19.lambda表达式格式以及应用场景?
答:lambda argument_list:expression
filter、sorted、map、reduce、作为参数传入
20.pass的作用?
答:作为空语句,保持程序结构的完整性,不做任何事情,一般用于做占位语句
21.*arg和**kwarg作用?
答:python的两个可变参数,*arg代表多个无名参数,类型未tuple,**kwargs表示关键字参数,为dict使用时需要将*rag放置在**kwargs之前,否则会报错;
22. is和==的区别
答:is判断id是否相同,==判断值是否相同
23.简述Python的深浅拷贝以及应用场景?
答:浅拷贝是只仅仅拷贝数据集合的第一层数据,深拷贝指的是拷贝数据集合的所有层。所以对于只有一层的数据几个来说深浅拷贝的意义是一样的,如字典、元祖、集合、列表等。对于数字和字符串而言,无意义,因其永远指向一个内存地址。
24.Python的垃圾回收机制?
25.Python的可变类型和不可变类型
答:可变类型,列表、字典、可变集合;不可变类型,数字、字符串、元组、不可变集合
26.求结果:
v = dict.fromkeys(['k1','k2'],[]) v[‘k1’].append(666) print(v) v[‘k1’] = 777 print(v)
答:{“K1”:[666],"K2":[666]} {“K1”:777,"K2":[666]}
27.求结果
def num(): return [lambda x:i*x for i in range(4)] print([m(2) for m in num()])
答:[6,6,6,6]
28.列举常见的内置函数?
答:map、reduce、filter、sort
29.filter、map、reduce的作用?
答:filter,筛选;map,生成新序列;reduce,累加;
30.一行代码实现9*9乘法表
答:
print(' '.join([' '.join(["%2s*%2s=%2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))
31.如何安装第三方模块?以及用过哪些第三方模块?
答:①pip install model_name;②python setup.py insyall;
32.至少列举8个常用模块都有那些?
33.re的match和search区别?
答:match只检测开头,search检测整个字符串;
34.什么是正则的贪婪匹配?
答:贪婪匹配,趋向于最大长度;非贪婪匹配,匹配到结果就好,就少得匹配字符;
35.求结果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) )
答:[0,1,0,1,0,1,0,1,0,1],(0,1)
36.求结果: a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2
答:1,2,False,True
37.def func(a,b=[]) 这种写法有什么坑?
答:函数的第二个默认参数是一个list,当第一次执行的时候实例化了一个list,第二次执行还是用第一次执行的时候实例化的地址存储,所以三次执行的结果就是 [1, 1, 1] ,想每次执行只输出[1] ,默认参数应该设置为None。
38.如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?
答:split
39.如何实现[‘1’,’2’,’3’]变成[1,2,3] ?
答:eval([‘1’,’2’,’3’])
40.比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?
41.如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?
答:
[x*x for x in range(1,11)]
42.一行代码实现删除列表中重复的值 ?
set(list)
43.如何在函数中设置一个全局变量 ?
答:global
44.logging模块的作用?以及应用场景?
45.请用代码简答实现stack ;
答:
calss Stack(object): def __init__(self): self.stack = [] def push(seld,value): self.stack.append(value) def pop(self): if self.stack: self.stack.pop() else: raise LookupError("stack is empty!") def is_empty(self): return bool(self,stack) def top(self): return self.stack[-1]
46.常用字符串格式化哪几种?
答:①%s;②%(first)s;③format;
47.简述 生成器、迭代器、可迭代对象 以及应用场景?
答:生成器,函数体中有yield关键字的函数;
迭代器,一个可以记住遍历位置的对象;__iter__()返回一个特殊地迭代器对象,__next__()返回下一个迭代器对象
48.用Python实现一个二分查找的函数。
答:
data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35] def binary_search(dataset,find_num): if len(dataset) > 1: mid = int(len(dataset) / 2) if dataset[mid] == find_num: # find it print("找到数字", dataset[mid]) elif dataset[mid] > find_num: # 找的数在mid左面 print("