您好,
我试图 return_3 , return_6 和 return_9 来检查 all_return_values_func <返回的总值是否< / strong>高于20.问题是,当我运行脚本 return_3 时,它会立即打印&#34;返回值的总数太高&#34;。
为什么 all_return_values_func / return_value 计算出第一次 return_3 运行时大于20?
脚本的目的是从每个return_3 / return_6 / return_9脚本开始,并使这些函数中的每一个都添加到函数 all_return_values_func 中,如果超过20,则稍后检查该函数值在函数 return_value
from sys import exit
import time
def all_return_values_func():
combined_return_values = return_3() + return_6() + return_9()
return combined_return_values
def return_value(i):
if i > 20:
print "The value is above 20"
time.sleep(2)
exit()
def return_3():
return_value(all_return_values_func)
print "Returns integer value: 3 and then jumps to function: return_6"
time.sleep(2)
return_6()
return 3
def return_6():
return_value(all_return_values_func)
print "Returns integer value: 6 and then jumps to function: return_9"
time.sleep(2)
return_9()
return 6
def return_9():
return_value(all_return_values_func)
print "Returns integer value: 9"
time.sleep(2)
return_3()
return 9
return_3()
干杯,
西蒙
答案 0 :(得分:0)
问题在于:
return_value(all_return_values_func)
您未在all_return_values_func
调用return_value()
,因此您正在比较函数本身是否大于20.在Python 2.x中,您正在使用,这总是如此:任何函数都大于任何整数。 (这种比较在Python 3.x中引发了一个错误,这是一个不那么神秘的错误。)
解决方案是实际调用函数:
return_value(all_return_values_func())
但是,这并不是一个真正的解决方案,因为调用该函数会导致程序进入递归循环。 all_return_values_func()
调用return_3()
调用all_return_values_func()
调用调用return_3()
的{{1}} ...当堆栈达到1000个调用时,Python将抛出all_return_values_func()
深。
你的程序似乎没有做任何有用的事情,甚至没有多大意义。也许在继续之前解决这个问题。