python异常、模块与包
异常:就是产生bug,程序运行出现异常
异常的捕获
作用:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段
基本语法:
try:
可能发生错误的代码
except:
如果出现异常执行的代码
实例:(需求:尝试以‘r’模式打开文件,如果文件不存在,则以‘w’方式打开)
try:
f=open('linux.txt','r')
expect(捕获所有异常):
f=open('linux.txt','w')
捕获指定异常:基本语法
try:
print(name)
except NameError(可根据异常类型进行修改) as e(记录异常的具体信息):
print('name变量名称定义错误')
注意事项:如果尝试执行的代码异常和要捕获的异常类型不一致,则无法捕获异常;一般try下方只放一行执行的代码
捕获多个异常:语法:
try:
print(1/0)
exxcept (NameError,ZeroDivisionErrro):
print('ZeroDivision错误...')
捕获所有异常:
try:
f=open('D:/123.txt','r')
except Exception as e:
print('出现异常')
异常else
else表示如果没有异常要执行的代码
try:
print(1)
except:
print(e)
else:
print('我是else,是没有异常时执行的代码')
异常的finally
finally表示无论是否异常都要执行代码,例如关闭文件
try:
print(1)
except:
print(e)
else:
print('我是else,是没有异常时执行的代码')
finally:
f.close()
异常的传递
示例:
def func01(): #异常在func01中未捕获
print('这是func01的开始')
num=1/0
print('这是func01的结果')
def func02(): #异常在func02中未捕获
print('这是func02的开始')
func01()
print('这是func02的结果')
def main(): 异常在主函数中被捕获
try:
func02()
except Exception as e:
print(e)
传递性:当函数func01中发生异常,并且没有捕获处理这个异常时,异常会传递到函数func02,当func02也没有捕获处理这个异常的时候,main函数会捕获这个异常
python模块
模块的导入:
模块:是一个python文件,以.py结尾。模块能定义函数,类和变量也能包含可执行的代码
可认为一个模块就是一个工具包(有着不同的功能)
使用模块前需要导入,语法:
[from 模块名] import [模块|类|变量|函数|*] [as 别名]
常用的组合形式如:
import 模块名;from 模块名 import 类、变量、方法等;from 模块名 as 别名;from 模块名 import 功能名 as 别名;from 模块名 import *
import 模块名
基本语法:
import 模块名
import 模块名1,模块名2
模块名.功能名()
案例:
import time #导入时间模块,可以使用其中的所有功能
print('开始')
time.sleep(1) # 让程序睡眠1秒(阻塞)
print('结束')
from 模块名 import 功能名
基本语法:
from 模块名 import 功能名
功能名()
案例:
from time import sleep # 导入time模块中的sleep方法
print('开始')
sleep(1) # 让程序睡眠1秒
print('结束')
from 模块名 import *
语法:
from 模块名 import * # *号表示可以使用模块中的所有功能
功能名()
案例:
from time import * #导入模块中的所有方法
print('开始')
sleep(1) # 让程序睡眠1秒
print('结束')
as定义别名 #给模块或者功能改个名字
基本语法:
import time as 别名 # 模块定义别名
from 模块名 import 功能名 as 别名
案例:
import time as tt
tt.sleep(1)
print('Hello')
from time import sleep as tt
tt(1)
print('Helo')
自定义模块(自己制作一个模块)
案例:新建一个python文件,命名为my_modelel.py,并定义test函数
_ _ main_ 变量的作用:当自定义模块时,须测试模块功能为了防止在调用模块时影响,使用该语句可以避免
if_name=="main"表示,只有当程序是直接执行的才会进入if内部,如果是被导入,则if无法进入
_ all _ 变量:当一个模块文件中有'all'变量,当使用'from xxx import *'导入时,只能导入这个列表中的元素。
注意:不同模块,同名的功能,如果都被导入,那么后导入的会覆盖先导入的
python包
python包:可看作一个文件夹,在文件夹下包含了一个_init.py文件(包含则是python包,不包含则是普通包),该文件包含多个模块文件,逻辑上认为依旧是模块
第三方包:非python官方内置的包,可以安装它们拓展功能,提升开发雄安率
包:一堆同类型功能的集合体
第三方包可以大大的提升开发效率:
科学计算中常用:numpy包
数据分析中常用:pandas包
大数据计算常用包:pyspark,apache-flink包
图形可视化常用:matolotlib,pyecharts
人工智能常用:tensorflow
如何安装:
在命令提示符内(搜素栏里面输入cmd)
1:pip install 包名称;2:pip install -i https://pypi.tuna,tsinghua.edu.cn/simple 包名称
在pycharm中安装