ハシカケ-実現したいことから学べるプログラミングサイトプログラミングを実現したいことから逆算して学べるサイトです。2020.05.15Pythonでコードを書いたけれど、長くなって読みにくい。いう時はコードを関数化すると読みやすく、管理しやすくなります。基本的には30行から50行程度のコードでも、処理や変数が複数登場するコードは関数化するとメリットが多いです。積極的に関数化していきましょう。同じ処理が出てくる場合それを何度も書かなくてよくなるコードを読む人がより処理を理解しやすくなるコード修正時に関数単位で修正すればいいので負担が減る変数が複数ある場合、変数を修正の度に複数個所を変更しなくて済むので楽ちんなど色々あります。同じ変数を複数個所に書いたり、同じ処理をコピーして何度も書くことはプログラムを書く際にはバグの温床となりやすいため避けたほうがよいので、繰り返し同じ処理が出てくる場合には関数にするのがベターです。書きやすくなり、読みやすくなり、修正しやすくなるということで恩恵は大きいです。Pythonを学びはじめたうちは、どうやって関数化すればいいのかの流れが分からないという方も多いです。そこで、今回は自分の書いたコードを関数化する方法についてシンプルに解説していきます。今回、関数化するコード1機能単位で関数化する。結論から言うと、関数化の流れは以下3段階に分けて考えると分かりやすいです。1処理単位ではなく、機能単位でひとまとまりにして関数化する。2繰り返し入力しないといけない「変数」を見つけてそれを関数の引数にする3実行部分を書く上記のような流れで関数化していきます。1についてですが、一つ一つの処理単位であんまり細かく関数化してしまうと、修正する際にその関数の数だけテストする必要が出てくるので大変になってきます。機能単位で処理をまとめて関数化するようにするのがコツです。これだけだと分からないので具体的に見ていきます。今回、関数化するコード今回説明に使っていくのは下記のコードとなります。ワークブックをExcelファイルとして保存wb.save(str(title)+'.xlsx')なお、ここではコードの意味が分からなくても関数化する流れだけ分かるように解説していきます。上記コードはURLから株価を取得して、その値をエクセルに書き出して保存するコードになります。それでは関数化する流れを見ていきます。1機能単位で関数化する。コードをざっと見ると「URLから株価をスクレイピングで取得している部分」と、「エクセルファイルを使って取得した株価を保存している部分」に機能を分けることができますよね。このように機能単位をひとまとめにして関数化するのがコツです。(もしもコードの順番がごちゃごちゃになっている場合はまず機能単位にコードをまとめる作業をします。)では、機能単位で関数化していきましょう。soup.find_all('tr')まずはこれを関数化します。Pythonでの関数の定義は下記のような形でしたよね。この形にしていきます。関数名はなんでもいいですが、今回はとりあえずstock_valueにします。soup.find_all('tr')とりあえず返り値を返さない形で書いてみました。取り出した株価のall_trは次の関数の中でエクセルに記入したいのと、次のエクセルの処理の中で変数titleを使うので、all_trとtitleを返り値にしてあげる必要があります。ポイント今作っている関数より下のコードで現在の関数内の処理で得られる値が必要な場合は返り値をその得られる値にします。そのように修正すると、下記のようになります。title次にエクセルファイルに書き込む部分する関数化していきます。関数名はmake_excelとします。今回は、エクセルに何を書き込むのか?の「何を」の部分を関数の引数とします。引数名は何でもいいです。stock_listとします。この引数は実際には先ほど作ったstock_value関数の返り値を受け取ることになります。wb.save(str(title)+'.xlsx')エクセルファイルに保存して終わりなので、返り値はいりません。こんな感じで2つの処理のコードの関数化ができました。title下記の変数の部分が関数の外に出てしまっています。調べたいデータの年号こういう形で関数の外に出ている変数をグローバル変数と言います。グローバル変数は関数の引数にしたほうが管理が楽ですし、コードが複雑になった場合に支障が少なくなります。titleこうなります。あとはここまでをまとめてみます。wb.save(str(title)+'.xlsx')こうなりますね。このままだと実際には何も実行されないので、次は実行部分を書きます。3実行部分を書く最後は実行部分を書いていきます。関数の引数に実際に値を入れていくだけです。今回は2019年の銘柄コードが6875のメガチップスの株価を取得してエクセルに保存しようと思います。make_excel(stockvalue)上記のようになります。'__main__':の意味についてはを読んでみて下さい。'__main__':の次に続く処理はインデントしてあげる必要があります。下記のようになります。make_excel(stockvalue)実行部分だけを見るとすごくシンプルになったことが分かりますね。これでコードの運用をより楽にすることができました。実際に実行してみるとちゃんと株価がエクセルに出力されて保存されました。まとめ書いたコードを関数化する時にやることは以下の流れになります。1処理単位ではなく、機能単位でひとまとまりにして関数化する。2繰り返し入力しないといけない「変数」を見つけてそれを関数の引数にする3実行部分を書く関数化の流れは以上です。慣れてきたら細かい手順をショートカットして関数化できるようになっていきますのでぜひ試してみて下さい。そんな時はPythonのsubprocessモジュールを使うと便利です。subprocessモジュールのPopen()関数では、Pythonから他のアプリケーションを実行...PythonPythonのSeleniumでWebブラウザ自動操作する基礎からの使い方チートシートSeleniumライブラリでは、PythonからWebブラウザを自動制御することができます。クリック操作やキーボード入力もできるので、ID・パスワードを入力して会員制サイトに自動ログインすることも可能です。どこを操作したいか?・どん...PythonPythonで画像にテキストを入れて複数のアイキャッチを一括で作るプログラム今回のPythonのプログラムは複数の画像にテキストを一気に入れて、アイキャッチ画像を作るプログラムです。実は、このブログのアイキャッチも全部プログラムで一気に作っています。「Pythonをインストールしたはいいけれど、ライブラリをまともに使ったことがない。本記事は、こんな悩みを持ったPython初学者のための内容です。そもそもライブラ...PythonPythonでMicrosoftの画像認識APIを利用して、適切な説明を自動でつけるプログラム今回ご紹介するPythonのプログラムは、Pythonで画像認識APIを利用して、インターネット上の画像データに適切な説明を自動でつけるプログラムです。VisionのAPIキーの取得の方法を解説していきます。このAPIキーを取得すると、画像認識AIを用いて画像に自動で名前を付けたりすることが可能になります。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ハシカケとは?Hashikakeハシカケは、改善したい、効率化したいなどの実現したいことからプログラミングを学ぶことができるサイトです。今回、関数化するコード1機能単位で関数化する。ハシカケ-実現したいことから学べるプログラミングサイト.ホーム検索トップサイドバーハシカケとは?Hashikakeハシカケは、改善したい、効率化したいなどの実現したいことからプログラミングを学ぶことができるサイトです。今回、関数化するコード1機能単位で関数化する。2繰り返し入力しないといけない「変数」を見つけてそれを関数の引数にする3実行部分を書くまとめタイトルとURLをコピーしました。