Python関数
関数は、呼び出されたときにのみ実行されるコードのブロックです。
パラメータと呼ばれるデータを関数に渡すことができます。
関数は、結果としてデータを返すことができます。
関数の作成
Pythonでは、関数はdef
キーワードを使用して定義されます。
例
関数の呼び出し
関数を呼び出すには、関数名に続けてかっこを使用します。
引数
情報は引数として関数に渡すことができます。
引数は関数名の後の括弧内に指定します。引数はカンマで区切るだけで、必要なだけ追加できます。
次の例には、1つの引数(fname)を持つ関数があります。関数が呼び出されるとき、名前を渡します。これは関数内でフルネームを出力するために使用されます。
例
Pythonドキュメントでは、*引数*は*args*と短縮されることがよくあります。
パラメータ、それとも引数?
*パラメーター*と*引数*という用語は、関数に渡される情報という同じものに対して使用できます。
関数の観点から見ると、次のようになります。
パラメーターは、関数定義の括弧内にリストされている変数です。
引数は、関数が呼び出されたときに関数に送信される値です。
引数の数
デフォルトでは、関数は正しい数の引数を指定して呼び出される必要があります。つまり、関数が2つの引数を必要とする場合、それ以上でもそれ以下でも2つの引数を指定して関数を呼び出す必要があります。
例
この関数は2つの引数を想定し、2つの引数を取得します。
例
この関数は2つの引数を想定していますが、取得できる引数は1つだけです。
任意の引数、*args
関数に渡される引数の数がわからない場合は、関数定義のパラメーター名の前に*
を追加します。
このようにして、関数は引数の*タプル*を受け取り、それに応じて項目にアクセスできます。
例
引数の数が不明な場合は、パラメータ名の前に*
を追加します。
Pythonドキュメントでは、*任意の引数*は*argsと短縮されることがよくあります。
キーワード引数
*key = value*構文を使用して引数を送信することもできます。
この方法では、引数の順序は重要ではありません。
例
*キーワード引数*というフレーズは、Pythonドキュメントではよく*kwargs*と短縮されます。
任意のキーワード引数、**kwargs
関数に渡されるキーワード引数の数がわからない場合は、関数定義のパラメーター名の前に2 つのアスタリスク**
を追加します。
このようにして、関数は引数の*ディクショナリ*を受け取り、それに応じて項目にアクセスできます。
Pythonドキュメントでは、*任意のキーワード引数*は**kwargsと短縮されることがよくあります。
パラメータのデフォルト値
次の例は、デフォルトのパラメータ値を使用する方法を示しています。
引数なしで関数を呼び出すと、デフォルト値が使用されます。
例
リストを引数として渡す
任意のデータ型の引数(文字列、数値、リスト、ディクショナリなど)を関数に送信でき、関数内では同じデータ型として扱われます。
たとえば、リストを引数として送信した場合、それが関数に到達した時点でもリストのままです。
例
戻り値
関数に値を返させるには、return
ステートメントを使用します。
例
passステートメント
関数
定義を空にすることはできませんが、何らかの理由で内容のない関数
定義がある場合は、エラーの発生を避けるためにpass
ステートメントを含めてください。
再帰
Pythonは関数の再帰も受け入れます。これは、定義された関数がそれ自体を呼び出すことができることを意味します。
再帰は、数学およびプログラミングの一般的な概念です。関数がそれ自体を呼び出すことを意味します。これには、データをループして結果に到達できるという利点があります。
決して終了しない関数や過剰なメモリやプロセッサ能力を使用する関数を作成してしまう可能性が非常に高いため、開発者は再帰に細心の注意を払う必要があります。ただし、再帰を正しく記述すると、プログラミングに対する非常に効率的で数学的に洗練されたアプローチになります。
この例では、tri_recursion()は、それ自体を呼び出すように定義した関数(「recurse」) です。k変数をデータとして使用し、再帰するたびにデクリメント(-1)します。再帰は、条件が0以下の場合(つまり、条件が0の場合)に終了します。
新しい開発者にとって、これがどのように正確に機能するかを理解するのに時間がかかる場合があります。それを確認する最善の方法は、テストして変更することです。
例
再帰の例
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。