我有一个返回两种不同类型的函数(bool
和int
):
def limit_reached():
rate_limit = api.GetRateLimitStatus()
if not rate_limit['remaining_hits'] == 0:
return False
else:
return rate_limit['remaining_hits']
基本上,我希望能够调用该函数来查看是否已达到“限制”限制。如果没有,则在继续之前打印剩余的'remaining_hits'
个。
到目前为止,我有这个,但无法弄清楚如何在不再调用'remaining_hits'
函数的情况下高效显示GetRateLimitStatus()
:
if limit_reached():
print "Limit reached. Exiting"
exit()
else:
##Print remaining hits
##Continue...
此外,如果有帮助,我使用的是Twitter API for Python
答案 0 :(得分:4)
在python中,整数“0”等同于“False”。因此,对于Python中的任何和每个真值测试,整数'0'的计算结果为false。
对于我所看到的,您可以调整代码以使用此事实。
希望它有所帮助。
答案 1 :(得分:3)
将结果存储在变量中吗?
remaining = limit_reached()
if not remaining:
print "Limit reached."
else:
print "Remaining:", remaining
P.S。您还可以在达到限制时返回0
...当实际意味着False
时,无需返回0
。
答案 2 :(得分:1)
您应该重新定义limit_reached函数:
def limit_reached():
return api.GetRateLimitStatus()['remaining_hits']
然后像:
remaining = limit_reached()
if remaining: # or 'remaining > 0' if you want to be explicit
##Print remaining hits
##Continue...
else:
print "Limit reached. Exiting"
exit()
答案 3 :(得分:1)
正如评论者指出的那样,返回不同的变量类型是不好的风格。总是返回一个布尔值是相当容易的,如下所示:
def limit_reached():
rate_limit = api.GetRateLimitStatus()
return rate_limit['remaining_hits'] == 0
rate_limit['remaining_hits'] == 0
是一个完整的语句,它将返回一个'true'或'false'值,其结果可以从函数返回。请注意,您确实需要使用两个等号。
如果你需要整数值本身,你总是可以返回它,并在其他代码中测试条件,如下所示:
def limit_reached():
rate_limit = api.GetRateLimitStatus()
return rate_limit['remaining_hits']
if limit_reached() == 0:
print "Limit reached. Exiting"
exit()
else:
##Print remaining hits
##Continue...
或者,你可以利用这样一个事实,即所有数字(整数,浮点数,双数,无关紧要)和精确值0
都被视为false
(其他常数被视为false
包括[]
,()
,''
或“{}” - 请参阅here)。
if limit_reached():
##Print remaining hits
##Continue...
else:
print "Limit reached. Exiting"
exit()
请注意,在这种情况下,条款已被撤销。