我需要在我的应用程序配置中输入一个http响应代码列表,并希望提供一个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支持某种类似这样的干净语法来定义范围?我需要多个范围。
答案 0 :(得分:5)
在Python 2.x中使用ranges
:
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))
答案 1 :(得分:1)
只需使用范围功能:
vals = range(start, stop + 1)
答案 2 :(得分: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添加到上限值。
答案 3 :(得分:1)
使用范围(n,m + 1),就像很多人建议的那样,有效。但是,您是否需要在内存中创建所有可能的值?
在大多数情况下,您可以使用:
if return_code < 200 or return_code >= 299:
do_something()
或者:
if return_code in range(200, 299+1):
do_something()