10 Python之异常/模块/包

简介: 程序在运⾏时,如果遇到到⼀个错误,会停⽌程序的执⾏,并且提示⼀些错误信息,这就是异常。

1、异常

程序在运⾏时,如果遇到到⼀个错误,会停⽌程序的执⾏,并且提示⼀些错误信息,这就是异常。

程序停⽌执⾏并且提示错误信息这个动作,称之为:抛出(raise)异常。

程序开发时,很难将所有的特殊情况都处理的⾯⾯俱到,通过异常捕获可以针对突发事件做集中的处理,从⽽保证程序的稳定性和健壮性 。

1.1 捕获异常

在程序开发中,如果对某些代码的执⾏不能确定是否正确,可以增加 try(尝试) 来捕获异常 。

语法:

try:

​ 可能出现异常的代码

except:

​ 出现异常的处理代码

示例:

try:
    input = int(input("请输入数字:"))
    print(input)
except:
    print("请输入正确的数字")

效果:

1

上面是简单的捕获异常语法 ,接下来给大家看看错误类型捕获

1.2 错误类型捕获

在程序执⾏时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候,就需要捕获错误类型了。

语法:

try:

​ 可能出现异常的代码

except 错误类型 1:

​ 出现异常的处理代码

except (错误类型 2,错误类型 2):

​ 出现异常的处理代码

示例:

try:
    i = int(input("请输入数字1:"))
    j = int(input("请输入数字2:"))
    print(i/j)
except ValueError:
    print("请输入正确的数字")
except ZeroDivisionError:
    print("除数不能为零")

效果:

2

1.3 捕获未知错误

在开发时,要预判到所有可能出现的错误,还是有⼀定难度的 。

如果希望程序⽆论出现任何错误,都不会因为程序抛出异常⽽被终⽌,可以再增加⼀个 except 。

语法:

try:

​ 可能出现异常的代码

except Exception as result:

​ 出现未知异常的处理代码

演示:

try:
    i = int(input("请输入数字1:"))
    j = int(input("请输入数字2:"))
    print(i/j)
except Exception as result:
    print(result)

效果:

3

1.4 没有异常发生才执行的代码

程序运行过程中,如果没有异常发生,需要执行一段代码。这个时候可以使用 else。

语法格式 :

try:

​ 可能出现异常的代码

except Exception as result:

​ 出现未知异常的处理代码

else:

​ 没有异常执行的代码

try:
    i = int(input("请输入数字1:"))
    j = int(input("请输入数字2:"))
    print(i/j)
except Exception as result:
    print(result)
else:
    print("稍安勿躁,无事发生")

效果:

4

1.5 无论是否有异常,都要执行的代码

程序运行过程中,一旦发生异常,代码就会跳转到 except,有时需要不论发生任何异常,都必须要执行一段代码。这个时候可以使用 finnly。

语法:

try:

​ 可能出现异常的代码

except Exception as result:

​ 出现未知异常的处理代码

finally:

​ 无论是否有异常都要执行的代码

演示:

try:
    i = int(input("请输入数字1:"))
    j = int(input("请输入数字2:"))
    print(i/j)
except Exception as result:
    print(result)
finally:
    print("风雨无阻,使命必达")

效果:

5

1.6 抛出异常

在开发中,除了代码执⾏出错时被动抛出异常之外, 还可以根据应⽤程序特有的业务需求主动抛出异常。

语法:

raise Exception(“异常描述”)

示例:

try:
    sex = str(input("你的性别是:"))
    if sex == '女':
        raise Exception("要男生")
    else:
        print(sex)
except Exception as result:
    print(result)

效果:

6

2、模块

  • 当项目代码越来越多,不可能把所有代码都放到一个 py 文件中,一个项目往往由多个 py 文件组成;
  • 模块是 Python 程序架构的⼀个核⼼概念 ,每⼀个以扩展名 py 结尾的 Python 源代码⽂件都是⼀个模块;
  • 模块名同样也是⼀个标识符,需要符合标识符的命名规则;
  • 在模块中定义的全局变量 、函数、类 都是提供给外界直接使⽤的⼯具,模块就好⽐是⼯具包,要想使⽤这个⼯具包中的⼯具,就需要先导⼊这个模块 。

2.1 模块的导入方式

1、import 导入

语法:

import 模块名

导⼊之后通过 模块名. 使⽤模块提供的⼯具 —— 全局变量、函数、类

演示:

新建一个Cat.py文件:

