素朴な疑問なのですが、if not a in b
とif a not in b
ではどちらが正しい、あるいは好ましい書き方ですか?
PEPや公式ドキュメントに載っているのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
類似した話題で、is notに関する記述ならば有ります。
not ... in と not in についても同じ議論が成り立つので、not in の方が適切かと考えられます。
Use is not operator rather than not ... is. While both expressions are functionally identical, the former is more readable and preferred.
引用元: PEP 8 -- Style Guide for Python Code | Python.org
pycodestyle先生にもお伺いを立ててみました。
>type sample1.py print(1 not in range(3)) >python -m pycodestyle sample1.py >type sample2.py print(not 1 in range(3)) >python -m pycodestyle sample2.py sample2.py:1:7: E713 test for membership should be 'not in'
not inを使え、とのことです。
投稿2019/07/04 07:25
編集2019/07/04 07:45総合スコア35668
0
下記のコードを実行してください
Python
1import dis 2 3dis.dis(compile('if not a in b: pass', '', 'exec')) 4dis.dis(compile('if a not in b: pass', '', 'exec'))
得られる結果から、2つの文法が全く同じ処理をすることが明らかです
Text
1 1 0 LOAD_NAME 0 (a) 2 2 LOAD_NAME 1 (b) 3 4 COMPARE_OP 7 (not in) 4 6 POP_JUMP_IF_FALSE 8 5 >> 8 LOAD_CONST 0 (None) 6 10 RETURN_VALUE 7 1 0 LOAD_NAME 0 (a) 8 2 LOAD_NAME 1 (b) 9 4 COMPARE_OP 7 (not in) 10 6 POP_JUMP_IF_FALSE 8 11 >> 8 LOAD_CONST 0 (None) 12 10 RETURN_VALUE 13
投稿2019/07/04 07:52
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
どっちが正しいかは、実際にコードを書いて実行させればわかることですね
投稿2019/07/04 07:22
総合スコア88038
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/04 08:36
2019/07/04 08:59
2019/07/04 09:12 編集
2019/07/04 09:15
2019/07/04 09:20
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/04 07:43
2019/07/04 07:49