1

我需要在我的应用程序配置中输入一个 http-response 代码列表,并希望提供一个 python 速记,这样他们就不会列出每个代码。

类似于以下内容:

class settings: 
  success_codes= 200..299        # successful request
  retry_codes= 400..404,500-503  # retry later
  fail_codes = 504,505,506       # don't retry again 

python 不支持像这样的干净语法来定义范围吗?我需要多个范围。

4

4 回答 4

5

ranges在 Python 2.x 中使用,:

success_codes = range(200, 300)
retry_code    = range(400, 405) + range(500, 504)
fail_codes    = range(504, 507)

作为参考,在 Python 3.x 中(也适用于 Python 2.x):

success_codes = list(range(200, 300))
retry_code    = list(range(400, 405)) + list(range(500, 504))
fail_codes    = list(range(504, 507))
于 2013-03-07T22:06:03.607 回答
1

只需使用范围功能:

vals = range(start, stop + 1)
于 2013-03-07T22:06:31.877 回答
1

这适用于所有版本的python

class settings: 
  success_codes = list(range(200, 299 + 1)) # successful request
  retry_codes = list(range(400, 404 + 1)) + list(range(500, 503 + 1)) # retry later
  fail_codes = list(range(504, 506 + 1)) # don't retry again

在早期版本的 python 中,list(range())可以替换为range(). 此外,显然,您可以直接将 1 添加到上限值。

于 2013-03-07T22:07:45.353 回答
1

就像很多人建议的那样,使用 range(n, m+1) 是有效的。但是,您是否需要在内存中创建所有可能的值?

在大多数情况下,您可以使用:

if return_code < 200 or return_code >= 299:
    do_something()

或者:

if return_code in range(200, 299+1):
    do_something()
于 2013-03-07T22:12:56.310 回答