前回の続き
来週からもう一人参加してくれる人が増えるみたいで嬉しいです。
関数
関数の書き方はdefを使う。
def hoge():
print("banana")
これでhogeという関数を呼べば「banana」が表示される関数が爆誕。←意味ない関数だが・・・
()内に引数を書いたり、戻り値returnを書くことも可能。
とここで生徒が「同名の関数で引数違う場合はどうなる?」と質問。
つまりオーバーロードは使えるのかという話。
def hoge():
print("banana")
def hoge(str):
print(str)
hoge() # ←①
hoge("apple") # ←②
これを実行すると①でhoge() missing 1 required positional argument: 'str'とエラーになる。
どうやら標準ではオーバーロードに対応していないらしい。とはいえやり方はあるようなので、知りたい方は他の記事へどうぞ。
ちなみに上の関数定義の順番を入れ替えるとエラーが②の位置で表示される。
※オーバーロードとオーバーライドは別物なので間違えないように。
さらに生徒から「引数にデフォルト値を設定できるのか」という質問が。
def hoge(str = "banana"):
print(str)
hoge() # banana
hoge("apple") # apple
デフォルト値は設定できるようだ。
引数とか戻り値に型指定できないのかという話も出た。
どうやら書けるが、あくまでヒント/アノテーションなので型を強制するものでないらしい。
ヒント無視して書いてもPython自体は動作してしまうので、そうなってしまうと防げない。。。
まとめ
関数はfunc/functionではなくdef。
オーバーロードは標準では使えない。
引数のデフォルト値は設定可能。
型指定ではなく型ヒントレベルでしかない。
これにて一通り基礎は抑えたかなと。
次回からはいよいよ実践?編でエクセルを弄っていく予定。
最近の悩み
色々な言語を触ってるとどう書けばいいか分からなくなるのは私だけでしょうか・・・