Python中的不同返回类型
我有一个函数,它会返回两种不同的类型(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...
另外,如果有帮助的话,我正在使用 Python的Twitter API
4 个回答
1
正如评论者所指出的,返回不同类型的变量是不太好的做法。其实,始终返回一个布尔值(也就是只有真和假两种可能的值)是比较简单的,像这样:
def limit_reached():
rate_limit = api.GetRateLimitStatus()
return rate_limit['remaining_hits'] == 0
rate_limit['remaining_hits'] == 0
这个表达式会返回一个'真'或'假'的结果,你可以把这个结果从你的函数中返回。注意,你需要用两个等号来比较。
如果你需要返回整数值本身,也可以直接返回这个值,然后在其他代码中进行判断,像这样:
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
的常量还包括 []
(空列表)、()
(空元组)、''
(空字符串)和 {}
(空字典) - 具体可以参考 这里。
if limit_reached():
##Print remaining hits
##Continue...
else:
print "Limit reached. Exiting"
exit()
注意,这里的条件顺序是反过来的。
3
把结果存到一个变量里吗?
remaining = limit_reached()
if not remaining:
print "Limit reached."
else:
print "Remaining:", remaining
另外,当达到限制时,你也可以返回 0
... 其实没必要返回 False
,因为它实际上就是 0
的意思。
4
在Python中,数字'0'和'False'是一样的。所以在Python里,任何时候只要进行真假判断,数字'0'都会被认为是假的。
根据我的观察,你可以根据这个特点来调整你的代码。
希望这对你有帮助。