Pyhton学习——Day29
#异常与错误
# 什么是异常?
# 异常就是程序运行时发生错误的信号,在程序出现错误时,则会产生异常,若没有程序处理,则会抛出异常
# 导致程序在异常语句处崩溃终止
# Traceback 追踪异常信号;****Error 异常类;********异常值三部分构成
# 错误分为语法错误(低级错误)、逻辑错误(编程思维错误)
# 异常就是错误引发的结果,处理的目的就是让程序在异常后跳转到其他的逻辑执行,不让程序崩溃
#————————————————————————————————————————————————————#
# 转载(部分修改):http://www.cnblogs.com/linhaifeng/articles/6232220.html
# 异常的种类
# AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
# IOError 输入/输出异常;基本上是无法打开文件
# ImportError 无法引入模块或包;基本上是路径问题或名称错误
# IndentationError 语法错误(的子类) ;代码没有正确对齐
# IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
# KeyError 试图访问字典里不存在的键
# KeyboardInterrupt Ctrl+C被按下(多用于解释器中)
# NameError 使用一个还未被赋予对象的变量
# SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
# TypeError 传入对象类型与要求的不符合
# UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
# 导致你以为正在访问它
# ValueError 传入一个调用者不期望的值,即使值的类型是正确的
#————————————————————————————————————————————————————#
# 1.if判断式的异常处理只能针对某一段代码,对于不同的代码段的相同类型的错误需要写if来进行处理
# 2.在程序中写与本身程序无关的代码,可读性会及其的差
# 3.if本身就是可以解决异常的
# def test():
# print('test running')
# choice_dic = {
# '1':test
# }
# while True:
# choice = input('>>').strip()
# # if not choice or choice not in choice_dic:
# # continue #if异常处理机制
# choice_dic[choice]()
#————————————————————————————————————————————————————#
# python为每一种异常定制了一个类型,提供的特定的语法结构用来进行异常处理
# part1:try except捕捉异常
#基本语法为
# try:
# 被检测的代码块
# except 异常类型:
# try中一旦检测到异常,就执行这个位置的逻辑
# 异常处理有多种方式,处理异常可以用try..except也可以用if
# try..except可以使用多分支来捕捉不同的异常
# 万能异常:Exception
# try:
# dic = {
#
# }
# dic['key']
# except Exception as e:
# print('我是万能异常捕捉器')
# 什么时候使用万能异常?
# 1.需求方需要抛出所有的异常,且不做任何处理,或者使用同一段代码去处理,只要用Exception
# 2.对于不同的多分支,需要定制不同的处理逻辑,那就需要用到多分支了
#————————————————————————————————————————————————————#
# 异常的其他结构:
# else:没有异常时执行语句,有异常就跳过;finally:用于清理工作,都执行,需要放在try代码块执行最后
# s1 = 'hello'
# s1 = 1
# try:
# int(s1)
# except ImportWarning as e:
# print('---->>',e)
# # except ValueError as e:
# # print('---->>',e)
# except Exception as e:
# print('----->>',e)
# else:
# print('else可以判断try代码块中逻辑是否有异常')
# finally:
# print('用于清理工作,回收垃圾专用,无论有没有异常都可以做')
# print('正常执行其他的逻辑')
# raise 主动抛出异常
# 自定义异常
# class DefException(BaseException):
# def __init__(self,msg):
# self.msg = msg
# # raise DefException('自定义异常')
# print(DefException('自定义异常'))
# raise TypeError('类型错误')
# 自定义异常要继承异常的一个基类
#————————————————————————————————————————————————————#
# 断言:assert
# assert 1 == 2
# 断言一般同于判断两段代码的执行结果是否相等
# 等同于if判断,相比if更简洁
#————————————————————————————————————————————————————#
# 总结:if本身就可以用来处理异常,只不过if的方式代码量大且不易读,try..except的多分支就比如if的多条件判断,
# if的else就像try的exception,只不过if是针对一种异常的多分支,针对不同段代码的同种错误类型,需要重复写多分支if
# 而try是针对不同类型异常的多分支,可以把不同段的代码放到一起,检测他们的同种类型错误
#————————————————————————————————————————————————————#
#————————————————————————————————————————————————————#
# Socket编程:
# 一:客户端/服务器架构(C/S架构)
# 1.硬件C/S架构(打印机)
# 2.软件C/S(Web服务)
# 互联网中到处都是C/S架构,socket就是完成C/S架构的开发
#————————————————————————————————————————————————————#
# osi七层
# 一个完整的计算机系统是由硬件、操作系统、应用软件三种组成,具备这三个条件,一台计算机系统就可以自己和自己玩了
# 如果要和别人玩,就需要上网了,互联网的核心就是由一堆协议组成,协议就是标准,互联网协议就是计算机世界的英语,
# 所有的计算机都具备互联网协议,就可以按照统一的标准去收发信息从而完成通信
# 分工的不同会把互联网协议划分层级
# 1.学会socket编程,完成C/S架构的软件
# 2.C/S架构的软件,是基于网络通信进行的
# 3.网络的核心就是一堆协议,遵循这些标准作出的网络通信的软件
# 4.从标准开始
# 数据链路层:Mac标识物理机的物理位置,网络层:IP在标识房间位置,传输层(端口号):Tcp/Ip;Udp协议[192.168.1.1:80]
# 应用层
# Socket抽象层在传输层和应用层之间,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,在设计模式中,
# Socket其实是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让
# Socket去组织数据,以符合指定的协议
# 即无需深入理解TCP/IP协议,socket已经封装好了,只需要遵循socket的规定去编程
# pid是用来标识同一台机器上不同进程或者线程的标识【和网络编程无关系】
#————————————————————————————————————————————————————#
# 套接字的发展史
# 同一个进程只能再同一个时间内运行,不能同时运行
#————————————————————————————————————————————————————#
# backlog:半连接池,用于暂时存放客户端发来的响应信息
# accept在建立tcp的三次握手
# tcp协议可靠性在于服务端不会丢失,因为一定要回复给客户端信息,如果服务端未接受,则会再发送
# 关闭连接(三次握手)
# ps:什么是事件驱动?
# 所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作.
# 事件驱动的核心自然是事件。从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。
# 事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、
# 来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。
# 事件发送器负责将收集器收集到的事件分发到目标对象中。事件处理器做具体的事件响应工作,它往往要到实现阶段才完全确定,
# 因而需要运用虚函数机制(函数名往往取为类似于HandleMsg的一个名字)。对于框架的使用者来说,
# 他们唯一能够看到的是事件处理器。这也是他们所关心的内容。
#————————————————————————————————————————————————————#
# 四次挥手:谁先发完包,谁先主动申请关闭请求
# FIN_WAIT1--主动断开
# FIN_WAIT2--被动断开
# 三次握手建立的只是没有数据传输的链接,而四次挥手包含数据
# 大并发情况下,服务端为了节省自身资源,会自动断开链接,服务端先断开链接,所以服务端会先有TIME_WAIT
Pyhton学习——Day29的更多相关文章
- Pyhton学习——Day26
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
- pyhton 学习
官方学习文档 https://docs.python.org/3/tutorial/
- 20190320_head first pyhton学习笔记之构建发布
1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...
- Pyhton学习——Day2
Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...
- Pyhton学习——Day28
#上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...
- Pyhton学习——Day27
# hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...
- Pyhton学习——Day25
#面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...
- Pyhton学习——Day24
# #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...
- Pyhton学习——Day23
#re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...
随机推荐
- USACO 2008 Mar Silver 3.River Crossing 动态规划水题
Code: #include<cstring> #include<algorithm> #include<cstdio> using namespace std; ...
- 微信小程序打开PDF
具体情况是:微信小程序打开springboot返回的pdf文件.微信端先downloadFile,然后openDocument.但是打开文档一直不成功.后来发现官网的例子没有加fileType,我在参 ...
- 网络教程(9)ARP。IP和以太网间映射
question: how does a knows that SFO is the right place to send as Ethernet frame subnet Mask: its ju ...
- 记Spring搭建功能完整的个人博客「Oyster」全过程[其二] Idea中Maven+SpringBoot多模块项目开发的设计和各种坑(模块间依赖和打包问题)
大家好嘞,今天闲着没事干开写写博客,记录一下Maven+SpringBoot的多模块设计和遇到的坑. 多模块设计 简单说明一下截止目前的需求: 需要RESTful API:对文章.标签.分类和评论等的 ...
- HDU 5307 He is Flying (生成函数+FFT)
题目传送门 题目大意:给你一个长度为$n$的自然数序列$a$,定义一段区间的权值为这一段区间里所有数的和,分别输出权值为$[0,\sum a_{i}]$的区间的长度之和 想到了生成函数的话,这道题并不 ...
- 树状数组||归并排序求逆序对+离散化 nlogn
我好咸鱼. 归并排序之前写过,树状数组就是维护从后往前插入,找比现在插入的数大的数的数量. 如果值域大,可以离散化 #include <cstdio> #include <cstri ...
- leetCode笔记--binary tree
993. Cousins in Binary Tree In a binary tree, the root node is at depth 0, and children of each dept ...
- strtotime的一个使用问题
我在开发过程中遇到这么这个问题,因为赶进度,没有记下来处理方案,在鸟哥的博客看到原理分析,很到位!平时开发中总是急着处理问题,没有深入分析和记录问题. 1.问题: 今天是2018-07-31 执行代码 ...
- [SharePoint2010开发入门经典]SPS2010列表编程
本章概要: 1.理解SPS2010列表的结构和功能 2.使用客户端和服务器端对象模型,web service,wcf和RESTful service进行列表编程. 3.理解方法的使用 4.类表编程
- 【算法拾遗(java描写叙述)】--- 选择排序(直接选择排序、堆排序)
选择排序的基本思想 每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,知道所有记录排序完毕.主要有两种选择排序方法:直接选择排序(或称简单选择排序)和堆排序. 直接选择排序 ...