Python 异常处理、包管理

错误回溯

如果某一段代码有错误,它会一级一级向上抛

def a():
    aaa
def b():
    a()

b()

这段代码运行之后的结果是:

Traceback (most recent call last):
  File "/Users/xiaoya198320/Desktop/things/1029/异常.py", line 6, in <module>
    b()
  File "/Users/xiaoya198320/Desktop/things/1029/异常.py", line 4, in b
    a()
  File "/Users/xiaoya198320/Desktop/things/1029/异常.py", line 2, in a
    aaa
NameError: name 'aaa' is not defined

首先说第 6 行函数 b() 调用的不对,为什么不对呢,第二句话,因为第 4 行函数 b() 定义的时候调用函数 a() 不对,为啥调用 a() 不对呢,第三句话,在第 2 行 有个未被定义的变量 aaa,所以这个错误名字是 name 'aaa' is not defined。根本原因是 aaa 未被定义,然鹅一共报了 3 次错,从第一句话到最后一句话一句句往回找,这就是回溯

有经验了之后,看错误直接看最后一行。如果搞不清楚从头开始看

上述错误找到之后,定义一下变量 aaa 程序即可正常运行,还可以再打印一下

def a():
    aaa = 'hello world!!'
    print(aaa)
def b():
    a()

b()

异常处理

一旦程序报错,就会终止执行,接下来的所有语句都没有机会去执行。如果希望在发生异常之后,接下来的语句还能够继续执行下去,就需要对异常进行处理

try-except

try:  
    # 可能引发异常的代码  
except Exception as e:  
    # 异常处理逻辑  

在程序中把引发异常的代码放进 try 中,用 Exceptoon 进行捕获,存在 e 中,把 e打印出来,之后的 'hello world' 语句就有机会被打印出来

def a():
    try:
        aaa
    except Exception as e:
        print(e)

a()
print('hello world')

name 'aaa' is not defined
hello world

Process finished with exit code 0

常见应用场景:

用户输入验证

x = input("请输入数字:")  
try:  
    x = int(x)  
except ValueError:  
    print("输入错误,请输入数字!")  

文件异常

try:  
    with open('不存在的文件.txt', 'r') as f:  
    print(f.read())  
except FileNotFoundError:  
    print("文件未找到!")  

不同的异常有不同的类型,所有类型的异常都可以被 Exception 捕获到

包管理

包(Package)‌:一组模块的集合,组织多个模块的文件夹,必须包含__init__.py文件用于初始化,通过目录树结构管理模块。‌‌这个目录下面可以有多个模块。它和库的概念比较相似,但更加灵活。包可以包含子包

‌模块(Module)‌:单个.py文件,包含可复用的函数、类等代码单元。‌‌‌其名称就是文件名称(不包括.py后缀)。模块module,这个概念就是Python里的概念,一个模块就是一个py文件,然后包含多行代码执行一个或多个任务,库约等于模块。模块中可以包含变量、函数、类等内容,可以被其他程序引用

库(Library)‌:由多个相关包或模块组成的集合,如NumPy、Pandas等第三方功能集合体

三方库

pip -V  # 版本

pip list  # 查看本地按照的三方库

pip install [package_name]  # 安装包     pip install requests -i 镜像源网址

镜像源名称镜像地址
阿里云https://mirrors.aliyun.com/pypi/simple/
清华大学https://pypi.tuna.tsinghua.edu.cn/simple/
中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣 (douban)https://pypi.douban.com/simple/
华为云https://mirrors.huaweicloud.com/repository/pypi/simple/
腾讯云https://mirrors.cloud.tencent.com/pypi/simple
网易http://mirrors.163.com/pypi/simple/
pip show requests  # 查看三方库的详细信息

pip install -U requests==2.32.4  # 包更新

pip uninstall requests # 包卸载

# 把三方库以及版本号导入到文件中
pip freeze > tongyao.txt   (requirements.txt)

# 怎么安装 tongyao.txt
pip install -r tongyao.txt -i 镜像源网址

参考资料:

python模块,库,包介绍、管理工具pip使用、import导包方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值