いくつかのデバッグ用のPythonを作成しているうちに、私はクリーンアップしたいという醜いコードを作成したようです。ここでisinstance:セットクラスをより良く管理する方法
は、その全体が機能である:
def debug(message, variable=None):
if variable and DEBUG:
print("\n" + str(type(variable)))
try:
if isinstance(variable, (list, dict, 'OrderedDict')):
variable = json.dumps(
variable,
indent=4,
sort_keys=True
)
except TypeError:
if isinstance(variable, (list, dict)):
variable = json.dumps(
variable,
indent=4,
sort_keys=True
)
if DEBUG:
if variable:
print(message + str(variable) + "\n")
else:
print("\n" + message)
私は特に私のtry-除く声明を軽蔑、私はコードを繰り返していないという理由だけで、私はリクエストからCaseInsensitiveDictのような別の辞書クラス(に実行する場合、ヘッダー)は、出力をデバッグするときにうまく印刷したいので、try-except文をネストする必要があります。
type(variable)
がでisinstanceで使用するためのタプルを作成するときに、それを追加し*dict*
か*list*
のようなものであるならば、私がチェックできる方法はありますか?
'' OrderedDict''は有効な型ではなく、*文字列*です。 –
あなたのコードが例外をスローする唯一の理由は、 'isinstance()'呼び出しで文字列を型として使用したためです。ここにタイプエラーをネストする理由はありません。 –
このロジックの多くを処理するために 'logging'モジュールを使用しているようです。また、なぜインスタンスをチェックし、 'TypeError'が可能性を期待するのかは明らかではありません。 – chepner