Python assert断言声明,遇到错误则立即返回问题

小岛来信
小岛来信
发布时间:2026-10-15| 6人浏览过
原创

本文详解Python中assert断言语句的用法,旨在帮助开发者在深度学习模型开发中提前发现错误。通过示例展示如何利用assert检查变量类型与Shape,并介绍如何为断言添加异常参数以提供清晰的错误信息,包括自定义异常类的实现,提升代码健壮性与调试效率。

assert断言声明,当检测到错误时立即终止并返回问题

在开发深度学习模型的过程中,常遇到模型运行至结束才崩溃,或输出结果与预期不符的情况。

因此,在模型代码中合理使用assert语句至关重要,可用于验证关键变量的数据类型或Shape是否符合要求。

其基本用法如下:

assert expression(此处填入需要判断的内容)

# 等价于
if not expression:
    raise AssertionError

具体示例如下:

以逻辑回归为例,计算z = W的转置乘以X。若样本X包含五个特征,则在设置权重矩阵W时,必须确保其Shape始终为[5,1]。

>>> import numpy as np
>>> w = np.zeros((5,1))
>>> w
array([[0.],
       [0.],
       [0.],
       [0.],
       [0.]])
>>> assert(w.shape == (5,1))
>>> assert(w.shape == (2,1))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

assert断言函数详解

需注意,部分示例代码可能适用于Python 2,在Python 3中可能不完全兼容。

养成使用assert断言的习惯是学习Python的优秀实践。该语句格式简洁,但在程序完善前往往难以预知所有错误点。与其让程序在运行最后时刻崩溃,不如在条件不满足时立即崩溃,此时assert断言便发挥了关键作用。本文主要介绍assert断言的基础知识。

Python assert断言的核心作用

assert断言用于声明某个布尔值必须为真。如果断言失败(即表达式为假),则会触发异常。可以将其理解为“raise-if-not”,用于测试表达式;若返回值为假,则抛出异常。

assert断言语句的标准语法格式

  • Python中assert的具体使用方式?
  • expression(即assert后的表达式)

assert语句用于声明某个条件必须为真。

如果你非常确信某个列表中至少包含一个元素,并希望在不满足此条件时引发错误,那么assert语句是处理此类情形的理想选择。

当assert断言失败时,系统会引发一个AssertionError异常。

以下提供若干assert用法的参考示例。

>>assert 1==1
>> assert 1 == 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

>>assert 2+2==2*2
>>assert len(['my boy',12])<10
>>assert range(4)==[0,1,2,3]
>>> mylist = ['item']
>>assert len(mylist) >= 1
>>mylist.pop()
'item'
>>assert len(mylist) >= 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

如何为assert断言语句添加异常参数?

assert的异常参数允许在断言表达式后附加字符串信息,用于解释断言失败的原因,从而更清晰地定位问题所在。

具体格式如下:

assert expression [, arguments] assert 表达式 [, 参数]

自定义异常处理示例

class ShortInputException(Exception):
    '''自定义的异常类'''
    def __init__(self, length, atleast):
        #super().__init__()
        self.length = length
        self.atleast = atleast

def main():
    try:
        s = input('请输入 --> ')
        if len(s) < 3:
            # raise引发一个你定义的异常
            raise ShortInputException(len(s), 3)
    except ShortInputException as result:#x这个变量被绑定到了错误的实例
        print('ShortInputException: 输入的长度是 %d,长度至少应是 %d'% (result.length, result.atleast))
    else:
        print('没有异常发生.')

main()

以上为个人经验分享,希望能为大家提供参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。