1.异常
异常:当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUG。
1.1捕获异常
基本语法:
try:
可能发生错误代码
except:
如果出现异常则执行的代码
代码示例:
# 尝试以r模式打开文件,如果报错以w模式打开
try:
open('quiz.txt', 'r')
except:
open('quiz.txt', 'w')
1.2捕获指定异常
如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
一般try下方只放一行尝试执行的代码。
基本语法:
try:
可能发生错误代码
except NameError as e:
如果出现异常则执行的代码
代码示例:
try:
print(name)
except NameError as e:
print(e)
1.3捕获多个异常
通过元组的方式进行书写。
基本语法:
try:
可能发生错误代码
except (异常,异常,...) as e:
如果出现异常则执行的代码
代码示例:
try:
1/0
except (NameError,ZeroDivisionError) as e:
print(e)
1.4捕获全部异常
基本语法:
try:
可能发生错误代码
except Exception as e:
如果出现异常则执行的代码
代码示例:
try:
1/0
print(name)
except Exception as e:
print(e)
1.5异常的else和finally语法
1.5.1异常的else
else表示没有出现异常要执行的代码。
基本语法:
try:
可能发生错误代码
except Exception as e:
如果出现异常则执行的代码
else:
没有出现异常执行的代码
代码示例:
try:
1 / 0
except Exception as e:
print(e)
else:
print("无异常")
1.5.2异常的finally
finally表示无论是否出现异常都要执行的代码。
基本语法:
try:
可能发生错误代码
except Exception as e:
如果出现异常则执行的代码
else:
没有出现异常执行的代码
finally:
无论如何都要执行的代码
代码示例:
try:
1 / 0
except Exception as e:
print(e)
else:
print("无异常")
finally:
print("无论如何都要执行")
1.6异常的传递性
当函数func01中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数func02,当func02也没有捕获处理这个异常的时候main函数会捕获这个异常,这就是异常的传递性。
当所有函数都没有捕获异常的时候,程序就会报错。
代码示例:
def func01():
0/1
def fun02():
func01()
def main():
fun02()
main()
2.模块(Module)
模块是一个python文件,能定义函数、类和变量,模块里也能包含可执行的代码。
模块的作用: python中有很多各种不同的模块,每一个模块都可以帮助我们快速的实现一些功能,比如实现和时间相关的功能就可以使用time模块我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能。
2.1模块的导入方式
2.1.1 import 模块名
导入一个模块。
基本语法:
import 模块名
import 模块名1,模块名2
模块名.功能名()
代码示例:
# 导入time模块
import time
# 让程序睡眠5s
time.sleep(5)
2.1.2 from 模块名 import 类、变量、方法等
导入一个模块的指定功能。
基本语法:
from 模块名 import 功能名
功能名()
代码示例:
# 导入时间模块sleep
from time import sleep
# 让程序睡眠5s
sleep(5)
2.1.3 from 模块名 import *
导入模块的所有方法。
基本语法:
from 模块名 import *
功能名()
代码示例:
# 导入模块的所有方法
from time import *
# 让程序睡眠5s
sleep(5)
2.1.4 import模块名 as 别名
将模块导入之后设置一个别名。
基本语法:
import模块名 as 别名
别名.功能()
代码示例:
# 导入time模块,取别名为t
import time as t
# 让程序睡眠5s
t.sleep(5)
2.1.5 for 模块名 import 功能名 as 别名
指定导入模块的功能,取别名。
基本语法:
from 模块名 import 功能 as 别名
别名()
代码示例:
# 导入time模块的sleep功能,取别名为s
from time import sleep as s
# 让程序睡眠5s
s(5)
2.2自定义模块并导入
Python中已经帮我们实现了很多的模块.不过有时候我们需要一些个性化的模块,这里就可以通过自定义模块实现,也就是自己制作一个模块。
新建一个Python文件,命名为my_module1.py,并定义test函数。
模块中的__main__与__all__
__main__可写在自定义模块中进行测试,同时测试部分不会影响到调用这个模块的部分。
def add(a, b):
print(a + b)
if __name__ == '__main__':
add(1, 2)
当一个模块中有all变量时,使用 from 模块名 import *
只会导入all列表中的功能。
all('add1')
def add1(a, b):
print(a + b)
def add2(a, b):
print(a + b)
if __name__ == '__main__':
add1(1, 2)
注意:
- 每个Python文件都可以作为一个模块,模块的名字就是文件的名字.也就是说自定义模块名必须要符合标识符命名规则。
- 当导入不同模块的同一个名的功能,后导入的会将先导入的覆盖。
3.包
3.1python包
- 从物理上看,包就是一个文件夹,在该文件夹下包含了一个__init__.py文件(有这个文件则是python包),该文件夹可用于包含多个模块文件。
- 从逻辑上看,包的本质依然是模块。
包的作用:当我们的模块文件越来越多时,包可以帮助我们管理这些模块。
pycharm新建包:右键文件夹—>New—>Python Package
导入包的三种基本语法:
import 包名.模块名
包名.模块名.功能()
from 包名 import 模块名
模块名.功能()
from 包名.模块名 import 功能
功能()
3.2安装第三方包
3.2.1 cmd安装第三方包
打开命令行,输入pip install 包名
进行第三方包的安装。
pip install 包名
由于pip是连接的国外的网站进行包的下载,所以有的时候会速度很慢。
可以通过如下命令,让其连接国内的网站进行包的安装:
pip install -i 网站链接 包名
pip install -i http://mirrors.aliyun.com/pypi/simple/ 包名
以下是国内的一些包安装的网站链接:
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
3.2.2 pycharm安装第三方包
打开pycharm,看到右下角。
点击python—>选择Interpreter Settings…。
进入页面后可看到已安装的包,选择+号可打开安装第三方包的界面。
界面可进行搜索、选择包的版本、以及使用国内链接下载安装。