Python で関数を定義するためのキーワードは def です。たとえば、my_function という関数を定義するには、次のように定義できます。括弧内の x と y は渡されるパラメーターです。
def my_function(): # function body
戻り値
この関数はキーワード return を使用してデータを返すことができます。関数が戻るまで実行されると、戻り、関数は実行されなくなります。 return ステートメントのない関数は、デフォルトで None を返します。
return none は return と省略できます。
空の関数
何も行わない関数を定義したい場合は、 pass ステートメントを使用できます。
たとえば、
def do_nothing() pass
pass はプレースホルダーとして機能します。この関数の特定の内容を定義する必要がない場合は、 pass を使用できます。
パラメータチェック
前回の記事では、組み込み関数が渡されたパラメータの数とデータ型をチェックすることを紹介しました。では、Python はカスタム関数をどのように処理するのでしょうか?
関数を定義します
def my_function(x,y): return x*y
Call: my_function(1,2,3)
Error:
Traceback (most recent call last): File "/Users/W/Code/Python/LearnPython/DataType.py", line 4, in <module> my_function(1,2,3) TypeError: my_function() takes exactly 2 arguments (3 given)
Call: my_function(1,"abc")
Error: エラーメッセージは返されません。実際、my_function によって渡される 2 つのパラメータが整数と浮動小数点数であることが望ましいと考えています。
関数にパラメータチェックを追加します
my_function にいくつかの変更を加えます。
def my_function(x, y): if not (isinstance((x,y),(int,float)) and isinstance(y,(int,float))): raise TypeError('Bad operand type') return x*y
このとき、my_function関数を呼び出して間違ったパラメータを渡すと、TypeErrorがスローされます。
関数は複数の値を返します
Python は複数の値を返すことをサポートしています。 Python は実際にタプルを返すことによってこれを実装します。簡単なデモを通じてそれを検証できます:
def func(): return 2, 3 print func()
は (2,3) のようなタプルを出力します。
構文に関しては、タプルを返すときに括弧を省略できます。つまり、複数の変数が同時にタプルを受け取り、位置に応じて対応する値を割り当てることができます。たとえば、
x,y = func() です。