Python基础之(异常与开发规范)

一、异常

1.1、Python中错误分为两种:

  • 语法错误,这种错误根本过不了python解释器的语法检测,必须在程序执行前就改正
  • 逻辑错误,如int("m")

异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下:

python中异常的种类:

 1 #常用异常
 2 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
 3 IOError 输入/输出异常;基本上是无法打开文件
 4 ImportError 无法引入模块或包;基本上是路径问题或名称错误
 5 IndentationError 语法错误(的子类) ;代码没有正确对齐
 6 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
 7 KeyError 试图访问字典里不存在的键
 8 KeyboardInterrupt Ctrl+C被按下
 9 NameError 使用一个还未被赋予对象的变量
10 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
11 TypeError 传入对象类型与要求的不符合
12 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
13 导致你以为正在访问它
14 ValueError 传入一个调用者不期望的值,即使值的类型是正确的
15
16 #更多异常
17 ArithmeticError
18 AssertionError
19 AttributeError
20 BaseException
21 BufferError
22 BytesWarning
23 DeprecationWarning
24 EnvironmentError
25 EOFError
26 Exception
27 FloatingPointError
28 FutureWarning
29 GeneratorExit
30 ImportError
31 ImportWarning
32 IndentationError
33 IndexError
34 IOError
35 KeyboardInterrupt
36 KeyError
37 LookupError
38 MemoryError
39 NameError
40 NotImplementedError
41 OSError
42 OverflowError
43 PendingDeprecationWarning
44 ReferenceError
45 RuntimeError
46 RuntimeWarning
47 StandardError
48 StopIteration
49 SyntaxError
50 SyntaxWarning
51 SystemError
52 SystemExit
53 TabError
54 TypeError
55 UnboundLocalError
56 UnicodeDecodeError
57 UnicodeEncodeError
58 UnicodeError
59 UnicodeTranslateError
60 UnicodeWarning
61 UserWarning
62 ValueError
63 Warning
64 ZeroDivisionError

异常种类

1.2、异常处理

python解释器检测到错误,触发异常(也允许程序员自己触发异常)程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理

为什么需要异常处理?

python解析器去执行程序,当检测到了一个错误时就会触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件。所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性

怎样进行异常处理?

  • 如果错误发生的条件是可预知的,我们需要用if进行处理:在错误发生之前进行预防
  • 如果错误发生的条件是不可预知的,则需要用到try...except:在错误发生之后进行处理
#if
m = input(":")
if type(m) is int:
    print(m)
elif len(m) == 0:
    print("xxx")
else:
    print(len(m))
    print("错误")

#try...except
#基本语法为:
try:
    被检测的代码块
except 异常类型:
    try中一旦检测到异常,就执行这个位置的逻辑

m = input(":")
try:
    int(m)
except Exception as e:
    print(e)

Ps:万能异常类:Exception

#主动触发异常raise
try:
    raise TypeError(‘类型错误‘)
except Exception as e:
    print(e)

二、软件开发规范

2.1、为什么需要规范软件开发

你现在包括之前写的一些程序,所谓的‘项目‘,都是在一个py文件下完成的,代码量撑死也就几百行,你认为很好。但是真正的后端开发的项目,系统等,少则几万行代码,多则十几万,几十万行代码,你全都放在一个py文件中行么?这显然是不行的。我们需要有一个较好的规范才能保证在开发过程中不混乱或者叫杂乱无章。软件开发首先规范你的项目目录结构,代码规范,遵循PEP8规范等等,让你更加清晰、合理的开发。

2.2、设计项目目录结构

"设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题。对于这种风格上的规范,一直都存在两种态度:

  • 一类程序员认为,这种个人风格问题"无关紧要"。理由是能让程序work就好,风格问题根本不是问题。
  • 另一类认为,规范化能更好的控制程序结构,让程序具有更高的可读性

