【Python4】pythonの文法③<関数編>

それでは下記の記事👇の続きをやっていこう!前回までは<基礎編>ということで基本的な文法について体系的まとめました。今回は<関数編>になります。一緒に勉強していこう🤓

本記事の対象者

○Pythonをこれから勉強していきたい方

○Pythonの文法を詳しく知りたい方

○筆者と一緒に勉強をしていこうって思っている方

関数(function)とは

✔️print(), str(), input(), split() など、<基礎編>で扱ってきたものはPythonのデフォルトの関数
✔️関数は自分で作ることができ、コードを再利用する際にとても便利で楽
✔️”def”(defineの略)ではじめ関数名を定義し、引数を入れる”()”を書き、その後ろに”:”(コロン)を置く
✔️関数内(add)での処理を関数の外で使いたい場合、”return”と書き返り値を定義
✔️関数名は基本、小文字のアルファベットから記述(❌数字❌ _ (アンダースコアから始まると特別な意味を持つため、この後解説))

返り値(return)について

✔️return(返り値)がない関数も作ることができる
✔️returnを明示していない関数は“None”を返している

✔️returnは複数設定することが出来る

引数(parameter)について

✔️引数に渡す値のことをargumentという
✔️argsに引数の変数を定義しすることもできる
✔️argsで指定していなくても、引数にデフォルトの値を定義することで実行可能
✔️キーワードパラメーター(引数定義)は最後にまとめて書かないとエラーになる

*argsと**kwargs

✔️*args, **kwargs: 不特定多数の引数を関数に渡すことが出来る
✔️*args: 関数に渡す時はtuple型、#**kwargs: 関数に渡す時はdictionary型

✔️ *, **: unpacking operatorという
✔️ *→tuple型をunpack ,**→dictionary型をunpack

値渡し(byref)と参照渡し(byvalue)

✔️pythonは基本的に参照渡しである
✔️integer型はimmutableなのでIDは違う値となる

✔️List型はmutableなのでIDは同じ値となる

Type annotation(Type hint)

✔️関数の引数と戻り値の型を指定することが出来る
✔️Pythonは基本的には動的型付け言語なので、ソースコードの開発等で使用される例は少ない

変数のスコープ(scope)

✔️スコープ(scope):変数、メソッド、クラスなどの有効範囲を示す言葉
✔️ローカル変数でグローバル変数を上書きすることはできない
✔️ローカルスコープに変数がない場合はグローバルスコープにある変数を見にいく

✔️ローカル変数をグローバル変数にする時は変数の先頭に”global“をつける
✔️”global”でグローバル関数を書き変えるコードはバグの原因となるためあまり良い書き方ではないz
✔️書き換えられたくないグローバル変数は”大文字“で書くことで書き換え不可を明示的に表現できる

関数のネスト(nested function)

✔️関数の中で関数を定義すること

✔️outer関数で定義した変数はinner関数で使うことが出来る(当然、逆はエラー)

✔️変数の頭に”nonglocal”を付けることでローカル変数から一つ階層が上のグローバル変数にすることが出来る

カプセル化(encapsulation)

✔️外からアクセスできないようにする(情報隠蔽)
✔️実際のコード開発でこの書き方はあまりせず、次に解説するクロージャ(closure)やデコレータ(decorator)のに使用する場合がほとんど

クロージャ(cloaure)

✔️functionもオブジェクトの1つ


✔️nested functionを使って関数を返り値、引数に渡すことも出来る

デコレータ(decorator)

✔️ある関数に機能を付属し、関数を実行するとある機能も動作する
✔️機能の役割をする関数の先頭に、機能させたい関数に@を付けて記述する

✔️デコレータを作成する時は汎用性を高めるため、関数内の引数に*args, **kwargsを置く

再帰関数(recursive function)

✔️再帰関数(recursive function): 関数内で自身の関数をcallする関数

✔️フィボナッチ数列は再帰関数で簡単に表現できる
✔️利点:すっきりしたコードで書くことが出来る
✔️弱点:処理が遅い(余分な計算をしてしまう)
✔️キャッシュを使うように設定すれば弱点を補うことが出来る(後ほど詳しく)

ラムダ関数(lambda)

✔️比較的短く簡略な関数となるときに使う

docstring

✔️関数の説明をダブルコーテーション3つ(“””)で囲むことで表現することが出来る
✔️docstringは様々な書き方があり、開発で決まったルールで書くようにする

これでpythonの文法<関数編>は終了です、いかがだったでしょうか?
僕も様々な本やUdemy講座、日々の業務でPythonを使っているのですが、改めてまとめてみるとかなり勉強になりました!

次回は<モジュール編>についてまとめていきたいと思います☀️

今回はこの辺で、ばいばい👋