一、
1、python的字符类型?
字符串、列表、字典、元组、集合
2、pyton中常用模块有哪些?
time 模块、os模块、random 模块、hashlib、re 模块、xlrd 模块、json模块、sys模块、string模块
3、python中常用的函数有哪些?
内置函数:
list、dict、tuple、set 、frozenset、format、input()、print()、open()、
len 长度、sum求和、max() 、min、abs()、file()、int() 、
自定义函数:
def 函数名():
内容
4、python中元组、列表、字典、集合的区别?
(1)字符类型: tuple 、 list 、dict 、set
(2)符号不一样:(),【】,{} 、set()yo
(3) 有序: 有序、 有序、 有序、 无序
(4)是否可变:不可变、 可变、可变、可变集合、或不可变集合
5、python中的深浅拷贝?
(1).深拷贝,拷贝的程度深,自己新开辟了一块内存,将被拷贝内容全部拷贝过来了;
(2)浅拷贝,拷贝的程度浅,只拷贝原数据的首地址,然后通过原数据的首地址,去获取内容。
案例:
import copy
a=[1,2,3,4]
b=a
b[0]=5
print(id(a))
print(a)
print(id(b))
print(b)
a=“abc”
print(id(a))
print(id(b))
a=1
b=a
print(a)
print(b)
b=2
print(a)
print(b)
print(id(a))
print(id(b))
6、说下python的装饰器?你写过装饰器吗?
(1)定义:装饰器是一个工具,一个定义成函数, 装饰 是用来为其他函数添加额外的功能就是拓展原来函数功能的一种函数;
(2)语法 @ 语法很函数闭包
(3)实际应用: 登录的权限验证、 添加缓存、数据库的事务处理等
7、python中1-100的和用一行python代码?
print(sum(range(1,101)))
8、对一个列表去重方法有哪些?说下具体的代码
(1)set
(2)for … in … if not in
案例
使用列表推导式去重
list1 = [‘a’, ‘b’, 1, 3, 9, 9, ‘a’]
res = []
[res.append(i) for i in list1 if i not in res]
print(res)
(3) 通过字典的方式去重 ,定义一个空列表
案例:
使用新建字典实现列表去重
list1 = [‘a’, ‘b’, 1, 3, 9, 9, ‘a’]
dic = {}
dic = dic.fromkeys(list1).keys()
print(list(dic))
9、迭代器、生成器、解释下
迭代器(定义):
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
生成器(定义):
创建迭代器简单而强大的工具、在返回数据 yield 语句,每次next()被调用时,生成器会返回它并脱离。
关系:
(1)生成器可以做迭代器的事情
(2)生成器是一种特殊的迭代器
10、python中如何生成随机数?
random 模块
=============================
二、
python题:(背下来)
(1)冒泡排序
(2)斐波那契数列
(3)99乘法表
(4)随机生成手机号
(5)随机生成验证码
=============================
三、熟悉字典、列表、元组、字符、元组的函数
https://www.cnblogs.com/xiaolehua/p/14444527.html
=============================================
拓展:
1、python多线程会吗?
2、python垃圾回收机制?
3、写出python你常见的报错?
==============================
总结:
Python
一、Python介绍:
1、什么是Python?
Python是一门面向对象,解释型的动态类型的编程语言;
Guido van Rossunm 吉多·范罗苏姆 荷兰计算机程序员
2、什么是面向对象?
Python中一切皆为对象,对事物的描述和方法系统的定义为一个类,在这个类中的具体的一个实例就是我们所说的对象
例如:人就是一个类 ------- wf 对象
3、什么是解释型?
Python程序执行时无需先进行编译成二进制代码,直接在执行过程中对语句一条条进行编译
例如:java 装了jdk 编译,python不需要,可以直接编译
4、什么是动态类型?
是指Python程序在运行时可以改变其结构,新的函数可以被引进,已有函数可以被删除
例如:在运行的情况下修改,返回值(存储过程中可以运行以后拿到值,进行运用)
5、Python的特点?
a.特点:简单、易学、免费开源、可扩展性、可移植、高级语言、丰富的类库;
b.应用领域:网页开发、可视化界面开发、系统编程、数据分析、网络爬虫(用的多)、自动化脚本开发(测试用的多); java,ruby 、数据分析、AI人工智能、大数据、云计算、
6、Python的实际应用:
Youtube、豆瓣网、知乎
7、Python所支持的平台:
windows、linux ,macos
8、Python市面上使用的版本:
Python 2.7.xxxx (现在一些windows都支持,稳定)
Python 3.0.xxxx 现在的主流会越来越流行(目前最新版本3.9);
差别:版本的高低级而已,就是有一些功能不一样
二、Python中的运算
1,算术运算符
1,+ 加;2,- 减;3,* 乘;4,/ 除;5,% 取模;6,取幂
7,//取整除’‘’
注意点:他们的优先级:先乘除后加减
2,赋值运算
1,+= 加法赋值 ;2,-= 减法赋值;3,*= 乘法赋值
4,/= 除法赋值;5,%= 取模赋值;6,= 幂赋值运算符
3,比较运算符
1,== 等于;2,!= 不等于;3,> 大于;4,< 小于;
5,>= 大于等于;6,<= 小于等于
注意:结果事返回布尔值:falsh ,true
4,逻辑运算符
1,and 与;2,or ;3,或;4,not 非
返回的结果也是布尔值;
5,位运算
1,&按位与
概念:把十进制转化换二进制,上下对应位都是1,则取1,否则取0,结果再转化换十进制
2,按位或
把十进制转换成二进制,上下对应位只要有一个是1,则取1,都为0则取0,结果再转换十进制|
3,按位异^
把十进制转换成二进制,上下对应位不相同,取1,相同取0,结果再转换成十进制
4, 按位取反~
公式 -(a+1) 变量a先加1再取负数
5, 向左移 <<
把变量转换成二进制,左移相应的位数把小数点右移小数位数,结果是小数点左边的二进制转换成十进制
6, 向右移 >>
把变量转换成二进制,右移两位把小数点左移两位,结果是小数点左边的二进制转换成十进制
7,成员运算符:in和not in
返回的也是布尔值;
三、索引与切片
索引:索引 在公司中一般也叫做下标或者角标
1、我们可以通过索引位读取序列中的指定元素,索引可分为正向索引和负向索引
2、索引的表达式:str[x] 其中x是需要我们自己填写的一个数据,
如:str[1]、str[0]
3、索引中正向索引从0开始,负向索引从-1开始
4、表示不隔位
[起始索引位:结束位:步长值]
切片语法中:包含起始不包含结束,隔位不能为0可以为1,1表示不隔位,从2开始有效果
遍历函数中:包含起始不包含结束,隔位不能为0可以为
print (list(range(10)))
打印的结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2,切片:
1、切片的表达式:str[start_index:end_index:step] 即[开始索引:结束索引:步长值]
2、解释:start_index:开始索引(可以取值)
end_index:结束索引(不能取值)
step:步长 (脚跨了几个楼梯)
3、注意
1)切片中如果步长不写则默认为1
2)切片取值从开始索引到结束索引,且结果不包括结束索引位的值 (取到索引位的前一位)
3)步长从开始索引走起,步长分正负
四、函数
1,字符串函数
capitalize():首字符大写
count():统计具体字符的个数
join():把字符串中的字符按自定义的分隔符连接在一起
split():把字符串通过制定标识符进行分割
strip(ab):删除字符串开头和结尾有a或者b的字符
istrip(ab):删除字符串开头有ab序列的字符
rstrip(ab):删除字符串结尾有ab序列的字符
startswith():判断字符串是否以什么开始
endswith():判断字符串是否以什么结尾
find/rfind():查询指定字符串的下标
replace(substring,newstring,max):替换字符
lower():方法转换字符串所有大写字符为小写字符
upper():字符串中的小写转换为大写
isdigit():判断字符串中是否全为数字
isalpha():判断字符串中是否全为字母
isalnum():判断字符串当中是否全都为数字或者字母或者字母与数字组合
istitle():判断字符串中首字母是否为大写,其他是否为小写,其他不为小写则为否
isupper()/islower():is开头的就是判断一个字符串是否展示位都是大写后者都是小写
2,列表
索引与切片赋值
list1=[1,88,‘test’,‘duoceshi’]
list1[0]=666 结果为 [666,88,‘test’,‘duoceshi’]
list1[2:]=sdada 结果为 [1,88,s,d,a,d,a]
append():添加一个元素
list1=[1,2,3,4,5]
list1.append(‘a’) 结果为 [1,2,3,4,5,a]
extend():连接两个列表
list1=[1,2,3,4,5] list2=[6,7,8]
list1.extend(list2) 结果为 [1,2,3,5,6,7,8]
insert():在指定位置前插入一个元素
list1=[1,2,3,4,5]
list1.insert(0,‘test’) 结果为 [test,1,2,3,4,5]
remove():删除元素
list1=[1,2,3,4,5]
list1.remove(2) 结果为 [1,3,4,5]
索引删除值
list1=[1,2,3,4]
del list1[0] 结果为 [2,3,4]
index:在列表中查找元素所对应的索引值
list1=[1,2,3,4]
list1.index(2) 结果为 1
sort:实现列表的升序排列
list1=[1,2,3,4,1]
list.sort() 结果为 [1,1,2,3,4]
sorted:实现降序排列
list1=[1,2,3,4,1]
print(sorted(list1,reverse=Trrue))
结果为 4,3,2,1,1
reverse函数:列表元素反转
list1=[1,2,3,4]
list1.reverse() 结果为 [4,3,2,1]
pop函数
list1=[1,2,3,4]
pirnt(list1.pop(0)) 结果为 1
3,元组
格式:a=(1,2,3)
元组转化为列表
b=list(a)
print(b)
列表转化为元组
a=tuple(b)
print(a)
4,字典
格式:a={‘name’:‘zhangsan’,‘age’,18}
1,添加键
a[sex]=‘nan’
2,取出键
a.keys()
print(a)
3,取出值
a.values()
print(a)
4,取出具体键的值
print(a[‘name’])
5,字典添加元素
a.setdefault(‘sex’,‘男’)
6,删除字典
del (a)
print(a)
7,删除指定的键,连同值也删除
del(a[‘name’])
8,字典的遍历
for key in a:
print(key,a[key])
9,用items完成遍历
for key,values in a.items():
print(key,values)
10,POP(key)函数,删除指定键并返回删除的值
print(a.pop(‘name’)) print(a)
结果为[age:18]
11,clear()清空字典所有项
a.clear()
print(a) 结果为[]
12,get(key),通过key获取值,当键不存在,返回none
print(a.get(‘name’)) 结果为[zhangsan]
13,fromkeys函数可以给具体的键指定值
print({}.fromkeys([‘name’],‘age’))
print({}.fromkeys([‘name’],‘age’),‘duoceshi’)
14,popitem
print(a.popitem())
print(a)
15,update()函数利用一个字典变更另一个字典
b={‘sex’:‘nan’}
a.update(b)
print(a)
5,集合
1、可变集合set
list1 = [1,1,1,88,88,‘duoceshi’,‘dcs’]
set1 = set(list1)
set1.add(‘dcs’)
set1.remove(‘dcs’)
set1.pop() #把最前面这个给删除了
set1.clear()
print (set1)
2、不可变集合frozenset
test = ‘hello’
a = frozenset(test)
b = a.copy()
b.add(‘888’) #报错AttributeError: ‘frozenset’ object has no attribute ‘add’
print (b)
五、模块
1,time模块:
time.time-----1970年到今天过了多少秒
time.ctime------显示当前日期
time.sleep(2)--------休眠
time.asdtime()--------显示当前日期
time.strftime(‘%Y-%m-%d-%H-%m-%s’)
2,random模块
random----随机生成0开头的浮点数
random.random()------随机生成小于1的小数
random.randint(1,5)------随机取一位整数,包含开始
random.randrange(1,100,2)-----根据range函数:(起始,结尾,隔位),支取1个
random.randrange(0,101,2)—取1-100之间的偶数
a=[1,2,3,4,5,6]
random.choice(a)---------随机取a列表中的一个数字
random.sample(a,3)-----列表中随机取自己定义的个数的值
random.shuffle(a)---------重新打乱a列表的顺序(先洗牌)
print(a)-------再打印
3,String模块
string.digits-----生成0123456789
string.hexdigits------生成0123456789abcdefABCDEF
string.ascii_uppercase----生成26个大写字母
string.ascii_lowercase-------生成26个小写字母
string.ascii_litters------生成26个小写字母和26个大写字母,
4,加密算法
base64位编码
1,加密
a=base64.b64encode(b’123456’)
print(a) 结果为 b’MTIzNDU2’
2,解码
c=base64.b64decode(a)
print(b) 结果为 b’123456’
MD5加密
在线加解密:
http://encode.chahuo.com/
https://tool.oschina.net/encrypt?type=2
md5=hashlib.md5()#创建一个对象:md5
md5.update(b’123456’)#通md5对象来调用update方法对某个值进行加密处理过
print(md5.hexdigest()) #通过hexdigest将md5加密密码进行十六进制转换输出
结果为:e10adc3949ba59abbe56e057f20f883e
5,os模块
a=‘D:\www’
b=‘qqq.txt’
os.gitcwd()#获取当前操作文件的路径
os.path.isfile(a) #判断是不是文件
os.path.isidr(a) #判断是不是目录
os.path.exists(a) #判断文件或目录是否存在
os.listdir(a) #列出指定目录下的目录或文件
os.path.split(a) #分割文件名与目录
os.path.join(a,b) #连接目录与文件名或目录
os.mkdir(a) #创建一个目录
os.rename(old,new) #更改目录名称
六、判断与循环
1,判断
1、if条件判断语句单分支
if 判断条件:
语句块1……
else:
语句块2……
2、if条件判断语句多分支
if 判断条件1:
语句块1……
elif 判断条件2:
语句块2……
else:
语句块n
2,循环
1,while循环语句
while 条件表达式:
循环体语句
while什么时候进入循环?当循环条件成立时,进入循环
while什么时候退出循环?当循环条件不成立时,退出循环
注意:在写while循环语句时一定要让循环条件发生变化,否认很容易陷入死循环中
2,循环语句
1、for循环的语法格式如下:
for … in …
语句块
2、先熟悉下range()函数:如果需要遍历一个数字序列,可以使用python中内建的函数range()
for i in range (10) #打印0到9、不包含10
for i in range (1,10) #打印1到9、不包含10
for i in range (0,10,2) #打印结果:0,2,4,6,8不包含10
3, continue语句
用法:continue语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
4,break语句
用法:语句会立即退出循环,在其后边的循环代码不会被执行。
七、封装
(1)封装定义:
(2)封装的优点:
2.1封装数据可以很好的保护隐私,(将不需要对外提供的内容都隐藏起来)
2.2 封装方法主要原因是隔离复杂度
2.3 封装提高了代码的复用性。
2.4隐藏对象的属性和实现细节,提供公共方法对其访问
(3)python类的封装两种
3.1公用(共有):类中的变量和方法公用;他们名称前都没有下划线,公有的变量和方法,在类的外部,内部,以及子类都可以方位
3.2私有:在类中的变量或方法下,下划线__开头命名,则改变量或方法为私用,私有的变量和方法,只能在本类内部使用,类的外部以及子类都五法使用。
私有属性:
格式:__属性名=值 在类的外部不能使用(对象不能调用属性)
私用化封装后的限制:
(1)类 可以访问
(2)类外/对象外 不可访问
(3)子类和子类对象 不可访问
八、继承
继承特性
1、继承:类的继承是面向对象程序设计的一个重要思想,继承时子
类可以继承父类的内容,包括成员变量和成员函数。
2、在继承中一个类被另外一个类继承这个类称之为父类也称之为基
类,则另外一个类则为子类也称之为派生类。
九、多态
1、多态是以继承和重写父类方法为前提,对所有子类实例化产生的对象
调用相同的方法,执行产生不同的执行结果。
2、例如同样是人,但是当问起一个人的职业时会有不同的结果,可能是
软件测试工程师,可能是HR
3、一个对象的属性和行为不是由他所继承的父类决定的,而是由其本身
包含的属性和方法决定的