自学python所记(十三)

十八、异常

18.1、异常介绍

程序在运行时,遇到错误,程序停止

提示信息这个动作叫 抛出异常(raise关键字)

捕获异常:程序遇到异常,默认动作是中止执行,遇见异常后,可以使用异常捕获,让代码继续执行,不会中止(重点)

18.2、异常捕获(重点)

基本语法
try:
    书写可能发生异常的代码
except:	  # 任何类型的异常代码都能捕获
    发生了异常执行的代码
    

    
try:
    书写可能发生异常的代码
except 异常类型:	# 只能捕获指定类型的异常,如果不是这个异常,还是会报错
    发生了异常执行的代码
    
	
# try:
#     num=input('请输入数字')
#     num = int(num)
#     print(num)
# except:
#     print("请输入正确的数字")


try:
    num=input('请输入数字')
    num = int(num)
    print(num)

    # a=10/num  # 10/0
    # print(f'a:{a}')
    
except ValueError:  # 只能捕获ValueError 类型及其子类的异常
    print("发生了异常,请输入正确的数字")
捕获指定类型的异常
好处:可以针对不同异常错误,进行单独代码处理
try:
    书写可能发生异常的代码
except 异常类型1# 只能捕获指定类型的异常,如果不是这个异常,还是会报错
	发生了异常1执行的代码
except 异常类型2:
	发生了异常1执行的代码
except 异常类型...:
    发生了异常...执行的代码
try:
    num=input('请输入数字')
    num = int(num)
    print(num)

    a=10/num  # 10/0
    print(f'a:{a}')

except ValueError:  # 只能捕获ValueError 类型及其子类的异常
    print("发生了异常,请输入正确的数字")
    
except ZeroDivisionError:
    print('除数不能为0')
异常捕获的完整版本
完整版本中的内容,不是说每一崔都要全部书写,根据自己的需要,去选择其中的进行使用
try:
    可能发生异常的代码
except 异常类型1:
	发生异常类型1 执行的代码
    # Exception 是常见异常类的父类,这里书写Exception,可以捕获常见的所有异常,as变量,这个变量是一个异常类的对象,print(变量)可以打印异常信息
except Exception as 变量:
	发生其他类型的异常,执行的代码
else:
    没有发生异常会执行的代码
    
finally:
    不管有没有发生异常,都会执行的代码
    
    
    
    
try:
    可能发生异常的代码
except Exception as 变量:
	发生异常执行的代码
try:
    num = input('请输入数字')
    num = int(num)
    print(num)

    a = 10 / num  # 10/0
    print(f'a:{a}')


except Exception as e:
    print(f'错误信息为:{e}')
else:
    print('没有发生异常我会执行')
finally:
    print('不顾有没有发生异常,我都会执行')

18.3、异常的传递(了解)

异常传递是python中已经实现好的,

异常传递:在函数嵌套调用的过程,被调用的函数,发生了异常,如果没有捕获。会将这个异常向外层传递,...如果传到外层还没捕获,才报错
def func1():
    num = 10 / 0
    print(num)


def func2():
    print('1111')
    func1()


func2()

try:
    func2()
except Exception as e:
    print(e)


十九、模块和包

1.python 源代码文件就是一个 模块

2.模块中定义的变量 函数 类,都可以让别人使用,同样,可以使用别人定义的(好处:可以直接使用)

3.想要使用别人模块中的内容工具(变量,类,函数),必须先导入模块,才可以

4.自己写的代码,作为模块使用,代码的名字需要满足标识符的规则(由数字,字母下划线组成,不能以数字开头)

19.1、导入模块的语法

方式一:


import 模块名

# 使用模块中的内容
模块名.工具名

举例:
import random
import json
random.randint(a,b)
json.load()
json.dump()

方式二:

from 模块名 import 工具名

#  使用
工具名  # 如果是函数和类需要加括号

# 举例
from random import randint
from json import load,dump
randint(a,b)
load()
dump()

方式三(了解)

from 模块名 import  *     # 将模块中所有内容都导入

举例:
from random import *
from json import *
random
json

快捷导包:

1651892292130
# 方式一:
import random

print(random.randint(1, 20))

# 方式二,快捷方式导包
from random import randint

print(randint(1, 20))

# 方式三  可能存在多个模块中有相同的名字工具,会产生冲突
from random import *
print(randint(1,20))
对于导入的模块和工具可以使用as关键字给其起别名

注意:如果起别名,原来的名字就不能用了,只能使用别名

19.2、模块的查找顺序

在导入模块的时候,会在当前目录中找代码,如果找到,就直接使用。
如果没有找到会去系统目录进行查找,找到直接使用,没有找到报错

注意:
定义代码文件时,代码名字和导入的模块名字 不能 相同

19.3、__ name __ 的作用

1.每个代码文件都是一个模块

2.在导入模块的时候,会执行模块中的代码(三种方法)

3.__name__变量
3.1 __name__变量,python解释器会自动维护
3.2 __name__变量,如果直接运行,值是"__main__"
3.3 __name__变量,如果代码是被导入执行,值是 模块名(即代码文件名)

tools:

# 定义一个函数add()  对两个数字进行求和计算
def add(a, b):
    return a + b


# 调用函数
print('在代码中调用函数')
print(add(1, 2))
print(add(10, 20))
print('tools', __name__)

输出:
在代码中调用函数
3
30
tools: __main__

导入tools:

# 需求 调用tools模块中add函数,进行求和计算
import tools   # 导入模块,执行tools模块中的代码
print(tools.add(100,200))

输出:
在代码中调用函数
3
30
tools: tools
300

若导入时不想执行模块中的代码,则用到__ name__

tools模块:


# 定义一个函数add()  对两个数字进行求和计算
def add(a, b):
    return a + b


if __name__ == '__main__':
    # 调用函数
    print('在代码中调用函数')
    print(add(1, 2))
    print(add(10, 20))
    print('tools:', __name__) 

导入tools模块:

# 需求 调用tools模块中add函数,进行求和计算
import tools   # 导入模块,执行tools模块中的代码
print(tools.add(100,200))

输出:300

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEIhomWi-1652009382665)(C:\Users\LIUBO\AppData\Roaming\Typora\typora-user-images\1651909558691.png)]

练习

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9pYppBC7-1652009382665)(C:\Users\LIUBO\AppData\Roaming\Typora\typora-user-images\1651977700619.png)]

注意:

1651977811047

19.4、包(package)

在python中,包是一个目录,只不过在这个目录存在一个文件__init__.py
将功能相近或相似的代码放在一起的。

在python中使用的时候,不需要区分是 包还是模块  使用方式相同

random 模块(单个代码文件)
json 包(目录)

1.import 包名
2.alt+回车  快捷导入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值