linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
    • Python学习指南
  • 快速开始

    • Python: 输入与输出 (I/O)
    • Python: 异常处理 try-except
    • Python: List深入概述
    • Python: 面向对象编程(OOP)
  • Python 语法库函数

    • 语法库目录
    • 库

      • library目录
      • argparse:解析命令行参数
      • difflib:比较序列并生成差异信息
      • dnspython: DNS处理库
      • IPy:IP地址处理库
      • logging:记录和管理日志信息
      • os:访问和操作操作系统
      • psutil:系统性能信息库
      • re:正则表达式库
      • smtplib:邮件发送库
    • 函数

      • function目录
      • any() 函数
      • input 函数
      • lambda 和 map 函数
      • reversed()函数
      • zip()函数
    • 语句

      • statement目录
      • import 语句
      • Try/Exception 异常
    • 概念

      • concept目录
      • 深拷贝与浅拷贝
      • 列表、字典与元组
      • 文件读写
      • IO: 输入与输出
      • 逻辑判断与条件语句
      • OOP 面向对象:class
      • OOP: 面向对象编程
  • SQLAlchemy

    • 获取insert或者update的id
  • Pandas

    • Pandas目录
    • Pandas:基础操作
    • Pandas:数据处理与转换
    • Pandas: 数据写入 excel 表格
  • Python前端框架

    • Flask

      • 1. Flask简介
      • 2. Flask程序基本结构
      • 3. Flask请求-响应循环
      • 4. flask案例: 框架网页查询IP
      • Python: Flask中的GitHub OAuth
    • Django

      • chapter-01:Django框架认识

        • 1.1 Django的产生背景
        • 1.2 MTV设计模式
        • 1.3 Django 主要功能模块
      • chapter-02:开发环境配置

        • 2.1 Python的安装与配置
        • 2.2 虚拟环境安装与配置
        • 2.3 Django安装与配置
        • 2.4 MySQL安装配置
      • chapter-03:项目框架搭建

        • 3.1 Django管理工具-创建项目骨架
        • 3.2 修改项目的默认配置
        • 3.3 初始化项目环境
      • chapter-04:ORM应用与原理剖析

        • 4.1 构建POST应用需要的数据集
        • 4.2 Model相关的概念和使用方法
        • 4.3 Model的查询操作API
        • 4.4 ORM实现原理
      • chapter-05:Django管理后台

        • 5.1 将Model注册到管理后台
        • 5.2 管理后台实现原理
      • chapter-06:视图

        • 6.1 视图基础
        • 6.2 视图的高级特性和快捷方法
        • 6.3 基于类的通用视图
      • chapter-07:模板系统

        • 7.1 模板系统基础
        • 7.2 模板语言
      • chapter-08:表单系统

        • 8.2 使用表单系统实现表单: ModelForm
      • chapter-09:用户认证系统

        • 9.1 用户与身份认证
        • 9.2 权限管理
        • 9.3 用户认证系统应用
      • chapter-10:Django路由系统

        • 10.1 路由系统基础
      • chapter-11:Django中间件

        • 11.1 中间件基础
  • Python例子

    • Python: Linux的Shell命令
    • Python: PEP8自动格式化代码
    • Python: pip操作
    • Python: 业务服务监控
    • Python: 从文件逐行读取数据
    • 将链表转换为字符串
    • Python: 检查URL是否能正常访问
    • Python: 爬取网易云音乐
    • Python: 读取目录下的所有内容
    • 案例研究:文本统计
  • Python爬虫

    • 数据解析工具:Xpath
  • 算法题

    • 02:两数相加
    • 09:回文数
    • 13:罗马数值转换为整数
    • 14:最长公共前缀

Python: 异常处理 try-except

  • 引发异常
  • 捕获异常
  • try/except 块
    • 捕获多种异常
    • 捕获所有异常
  • 清理操作
  • 另一种格式设置方法
  • with语句

  • 在发生异常时,如果不采取任何措施,程序通常会立即停止运行,并显示栈跟踪异常发生前调用的函数清单。对确定导致错误的代码有帮助

引发异常

  • 如除以0抛出异常:ZeroDivisionError

  • 语法错误异常:SyntaxError

  • 代码任何地方都可

  • 注意 大量内置的异常,被组织成层次结构,可参阅:http://dosc.python.org/3/library/exceptions.heml#bltin-exceptions

捕获异常

  • 异常发生,有两种选择;

    • 1.忽略异常,让程序崩溃并显示栈跟踪。程序开发期间,这样做,对栈跟踪提供的调试信息很有帮
    • 2.捕获异常,并打印友好的错误信息乃至试图修复问题。对于供非程序员使用的程序,几乎都这样做
  • 使用语法:

    try:
        ......
    except Errorname(异常名):
        ......
    
    # 捕获异常案例
    def get_age():
        while True:
            try:
                n = int(input("how old are you?"))
                return n
            except ValueError:
                print('Please enter an intefer value.')
                
    # while循环中的try/except快,可将可能引发异常的代码放在try快中
    # 当try快中的代码发生异常,就会跳过其他没有执行的语句,立即跳转到except快中。
    # 如果try快没有引发异常,将跳过 except ValueError快
    
    

try/except 块

  • 工作原理有点类似if语句

  • if语句是根据布尔表达式的结果决定下面执行的内容

  • try/except根据是否出现了异常决定下面执行的内容

  • 同一函数可能引发多种异常,所以就需要进行多种异常的捕获

捕获多种异常

## 处理多种异常的try/except快
def convert_init(s,base):
    try:
        return int(s,base)
    except (ValueError,TypeError):
        return 'error'
    
# 分别处理不同的异常

def convert_ini2(s,base):
    try:
        return int(s.base)
    except ValueError:
        return "value error"
    except TypeError:
        return "type error"

捕获所有异常

# 在except中没有指定异常,将捕获所有异常
def convert_to_init(s,base):
    try:
        return int(s,base)
    except:
        return 'error'

清理操作

  • 在try/except 块中,可以包含 执行清理操作的finally代码块
# 清理操作案例(或者说语法)
def invert(x):
    try:
        return 1/x
    except ZeroDivisionError:
        return 'error'
    finally:
        print('invert(%s) done' % x)
        
# finally块肯定会执行,不管是否发生异常都要执行某些代码块时,很有用处
# 如通常将关闭文件的语句放在finally块中,这样文件肯定会被关闭,即使发生了IOError

另一种格式设置方法

  • 在上述的代码块中,为让文件每行开头的行号右对齐,并在行号的左边填充零。
  • print语句都使用了字符串插入
  • 当需要使用格式字符串,可将print语句替换成下面的语句:print('{0:04}{1}'.format(num,line),end = '')

with语句

  • 为了确保发生异常,也能尽快执行清理操作。可以使用python语句with

    # 在屏幕上打印文件内容,并在每一行加上行号
    num = 1
    f = open(fname)
    for line in f:
        print('{0:04}{1}'.format(num,line),end = '')
        num = num + 1
    f.close()
    
    # 由于不知道文件将在何时关闭,f通常在for循环结束后关闭,但不清楚去确切的时间。
    # 当不知需要后,f 保持打开状态时不确定的,当其他程序访问这个文件,就会导致出错
    
    # 改进,使用with语句
    # 确保不在需要的文件尽早关闭 可使用with语句
    num = 1
    with open(fname,'r') as f:
        for line in f:
            print('{0:04}{1}'.format(num,line),end = '')
            num = num + 1
    
最近更新时间:
Prev
Python: 输入与输出 (I/O)
Next
Python: List深入概述