【Python】基礎を学ばずに実務で使用していたので基礎を学んでみた
前書き
IT業界あるあるの1つだと勝手に思っているのですが、最初に学んだ言語(筆者の場合はjava)は基礎の基礎から学び始めると思うんですが、2つ目、3つ目の言語ともなると基礎を飛ばして実務ぶっつけ本番でググりながら書いてたりしませんか?
筆者の場合はPythonやRがまさにソレだったので、今回はPythonの基礎を学んでみようと思います(基本的には独学用なのでまさにノートですね)。
使用させて頂いた教材①
筑波大学の三谷先生著書の「Pythonゼロからはじまるプログラミング」の副教材がとても分かりやすかったのでこちらを取り上げさせて頂きました。
★ 先生の著書
★ 今回勉強させて頂いた資料(PDFへ飛びます)
https://mitani.cs.tsukuba.ac.jp/book_support/python/python_slides.pdf
基礎から学ぶPython①
筆者のベース言語がjavaなので、javaと差異があるところをベースに読み進めていきます。
細かいところを見たい方は先生のPDF資料を確認ください。当記事では筆者が「こういうのもあるんだ」という備忘録的な感じで記載をしていきます。
変数値の埋め込み
数値を文字に変換してprint文に埋め込む際、これまではstrメソッドで数値を変換していましたがフォーマット文字列というものでコンパクトに記載が出来るらしい。
埋め込みたい変数が多いときは重宝しそうですね。
# strメソッドを使用
print('この銘柄の株価は' + str(price) + '円です')
# フォーマット文字列を使用
print(f'この銘柄の株価は{price}円です')
ラムダ式
javaにも存在するがPythonにも存在するので書き方の備忘として履修。
# 通常の関数
def stocl_price(price):
return f'この銘柄の株価は{price}円です'
# ラムダ式
lambda price: f'この銘柄の株価は{price}円です'
継承
比較的シンプルなPythonコードがメインだったので継承を試したことが無かった(当然あるとは思っていたのだが意外と使っていなかった)。
javaと違って引数のように指定するんですね。
# 親クラス
class A:
~~~~
# 子クラス
class B(A):
~~~~~
例外処理
こちらも実はあまり触れてこなかった部分(データ加工や可視化を主にやってたのでコンソールにエラー出ても個人の範疇で収まってたんですよね)。
javaのtry~catch~finallyと同じ使い方ですね。
try:
~~~~
except ValueError:
~~~~~~
except ZeroDivisionError:
~~~~~~~
finally:
~~~~~~~
使用させて頂いた教材②
こちらは東京大学から無料公開されている「Pythonプログラミング入門」の教材になります。こちらは教材の本体になるので物量としてはかなりボリューミーです。
基礎から学ぶPython②
内包表記
個人的に可読性は下がるんじゃないか?とは思うもののコードの量は下がるので一長一短。個人的には可読性重視。
以下コードの1つ目程度の数式であれば内包表記の方がコード量、可読性も上がるが、2つ目のレベルだと分けて書きたいような心もある。
# 内包表記しない場合
list1 = []
for x in range(5):
list1.append(x**2)
# 内包表記
list2 = [x**2 for x in range(5)]
# 入れ子も可能
[[x*y for y in range(x+1) for x in range(5)]
使用させて頂いた教材③
最後はpandasです。避けては通れないライブラリのため使用経験はあるのですが、経験値がやはり足りないので100本ノックに近い感覚で手に馴染ませていきます。
感想
教材の紹介ページみたいになってしまいましたが、Python入門者としてはこの辺に触れておけば最低限の知識は付くんじゃないでしょうか。
コーディングは一定以上の技量になるとググる力の方が大事な気もしてきますが、基礎の部分はやはり経験がモノをいうと思ってるのでどんどん使って慣れていきたいですね。