Python学习笔记之assert关键字简析

个人博客,支持一下呗!https://raycoder.me
本文首发于Ray's Blog

什么是assert?它的中文名叫做断言。我们先来看一个简单的例子:

age = int(input())
if age>=18:
    print('You can watch it!')
else:
    print('You are too young!')

这个例子进行了一下18G操作,没有达到18岁的人会被拒之门外友善的提示。

不过,我们可以通过assert关键字来实现同等的操作。

>>> age = int(input())
17
>>> assert age >= 18
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    assert age >= 18
AssertionError
age = int(input())
try:
    assert age >= 18
    print('You can watch it!')
except AssertionError:
    print('You are too young!')

这只是一个简单的例子,assert还可以进行更复杂的操作。

引用一段菜鸟教程

assert的语法格式如下:

assert expression

等价于:

if not expression:
    raise AssertionError

assert后面也可以紧跟参数:

assert expression [, arguments]

等价于:

if not expression:
    raise AssertionError(arguments)

如:

>>> assert True     # 条件为 true 正常执行
>>> assert False    # 条件为 false 触发异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
>>> assert 1==1    # 条件为 true 正常执行
>>> assert 1==2    # 条件为 false 触发异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

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

以下实例判断当前系统是否为 Linux,如果不满足条件则直接触发异常,不必执行接下来的代码:

import sys
assert ('linux' in sys.platform), "该代码只能在 Linux 下执行"

# 接下来要执行的代码

可以大大优化我们的代码,也可以减少ifelifelse的使用。

这个关键字也可以作校验用,比如我们从网页上下载了一个代码,可以用assert来断言本地代码与网页代码相同,否则报错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容