python学习之路 - python的异常、模块与包

一、python的异常、模块与包

1、了解异常

当程序检测到一个错误,python解释器就无法继续执行,则会提示一些错误信息,这就是异常。
程序运行过程中,不能直接将异常信息返回给用户,所有需要捕获异常

当访问一个不存在的文件时,会提示如图的异常信息
在这里插入图片描述

2、异常的捕获方法

a、捕获基本异常
写法一:
try:
	可能发生错误的代码
except:
	出现异常显示的代码
else:							#else这部分可省略
	没有异常时想继续执行的代码
finally:						#finally这部分可省略
	无论是否有异常都要执行

写法二:
try:
	可能发生错误的代码
except Exception as e:
	出现异常显示的代码
#捕获程序异常
try:
    f = open('C:/Users/HLY/Desktop/noFile.txt','r',encoding='utf-8')
except:
    print("文件打开异常")

结果:
文件打开异常
b、捕获指定异常
try:
	可能发生错误的代码
except 异常名 as e:
	出现异常显示的代码
#捕获文件不存在的异常
try:
    f = open('C:/Users/HLY/Desktop/noFile.txt','r',encoding='utf-8')
except FileNotFoundError as e:
    print("文件不存在")
    print(e)

结果为:
文件不存在
[Errno 2] No such file or directory: 'C:/Users/HLY/Desktop/noFile.txt'
c、捕获多个异常
写法一:
try:
	可能发生错误的代码
except (异常名1,异常名2...) as e:
	出现异常显示的代码

写法二:
try:
	可能发生错误的代码
except 异常名1 as e:
	出现异常显示的代码
except 异常名2 as e:
	出现异常显示的代码
...
d、捕获异常后的finally

如果捕获异常后,try模块中的程序不会执行错误信息之后的代码,如果想要不管程序是否报错都要执行,则后面加finally

try:
	可能发生错误的代码
except:
	出现异常显示的代码
finally:
	无论是否有异常都要执行的内容
#打开文件后必须要关闭文件
try:
    f = open('C:/Users/HLY/Desktop/noFile.txt','r',encoding='utf-8')
except FileNotFoundError as e:
    #文件如果不存在则创建文件
    print("文件不存在")
    f = open('C:/Users/HLY/Desktop/noFile.txt', 'w', encoding='utf-8')
finally:
	print("我也执行啦!")
    #关闭文件资源
    f.close()

结果:
文件不存在
我也执行啦!

3、异常的传递

  • 当多个函数之间调用时,如果底层函数未捕获异常,则会传递到上层函数,一直到有捕获异常的函数处抛出指定的信息
  • 如果所有函数都没有捕获异常,则程序会输出报错信息
  • 所以,如果多个函数之间调用时,要捕获异常最简单的方式只需要在最上层的函数捕获异常即可

4、python模块

a、定义
  • python模块是一个python文件,以.py结尾,模块能定义函数,类和变量,也能包含可执行的代码
  • 可以导入模块后,直接用其中已经定义好的函数
  • 如果多个导入的函数名一样,后面的会将前面的覆盖
b、基础语法
[from 模块名] import [模块 || 变量 | 函数 | *] [as 别名]

[]在这里表示可选

常用的组合形式:

  • import 模块名
  • from 模块名 import 类
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名
c、使用方法

导入内置模块time中的所有函数,并使用sleep()函数

#写法一
import time     	#导入内置的time模块
time.sleep(1000)    #调用time模块中sleep函数,此种方法需要加time.才能使用sleep函数

#方法二
from time import *		#导入内置的time模块所有函数
sleep(1000)				#直接调用sleep函数,此种方法可直接调用sleep

导入内置模块time中的sleep()函数,并使用此函数

from time import sleep    #导入内置的time模块中的sleep函数
sleep(1000)   			 #调用time模块中sleep函数

导入内置模块time中的sleep()函数,别名为t

from time import sleep as t
t(1000)
d、补充

如果模块A中定义了_ _all_ _,那么模块B以 import * 的方式引入时,只会引入_ _all_ _中定义的函数,不会引入模块A中的全部函数

# moduleA
__all__ = ['test_A']
def test_A():
	print('testA')
def test_B():
	print('testB')

#moduleB
from moduleA import *
#此时这里只能用test_A函数

5、python包

a、定义
  • 物理层面的角度,python包就是一个文件夹,此文件夹下包含__init__.py文件和各种.py文件,包的本质依然是模块
  • 文件夹下有__init__.py文件,则为python包,无此文件则为普通的文件夹
b、操作方法
  1. 打开Pycharm软件,选择根目录鼠标右键
  2. 选择New
  3. 选择Python Package
    在这里插入图片描述
  4. 设置包名,点击enter键
    在这里插入图片描述
  5. 会自动出现下图红框中的内容
    在这里插入图片描述
c、使用方法
  1. 创建python包,名为module
  2. 新建module1.py模块,定义函数module_A
def module_A():
    print("This is module A")
  1. 新建module2.py模块,定义函数module_B
def module_B():
    print("This is module B")
  1. 包外面的其他模块中调用定义的函数
#写法一
import module.module1
import module.module2
module.module1.module_A()
module.module2.module_B()

#写法二
from module import module1,module2
module1.module_A()
module2.module_B()

#写法三
from module.module1 import module_A
from module.module2 import module_B
module_A()
module_B()

#写法四
#第一步:在包的__init__模块中添加__all__的配置
__all__ = ['module1','module2']
#第二步:其他模块中*号形式调用
from module import *
module1.module_A()
module2.module_B()

6、安装第三方python包

a、命令符方式安装
  1. 打开电脑命令提示符程序
    • 方法一:电脑左下角输入“命令提示符”,选择即可
    • 方法二:windows+R快捷键,输入cmd,点击确定即可
  2. 执行
    • pip install 包名称(此种方法连接的是外网,所以速度很慢)
    • pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称(此种方法连接的是国内网站,速度快一些)
# 安装第三方numpy包
#方法一
pip install numpy		#此种方法连接的是外网,所以很慢
#方法二
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
b、pyCharm方式安装
  1. 打开pyCharm软件,右下角点击如图①的位置
  2. 选择interpreter Settings
    在这里插入图片描述
  3. 点击如图+号
    在这里插入图片描述
  4. 在输入框中输入想要安装的第三方包名,如图查询的是numpy
  5. 右下角Options中输入 -i https://pypi.tuna.tsinghua.edu.cn/simple
  6. 点击左下角的install Package
    在这里插入图片描述
  7. pyCharm右下角可以看到安装进程
    在这里插入图片描述
  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值