Python 関数の基礎
関数は、Python のプログラミングの基礎を学習した後の次のステップです。 その最も単純な形式では、関数には、常に 1 つまたは複数の値を返すコードが含まれています。 場合によっては、関数には、省略可能な入力や必須の入力があることもあります。
プログラムの他の部分を複製するコードを記述し始めるときは、それが、そのコードを関数に抽出するための絶好の機会になります。 関数を使用して共通コードを共有することは有効ですが、その一部をより小さな (一層読みやすい) 関数に抽出することによって、コードのサイズを制限することもできます。
重複を回避し、より小さな関数を使用して大きな関数を防ぐプログラムは、より読みやすく、かつ保守しやすくなります。 また、正常に動作していない場合のデバッグも簡単になります。
関数が提供する必要があるすべてのものを完全に利用するには、関数の入力に関するいくつかのルールが重要です。
重要
関数が受け取るものを説明するために "入力" という用語を使用していますが、これらの要素は通常、"引数" または "パラメーター" と呼ばれます。 このモジュールでは、一貫性を保つために、入力を "引数" と呼びます。
引数のない関数
関数を作成するには、def
キーワードに続けて名前とかっこを使用し、その後に関数コードを含む本体を指定します。
def rocket_parts():
print("payload, propellant, structure")
この場合は、rocket_parts
が関数の名前です。 その名前の後には、引数が必要ないことを示す空のかっこが続いています。 最後が、4 つのスペースでインデントされているコードです。 この関数を使用するには、かっこを使用して、その名前で呼び出す必要があります。
rocket_parts()
payload, propellant, structure
rocket_parts()
関数は引数を何も受け取らず、ステートメントを出力します。 関数が返す値を使用する必要がある場合は、その関数の出力を変数に割り当てることができます。
output = rocket_parts()
payload, propellant, structure
output is None
True
output
変数の値が None
であることが意外に思えるかもしれません。 これは、rocket_parts()
関数が明示的に値を返さなかったためです。 Python では、関数が明示的に値を返さない場合は、None
が "暗黙的に" 返されます。 この関数を、文字列を出力するのではなく、それを返すように更新すると、output
変数には異なる値が入力されます。
def rocket_parts():
return "payload, propellant, structure"
output = rocket_parts()
output
payload, propellant, structure
関数の値を使用する必要がある場合は、その関数が明示的に返す "必要があります"。 それ以外の場合は、None
が返されます。
Note
常に、関数の戻り値を割り当てる必要はありません。 関数が明示的に 1 つまたは複数の値を返さないときは、ほとんどの場合、返された暗黙的な None
を割り当てたり、使用したりする必要がないことを示します。
必須の引数の省略可能な引数
Python では、いくつかの組み込み関数には引数が必要です。 一部の組み込み関数では、引数を省略可能にしています。 組み込み関数はすぐに使用できるため、それらを明示的にインポートする必要はありません。
引数が必要な組み込み関数の例として any()
があります。 この関数はイテラブル (リストなど) を受け取り、そのイテラブル内のいずれかの項目が True
である場合は True
を返します。 それ以外の場合は、 False
を返します。
any([True, False, False])
True
any([False, False, False])
False
any()
を引数なしで呼び出すと、役立つ例外が生成されます。 このエラー メッセージでは、少なくとも 1 つの引数が必要なことが説明されます。
any()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: any() takes exactly one argument (0 given)
str()
という名前の別の組み込み関数を使用して、一部の関数では省略可能な引数の使用が許可されていることを確認できます。 この関数では、引数から文字列を作成します。 引数が渡されない場合は、空の文字列を返します。
str()
''
str(15)
'15'