python - 在Python中, "A requirement that should be satisfied by the function before it ends."是后置条件的正确定义吗?

标签 python python-3.x factorial design-by-contract post-conditions

“Think Python:如何像计算机科学家一样思考”中,作者将后置条件定义为:

A requirement that should be satisfied by the function before it ends.

他还指出:

Conversely, conditions at the end of the function are postconditions. Postconditions include the intended effect of the function (like drawing line segments) and any side effects (like moving the Turtle or making other changes).

因此,假设我们有一个名为 factorial 的函数,它有一个名为 n 的必需参数,这不是它预期的后置条件它必须(即必须)返回一个正整数,表示从 1n 的数字的乘积? 阶乘结束后这个要求不就满足了吗?

这个定义正确吗?

后置条件定义为“函数结束后应满足的要求”。对吗?

注意:总的来说,我是编程初学者,尤其是 Python。

最佳答案

后置条件是“在函数结束时必须为真的要求”,即:在函数结束的那一刻,并且没有发生任何其他事情,函数的后置条件必须为真。

您书中的定义实际上与此有些一致:如果函数在结束之前满足后置条件,并且该函数不会执行任何会使条件为 false 的操作,那么当然,后置条件在函数结束时为真。

您的定义与此一致,因为在函数结束后,其后置条件必须为真。

我认为这里的主要问题是“满足”这个词的定义。如果我们将“满足条件”理解为“使该条件为真”(这似乎是您的书使用的定义),那么后置条件必须在函数运行时和返回之前的某个时刻变为真,以便它可以在函数执行结束时为 true。如果您将“满足”视为“使条件为真”(这似乎是您使用该词的方式),那么您的定义就有意义 - 在函数结束后,其后置条件必须为真。

语义!

关于python - 在Python中, "A requirement that should be satisfied by the function before it ends."是后置条件的正确定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43528001/

相关文章:

python - Python Matplotlib 动画绘图的更新速度缓慢。我怎样才能让它更快?

python - 解决 Whoosh 索引错误 : Writer is closed

python - 使用 pyudev 只查找磁盘驱动器

python - 对键也是字典的字典键进行排序

python-2.7 - 从没有此类信息构建的 pyd 中检索 Python 版本

r - 是否可以对输出 bigz 对象的函数进行矢量化?

Java:避免阶乘溢出

C#:尽可能高效地将大量文件放入 DVD 的代码

python - 如何更新文本文件而不重写它

python - 如何返回socket.inet_aton中的数字?