ゆとり大学院生の日常~なんかいいことないかな~

留年と隣り合わせの情報系大学院生の日常。

入門python3 雑記~第4章を読んだ所感~

こんにちは。留年予備軍です。

前回に引き続き入門python3を読み進めているので感じたことを書き残しておきます。

入門 Python 3

入門 Python 3

プログラミング言語をそれほど多く学習したわけではないですが一つでも基本を学んでいると理解のスピードは格段に上がります。

僕自身学部時代にC言語の文法などの基本事項を授業でやっているのでその恩恵を受けているような気がします。(ほかにも色々な言語をつまみ食いしていますがとりあえず割愛で)

ある言語をある程度知ったうえで新たな言語の習得をしようとするとき習得済みの言語との違いを確認していくことと新たな部分を学習することをすればいいので非常に楽になります。

今日pythonを勉強していてC言語と違うなと思ったのはデフォルトで関数に引数値を与えられることでした。 例えば以下のようにfruitの情報を返す関数を定義したとします。

>>> def fruit(name, color = 'red', size):
...     return {'name': name, 'color': color, 'size': size}

この関数fruit()の第2引数にはデフォルトで色の情報'red'が与えられています。こうすることで第2引数を省略しても関数として機能します。また第2引数を新たに与えるとその引数が仮引数として関数に与えられます。

このデフォルト引数を使用する場合の注意点はイミュータブル(変更できない)データ型を与えることが必要です。リストなどのミュータブル(変更可能)なデータ型を使うと思いもよらない挙動をします。 例を挙げると、

>>> def alphabet(append_number, alphabets = []):
...     alphabets.append(append_number)
...     return alphabets
... 
>>> alphabet('a')
['a']
>>> alphabet('a')
['a', 'a']
>>> alphabet('a')
['a', 'a', 'a']

このようにデフォルト引数として同じalphabet()という関数を使っているのに毎回返ってくる値が異なってしまいます。

デフォルト引数を使用するときはデータ型がイミュータブルであることを確認の上使用しましょう!

今日はこの辺で失礼します!