皆さん、こんにちは。
南波真之(なんばさねゆき)と申します。
私は現在、Pythonについて勉強を進めています。というのも、AIやデータ分析、アプリケーション開発など様々な状況でPythonは活用されており、テクノロジー業界で活躍していくためには必要だと思っているからです。
と言っても、私はエンジニアではない文系の人間です。
「解きながら学ぶ Pythonつみあげトレーニングブック」を使って、Pythonの一番基本的なところを学んでいます。そこで、自分で学習してきて感じたポイントや疑問、皆さんにシェアできることを書いていきます。
今回は、P.144〜P.156の部分になります。
テーマはPythonの関数で使う引数について取り上げます。引数を使いこなせると関数の柔軟さが一気に上がりますので、学習してみました。
Pythonの関数について
まず、関数とは何なのか?について改めて確認していきます。
関数(function)というのは、一連の処理をひとまとめにしたもののことを言います。この関数を予め用意しておき、後はその関数を使うだけで一連の処理をかんたんに利用する事ができます。
学校の数学でも1次関数、2次関数などは必修範囲でしたので y = ax2+bx+cなどの式は見慣れているのではないでしょうか。
関数を具体的な例で見ると、自動販売機の処理を関数にしてみると大まかに以下のようになります。
- お金が入る
- 飲み物のボタンランプが点灯し商品を選べる状態になる
- なにかの飲み物のボタンが押されるとドリンクが出てくる
- お釣りがあればお釣りを計算して返却する
このように様々な処理を機能として1つにまとめているものをプログラミングにおける関数といい、関数名という名前を付けて管理しています。
その関数ですが、 print や int のように予めPython側で用意されておりそれを呼び出して使うケースと、自分で作成するケースがあります。
自分で作成する場合は以下のような書き方をします。
def 関数名(引数1, 引数2, ・・・): 処理1 処理2 ・・・ return 戻り値 |
まず、関数を定義するために先頭にdefを付けます。これはdefine(定義する)という英語の略です。
defの後にはわかりやすい関数名を付けます。この関数名は別のところで呼び出す際に使うものになりますのでわかりやすさ、使いやすさが重要です。そして引数をカッコの中に入れて : (コロン)を入れます。
その後には関数の中の処理を記載し、returnで戻り値を指定します。
今回はカッコの中に入れる引数について学習していきます。
Pythonの関数の引数について
そもそも引数(argument)とは、プログラムや関数に渡す値のことを指します。今回の場合は関数に入れる値のことを指します。とてもシンプルです。
実際に、引数があるとどうなるのかをサンプルで見ていきます。
引数を入れない場合
# 関数を作成 def waiting_place(): print(”’南波です。 駅のコンビニ前に集合でお願いします。”’) # 関数を利用 waiting_place() |
↓(出力結果)
南波です。
駅のコンビニ前に集合でお願いします。
引数を入れる場合
# 関数を作成 def waiting_place(place): print(f”’南波です。 {place}に集合でお願いします。”’) # 関数を利用 waiting_place(‘カフェ・ダイナマイト’) waiting_place(‘母校のグラウンド’) |
↓(出力結果)
南波です。
カフェ・ダイナマイトに集合でお願いします。
南波です。
母校のグラウンドに集合でお願いします。
このように、自分で作る関数になにかの引数を用意しておくと、関数を利用する際にカッコの中に値を入れて関数を使うことができるようになります。
ちなみに今回のサンプルの場合、関数を定義した際に入れた placeという引数を仮引数といい、関数を利用する際に使った カフェ・ダイナマイト などを実引数と呼ぶようです。
この引数ですが、複数で利用することも可能です。その場合はカンマで区切って使用します。
# 関数を作成 def waiting_place(name, place): print(f”'{name}です。 {place}に集合でお願いします。”’) # 関数を利用 waiting_place(‘北村’, ‘カフェ・ダイナマイト’) waiting_place(‘東山’, ‘母校のグラウンド’) waiting_place(‘西島’, ‘ハチ公前’) |
↓(出力結果)
北村です。
カフェ・ダイナマイトに集合でお願いします。
東山です。
母校のグラウンドに集合でお願いします。
西島です。
ハチ公前に集合でお願いします。
位置引数
先程の複数の引数を利用したサンプルのように、先頭から順番に対応する位置の仮引数に値が渡される引数を位置引数といいます。考え方としては順番に値が渡されるためとてもシンプルです。ただ、引数の数が増えてくるとそれぞれの引数の順番を意識して記述していかないと間違えてしまいます。
引数のデフォルト値設定
仮引数には予め関数を作る時点でデフォルトの値を設定することができます。これは、実引数が指定されなかった場合に使われる値となります。作り方は簡単で = を使って指定するだけです。
以下のサンプルでは、 item=’麦わら帽子’ という部分で引数にデフォルトの値を設定しています。そのため、出力結果でitemの値を指定していない西島さんの出力部分がデフォルト値の ‘麦わら帽子’になっています。
# 関数を作成 def waiting_place(name, place, item=’麦わら帽子’): print(f”'{name}です。 {place}に集合でお願いします。 持ち物は、{item}です。”’) # 関数を利用 waiting_place(‘北村’, ‘カフェ・ダイナマイト’, ‘原稿’) waiting_place(name=’東山’, item=’テニスラケット’, place=’母校のグラウンド’) waiting_place(‘西島’, ‘ハチ公前’) |
↓(出力結果)
北村です。
カフェ・ダイナマイトに集合でお願いします。
持ち物は、原稿です。
東山です。
母校のグラウンドに集合でお願いします。
持ち物は、テニスラケットです。
西島です。
ハチ公前に集合でお願いします。
持ち物は、麦わら帽子です。
ちなみに、東山さんのところの書き方を変えています。これはキーワード引数と言って、実引数を指定する際に順番を気にせず、直接仮引数を指定することで関数を利用できます。
可変長引数
最後に、Pythonのコードを見ているとよく出てくる引数についてです。
まずは、タプルの形で渡す可変長位置引数です。引数の数を自由に変えることができるというもので、定義するときにアスタリスクを使うことで0個以上の位置引数がタプルで渡されます。慣例としてこのときの仮引数は args にするようです。
# 関数を作成 def konnichiwa(*args): for arg in args: print(f'{arg}です。こんにちは。’) # 関数を利用 konnichiwa() konnichiwa(‘北条’) konnichiwa(‘北条’, ‘武田’, ‘上杉’) |
↓(出力結果)
北条です。こんにちは。
北条です。こんにちは。
武田です。こんにちは。
上杉です。こんにちは。
次に辞書として渡す可変長キーワード引数です。
引数にアスタリスクを2つつけるとキーワード引数を1つの辞書にまとめられる可変長キーワード引数になります。慣例としてこのときの仮引数は kwargs にするようです。
# 関数を作成 def konnichiwa(**kwargs): print(kwargs) # 関数を利用 konnichiwa(morning=’おはようございます’, afternoon=’こんにちは’, night=’こんばんは’) |
↓(出力結果)
{‘morning’: ‘おはようございます’, ‘afternoon’: ‘こんにちは’, ‘night’: ‘こんばんは’}
関数を呼び出す際にもアンパックが使えます。
実引数として渡すリストやタプルにアスタリスクをつけると、その中の要素を1つずつ関数に渡してくれます。
# 関数を作成 def students(*args): for number, score in enumerate(args, start=1): print(f’出席番号{number}、3ヶ月間の数学の平均点{score}点。’) score_list = [78, 86, 53] students(*score_list) |
↓(出力結果)
出席番号1、3ヶ月間の数学の平均点78点。
出席番号2、3ヶ月間の数学の平均点86点。
出席番号3、3ヶ月間の数学の平均点53点。
関数を使いこなすために引数を理解しよう
今回は、Pythonにおける関数で便利に使える引数に焦点をあてて学習してきました。原理原則はシンプルで、関数に入れる値を引数といい、どのように入れるか、どのように取り出すかのパターンがあるという感じでした。
ぜひ理解してPython学習を進めていきましょう。
インターネット・アカデミーは、Python講座が充実しています。Python認定スクールにもなっているため質の高い知識を得ることができ、基礎学習の先にあるそれぞれの目標を目指していくためには良い場所となります。
よく、「プログラミングは独学でもなんとかなる」という情報もありますが、新しいことを学んでいく際の近道は「プロに教えてもらうこと」です。
インターネット・アカデミーはキャリアサポートも充実しており、一人ひとりに専任のキャリアプロデューサーがサポートしてくれるため中途半端になることがありません。
ご興味ある方は各講座のページを覗いてみてください。無料カウンセリングもできます。
Pythonの基礎からDjangoフレームワークを使ったWebアプリケーションを作りたい方向けの「Python講座」
Pythonを活用したAIプログラミング、機械学習を実装したい方向けの「AIプログラミング講座」
※上記の講座は「解きながら学ぶ Pythonつみあげトレーニングブック」を基にした研修コースではありません。