第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 ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。