传送门==>B站黑马python入门教程
目录
1. 异常
异常:当检测到一个错误时,Python解释器无法继续执行,出现错误的提示,这些就是异常,即bug
例如, r模式打开不存在的文件时;
python
f = open('test.txt', 'r')

异常捕获
世界上没有完美的程序,任何程序在运行过程中,都有可能出现异常,导致程序无法正常执行;
那么就需要预先对可能出现的bug进行处理,也就是异常捕获
当我们的程序出现bug,那么就有两种情况:
- 整个程序因为一个bug停止运行;
- 对于bug进行预处理,整个程序继续运行;
捕获异常的作用:提前假设某处出现异常,预先准备,当出现异常时,有后续手段;
基本语法
python
try:
可能出现错误的部分
except:
若出现异常则执行
案例:
python
# 例如, r模式打开不存在的文件时;使用w模式打开文件;
try:
f = open('test.txt', 'r')
except:
f = open('F:/pythonworkspace/startDemo/fileDemopath/test.txt','w',encoding= "UTF-8")
f.close()
捕获指定异常
基本语法
python
try:
print(name)
except NameError as e:
print('name变量名称未定义错误')
注:
- 若尝试执行的代码异常类型与实际要捕获的异常类型不一致时,则无法捕获异常;
- 一般try下方就放一行尝试执行的代码;
捕获多个异常
当捕获多个异常,可以把要捕获的异常类型放在一个元组中;
python
try:
print(name)
print(1/0)
except (NameError,ZeroDivisionError) as e:
print('name变量名称未定义错误')
print('除数不能为0')
print(e)

捕获所有异常
python
try:
print(name)
print(1/0)
except Exception as e:
print("捕获所有可能出现的异常")
print(e)
异常else
如果没有异常时要执行的代码部分;
python
try:
print(name)
except Exception as e:
print(e)
else:
print("没有异常时要执行的部分")
finally
无论有没有异常都要执行的代码部分;
python
try:
print(name)
print(1/0)
except Exception as e:
print(e)
print("捕获所有可能出现的异常")
else :
print("没有异常时要执行的部分")
finally:
print("无论是否有异常都要执行的代码")
异常的传递
异常具有传递性
案例:
当函数
func01()中出现异常,且没有去捕获异常时,此时异常会传递到
func02(),而func02()也没有捕获异常,
main()函数就会捕获异常
python
def func01():
print("func01函数开始")
print(name)
print("func01函数结束")
def func02():
print("func02函数开始")
func01()
print("func02函数结束")
def main():
print("main函数开始")
try:
func02()
except Exception as e:
print(f"main函数捕获处理异常{e}")
print("main函数结束")
main()

注:当所有函数都没有去捕获异常时,程序就会报错
2.模块
模块
模块(Module)
是python文件,以
.py结尾,模块可以定义函数,类,变量,模块里面也可以包含可执行的代码;
模块的作用:python中有很多各种不同的模块,每一个模块都可以帮助我们去快速地实现一些功能,比如实现和时间相关的功能就可以用time模块,
可以将模块看做是工具包,每个工具包有各种不同的工具供我们使用来实现不同的功能;
模块的导入方式
语法:
from 模块名\] import\[ 模块\|类\|变量\|函数\|\*\]\[as 别名
常用的组合形式:
- import 模块名
- from 模块名 import 类,变量,函数
- from 模块名 import *
- import 模块名 as 别名
- from 模块名 import 功能名 as 别名
import 模块名
语法:
import 模块名
import 模块名1,模块名2
模块名.功能名
案例:
导入时间模块后调用方法
python
# 导入时间模块
import time
print("开始")
# 睡眠2秒
time.sleep(2)
print("结束")
使用from 导入 time的sleep函数
python
from time import sleep
print("开始")
sleep(2)
print("结束")
使用 * 导入 time模块中所有的功能
python
from time import *
print("开始")
sleep(2)
# 其他方法
print(time())
print(localtime())
print(asctime())
print("结束")
使用as 给特定功能起别名
python
import time as tm
print(tm.time())
自定义模块
python中已经实现了很多的模块,但是有时需要定制化一些模块
案例:
创建py_self_module1.py文件,作为自定义模块,写个计算两数之和的函数;
python
def test(a,b):
"""
计算两数之和
:param a:
:param b:
:return:
"""
return a+b
# 可以测试模块的功能,
if __name__ == '__main__':
print(test(1,2))
尝试导入且调用函数
python
# 导入自定义模块
import py_self_module1
print(py_self_module1.test(1,2))
案例:
创建py_self_module2.py文件,作为自定义模块,写个计算两数之和的函数;
python
def test(a,b):
"""
计算两数之和
:param a:
:param b:
:return:
"""
return a+b
同时导入自定义的模块1和模块2,调用函数;
python
# 导入自定义的模块1和模块2;
from py_self_module1 import test
from py_self_module2 import test
# 调用函数
print(test(1,2))
注意到实际是调用了自定义模块2的函数;

_ all _
若在模块的文件中有
_all_变量,当使用from xxx import *导入时,只能导入这个列表中的元素;
案例
在自定义模块1py_self_module1.py中用_all_指定可访问的只有test函数时
python
# 指定外部只能访问的内容
_ _all_ _ = ['test2'] = ['test2']
def test(a,b):
"""
计算两数之和
:param a:
:param b:
:return:
"""
return a+b
def test2(a,b):
"""
计算两数之差
:param a:
:param b:
:return:
"""
return a-b
# 可以测试模块的功能,
if __name__ == '__main__':
print(test(1,2))
python
# 导入自定义模块1
from py_self_module1 import *
print(test(1,2))
print(test2(1,2))


3.Python包
自定义python包
python包
- 从
物理上看,包就是文件夹,在该文件夹下包含了一个_init_.py文件,该文件可以用于包含多个模块文件, - 从
逻辑上看,包的本质就是模块
包的作用
当模块文件越来越多时,包可以帮助我们去管理这些模块,包的作用就是包含多个模块,但是包的本质还是模块

案例练习
- 新建
self_package - 在新建包内部,创建
py_self_module1.py和'py_self_module2.py'模块文件 - 模块代码如下
python
def test(a,b):
"""
计算两数之和
:param a:
:param b:
:return:
"""
return a+b

导入包
- 方式1 :
import 包名.模块名
python
import self_package.py_self_module1
- 方式2: from 包名 import 模块名
python
from self_package import py_self_module1
- 方式3: from 包名.模块名 import 模块功能
python
from self_package.py_self_module1 import test
print(test(1,2))
-方式4:_all_=[]控制允许导入的模块功能
注:这个适用于
from ... imoirt *的导包方式
示例:在_init_文件放入
python
__all__ = ['py_self_module1']
安装第三方包
第三方包
由于包可以包含一些Python的模块,而模块中有功能,
那么,一个包就是一堆同类型功能的集合体
在Python的生态中,有许多第三方包可以使用,例如:
- 科学计数常用:
numpy包; - 数据分析常用:
pandas包; - 大数据计算常用:
pyspark,apache-flink包; - 图形可视化常用:
matplotlib,pyecharts包; - 人工智能常用:
tensorflow包;
-pip安装:内置的安装程序命令;
打开命令提示符程序,输入 pip install 包名即可

若安装过慢,可使用镜像源
python
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 包名
PyCharm 内置安装
