Python中的不同返回类型

0 投票
4 回答
2859 浏览
提问于 2025-04-17 10:07

我有一个函数,它会返回两种不同的类型(boolint):

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'都会被认为是假的。

根据我的观察,你可以根据这个特点来调整你的代码。

希望这对你有帮助。

撰写回答