[解決済み] ピトニックとはどういう意味ですか?[クローズド]
質問
多くのウェブサイトで、コードはpythonicではない、あるいは同じ目標を達成するためにもっとpythonicな方法があるというコメントをよく見かけます。
ここでいうpythonicとは、どういう意味でしょうか?例えば、なぜ
while i < someValue:
do_something(list[i])
i += 1
not pythonic while
for x in list:
doSomething(x)
はピソニックですか?
解決方法は?
Python言語の特徴を生かし、明確で簡潔、かつ保守性の高いコードを生成します。
Pythonicとは、単に構文が正しいだけでなく、Pythonコミュニティの慣習に従い、その言語が意図された方法で使用されているコードという意味です。
これは、他の回答のリンク先の記事のように、否定的な例で説明するのが一番わかりやすいかもしれません。Pythonicでないコードの例は、リスト内包やジェネレータ式のようなPythonのプログラミングパターンを学ぶ代わりに、CやJavaでよく使われるパターンを取り込もうとする他の言語のユーザからよく出ます。ループは特によくある例です。
例えば、Javaの場合、以下のようになります。
for(int index=0; index < items.length; index++) {
items[index].performAction();
}
Pythonでは、whileループを使用してこれを再現することができますが、次のように使用した方がすっきりします。
for item in items:
item.perform_action()
あるいは、ジェネレータ式でも
(item.some_attribute for item in items)
つまり、誰かが何かを非パイソン的だと言うとき、彼らはそのコードがパイソンのコーディングスタイルにもっと合うように書き直すことができると言っているのです。
タイピング
import this
をコマンドラインで実行すると、Pythonの原則の概要が表示されます。あまり知られていませんが、ソースコードに
import this
は、明らかに、そして意図的に、パイソン的でないのです! 何をすべきでないかの例として、これを見てください。
関連
-
Python カメの描画コマンドとその例
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] Pythonで文字列を反転させる
-
[解決済み] パスワードに応じた文字列をエンコードする簡単な方法?