本文共 4226 字,大约阅读时间需要 14 分钟。
目录
python3和python2区别
性能:python3起始比python2效率低,但python3有极大的优化空间,效率正在追赶
编码:python3源码使用utf-8编码,使得变量更加广阔
在python2中可以使用<>代表不等于,在python3中使用!=
python3中加入as和with关键字,还要True,False,None
python2中使用除号(/)会自动取整,而python3中使用除号(/)会取小数,必须使用 //
python2中有print语句,而python3中是print()函数
python3去除raw_input,加入了input()函数
新的super(),在python3中可以不给super()传参数
在python2中,即使比较类型不匹配也能执行,比如2<'4',会返回True。在python3中改变了顺序操作符的行为,例如x<y,而当x和y的类型不匹配时,会抛出TypeError而不是返回bool值
python2字符串以8bit字符串存储,在python3中以16bit Unicode字符串存储,并且字符串只有str一种类型
在python3中所有的异常都是从BaseException继承,并删除了StardardError
python2 :try: ......except Exception,e: ......python3:try: ......except Exception as e: ......
在python2中有一个自带的类型file去处理文件,python3中没有file类
高阶函数map和reduce
最早提出在Google的mapreduce文章上
map()把数据分散出去进行解析,会生成一个列表
reduce()数据收集进行处理,会处理这个列表
python内置了map()和reduce()函数
例子:使用map()
#map()#原型 map(fn,lsd)#fn是函数 lsd是序列#功能:将传入的函数依次作用在序列的每一个元素,并把结果作为新的Iterator返回#将单个字符转成对应的字面量整数def chr2int(chr): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[chr]list1 = ['2','1','6','5']#map处理后的列表是惰性列表res = map(chr2int,list1)print(res)#将惰性列表转换成列表print(list(res))
运行结果:
例子:ruduce()的简单使用
from functools import reduce#reduce(fn,lsd)#fn是函数 lsd是序列#功能:一个函数作用在序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素累计运算#reduce(f,[a,b,c,d])#f(f(f(a,b),c),d)#求一个序列的和list = [1,2,3,4,5,6]#1 + 2#1 + 2 + 3#1 + 2 + 3 + 4#1 + 2 + 3 + 4 + 5#1 + 2 + 3 + 4 + 5 + 6def sum(x,y): return x + yall = reduce(sum,list)print(all)
运行结果:
高阶函数filter
原型:filter(fn,lsd)
fn为函数,lsd为序列
功能:用于过滤序列,把传入的函数依次作用于序列的每个元素,根据返回的是True还是False,来决定是否保留该元素
例子:保留序列里的奇数
#保留序列的奇数list1 = [1,2,3,4,5,6,7,8,9]def isjishu(num): #偶数保留 if num%2 != 0: return True #奇数剔除 return Falsel = filter(isjishu,list1)print(list(l))
运行结果:
高阶函数sorted
排序:冒泡排序,选择排序 快速排序,插入排序,计数器排序
相对来说,冒泡排序,选择排序的效率低于快速排序,插入排序,计数器排序
sorted可以对序列进行排序,对字符串进行排序时,比较的是ASCLL码值
例子:
#排序list1 = [4,8,6,-4,9,1,3,7,-8]#sorted默认升序排序list2 = sorted(list1)print(list2)#按列表绝对值排序,key可以接受函数来实现自定义排序规则list3 = sorted(list1,key=abs)print(list3)#降序排序list4 = sorted(list1,reverse=True)print(list4)
运行结果:
单元测试
一般开发都要有测试人员。
单元测试作用:用来对一个函数,一个类或者一个模块来进行正确性校验工作
结果:
- 单元测试.通过,说明函数功能正常;
- 单元测试不通过,说明函数出现bug,要么输入条件有误
对函数进行单元测试
例子:一个x+y的加法函数测试
第一次是成功的加法,第二次对加法函数进行了修改
import unittest# from 对函数进行单元测试 import 函数def sum(x,y): return x + y class Test(unittest.TestCase): def setUp(self): print('开始测试时自动调用') def tearDown(self): print('结束测试时自动调用') #为了测试sum def test_sum(self): self.assertEqual(sum(1,2),3,'加法有误')if __name__=='__main__': unittest.main()
运行结果:
修改加法函数:
def sum(x,y): return x + y + 1
运行结果:
对类进行单元测试
先定义一个Person类
class Person(object): def __init__(self,name,age): self.name = name self.age = age def getAge(self): return self.age
对这个类进行测试
import unittest# from 对函数进行单元测试 import 函数from Person import Personclass Test(unittest.TestCase): def setUp(self): print('开始测试时自动调用') def tearDown(self): print('结束测试时自动调用') #为了测试sum def test_init(self): per = Person('tom', 20) self.assertEqual(per.name,'tom','属性赋值有误') def test_getAge(self): per = Person('tom', 20) self.assertEqual(per.getAge(),per.age,'getAge函数有误')if __name__=='__main__': unittest.main()
运行结果:
远程链接Windows
import telnetlibdef telnetDoSomething(IP,user,passwd,command): #链接服务器 telnet = telnetlib.Telnet(IP) #设置调试级别 telnet.set_debuglevel(2) #读取用户信息 rt = telnet.read_until('Login username:'.encode('utf-8')) #写入用户名,'\r\n'是回车 telnet.write((user+'\r\n').encode('utf-8')) # 读取密码信息 rt = telnet.read_until('Login password:'.encode('utf-8')) # 写入密码,'\r\n'是回车 telnet.write((passwd + '\r\n').encode('utf-8')) # 读取验证IP信息 rt = telnet.read_until('Domain name:'.encode('utf-8')) # 写入IP,'\r\n'是回车 telnet.write((IP + '\r\n').encode('utf-8')) #登录成功,写指令 rt = telnet.read_until('>'.encode('utf-8')) telnet.write((command + '\r\n').encode('utf-8')) #上面命令执行成功,会继续> #失败,一般不会是> rt = telnet.read_until('>'.encode('utf-8')) #断开链接 telnet.close() return Trueif __name__ == '__main__': IP = '10.0.142.197' user = 'xumingbin' passwd = '*********' command = 'tasklist' telnetDoSomething(IP,user,passwd,command)
一起学习,一起进步 -.- ,如有错误,可以发评论
转载地址:https://kongchengji.blog.csdn.net/article/details/95189600 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!