011 Pythonで関数を作る方法

2022/03/18

紹介/Python

t f B! P L

今回は,Pythonで関数を作る方法を紹介します.これは,後々ご紹介予定の,ラッパー関数を作るためです.ラッパー関数をつくることで,PyVISAパッケージを使った測定機器のコマンドの送受信が,非常に分かりやすくなります.

Pythonで関数を作る方法は,他のプログラミング言語と同じようにします.
    def twice(val):
        return 2*val
ていう具合に,
    def 関数名(引数1, 引数2, ...):
        関数の処理
という様式で関数を定義します.

他のプログラミング言語との違いは,

  • 頭にdefをつける(これが関数の定義を表します)
  • defで始まる行の最後はコロンを付ける(付け忘れに注意)
  • 関数の処理部分はインデント(Pythonはカッコを使わずインデントで構造を表します)

となることです.

さらにもう一つ,デフォルト引数を使うと,ラッパー関数がより便利になります.
デフォルト引数というのは,例えば,下記に示す電圧を設定する関数set_voltageを定義する際に,電圧の単位を示す引数unitのデフォルト値(='V')を決めてしまうことです.
    def set_voltage(vol, unit='V'):

上記の関数set_voltageでは,引数unitを省略して呼び出した場合,unitにデフォルト値の'V'が設定されているものとして処理されます.

つまり,
    set_voltage(0.5)
としたのは,
    set_voltage(0.5, 'V') # 電圧は0.5[V]
とするのと同じであるということです.

通常の電圧の単位は'V'で,時々'mV'を使う場合は,デフォルト引数を使った関数だと,'mV'を使う時だけ,
    set_voltage(200, 'mV')
と,電圧の単位をすれば良いことになります('mV'の時だけ単位を指定するので,逆に目立って,判別しやすいメリットもあります)

では,このようなケースはどうでしょうか.
出力する波形の種類(form)と,電圧(vol),電圧の単位(unit)の3個の引数を持つ関数outputがあるとします.
波形の種類はデフォルト引数で'PULSE',電圧の単位もデフォルト引数で'V'として,下記のように定義しました.
    def output(vol, form='PULSE', unit='V'):

ここで,電圧の単位を'mV'にしたい時,
    output(200, 'mV')
とするのは残念ながらダメです(デフォルト引数formの方に'mV'が設定されてしまいます).
    output(200, 'PULSE', 'mV')
としなくてはなりません.このままだと,デフォルト引数が複数個あるケースは,あまり便利だとは言えなくなってしまいます.

でもご安心下さい.Pythonは,デフォルト引数の他に,キーワード引数というのもあります.
キーワード引数キーワードとは,関数を定義する際に記述した,引数名そのもので,上記の関数outputでは,vol, form, unitが該当します.

Pythonでは,このキーワードを使って,関数の引数を設定することができるのです.
キーワード引数を使って,関数outputの電圧の単位が'mV'となるように呼び出すには,
    output(200, unit='mV')
とします.これなら,デフォルト引数formを(わざわざ)設定しなくて済みます.



このブログを検索

自己紹介

C++やC#を使って数値解析プログラムの開発を長年行ってきました.
今は,Pythonを使った自動処理システムの開発をメインに行っています.

QooQ