Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの関数にオプション引数(デフォルト引数)を渡す方法をわかりやすく解説

Pythonにおけるオプション引数とは

Pythonでは、関数の引数にデフォルト値を設定できます。引数が省略された状態で関数が呼び出されると、その引数には自動的にデフォルト値が適用されます。これにより、1つの関数で「必須の引数」と「省略可能な引数(オプション引数)」を柔軟に扱えるようになります。

さらに、キーワード引数(名前付き引数)を使えば、引数を任意の順序で指定することも可能です。

基本的なコード例

以下の例では、nameが必須引数、msgmsg2がオプション引数として定義されています。

def greet(name, msg="Good Morning", msg2="Come on in"):
    print(f"Hello {name}, {msg} {msg2}")

greet("Archie")
greet("Richie", "How do you do?")

実行結果

Hello Archie, Good Morning Come on in
Hello Richie, How do you do? Come on in

コードの解説

この例では、msgmsg2にはデフォルト値が定義されているため、省略可能な引数(オプション引数)です。一方、nameにはデフォルト値がないため、必須引数となります。

  • 引数1つで呼び出した場合:msgは「Good Morning」、msg2は「Come on in」というデフォルト値が自動的に使われます。
  • 引数2つで呼び出した場合:msg2だけがデフォルト値の「Come on in」に戻ります。

キーワード引数で任意の順序を指定する

多くのプログラミング言語では、3つの引数すべてを決められた順序どおりに渡す必要があります。しかしPythonでは、引数名を明示して呼び出すことで、順序を自由に入れ替えられます。

greet("Archie", msg2="Welcome!", msg="Good Evening")

このように記述すれば、msgmsg2の順番を入れ替えても、それぞれ正しい値が渡されます。引数の数が多い関数ほど、この書き方によって可読性が大きく向上します。

注意点:可変オブジェクトをデフォルト値にしない

リストや辞書などの可変オブジェクトをデフォルト値にすると、関数呼び出しの間で値が共有され、意図しないバグの原因になります。安全に扱いたい場合は、デフォルト値をNoneにしておき、関数の中で初期化するのが定石です。

  1. Pythonのラムダ関数(lambda)とは?基本構文と使い方を実例付きで解説

    Pythonのラムダ関数(lambda関数)は、実行時にその場で生成される「名前を持たない匿名関数」です。通常、1行で記述され、特定の名前に束縛されることなく定義できます。 ラムダ関数には以下のような特徴があります。 関数の定義をその場で返すことができる return文を含まず、常に式(expression)を評価して結果を返す 関数オブジェクトが期待される場所なら、どこにでもラムダ式を記述できる ラムダ関数を使う場面 ある関数が一度しか使わず、呼び出し箇所も一箇所だけであるような場合、ラムダ関数が便利です。このようなケースでは、わざわざdef文で関数に名前を付けて定義する必要はありません

  2. Pythonで関数を引数として渡す方法をわかりやすく解説

    Pythonでは、関数もオブジェクトの一つとして扱われるため、他の関数の引数として渡すことができます。この仕組みを活用すると、柔軟で再利用性の高いコードを書くことができます。map()関数を使った例Pythonが標準で提供している代表的な例が、第一引数に関数を受け取る map() 関数です。map(function, iterable, ...) — iterable(イテラブル)の各要素に対してfunctionを適用し、その結果を返します。もちろん、独自に定義したカスタム関数でも、引数として関数を受け取るように実装できます。自作関数sqr(x)を引数として渡すここでは、リストの各要素を2乗す