0

次の行をより良い方法で書くためにアドバイスが欲しいです...

# raise exception in case of backendport or frontendport are not valid
assert len([backend_port['backend']['bport'] for backend_port in self.backend if backend_port['backend']['bport'] == '0']) >= 0, 'backend port not valid: BPNVAL'
assert self.port == 0, 'frontend port not valid: FPNVAL'

バックエンドと呼ばれる辞書に「0」と定義されたポートが少なくとも 1 つあるかどうかを知りたいのですが、そのようにして例外を発生させます。

ありがとう!

4

1 に答える 1

4

最初にバグを修正しましょう>=0。これは常にリストに当てはまります。

len([backend_port['backend']['bport'] for backend_port in self.backend
     if backend_port['backend']['bport'] == '0']) > 0

次に、len通話をスキップします。

[backend_port['backend']['bport'] for backend_port in self.backend
 if backend_port['backend']['bport'] == '0']

このリスト内包表記は、リストが空でない場合に true となるブール式です。しかし、リスト全体は不要でありany、より明確で高速です。

any(backend_port['backend']['bport'] == '0' for backend_port in self.backend)
于 2013-08-13T09:37:53.690 に答える