我在看彼得·诺维格网站上的一篇文章,他试图回答以下问题(顺便说一句,这不是我的问题)
“我能做相当于(测试)的吗?结果:可选)在Python中?”在
这是他列出的选项之一def if_(test, result, alternative=None):
"If test is true, 'do' result, else alternative. 'Do' means call if callable."
if test:
if callable(result): result = result()
return result
else:
if callable(alternative): alternative = alternative()
return alternative
下面是一个用法示例。在
^{pr2}$
我知道这是如何工作的(我想),但我只是在玩代码,并决定看看当我把上面“事实”定义中的第三个参数改为
n*fact(n-1),也就是说,将其更改为不可调用的表达式。在运行它时,解释器进入一个永无止境的循环。我很清楚为什么会发生这种情况,也就是说,if_u函数返回它所接收的相同表达式。但是这个表达式是什么类型的呢?这到底是怎么回事?我不是在寻找一个详细的解释,而是要寻找一些python的评估模型的指针,这可能有助于我的理解。在
谢谢!在