2018.09.19スポンサーリンクPythonにはPythonらしいコードの書き方というものがあるようです。これまでもPythonのコードを書いている中で、他のプログラミング言語との違いを感じている人もいると思いますが、Pythonのコードを書く上での超基本的な約束事は最初の頃にやりました。Pythonプログラミングの超基本的な約束事を知っておこう!Pythonプログラミングには他の言語とは少し異なったコードの書きかたをする部分があります。これがPyhonの特徴的なところでもあり、コードの見やすさに繋がる部分でもあります。これに慣れるとPythonがとても効率的に感じられるはずです。code-graffiti.com2018.08.05ここでは、もうちょっと進んでPythonらしいと言われている書き方というか、こういう書き方をすればコードが理解しやすいという書き方に触れていこうと思います。Python自体でもコードの書き方のスタイルルールというものが指針として設けられています。これについてのチェックツールの導入についても合わせて触れておこうと思います。私がしっかりとしたコードが書けているかというとそれは別の話になってしまうのですが、そのあたりはご容赦ください。8読んでわかるコードを書くコードのチェックツールの導入チェックツールのパッケージをインストールおかしなコードでチェックツールを試すpycodestyleでコードチェックflake8でコードチェックpyLintでコードチェックコードを修正するまとめスポンサーリンクPythonのコードはどのように書く?これはPythonに限らないのかもしれませんが、プログラミングのコードは他の人が見たときに何が書いてあるのかがわかりやすいというのが大切です。関数を定義するときにどんな処理を意味しているのか誰が見てもわかるように、関数にdocstringでドキュメントを付けるというようなことも見てきました。【Python入門】関数にdocstringでドキュメントを付けるPythonの関数がどんな内容なのか知りたい時、リファレンスを見るのもいいですが、docstringをシェルなどから直接見ることができます。ここではdocstringの見方と、関数を作った時のドキュメントの付け方を見ていきましょう。code-graffiti.com2018.08.27Pythonの組み込み関数などをhelp()関数を使ってオンラインヘルプのドキュメントを見るることができますよね。このようなPythonコードの書き方をPython自体がガイドラインとして作っています。8」というものがあります。これは、ソースコードは「自分が書いている時間」よりも「人に読まれている時間」の方が長いので、「スタイルを統一して読みやすいコードを書こう」という考えで作られたコーディング上のガイドラインです。上のPEP8のリンク先は英文ですけどPEP8を日本語に訳されたものはこちらにあります。ドキュメントpep8-ja.readthedocs.ioインデントが半角スペース4つといったお馴染みのことなど細かく書かれています。「ああ、そう言う風にするのか」と読んでいて新たな発見があったりします。この通りに書かなくてもプログラミングは動きますが、読みやすいコードであることは他の人がコードをメンテナンスする時だけでなく、自分が読み返す場合でも役立つはずです。一度、目を通しておくのがいいでしょう。8の規約に基づいてコードを書くのは読みやすいコードであることのガイドラインになるのは確かですが、もっとも読みやすいコードとは、ドキュメントが全く書かれていなくても、あるいはドキュメントを細かくチェックしなくても、Pythonのコードを上から読んでいくだけでどんな処理が書いてあるのかがわかるコードでしょう。細かいドキュメントを書かなくても、Pythonのコード自体がドキュメントの内容としてわかる、Pythonのコードを読むだけで他の人が理解できる、そんなコード作成が大切だと言う人もいます。コードはコンピューターが実行する為に読むものですが、同様に人が読むものでもあります。Pythonのコードも他の人が文章を読むように理解できるような書き方をすることが大切です。日本でのプログラミングは、多くの時間を膨大な設計書、マニュアル、ドキュメントの作成に費やすことが多いそうです。海外では設計書やドキュメントの作成に時間をあまりかけずに数ページ程度の簡単な設計書を用意するだけで素早く開発することがよくあるそうです。それは、コード自体が読みやすく意味がわかるように書かれているので、ドキュメントなどの資料がなくても開発している内容がわかるのだそうです。新商品のリストを変数に入れておくのに、「list_1」みたいなものにして、コメントで説明するよりも、「new_item_list」みたいな感じにする方が意味がわかりますよね。計算を実行する関数を定義するときに単に「calc」と簡単に書いてドキュメントで解説するよりも、「tax_calculation」と書く方が一発で読んでわかりますよね。海外のコードを見ると、関数名や変数名などが文章のように読めるようなものがあります。長いコードに見えたりしますが、何について書かれたものなのか確かにわかりやすいです。Pythonのインデントの強制も、綺麗で読みやすいコードを書かせるためもあるので、しっかりと意識して書いてみましょう。いっても、なかなか難しいかもしれませんね。スポンサーリンクコードのチェックツールの導入Pythonには規約に沿ってコードをチェックしてくれるパッケージがあります。このチェックツールをインストールして、自分のコードをチェックしましょう。次の3つのツールをインストールします。pycodestyleflake8(フレークエイトと読むようです)pyLint(ピーワイリントと読むようです)チェックツールのパッケージをインストールここでは、Anacondaを使っているので、condaコマンドでインストールします。パッケージ名でインストールしましょう。pyLintただ、Anacondaをインストールした時に、いくつかすでにインストールされているかもしれません。Anaconda-Navigatorを起動して、そちらから確認してインストールしてもOKです。pipを使ってインストールももちろんできます。pyLintあと、pycodestyleですが、これまではpep8という名前でした。8と混同するのを避ける為に名前が変更されたようです。pep8も使えますが、今度はバージョンアップがこちらでは成されないようなので、pycodestyleを使う方がいいでしょう。おかしなコードでチェックツールを試すそれでは、ちょとおかしなコードを用意して、上記のツールでチェックしてみましょう。順に厳密になるようです。次のようなコードを用意してみました。y:print(i)このコード、意図的におかしな書き方のコードにしています。どこがおかしいか、わかりますかね?コードを実行してみましょう。(ファイル名code_style.pyでAtomで実行しています)無事に出力されていていますし、エラーは出ていません。コードが動くというだけなら問題ないのですが、コードの書き方はおかしいのです。この程度のコードなら変な書き方をしても読めますが、大量のコードになると読みにくくなります。そのあたりを確認するものとしてチェックツールで見ていきましょう。ファイル名」とコマンドを打って利用します。実行するとこうなります。なにやら指摘が4つ表示されているのがわかりますね。コードの1行目は変数xとイコールの間にスペースが複数(ここでは2つ)ある。イコールと値100の間にスペースが無い。3行目は、一番上でモジュールをインポートしていない。8行目のインデントが2つになっていて4つのスペースになっていない。このようにコードのスタイルでおかしな点を指摘しています。flake8でコードチェック同様にターミナルからflake8でチェックしてみます。こちらは、先ほどのpycodestyleよりも指摘が増えています。先ほどと同じ指摘に合わせて、3行目のモジュールのインポートについて、「モジュールが使われていない」と指摘しています。pyLintでコードチェック同じようにpyLintでチェックするとこうなります。pyLintは上二つのチェックよりも厳密ですね。これまでの指摘との違いは、5行目のリストの中にもスペースが余分に入っている点、ドキュメントが無い点、定数として判定されて大文字で無い点(ここは本来はもっと別の書き方をすべきでしょう)などがさらに指摘されて、コードの評価のレイティングが判定されています。スポンサーリンクコードを修正するこれらの指摘を受けたところを、次のようにコードを変更してみました。ドキュメントを入れる。ドキュメントを入れる。インデントを4つのスペースにするこの修正したコードで、pyLintでチェックしてみましょう。コードの修正の指摘はなくなりました。レイティングも10になっています。pyLintの指摘はかなり厳しいので、ここまで修正する必要無い場合もあります。簡単なメソッド定義など説明不要のようなものってあったりしますよね。いうものは説明があるとかえって見づらくなります。コーディング作業上、修正の指摘をそのままにして置いて構わないという場面もあったりすると思います。スタイルの規約に厳密に書くと逆に煩雑になることもありますから、どこまでを修正の基準にするかは各自や作業している仲間の中で決めるべきでしょう。チェックしてもいいのでは無いでしょうかね。スポンサーリンクまとめPythonのコーディングは他の人が読んでもわかるように書くというスタイルが推奨されています。PEP8でコーディングの規約が定められています。ドキュメントを読まなくても、コードを上から下に読んでいくだけで内容がわかるようなコードを心がけるようにしましょう。見やすいだけでなく、具体的に意味のわかる変数名や関数名をつけるのも大切です。コーディングのスタイルをチェックするパッケージとして、pycodestyle、flake8、pyLintがあり、順に厳密さが高くなります。どこまで規約に沿った書き方をするのかを決めておくのも大切です。レベルと出力Pythonを使ってプログラムの実行中に起こった出来事を記録するロギングを扱います。CRITICAL、ERROR、WARNING、NFO、DEBUGのロギングレベルの変更や出力フォーマットの方法、ファイルへの出力について見ていきます。【Python】ロギングのハンドラで要求された処理の実行Pythonのロギングの機能について、ハンドラ(handler)を扱います。ハンドラは、対応すべき処理要求が発生した時にプログラムの流れを中断して要求された処理を実行します。ここではFileHandler()を使って出力処理をしてみます。Cascadesという分類器を使って画像からの顔の検出を扱っていきます。顔の検出と顔認識とは違うことに注意しましょう。ここでは画像からの顔検出とwebカメラの顔検出を行います。Detection)について扱います。エッジ検出とは画像から端の枠線を取り出す手法で、その代表的な手法であるCannyエッジ検出について見ていきます。【Python】scikit-learnの使い方を直線回帰分析で速習scikit-learnはPythonで機械学習が出来るオープンソースのライブラリです。直線回帰のアルゴリズムで使い方を見ていきます。機械学習のアルゴリズムはたくさんあるので公式サイトを見ておくのも有益。統計の知識も今後必要となってきます。f-stringsPythonでprint()を使って文字列を出力するときの色々なフォーマットを見ていきます。Python2系から引き継がれている%sなどや、波括弧{}と.format()メソッド、Python3.6から使えるf-stringsを扱います。Scriptでの開発で承認が必要の表示。notebookの基本的な使い方。【Python】tkinterの使い方入門。Scriptでの開発で承認が必要の表示。notebookの基本的な使い方。【Python】tkinterの使い方入門。CatelinaにAnacondaをインストールする(zshでの不具合対応)スポンサーリンクタイトルとURLをコピーしました。