1

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 は、範囲を定義するためにこのようなクリーンな構文をサポートしていませんか? 複数の範囲が必要です。

4

4 に答える 4

5

rangesPython 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

多くの人が提案しているように、範囲(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 に答える