擅长:python、mysql、java
<p>解决这个问题的最佳方法是使用一个调用函数的函数。你知道吗</p>
<pre><code>def _get_int(prompt):
get_int(prompt)
@try_except(_get_int, ValueError, "Please enter a valid integer!\n>>> ")
def get_int(prompt=">>> "):
return int(input(prompt))
del _get_int
# Or even a lambda
@try_except(lambda p: get_int(p), ValueError, "Please enter a valid integer!\n>>> ")
def get_int(prompt=">>> "):
return int(input(prompt))
</code></pre>
<p>因为<code>_get_int</code>返回调用时<code>get_int</code>返回的内容(即运行时),它将更改为当前的<code>get_int</code>。你知道吗</p>
<p>您可能认为您可以在没有<code>@</code>语法糖的情况下完成它,但这只会调用previous(未修饰)函数,因此它不会递归。你知道吗</p>