pythonicはどういう意味ですか?[閉まっている]


88

多くのWebサイトで、コードがpythonicではない、または同じ目標を達成するためのよりpythonicな方法があるというコメントをよく目にします。

この文脈でpythonicはどういう意味ですか?たとえば、なぜですか

while i < someValue:
   do_something(list[i])
   i += 1

pythonicではありません

for x in list:
   doSomething(x)

pythonicですか?



これはトピック外の質問です。トピックをさらに詳しく説明するために、小さなコードサンプルを提供することもできます。
ρss

回答:


103

Python言語の機能を活用して、明確で簡潔で保守しやすいコードを作成します。

Pythonicとは、構文を正しくするだけでなく、Pythonコミュニティの規則に従い、意図された方法で言語を使用するコードを意味します。

これは、他の回答からのリンクされた記事のように、否定的な例で説明するのがおそらく最も簡単です。非Pythonコードの例は、リスト内包表記やジェネレーター式などのPythonプログラミングパターンを学習する代わりに、CまたはJavaでより一般的に使用されるパターンでクローバーを試みる他の言語のユーザーからのものであることがよくあります。ループは、これの特に一般的な例です。

たとえば、Javaでは

for i in (i; i < items.length ; i++)
 {
  n = items[i];
 ... now do something
 }

Pythonでは、whileループを使用してこれを複製することができますが、使用する方がクリーンです。

for i in items:
  i.perform_action()

または、ジェネレータ式でさえ

(i.some_attribute for i in items)

つまり、本質的に誰かが何かが非Pythonであると言うとき、彼らはコードがpythonのコーディングスタイルにより適した方法で書き直される可能性があると言っています。

import thisコマンドラインで入力すると、Pythonの原則の概要が表示されます。あまり知られていないのは、のソースコードimport thisが明らかに、そして設計上、非Pythonであるということです。してはいけないことの例については、それを見てください。


26
ところで、「import this」のソースコードは次のとおり
Gautam

別の分野の例は何でしょうか?料理、デザイン、運転のように..?
ダニエルスプリンガー

2
いくつかのより複雑なコードの例については、ヴィジュネル暗号の「unpythonic」実装が(:私のコードや意見開示):この回答に次第に「神託」作られstackoverflow.com/questions/2490334/...
ニック・

17
私のユーザー名を指定してここにコメントを残す必要があると思います
Pythonic 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.