page contents

Python中,assert是语句(statement)而非函数(function)

神奇的是,assert根本不按我设想的工作,无论x的值是多少,上面这代码永远都是顺利通过。一通调研,发现踩了一个经典的Python陷阱:assert在Python中是语句(statement),而非函数(function)。因此,上面这行代码正确的写法应该为:

attachments-2026-05-Ta1bX2lJ6a013812892be.png今天写代码,出现了类似下面这样的一行:

assert(x < 5, f"Error: x is not smaller than 5")

神奇的是,assert根本不按我设想的工作,无论x的值是多少,上面这代码永远都是顺利通过。一通调研,发现踩了一个经典的Python陷阱:assert在Python中是语句(statement),而非函数(function)。因此,上面这行代码正确的写法应该为:

assert x < 5, f"Error: x is not smaller than 5"


第一种写法为什么不对?因为Python将

(x < 5, f"Error: x is smaller than 5")

视为一个tuple,因此对于assert而言,它的值永远都是True。

在 Python 中,语句(statement)是 Python 解释器可以执行的单个逻辑指令或动作。语句不会产生可在表达式中使用的值。这与函数调用不同。

什么是表达式?计算结果为某个值的程序表达,例如:x + 5、len(list)、3 > 2。

什么是语句(statement)?执行某个操作但不产生值的指令,例如:print()、if、for、assert等等。

最后,用几个自我回答的问题帮助每一个Python程序员简单判断究竟某个程序表达是语句还是表达式:

1. 该指令是否控制程序流程,例如if, for, while, try等?如果是,那么这指令是语句。

2. 该指令是否进行了目标定义,例如def, class, import等?如果是,那么这指令是语句。

3. 该指令是否进行赋值操作,例如=, +=, -=等?如果是,那么这指令是语句。

4. 该指令是否进行求值操作?如果是,那么这指令是表达式。

Python这语言,魔鬼在细节里。The devil is in details.

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-05-11 10:00
  • 阅读 ( 26 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2059 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 2059 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章