私は、スクリプトのデバッグモードのためにいくつかの印刷物を書いています。条件を満たすリスト内の変数の名前を簡潔に表示する方法はありますか?ただ、9000 suggestsとしてPythonでは、条件を満たすリスト内の変数の名前を簡潔に表示する方法はありますか?
specification_aw3 = 43534
specification_hg7 = 75445
specification_rt5 = 0
specification_nj8 = 5778
specification_lo4 = 34
specification_ee2 = 8785
specification_ma2 = 67
specification_pw1 = 1234
specification_mu6 = 0
specification_xu8 = 12465
specifications = [
specification_aw3,
specification_hg7,
specification_rt5,
specification_nj8,
specification_lo4,
specification_ee2,
specification_ma2,
specification_pw1,
specification_mu6,
specification_xu8
]
if any(specification == 0 for specification in specifications):
# magic code to print variables' names
# e.g. "variables equal to 0: \"specification_rt5\", \"specification_mu6\"
、それは辞書を定義すること、私がここで定義されている最小限の作業例について合理的なアプローチであることは言うまでもないです。これは既存のコードプロジェクトの実現可能な選択肢ではなく、デバッグのために使用するコードを素早くコンパクトにすることをお勧めします。
編集:私は
だからここに欲しいものに似た何かのイラストは、私が探しているものの始まりです:基本的に
print("specifications equal to zero:")
callers_local_objects = inspect.currentframe().f_back.f_locals.items()
for specification in [specification for specification in specifications if specification == 0]:
print([object_name for object_name, object_instance in callers_local_objects if object_instance is specification][0])
、何かをするコンパクトな方法がありますこのような?
辞書を使用する必要があります。 –
変数名にはデータを含めないでください。 'specification_xu8'をどこでも' asflaskjflasjflsajfls'で置き換えることができないなら、あなたは間違っています。 – chepner
それはどこですか? –