关于python,它是一种解释型,面对对象,带有动态语义的高级程序设计语言。
之前学习python的时候,简单的将python的基础内容过了一遍,然后在工作中需要用到什么就相应的去加深某一模块的需求以及应用,总觉得基础不够扎实,所以打算把python的基础知识重新过一遍,然后做相关的笔记,让自己能够印象更深刻一些。
为了提升自己的技能,学习一门语言尤为重要,在众程语言中,python可谓是比较容易上手,且功能相对强大的一门语言。而且其在跨平台工作有很好的的实现(window,linux,mac...),所以python于我而言是相当合适一门语言。基于自身的测试工作,可能更加偏向的是用python做自动化接口测试,或者是结合python+selenium做一些页面的操作,或是一些日常工作中需要用到的小工具,BUG数据分析等。
关于选择Python的 编辑器,其实一开始我是用python自带的编辑器,这个编辑器比较小巧,入门级别的小练习是可以支撑使用的,可是随着深入学习,你需要写一些小工具,或者框架的时候,这个IDE相对来说就没有那么智能好用,后来我又用了pycharm的社区版本,Pycharm的功能比较强大,调试等各种功能都比较好用,就是启动的时候比较慢。
一、python标准数据类型 (数,字符串,列表,元组,字典)
1、数:(长)整形,浮点型,复数型
1.1 、整形和长整型没有严格区分,整形值后面添加“L”即为长整型 (python3.x中没有long类型,整数都为int型,其行为模式与python2.x的long差不多)
1.2、浮点型即为数学中的实数,可以类似科学计数法表示 如:2.3 或者 2.3E4.E标记表示10的幂次方。2.3E4表示2.3 * (10的四次方)
1.3、实数+虚数就是复数,虚部必须带有j 比如: (6.4+8.9j) ,(6j).复数=-3+5j 复数可以分离实部和虚部 (复数.real=-3;复数.imag=j),复数的共轭为(复数.conjugate()=-3-5j)
2、字符串:
2.1、字符串:'#';"#";'''#''';单引号,双引号,三引号中的#都为字符串,字符串为不可变的类型 (python中没有专门的char 数据类型)
单引号与双引号并没有什么不同,都是表示里面的内容为字符串
2.2.转义符
在字符串中需要应用一个单引号:'I'm a girl' 不能直接这样用,需要指明单引号不是字符串的结尾:' I\'m a girl ' 或者利用双引号:“ I'm a girl ”
在字符串中,行末单独加一个反斜杠表示字符串在下一行继续进行,而不是一个新的行
2.3、自然字符串
指示不需要如转义符那样的特别处理的字符串,可以指定一个自然字符串:通过加上前缀r或者R来指定:如:r“This is a book\n”
2.4、unicode字符串
unicode是书写国际文本的标准方法,python允许处理unicode文本,需要在字符串前加上前缀u或者U 。如:u“This is a Unicode string”
2.5、按字面意义级连字符串
把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,'W hat\'s''your nam e?'会被自动转为"W hat's your nam e?"
2.6、获取字符串的方法可以应用下标索引(从0开始,可为正,可为负),即为切片的方式进行字符串的提取s= [头下标:尾下标] (获取的子字符串包含头下标的字符,但不包含尾下标的字符)
加号(+)是字符串连接运算符,星号(*)是重复操作
2.7、字符串的方法
3、列表
3.1、List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
3.2、列表用[ ] (方括号)标识,是 python 最通用的复合数据类型。列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾
3.3、加号 + 是列表连接运算符,星号 * 是重复操作
#!/usr/bin/python#-*- coding: UTF-8 -*-
list=['hello','world','2020','01']
list01=['happy','2020']print(list) #输出完整字符串
print(list[0]) #输出字符串中的第一个字符
print(list[1:2]) #输出字符串中第三个至第六个之间的字符串
print(list[2:]) #输出从第三个字符开始的字符串
print(list01 * 2) #输出字符串两次
print(list+list01) #输出连接的字符串
View Code
3.4、常用的列表的方法 (增,山,查,改,排序,变换)
3.4.1、添加新元素:
list.append() #在list 末尾添加一个元素
list.insert(n,'hello') #在指定位置添加元素,如果指定位置不存在,那么就在末尾添加
list1.extend(list2) #合并两个list,list2中仍有元素
3.4.2、查看列表中的值
print(list) 遍历打印列表的值,相当于(print(i) for i in list)
list[n] 使用下标索引来访问列表中的值
list.count(XX) 查看某个元素在这个列表中的个数。如果元素不存在,则返回0 ,结合集合,可快速遍历列表中每一个字符的个数(这个对于统计数据的次数很好用:比如统计当前BUG分配到每一个人的个数)
list.index(XX) 找到某个元素的下标,如果存在多个,则返回第一个。如果元素不存在会报错
3.4.3、排序问题
list.reverse() 反转列表
list.sort() 默认升序排序 (list.sort(reverse=True) 降序排序 )
排序只针对同类型排序,如果列表中存在多种数据类型,不能进行排序
3.4.4、列表操作函数
len(list) 计算列表中的元素的个数
list(元组) 元组转换为列表
min(list) 返回列表中元素最小的值
max(list) 返回列表中元素最大的值
enumerate 打印元素对应的下标 (返回的是一个列表(“index”,“value”))
3.4.5、删除list中的元素
list.pop() 删除最后一个元素
list.pop(n) 删除某个下标的元素,该下标元素不存在,报错
list.remove(XX) 移除列表中的元素,存在多个一样的元素,移除第一个
del list[n] 删除某个下标的元素
del list 删除整个列表,删除后列表不能再次访问
3.4.6、列表推导式
python中列表推导式用于使用其他列表创建一个新列表
其基本形式为: [表达式 for 变量 in 列表] 如:print(i) for i in list
也可以对原列表进行变换,筛选: [表达式 for 变量 in 列表 if判断筛选语句] 如:example = [print(i**2) for i in range(1,11) if i%2 == 0 ]
嵌套列表,构造二维数组等:[表达式 for 变量 in 列表 for 变量 in 列表 ]
#!/usr/bin/python#-*- coding: UTF-8 -*-
list01= [1,2,3]
list02= [print(i,j) for i in list01 for j in list01]
View Code
以及对多重嵌套的list进行变换筛选。[表达式 for 变量 in 列表 for 变量 in 列表 if判断筛选语句]
#!/usr/bin/python#-*- coding: UTF-8 -*-
list01= [[1,2,3],[4,5,6],[7,8,9],[10]]
list02= [print(j**2) for i in list01 for j in i if j%2 == 0]
View Code
4、元组
元组的访问和列表相同,可以直接使用下标索引访问元组中的单个数据项,也可以使用截取运算符访问子元组。访问运算符包括“[]”和“[:]”运算符,用于访问元组中的单个数据项,或者一个子元组。
元组的遍历方式和列表相同,都是应用for循环语句遍历元组的元素。
4.1、元组和列表类似,不同之处是元组的元素不能修改,元组使用小括号(),由于元组的不可修改特性,用于列表的排序、替换、添加等方法,在元组中不能使用,适用于元组的主要运算有元组的合并、遍历、求元组的最大值和最小值等操作方法。
4.2、元组中只有一个元素时,元素后面需要添加逗号,否则括号会被当成运算符使用 tuple(1,)
4.3、元组可以使用下标索引,访问元组中的元素,与字符串类似,下标从0开始,可以使用切片组合 ,如:tuple[:]
4.4、元组里面的元素值不允许修改,可是元组之间可以进行连接组合,如:tup3=tup2+tup1 (创建一个新的元组,又1和2两个元组组成) --合并元组
4.4、元组里面的元素不可单独删除,元组可整个删除 ,如:del tup3;
4.5、元组中的内置函数:len();max();min();tuple(seq)--将列表转换为元组
4.6、元组是不可更改,可以通过构造新元组替换旧元组,来实现元素的插入与删除
5、字典
5.1、字典是可变的,可以存储任意类型的对象
5.2、表达形式:如:data={key:value,key2:value2} 注意:键key必须是唯一的(创建时如果同一个键被赋值两次,后一个值会被记住),值可以重复
5.3、如何访问字典里面值,通过键作为索引,如:print(data['key']) -- 打印出来的就是value
5.4、修改字典内容
#!/usr/bin/env python3#-*- coding: utf-8 -*-
data={'english':89,'math':100}#修改内容
data['english']= 90
#添加内容
data['Name'] = "xiaoli"
View Code
5.5、删除字典元素
#!/usr/bin/env python3#-*- coding: utf-8 -*-
data={'english':89,'math':'100'}#删除单一元素
del data['english']#清空字典的内容
data.clear()#删除字典
del data
View Code
5.6、键为不可变的,所以不能应用列表作为键,可用字符串,数字,或者是元组
5.7、字典内置函数:len();str();type()
5.8、字典内置方法:
5.8.1、radiansdict.clear() #删除字典内所有元素
5.8.2、radiansdict.copy() #返回一个字典的浅复制
5.8.3、radiansdict.fromkeys() #创建一个新字典,以序列seq中的元素做字典的键,val为字典所有键对应的初始值
5.8.4、radiansdict.get(key,default=None) #返回指定键的值,如果值不在几点钟返回default
5.8.5、key in dict #查询键是否在字典中,存在返回true,不存在返回false
5.8.6、radiansdict.items() #以列表返回可遍历的(键,值)元组数组
5.8.7、radiansdict.keys() #返回一个迭代器,可以使用list()来转换为列表
5.8.8、radiansdict.setdefault(key,default=None) #和get() 类似,但如果键不存在字典中,将会添加键并将值设置为default
5.8.9、dadiansdict.updata(dict2) #把字典dict2d 键/值对更新到dict里
5.8.10、radiansdict.values() #返回一个迭代器,可以使用list()以转换为列表
5.8.11、pop(key.[,default]) #删除字典给定键key所对应的值,返回值被删除的值。key值必须给出。否则,返回default值
5.8.12、popitem() #随机返回并删除字典中最后一对键与值。