今回は,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を(わざわざ)設定しなくて済みます.
0 件のコメント:
コメントを投稿