Pythonの関数にオプション引数(デフォルト引数)を渡す方法をわかりやすく解説
Pythonにおけるオプション引数とは
Pythonでは、関数の引数にデフォルト値を設定できます。引数が省略された状態で関数が呼び出されると、その引数には自動的にデフォルト値が適用されます。これにより、1つの関数で「必須の引数」と「省略可能な引数(オプション引数)」を柔軟に扱えるようになります。
さらに、キーワード引数(名前付き引数)を使えば、引数を任意の順序で指定することも可能です。
基本的なコード例
以下の例では、nameが必須引数、msgとmsg2がオプション引数として定義されています。
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
コードの解説
この例では、msgとmsg2にはデフォルト値が定義されているため、省略可能な引数(オプション引数)です。一方、nameにはデフォルト値がないため、必須引数となります。
- 引数1つで呼び出した場合:
msgは「Good Morning」、msg2は「Come on in」というデフォルト値が自動的に使われます。 - 引数2つで呼び出した場合:
msg2だけがデフォルト値の「Come on in」に戻ります。
キーワード引数で任意の順序を指定する
多くのプログラミング言語では、3つの引数すべてを決められた順序どおりに渡す必要があります。しかしPythonでは、引数名を明示して呼び出すことで、順序を自由に入れ替えられます。
greet("Archie", msg2="Welcome!", msg="Good Evening")
このように記述すれば、msgとmsg2の順番を入れ替えても、それぞれ正しい値が渡されます。引数の数が多い関数ほど、この書き方によって可読性が大きく向上します。
注意点:可変オブジェクトをデフォルト値にしない
リストや辞書などの可変オブジェクトをデフォルト値にすると、関数呼び出しの間で値が共有され、意図しないバグの原因になります。安全に扱いたい場合は、デフォルト値をNoneにしておき、関数の中で初期化するのが定石です。
-
Pythonのラムダ関数(lambda)とは?基本構文と使い方を実例付きで解説
Pythonのラムダ関数(lambda関数)は、実行時にその場で生成される「名前を持たない匿名関数」です。通常、1行で記述され、特定の名前に束縛されることなく定義できます。 ラムダ関数には以下のような特徴があります。 関数の定義をその場で返すことができる return文を含まず、常に式(expression)を評価して結果を返す 関数オブジェクトが期待される場所なら、どこにでもラムダ式を記述できる ラムダ関数を使う場面 ある関数が一度しか使わず、呼び出し箇所も一箇所だけであるような場合、ラムダ関数が便利です。このようなケースでは、わざわざdef文で関数に名前を付けて定義する必要はありません
-
Pythonで関数を引数として渡す方法をわかりやすく解説
Pythonでは、関数もオブジェクトの一つとして扱われるため、他の関数の引数として渡すことができます。この仕組みを活用すると、柔軟で再利用性の高いコードを書くことができます。map()関数を使った例Pythonが標準で提供している代表的な例が、第一引数に関数を受け取る map() 関数です。map(function, iterable, ...) — iterable(イテラブル)の各要素に対してfunctionを適用し、その結果を返します。もちろん、独自に定義したカスタム関数でも、引数として関数を受け取るように実装できます。自作関数sqr(x)を引数として渡すここでは、リストの各要素を2乗す