Python中的不同返回类型

时间:2012-01-12 21:32:27

标签: python twitter return-type

我有一个返回两种不同类型的函数(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...

此外,如果有帮助,我使用的是Twitter API for Python

4 个答案:

答案 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()

请注意,在这种情况下,条款已被撤销。