第13回.関数の定義(def文)と引数
関数は一連の処理をまとめることで再利用可能にしたものです。
プログラム内の小さなプログラムと言えるものです。
関数は引数を受け取り(引数が無い場合もあります)一連の処理をした結果を返します。
Pythonで関数を定義するには、def文を使用します。
今回は、このdef文について引数の使い方を注進に解説していきます。
目次
def文の構文
引数を取らない関数
def 関数名():
関数内で実行する処理
return 戻り値#常に1~10のシーケンスを返します
def range10():
return range(1,10)()の中に何も書かないことで引数無しの関数になります。
引数を取る関数
def 関数名(引数1, 引数2, ...):
関数内で実行する処理
return 戻り値#2つの引数の掛け算の結果を返します
def mult(x,y):
return x * y引数の指定方法については、後節で詳しく解説します。
関数名、引数名の規則
・記号は_(アンダースコア)のみ使用可能
・1文字目に数字は使えません
・Pythonの予約語は使えません
returnと戻り値
あらゆるデータ型をreturnで返すことができます。

処理はするが戻すべき値が存在しない場合もあります。
そのような場合は、
retun
retun None
またはretunを完全に省略します。

定義した関数は、他のオブジェクト(str,float,list,tuples等)同様に扱う事が出来ます。
関数の呼び出し
関数の定義は、関数を呼び出す行より上の行で定義されている必要があります。
引数を取らない関数
関数名()
()括弧を省略した場合は、関数は実行されません。
対話モードでは、関数の情報が出力されます。

引数を取る関数
関数名(引数1, 引数2, ...)
対話モードでは、関数の情報が出力されます。
ただし省略可能な引数もあります。これについては後節で説明します。

関数オブジェクト
定義することで、関数名のオブジェクトが作成されます。
作成された関数オブジェクトは他のオブジェクト(str,float,list,tuples等)同様に変数に入れて使う事が出来ます。
戻り値ではなく、関数そのものを変数に入れることができます。
()括弧を付けると、関数が実行されて戻り値が変数に入ります。

いろいろな引数指定
位置引数
つまり、仮引数(呼び出し側)と実引数(関数側)の引数の順番が一致します。
これを位置引数と呼びます。

キーワード引数
これをキーワード引数と呼びます。

引数にデフォルト値を設定(=値)
デフォルト値は、関数を呼び出す時に仮引数が省略された場合にその値になります。
・実引数が省略された場合はデフォルト値

位置のみ引数(/)
関数呼び出し時に、位置引数でしか使用できない引数指定があります。
つまり、キーワード引数が使えなくなります。
通常は使うメリットは無いと思いますが、組み込み関数では使われているものがあります。
/より前に指定した仮引数が全て位置のみ引数になります。
以下はIDLEになります。

キーワードのみ引数(*)
つまり、この場合は位置引数が使えなくなります。
*より後に指定した仮引数が全てキーワード引数になります。

可変長の位置引数(*args)
仮引数名に*を付けることで可変長の位置引数になりますが、通常は*argsを使用します。
*argsが指定できる場所は、他の位置引数より後ろデフォルト値の引数より前です。
ただし、通常は最後の引数で使う事になります。
引数が省略された場合は空のタプルを受け取ります。

可変長のキーワード引数(**kwargs)
仮引数名に**を付けることで可変長の位置引数になりますが、通常は*kwargsを使用します。
**kwargsが指定できる場所は一番最後の引数です。
引数が省略された場合は空の辞書を受け取ります。


引数リストのアンパック
リスト、タプル、辞書を展開して位置引数として渡すことができます。
辞書を展開して、キーと値をキーワードと値としてキーワード引数で渡すことができます。

関数のDocstring
docstringは"""(三連ダブルクォート)で記述をはじめ、"""(三連ダブルクォート)で終わります。
docstringは、IDEでヒント表示されたり、help()関数で内容を出力することができます。。
def div(x,y):
"""x/yを計算して返します。
:param x: 分子
:param y: 分母
:return:x / y
"""
if y == 0:
return
return x / yIDEで関数を入力するとヒント表示されます。

※Visual Studio 2019

同じテーマ「Python入門」の記事
第10回.タプル(tuple型、イミュータブル)
第11回.辞書(dict型)
第12回.組み込み関数一覧
第13回.関数の定義(def文)と引数
第14回.関数内関数(関数のネスト)とスコープ
第15回.lambda(ラムダ式、無名関数)と三項演算子
第16回.Pythonの引数は参照渡しだが・・・
第17回.リスト内包表記
第18回.例外処理(try文)とexception一覧
第19回.import文(パッケージ・モジュールのインポート)
第20回.フォルダとファイルの一覧を取得(os,glob,pathlib)
新着記事NEW ・・・新着記事一覧を見る
セル数式における「再帰」の必要性|エクセル雑感(2025-11-10)
掛け算(*)を使わない掛け算|足し算(+)を使わない足し算|エクセル関数応用(2025-11-10)
配列を自在に回転させる数式|エクセル関数応用(2025-11-09)
非正規化(カンマ区切り)の結合と集計:最適な手法は?|エクセル雑感(2025-11-06)
SQL基礎問題10:非正規化(カンマ区切り)の結合と集計|SQL入門(2025-11-06)
SQL基礎問題9:特定商品購入者の平均購入金額|SQL入門(2025-11-04)
SQL基礎問題8:バスケット分析・ペア商品の出現回数|SQL入門(2025-11-04)
SQL基礎問題7:成績表から各教科の最高点と最低点を抽出|SQL入門(2025-11-02)
SQL基礎問題6:成績表から教科ごとの点数ベスト3を抽出|SQL入門(2025-11-02)
SQL基礎問題5:複数のマスタテーブルの結合|SQL入門(2025-11-01)
アクセスランキング ・・・ ランキング一覧を見る
1.生成AIパスポート試験 練習問題(四肢択一式)|生成AI活用研究
2.最終行の取得(End,Rows.Count)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.RangeとCellsの使い方|VBA入門
7.FILTER関数(範囲をフィルター処理)|エクセル入門
8.日本の祝日一覧|Excelリファレンス
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
