Python中文
首页
教程
问答
标签
搜索
登录
注册
python设计:为什么assert是语句而不是函数?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p><strong>在Python中,<code>assert</code>是一个语句,而不是函数。这是一个深思熟虑的决定吗?将<code>assert</code>作为语句(和保留字)而不是函数有什么好处?</strong></p> <p>根据<a href="http://docs.python.org/2/reference/simple_stmts.html#assert" rel="noreferrer">the</a><a href="http://docs.python.org/3.2/reference/simple_stmts.html#assert" rel="noreferrer">docs</a>,将<code>assert expression1, expression2</code>展开为</p> <pre><code>if __debug__: if not expression1: raise AssertionError(expression2) </code></pre> <p>文档还说“当编译时请求优化时,当前的代码生成器不会为assert语句发出代码。”在不知道细节的情况下,似乎需要特殊情况才能实现这一点。但是,一个特殊情况也可以用来优化对<code>assert()</code>函数的调用。在</p> <p>如果<code>assert</code>是一个函数,则可以编写:</p> ^{pr2}$ <p>但是由于<code>assert</code>是一个语句,元组的计算结果总是<code>True</code>,并且 你得到了</p> <pre><code>SyntaxWarning: assertion is always true, perhaps remove parentheses? </code></pre> <p>正确的写法是</p> <pre><code>assert some_long_condition, \ "explanation" </code></pre> <p>可以说是不那么漂亮。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>除了其他答案(有点离题),还有一个提示。为了避免使用反斜杠,可以在圆括号内使用隐式行连接。;—)</p> <p>而不是:</p> <pre><code>assert some_long_condition, \ "explanation" </code></pre> <p>你可以写:</p> ^{pr2}$
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
1 回答
我想从用户导入值,为此
4 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
1 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
3 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
6 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
1 回答
我想从第一个空lin开始解析文本文件
1 回答
我想从简历、简历中提取特定部分
3 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
2 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
6 回答
我想从网上搜集一些关于抵押贷款的数据
6 回答
我想从网站上删除电子邮件地址
7 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
10 回答
我想从网站中提取数据,然后将其显示在我的网页上
4 回答
我想从网页上提取统计数据。
3 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
1 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
10 回答
我想从课堂上打印字典里的键
3 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
5 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
10 回答