位和字节的关系?
位是电子计算机中最小的数据单位,第一位的状态只能是0或1
字节:8个二进制位构成1个字节,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字
b, B, KB, MB, GB的关系?
b:bit 位,一字节有8bit
B, KB, MB, GB之间进制是1024
列举至少5个pep8规范
http://www.jingang.ga/article/33
10 求结果:
v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1
v4 = 0 and 2 or 1
v5 = 0 and 2 or 1 or 4
v6 = 0 or False and 1
python 中的and 从左到右计算表达式,若所有值 均为真,则返回最后一个值,若存在假,返回第一个假值
or 也从左到右计算表达式, 返回第一个为真的值。
11 ascill, unicode, utf8, gbk区别
ascill 只能表示英文,8位
unicode 中文,英文都是32位
utf8 中文16位,英文8位
gbk 中文16位,英文8位
除了unicode都用4字节存储,其它的中文2字节,英文1字节
12 字节码和机器码的区别
机器码机器可以直接执行的代码,字节码是中间状态的二进制代码,需要直译器转译后才能成为机器码
13 三元运算的编写格式:
res = a if a >1 else b
16 用一行代码进行数据交换
a =1
b =2
a,b = b,a
18 xrange 的range的区别
在python2 中有xrange, range, range直接返回一个列表,而xrange则是生成器。
在python3中,range代替了xrange
19 如何实现字符串的反转?如name = 'wupeiqi',如何反转成'iqiepuw'
name = 'wupeiqi'
name = list(name)
name.reverse()
new_name = ''
for i in name:
new_name+= I
20 文件操作时xreadlines和readlines的区别
xreadlines返回一个生成器,readlines返回的则是一个列表,循环时二者效果相同。区别是xreadlines并没有一次将所有数据读取。
21 列举布尔值为False 的常见值
''(空), 0, None, [], (), {}, -0, 0.0
22 列举字符串,列表,元组,字典 每个类型常用的5个方法
字符串:count, replace,upper, lower,join, strip,split
列表:reverse, insert, pop,extend, copy,sort,count
元组:count,index,
字典:clear, pop,update, get,copy, keys, values, items
23 is 和 ==的区别
python中对象包括:三个基本要素, id,type, value
is同一性运算符 ==比较操作符。
当值在通用对象池中时(如小整数-5 ~257)a is b,否则只有连续赋值时,a is b才为True.
>>> a = 256
>>> b = 256
>>> a is b
True
>>> a == b
True
>>> a = 257
>>> b = 257
>>> a is b
False
>>> a == b
True
>>> a = b = 257
>>> a is b
True
>>> a == b
True
24 1,2,3,4,5能组成多少个互不相同的且无重复的三位数
排列组合60,A53
num_list =[(x, y, z) for x in range(1,6) for y in range(1,6) for z in range(1,6) if ((x != y) and (y != z) and (x != z))]
25 什么是反射 ,应用场景有哪些
本质是:通过字符串的形式,导入模块,通过字符串的形式,去模块寻找指定函数并执行,或者去对象中操作(查找,获取,删除,添加)成员。
动态导入模块?
26 简述python 深浅拷贝
深拷贝在内存中重新开辟一块空间,存储拷贝的数据。数据之间的修改都不会相互影响。
浅拷贝则是存储了地址引用,当源数据被修改时,拷贝的数据也会有变化。
27 python 垃圾回收机制
python中垃圾回收是以引用计数为主,分代收集为辅。当一个对象的引用数为0,python虚拟机应付回收这个对象内存。
28 python的可变类型与不可变类型的区别
可变数据类型有:列表,字典
不可变数据类型: 整型,浮点型,字符串型,无组。
对于不可变类型,变量所指向的地址的值是不可改变的,改变变量的值只是指向了新的地址。对于可变类型,变量指向的地址的值是可变的,除非重新赋值,否则都是对原地址的值进行修改。
29
v = dict.fromkeys(['k1', 'k2'],[])
v['k1'].append(666)
print(v)
v['k1'] = 777
print(v)
{'k1': [666], 'k2': [666]}
{'k1': 777, 'k2': [666]}
30 一行代码实现删除代码中重复的值
ls = ['a', 'b', 1, 4, 'a','b']
ls = list(set(ls))
31 如何实现 ‘1,2,3’ 变成['1','2','3']
a = '1,2,3'
l = [x for x in a.split(',')]
32 如何实现['1','2','3']变成[1,2,3]
a = ['1','2','3']
l = [int(x) for x in a]
33.比较:a=[1,2,3]和b=[(1),(2),(3)] c=[(1,),(2,),(3,)]的区别
a是一列表,b是列表里面套集合,c是列表里套元组
34 如何用一行代码生成[1,4,9,16,25,36,49,64,81,100]
[x*x for x in range(1,11)]
35 常用字符串格式化有哪几种
% 点位符
format函数
36 什么是断言,应用场景有哪些
Python的assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。
断言主要应用场景:运行检查程序逻辑,检查约定,程序常量等
比如在程序运行前检查数据库是否连接上了,类似一个不变量
再比如,在做接口时,约定传入的字符串首字母大小,测试时用来检查传入的参数符合要求。
38 有一个多层嵌套的列表A=[1,2,[3,4,["434",]]],请写一段代码遍历A中的每一个元素并打印出来
def recur_print(arg):
for i in arg:
if isinstance(i, list):
recur_print(i)
else:
print(i)
recur_print(A)
39 a = range(10) , a[::-3] = [9.6.3.0]
40 从虚拟环境中退出的命令是:deactivate
41 将列表内的元素根据位数合并成字典
lst = [1,2,4,8,16,32,64,128,256,512,1024,32769,65536,4294967296]
d = {}
for i in lst:
d[len(str(i))] = []
for j in lst:
d[len(str(j))].append(j)
#
lst = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 32769, 65536, 4294967296]
dic = {}
for l in lst:
if len(str(l)) in dic.keys():
dic[len(str(l))].append(l)
else:
dic[len(str(l))] = [l,]
print(dic)
42 将二维数组转换成一维数组
lst = [[1,2,3],[4,5,6],[7,8,9]] 转换成[1,2,3,4,5,6,7,8,9]
import numpy as np
lst =[[1,2,3],[4,5,6],[7,8,9]]
arr = np.array(lst)
numpy_lst = arr.reshape((9,))
new_lst = list(numpy_lst)
print(new_lst)
37 有两个字符串列表a和b,每个字符串是由逗号分隔的一些字符
a = ['a,1',
'b,3,22',
'c,3,4', ]
b = ['a,2',
'b,1',
'd,2']
按首字母合并a和b到c
c = [
'a,1,2',
'b,3,22,1',
'c,3,4',
'd,2']
a.什么是http协议?
http协议是 超文本传输协议的简称。
一次请求一次响应之后断开连接(无状态,短连接)
格式包括:请求头 + 请求体, 请求头之间用\r\n隔开,请求体之间用\r\n\r\n隔开。
常见的请求头有:user-agent, content-type
常见的请求方式有:GET, POST, ...(共8种)
b.Django生命周期(django请求一个网址到得到响应之间发生了什么)