第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 / y
IDEで関数を入力するとヒント表示されます。

※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 ・・・新着記事一覧を見る
列全体を指定する時のRangeとColumnsの違い|ツイッター出題回答 (2023-09-24)
シートのActiveXチェックボックスの指定方法|ツイッター出題回答 (2023-09-24)
ByRef引数の型が一致しません。|ツイッター出題回答 (2023-09-22)
シートコピー後のアクティブシートは何か|ツイッター出題回答 (2023-09-19)
Excel関数の引数を省略した場合について|ツイッター出題回答 (2023-09-14)
セル個数を返すRange.CountLargeプロパティとは|VBA技術解説(2023-09-08)
記号を繰り返してグラフ作成(10単位で折り返す)|ツイッター出題回答 (2023-08-28)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-08-24)
ランクによりボイントを付ける(同順位はポイントを分割)|ツイッター出題回答 (2023-08-22)
OneDrive使用時のThisWorkbook.Pathの扱い方|VBA技術解説(2023-07-26)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロとは?VBAとは?VBAでできること|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.条件分岐(IF)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。