一、安装
1、eclipse pydev
1.直接把pydev下载下来,直接手动安装。
到pydev的主页,选择自己python版本对应的dev版本,最好选一样版本号的,不然可能出现pydev选项出不来的错误。http://sourceforge.net/projects/pydev/files/pydev/
把下载好的pydev压缩包内的plugins和features 文件夹内的内容复制到eclipse的解压目录的对应的文件夹中即可。
2、安装外部包
1)将C:\Python34\Scripts配到环境变量
2)在cmd窗口输入:pip intall 包名 如,pip install requests
二、数据类型
1、字符串
1.1字符串的格式
age = 2
name = “kk”
add = “666”
print("{1},{2},{0}".format(age,name,add ))
print("%d %s %s"%(age,name,add))
print(str(age)+" " + name+" " + add)
结果:
kk,666,2
2 kk 666
2 kk 666
注:数字0,1,2对应的是format的下标;空格要输在字符串””里。
name = ‘kl’
name1 = “kkk”
name2=’’’
kk
kk
kk’’’
print(name,name1,name2)
结果:kl kkk
kk
kk
Kk
注:用单引号括起来表示字符串,双引号中的字符串与单引号中的字符串用法完全相同;利用三引号,表示多行的字符串,可以在三引号中自由的使用单引号和双引号
1.2字符串的操作
str1=“hello worldff dggd”
print(str1.find(‘e’)) 结果1
print(str1.index(‘e’))结果1
print(str1.rfind(‘5’))结果-1
print(str1.count(‘ff1’))结果0
print(str1.replace(“ll”, “kk”))结果hekko worldff dggd
print(str1.split(" "))结果[‘hello’, ‘worldff’, ‘dggd’]
print(str1.capitalize())结果Hello worldff dggd
print(str1.title())结果Hello Worldff Dggd
str2 =“456.txt”
print(str2.startswith(‘12’))结果False
print(str2.endswith(’.txt’))结果True
print(str2.upper())结果456.TXT
print(str2.lower())结果456.txt
lysic = “想和你一起玩”
print(lysic.center(50))
print(lysic.ljust(50))
print(lysic.rjust(50))
结果
想和你一起玩
想和你一起玩
想和你一起玩
2、整型
a=2
b=5
print(complex(a,b)) 虚数
print(b/a) 取全部
print(a//b) 取整
结果:
(2+5j)
2.5
0
3、数据结构列表list
3.1列表的声明并赋值
age_list=[1,2,3,4,5,6] 单一类型list声明赋值
string_list=[“name”,“age”,“haha”] 单一类型list声明赋值
mix_list=[“ni”,“wo”,1,2,3] 复合类型list声明赋值
3.2列表的操作
1)增
age_list = [1,2,3,4]
age_list.append(5) #不要写成age_list=age_list.append(5)
print(age_list)
结果[1, 2, 3, 4, 5]
2)删
age_list = [1,2,3,4]
age_list.remove(4) 4是列表的值 只能删一个值(当有2个相同的值时)
print(age_list)
结果:[1, 2, 3]
age_list = [1,2,3,4]
age_list.pop(0) 0是列表的下标,没有指定下标时删除最后一个值。
print(age_list)
结果:[2, 3, 4]
age_list = [1,2,3,4]
del age_list[2]
print(age_list)
结果:[1, 2, 4]
del age_list 删除整个列表
3)改
age_list = [1,2,3,4]
age_list[2]=8 通过下标来修改
print(age_list)
结果:[1, 2, 8, 4]
4)查
age_list = [1,2,3,4]
print(age_list[2])
结果:3 通过下标来查
5)查询列表的长度
age_list = [1,2,3,4]
print(len(age_list))
结果:4
6)列表拼接
age_list = [1,2,3,4]
b_list = [5,6]
print(age_list+b_list)
结果:[1, 2, 3, 4, 5, 6]
7)列表翻倍
age_list = [1,2,3,4]
print(age_list2)
结果:[1, 2, 3, 4, 1, 2, 3, 4]
8)查询列表是否包含某个值,返回的值是true或false
b_list = [5,6]
print(5 in b_list)
结果:True
9)截取列表的元素
abcd_list=[‘a’,‘b’,‘c’,‘d’]
print(abcd_list[-2]) 从右边开始数,第2位。结果为c
print(abcd_list[1:]) 除了第一位元素,显示剩余的元素。
10)其他用法
age_list = [1,2,3,4]
print(max(age_list)) 最大值 4
print(min(age_list)) 最小值 1
元组转为列表
age_list = (1,2,3,4)
print(list(age_list))
结果:[1, 2, 3, 4]
统计列表中的某个值出现的次数
age_list = (1,2,3,4)
print(age_list.count(4))
结果是1
将其他列表加在列表的最后
age_list = [1,2,3,4]
b_list = [5,6]
age_list.extend(b_list)
print(age_list)
结果:[1, 2, 3, 4, 5, 6]
求某个值的下标
age_list = [1,2,3,4,5]
print(age_list.index(5))
结果:4
给指定下标的位置插入值
age_list = [1,2,3,4,5]
age_list.insert(1, 0)
print(age_list)
结果:[1, 0, 2, 3, 4, 5]
将列表倒序排列
age_list = [1,2,3,4,5]
age_list.reverse()
print(age_list)
结果:[5, 4, 3, 2, 1]
Append&extend的区别
a =[1,2,3]
b =[4,5]
a.extend(b)
print(a)
a.append(b)
print(a)
结果:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, [4, 5]]
4、元组Tuple
4.1元组的声明并赋值
age_tuple = (1,2,3,4,5) 单一类型声明与赋值
b_tuple = (“kk”,“yy”) 单一类型声明与赋值
mix_tuple = (“hh”,1,2) 混合类型声明与赋值
4.2元组的操作
查
age_tuple = (1,2,3,4,5)
print(age_tuple[2])
结果:3
其他用法
查询元组的长度
age_tuple = (1,2,3,4,5)
print(len(age_tuple))
结果:5
元组拼接
age_tuple = (1,2,3,4,5)
b_tuple = (5,6)
print(age_tuple+b_tuple)
结果:(1, 2, 3, 4, 5, 5, 6)
元组翻倍
age_tuple = (1,2,3,4,5)
print(age_tuple2)
结果:(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
判断某个值是否在元组中,返回的值是true或false
age_tuple = (1,2,3,4,5)
print(3 in age_tuple)
结果:True
元素的截取
age_tuple = (1,2,3,4,5)
print(age_tuple[-1]) 从右边数起第一个数
print(age_tuple[1:]) 从左边起,除了第一位不显示,其余都显示。
结果:5
(2, 3, 4, 5)
最大值与最小值
age_tuple = (1,2,3,4,5)
print(max(age_tuple)) 5
print(min(age_tuple)) 1
列表转为元组
age_tuple = [1,2,3,4,5]
print(tuple(age_tuple))
结果:(1, 2, 3, 4, 5)
某个值出现的次数
age_tuple = (1,2,3,4,5)
print(age_tuple.count(3))
结果:1
求某个值的下标
age_tuple = (1,2,3,4,5)
print(age_tuple.index(5 ))
结果:4
5、元组和列表的区别
声明只有一个元素的时候,元组最后要加上逗号。
age_tuple = (1,)
print(age_tuple)
结果:(1,) 如果不加逗号则为1
优点:操作速度快、安全。
在元组,列表可以作为一个元素存在。
age_tuple = (1,[1,2])
print(age_tuple[1][0])
结果:1
6、字典
6.1字典的创建
dict1 = {1:“kk”,2:“hh”}
6.2字典的操作
增(增加键和值,键值一 一对应)
dict1 = {1:“kk”,2:“hh”}
dict1[3 ] = “dd”
print(dict1)
结果:{1: ‘kk’, 2: ‘hh’, 3: ‘dd’}
删(删除键对应的值)
dict1 = {1:“kk”,2:“hh”,3:“pp”}
del dict1[1]
print(dict1)
结果:{2: ‘hh’, 3: ‘pp’}
改(修改键对应的值)
dict1 = {1:“kk”,2:“hh”,3:“pp”}
dict1[1]=“mm”
print(dict1)
结果:{1: ‘mm’, 2: ‘hh’, 3: ‘pp’}
清空字典的元素
dict1 = {1:“kk”,2:“hh”,3:“pp”}
dict1.clear()
print(dict1)
结果:{}
删除整个字典
dict1 = {1:“kk”,2:“hh”,3:“pp”}
del dict1
计算键值个数
dict1 = {1:“kk”,2:“hh”,3:“pp”}
print(len(dict1))
结果:3
返回数据类型
dict1 = {1:“kk”,2:“hh”,3:“pp”}
print(type(dict1))
结果:<class ‘dict’>
字典的浅复制
dict1 = {1:“kk”,2:“hh”,3:“pp”}
print(dict1.copy())
结果:{1: ‘kk’, 2: ‘hh’, 3: ‘pp’}
取值
dict1 = {1:“kk”,2:“hh”,3:“pp”}
print(dict1.get(1))
结果:kk
以列表返回可遍历的(键,值)元组数组
dict1 = {1:“kk”,2:“hh”,3:“pp”}
print(dict1.items())
结果:dict_items([(1, ‘kk’), (2, ‘hh’), (3, ‘pp’)])
取所有的键
dict1 = {1:“kk”,2:“hh”,3:“pp”}
print(dict1.keys())
结果:dict_keys([1, 2, 3])
取所有的值
dict1 = {1:“kk”,2:“hh”,3:“pp”}
print(dict1.values())
结果:dict_values([‘kk’, ‘hh’, ‘pp’])
添加新键并将值设为default
dict1 = {1:“kk”,2:“hh”,3:“pp”}
dict1.setdefault(4)
print(dict1)
结果:{1: ‘kk’, 2: ‘hh’, 3: ‘pp’, 4: None}
将dict2的键值对更新到dict1里
dict1 = {1:“kk”,2:“hh”,3:“pp”}
dict2 = {4:“k”,5:“h”}
dict1.update(dict2)
print(dict1)
结果:{1: ‘kk’, 2: ‘hh’, 3: ‘pp’, 4: ‘k’, 5: ‘h’}
比较两个字典的元素
键在字典返回true否则返回false
dict1 = {1:“kk”,2:“hh”,3:“pp”}
print(1 in dict1.keys())
结果:True
7、布尔类型
False/True
8、浮点数
9、时间和日期
9.1获取当前时间
import time,datetime
localtime = time.localtime()
print(localtime)
结果:time.struct_time(tm_year=2018, tm_mon=12, tm_mday=23, tm_hour=10, tm_min=43, tm_sec=45, tm_wday=6, tm_yday=357, tm_isdst=0)
9.2获取格式化的时间
import time
localtime = time.asctime()
print(localtime)
结果:Sun Dec 23 10:51:53 2018
9.2 获取格式化的日期
import time
print (time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime()))
结果:2018-12-23 11:10:30
9.3 获取某年日历
import calendar
cal = calendar.month(2018,12)
print(cal)
结果: December 2018
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
10.集合
s = {1,2,3,2}
print(s)
结果:{1, 2, 3}
三、函数
1、函数的基本类型
不带参数、没有返回值
def sum():
print(“111”)
sum()
结果:111
不带参数、有返回值
def sum():
return 1
print(sum())
结果:1
带参数、有返回值
def sum(a):
return a
print(sum(1))
结果:2
带参数、没有返回值
def sum(a):
print(“5”)
print(sum(1))
结果:5
None
2、参数相关
使用默认参数
def sum(a,b=1):
return a+b
print(sum(1))默认参数a取1
结果:2
关键字参数(指明参数=值)
def sum(a,b=1,c=2):
return a+b+c
print(sum(1,4,c=1))
如果有一个参数采用=来赋值,剩下的都要采用这样的格式来赋值。
结果:6
VarArgs参数
def fun(a,*b,**c):
print(a)
print(str(b))
print(str©)
fun(‘ll’,12,23,45,78,‘12’,x = 12,x1 = 35)
结果:ll
(12, 23, 45, 78, ‘12’)
{‘x’: 12, ‘x1’: 35}
3、返回多个值
def fun():
a=1
b=2
c=3
d=[a,b,c]
return d #或return [a,b,c]或return (a,b,c)或return a,b,c
print(fun())
结果:[1, 2, 3]
4、函数的嵌套使用
def sum(a,b):
s = a+b
return s
def avage(a,b):
av = sum(a, b)/2
return av
a1=int(input())
a2=int(input())
print(avage(a1, a2))
结果:
1
2
1.5
注:Python中的函数是存在可见空间的,独立定义的函数,可以被任意函数引用,在函数内部定义的函数,只有这个函数可以引用,其他的函数是不可以引用的。
fun2不能引用fun3,只有fun1才能引用fun3。
5、全局变量与局部变量
a=10
def test():
a=1
print(’%d’%a)
def test1():
print(’%d’%a)
test()
test1()
结果:
1
10
a=10
def test():
global a 列表和字典不用加global即可修改
a=1
print(’%d’%a)
def test1():
print(’%d’%a)
test()
test1()
结果:
1
1
6、递归函数
def getNum(a):
if a >1:
return a*getNum(a-1)
else:
return a
i = int(input())
print(getNum(i))
结果:
4
24
7、匿名函数
7.1 命名
匿名函数:lambda 参数:式子(自带返回效果)
s =lambda x,y:x+y
print(s(1,2))
结果:3
7.2常用用途
对字典排序(从小到大)
dict1 ={1:12,2:11}
dict2= {1:20,2:2}
s =[dict1,dict2]
s.sort(key=lambda x:x[2])
print(s)
结果:
[{1: 20, 2: 2}, {1: 12, 2: 11}]
可以自定义函数内部的操作
def func(a,b,fun):
return fun(a,b)
f1 = input(“输入一个匿名函数:”)
f1 = eval(f1)
print(func(1,2,f1))
结果:输入一个匿名函数:lambda x,y:x+y
3
8、导入函数
import kkkk
from kkkk import m2m
from kkkk import *
Kkkk是文件名;m2m是函数名。
四、控制流
1、if
number = int(input(“请输入数字:”))
if number == 1:
print(“hh”)
elif number ==2:
print(“kk”)
else:
Pass
2、For
for i in range(3):
print(i)
结果:0
1
2
9、While&Break&Continue&Pass
num = 8
while True:
guess = int(input())
if guess == num:
print(“yy”)
break
elif guess < num:
continue
else:
Pass
结果:
1
9
8
yy
Break与while搭配使用,用来终止while整个循环。
Continue与while/for搭配使用,用来结束本次循环,不会结束while整个循环。
Pass:什么都不做。
五、输入与输出
1、IOConsole
a =input(“请输入:”)
print(a)
结果:
请输入:*
*
2、文件
2.1文件的写与读
将内容写入文件
sentence = ‘’’
123456
‘’’
f = open(‘aa.txt’,‘w’)
f.write(sentence)
f.close()
读取文件的内容
f= open(‘aa.txt’)
bb=f.readline()
f.close()
print(bb)
结果:123456
2.2文件的操作
文件的备份
oldFileName= input(‘输入要复制的文件名与后缀:’)
fRead = open(oldFileName) 打开要复制的文件
position = oldFileName.rfind(’.’)
newFileName = oldFileName[0:position]+‘副本’+oldFileName[position:]
fWrite = open(newFileName,‘w’) 创建副本
while True:
content = fRead.readline(1024) 读取原文件的内容
if len(content)==0:
break
else:
fWrite.write(content) 写入副本
fRead.close()
fWrite.close()
文件的定位读写
#打开一个存在的文件
f=open(“a.bb.f.txt”)
print(f.tell())
print(f.read(1))读取一个字节的内容
print(f.seek(0,2))
os.renames(“a.bb.f.txt”, “123.txt”)#重命名文件
os.mkdir(“456”)#创建文件夹
print(os.getcwd())#获取当前路径
print(os.listdir("."))#获取当前的所有目录
批量修改文件名
5)批量修改文件名
#获取一个要修改的文件名
file_name_new=input(“请输入要修改的文件所在的文件夹”)
#获取要被修改的所有文件
file_names=os.listdir(file_name_new)
os.chdir(file_name_new)用于改变当前工作目录到指定的路径
#修改
for name in file_names:
os.rename(name, “12”+name)
六、异常
6.1抛出非自定义的异常
try:
1/0
f=open(‘11.txt’)
except(NameError,ValueError,OSError,FileNotFoundError) as err:
print(err)
except Exception as err: 除了以上异常外,都走这
print(err)
except: 没有异常
print(‘111’)
finally: 有没有异常都会执行
print(‘666’)
结果:
division by zero
666
6.2异常传递
def test1():
1/0
def test2():
print(‘222’)
test1()
try:
test2()
except(NameError,ValueError,OSError,FileNotFoundError) as err:
print(err)
except Exception as err:
print(err)
except:
print(‘111’)
finally:
print(‘666’)
结果:
222
division by zero
666
6.3抛出自定义的异常
class ShortException(Exception):
def init(self,length,minLength,mixLength):
self.length =length
self.minLength = minLength
self.mixLength = mixLength
try:
i = str(input(“请输入密码:”))
if len(i)<6 or len(i)>10:
raise ShortException(len(i),6,10)
except ShortException as err:
print(“输入的长度:%d,长度范围是%d-%d”%(err.length,err.minLength,err.mixLength))
else:
print(“无异常”)
结果:
请输入密码:12345678911
输入的长度:11,长度范围是6-10
七、面向对象
面向对象:找个对象,让它去做
面向过程:每个过程都要自己去实现
7.1创建类与对象
class Person(object): 创建类
def init(self,name,age):
self.age = age
self.name = name
def __str__(self):
return '%s的年龄是%d'%(self.name,self.age)
def sleep(self):
print("%s在睡觉"%self.name)
student = Person(‘Danny’,12) 创建对象
print(student)
student.sleep() 对象去做事情
结果:
Danny的年龄是12
Danny在睡觉
7.2一个类运用其他类的属性
class Home():
def init(self,position,mianji,stype):
self.position=position
self.mianji=mianji
self.stype=stype
self.leavemianji = mianji
self.items = [] 在初始化的时候定义属性来调用其它类的属性
def str(self):
message = '房子的位置是%s,面积是%d,类型是%s,房子剩余面积是%d '%(self.position,self.mianji,self.stype,self.leavemianji)
return message+‘物品:%s’%self.items
def addItem(self,items):
self.leavemianji -= items.area
self.items.append(items.stype)
class Bed():
def init(self,stype,area):
self.area=area
self.stype=stype
def str(self):
return ‘床的类型是%s,大小是%d’%(self.stype,self.area)
fangzi = Home(‘西丽茶光’,30,‘一室一厅’)
bed = Bed(‘普通床’,10)
fangzi.addItem(bed) 传入其他类的对象来获取属性
print(fangzi)
结果:房子的位置是西丽茶光,面积是30,类型是一室一厅,房子剩余面积是20 物品:[‘普通床’]
7.3方法设置属性
(可在方法内部进行判断属性)
class Dog():
def setAge(self,age):
if age >0 and age <100:
self.age = age
else:
self.age = 0
def getAge(self):
return self.age
dog = Dog()
dog.setAge(12)
dog.getAge()
print(dog.age)
结果:
12
7.4私有方法
class Money():
def __sendMessage(self): 私有方法
print('余额充足')
def money(self,money):
if money >1000:
self.__sendMessage()在公有方法能调用私有方法,在类外部不能调用私有方法
else:
print('余额不足')
money = Money()
money.money(10000)
结果:余额充足
7.5__del__
class Car():
def del(self):释放所有引用对象时系统自动调用的方法。
print(‘123’)
dogg = Car()
dogg1 = dogg
del dogg
del dogg1
print(’/////’)
结果:
123
/////
7.6测量被引用的个数
class Car():
def del(self):
print(‘123’)
dogg = Car()
print(sys.getrefcount(dogg))结果要减1
结果:
2
7.7继承
class Animal(object):
def init(self,name,age):
self.name = name
self.age = age
def str(self):
return ‘动物叫%s,%d岁了’%(self.name,self.age)
class Dog(Animal):
pass
dog = Dog(‘kk’,12)
print(dog)
结果
动物叫kk,12岁了
#私有方法、私有属性不会直接被继承,可以通过公有方法来调用。
在方法名与属性名前加__即为私有方法、私有属性。
class Animal(object):
def init(self,name,age):
self.__name = name 私有属性
self.age = age
def str(self):
return ‘动物叫%s,%d岁了’%(self.name,self.age)
def __sleep(self): 私有方法
pass
class Dog(Animal):
pass
#多继承(类名.__mro__查询调用同名方法的哪个父类的方法)
#实例属性:实例对象之间不共享属性而 类属性能被多个实例对象共享。
7.8类方法/静态方法
class Tool:
num = 0
def init(self,name):
self.name = name
Tool.num += 1
@classmethod
def addNum(cls): 类方法
print(‘12’)
@staticmethod 静态方法
def sum():
print(’****’)
too = Tool(‘ll’)
too.addNum()
too.sum()
Tool.addNum()
Tool.sum()
print(Tool.num)
12
12
1
7.9单例
class T():
__instance = None
__flag = False
def new(self,name):
if self.__instance==None:
self.__instance = object.__new__(self)
return self.__instance
else:
return self.__instance
def __init__(self,name):
if self.__flag ==False:
self.name = name
self.__flag =True
a=T(‘yy’)
print(id(a))
print(a.name)
b=T(‘dd’)
print(id(b))
print(b.name)
结果:
54456784
yy
54456784
yy
其他
1、所有的赋值,是指向同一个内存地址;
2、除了列表和字典,其余类型都是不可修改的。
3、递归要注意死循环
4、类型可变—修改;类型不可变—自己新建
5、交换方式
a=4
b=5
第一种
c=0
c=a
a=b
b=c
第二种
a=a+b
b=a-b
a=a-b
第三种
a,b=b,a
6、i=i+i与i+=i不一样
i=i+i是i指向另一内存
i+=i是修改原来内存的值,指向原来的内存
自动化测试简历模板
https://blog.csdn.net/mr_tangshuai/article/details/93166121
来源:CSDN
作者:qq_39405435
链接:https://blog.csdn.net/qq_39405435/article/details/104671812