# 定义Cat类
class Cat:
    # name 为类属性,通过 Cat.name 访问
    name = "小黄"

    def __init__(self, name="小白"):
        # _name 为私有属性
        self._name = name

    # drink 为类的静态方法
    @staticmethod
    def drink():
        print("喝水")

再建一个Test.py

import Cat
# 调用 Cat 中的 Cat类的drink方法
print(Cat.Cat.drink())

2.2 as 指定模块别名

语法:

import 模块名 as 模块别名

注:

  • 如果两个模块,存在同名的函数,那么后导⼊模块的函数,会覆盖掉先导⼊的函数 ;
  • 开发时 import 代码应该统⼀写在代码的顶部,更容易及时发现冲突 ;
  • ⼀旦发现冲突,可以使⽤ as 关键字 给其中⼀个⼯具起⼀个别名 。

演示:

import Cat as c

print(c.Cat.drink())

2.3 from...import 导⼊

import 模块名 是⼀次性把模块中所有内容全部导入。

如果希望从某⼀个模块中导⼊部分内容,就可以使⽤ from ... import 的⽅式 。

语法:

from 模块名 import 工具名

from 模块名 import *

导⼊之后不需要通过 模块名. 可以直接使⽤模块提供的⼯具 —— 全局变量、函数、类 。

演示:

from Cat import Cat

print(Cat.drink())

2.4 _ name _属性

如果是被其他⽂件导⼊的模块,_ name _就是模块名 ;

如果是当前执⾏的程序 name 是 “__main__” ;

在很多 Python ⽂件中都会看到以下格式的代码:

# 在代码的最下⽅ 
def main(): 
    # ... 
    pass 

# 根据 name 判断是否执⾏下⽅代码 
if __name__ == "main": 
    main() 

3、包

包是⼀个包含多个模块的特殊⽬录,一个目录下需要有 __init__.py文件 ,使用包的目的是一次性可以把一个目录下所有的模块通过一条import语句导入。

演示:

1、在项目中新建一个目录,然后再这个,目录下新建文件

7

2、__init__.py文件

from . import Cat
from . import User

作用是从当前目录导入Cat ,User 模块

3、到这个包的上级目录创建一个文件调用看看。

from jie.Cat import Cat
from jie.User import user

print(Cat.drink())
print(user.age(18))
相关文章
|
1月前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
203 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
1月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
57 7
|
8天前
|
人工智能 Shell 开发工具
[oeasy]python065python报错怎么办_try_试着来_except_发现异常
本文介绍了Python中处理异常的基本方法,重点讲解了`try`和`except`的用法。通过一个计算苹果重量的小程序示例,展示了如何捕获用户输入错误并进行处理。主要内容包括: 1. **回顾上次内容**:简要回顾了Shell环境、Python3游乐场和Vim编辑器的使用。 2. **编写程序**:编写了一个简单的程序来计算苹果的总重量,但发现由于输入类型问题导致结果错误。 3. **调试与修正**:通过调试发现输入函数返回的是字符串类型,需要将其转换为整数类型才能正确计算。
48 32
|
29天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
112 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
5天前
|
数据库 Python
[oeasy]python066_如何捕获多个异常_try_否则_else_exception
本文介绍了Python中`try...except...else`结构的使用方法。主要内容包括: 1. **回顾上次内容**:简要复习了`try`和`except`的基本用法,强调了异常处理的重要性。 2. **详细解释**: - `try`块用于尝试执行代码,一旦发现错误会立即终止并跳转到`except`块。 - `except`块用于捕获特定类型的异常,并进行相应的处理。 - `else`块在没有异常时执行,是可选的。 3. **示例代码**:通过具体例子展示了如何捕获不同类型的异常(如`ValueError`和`ZeroDivisionError`),并解释了异常处理
35 24
|
2月前
|
Python
Python Internet 模块
Python Internet 模块。
133 74
|
3月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
141 63
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
1月前
|
程序员 Linux Python
python中模板和包的使用
本文介绍了 Python 模块和包的基本概念及使用方法。模块是 Python 程序结构的核心,每个以 `.py` 结尾的源文件都是一个模块,包含可重用的代码。文章详细讲解了模块的导入方式(如 `import` 和 `from...import`),模块的搜索顺序,以及如何创建和发布自己的模块。此外,还介绍了包的概念,包是包含多个模块的特殊目录,并通过 `__init__.py` 文件定义对外提供的模块列表。最后,文章简述了如何使用 `pip` 工具管理第三方模块的安装与卸载。作者:大石头的笔记;来源:稀土掘金。
|
2月前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
36 5

热门文章

最新文章