我是比较偏向于后者的,因为我是前一类程序员思想行为下的直接受害者。我曾经维护过一个非常不好读的项目,其实现的逻辑并不复杂,但是却耗费了我非常长的时间去理解它想表达的意思。从此我个人对于提高项目可读性、可维护性的要求就很高了。"项目目录结构"其实也是属于"可读性和可维护性"的范畴,我们设计一个层次清晰的目录结构,就是为了达到以下两点:

  • 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。
  • 可维护性高: 定义好组织规则后,维护者就能很明确地知道新增的文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好

较好的目录结构如下:

具体说明:

#bin 启动文件
#conf 配置文件
#core 主程序
#db  数据库
#lib  第三方库
#log  日志
#readme
软件定位,软件的基本功能代码目录结构说明,更详细点可以说明软件的基本原理
运行代码的方法: 安装环境、启动命令等
常见问题说明

  

原文地址:https://www.cnblogs.com/crazyjump/p/10197393.html

时间: 2024-08-03 15:49:24

Python基础之(异常与开发规范)的相关文章

Python基础之软件目录结构规范

设计一个层次清晰的目录结构,就是为了达到这两点: 可读性高:不熟悉项目的人,一眼就能看懂目录结构. 可维护性高:随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好. 目录组织方式: ATM├── bin│   └── start.py├── conf│   └── settings.py├── core│   └── test_main.py├── db│   └── db.json├── docs├── lib│   └── common.py├── log│   └──

Python 基础6 异常 exception

异常(基础) exception: 异常 是与正常相对的情况: 什么是错误? 错误是指由于逻辑或语法等导致一个程序无法正常执行的问题: 特点: 有此错误是无法预知的: 什么是异常: 异常是指程序出错时标识的一种状态: 当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态: 作用: 用作信号,通知上层调用者有错误需要处理: try语句: 两种语法: try - except 语句 try - finally 语句 try - except语句语法: 1 try: 2

[Python基础]008.异常

异常 异常处理 捕获异常 抛出异常 自定义异常 一些常见的异常 异常处理 捕获异常 try/except 与C,java等语言用try/catch来捕获异常相似,Python使用try/except try/except/finally 无论是否有异常都会执行finally下的语句 try/except/else 没有抛出异常时执行else下的语句 代码 try: f = open('data.txt') f.read() print zz print 5/0 except IOError, e

python学习之路——软件开发规范/time模块

目录规范: (1)文件的规范写法 bin   可执行文件 conf 配置文件 core 主要业务逻辑 db     数据文件 lib     库(公共代码  第三方模块) log    日志文件 readme   说明文档(是一个文件) 在以上文件中,没有需要作为包的,包通常放到lib中,但是lib不应该作为包 (2)定制程序的入口  主要将项目的根目录添加到环境变量中 python中os.path.dirname(__file__)的使用 返回脚本的路径 (1).当"print os.path

Day4 - Python基础4 迭代器、装饰器、软件开发规范

Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>

Python基础教程(第八章 异常)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5428641.html______ Created on Marlowes 在编写程序的时候,程序员通常需要辨别事件的正常过程和异常(非正常)的情况.这类异常事件可能是错误(比如试图除以0),或者是不希望经常发生的事情.为了能够处理这些异常事件,可以在所有可能发生这类事件的地方都使用条件语句(比如让程序检查除法的分母是否为零).但

Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础

本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   类的特殊方法 1.3   反射 2.     异常处理 3.     Socket开发基础 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1)   静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法.普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访

python基础1 - 多文件项目和代码规范

1. 多文件项目演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 –  一个项目通常会包含 很多源文件 在 01_Python基础 项目中新建一个 hm_02_第2个Python程序.py 在 hm_02_第2个Python程序.py 文件中添加一句 print("hello") 点击右键执行 hm_02_第2个Python程序.py 提示 在 PyCharm 中,要想让哪一个 Python 程

python 开发规范 预览版

python 开发规范 预览版 本文主要参考 pep8和jumpserver开发规范,结合实际,进行修改,欢迎提出修改意见. 代码检查工具 pylint pycharm --> code --> Reformat Code 格式化当前文件代码格式 pycharm --> 右击项目 --> Inspect Code 根据pep8格式检查当前项目 基本的代码布局 导入 import x from x import y from x import y as z 禁止import x,y