Categories: python

Pythonの引数を完全理解!初心者にもわかる関数の使い方と応用例

Pythonでプログラミングを始めると、すぐに登場するのが「関数」と「引数」です。
関数にデータを渡して処理するための仕組みが引数であり、柔軟なコードを書くために欠かせない要素です。

本記事では、Pythonの関数における引数の基本から、デフォルト引数、可変長引数、キーワード引数、アンパックなど、さまざまな使い方までを丁寧に解説します。
初心者にもわかりやすく例を交えて説明するので、これを読めば「引数って結局どう使えばいいの?」という疑問が解消されるはずです。


関数と引数の基本

Pythonでは関数をdefキーワードで定義します。引数とは、関数を呼び出すときに渡す「値」のことです。

def greet(name):
print(f"こんにちは、{name}さん!")

greet("太郎") # こんにちは、太郎さん!

上記のように、nameという引数に「太郎」という値を渡すことで、関数内の処理が動作します。引数は関数内でローカル変数として使えます。


デフォルト引数の使い方

引数にデフォルト値を設定することで、呼び出し時に値を省略できるようになります。

def greet(name="ゲスト"):
print(f"こんにちは、{name}さん!")

greet() # こんにちは、ゲストさん!
greet("花子") # こんにちは、花子さん!

このように、値を渡さなければ"ゲスト"が使われ、渡せばその値に置き換わります。
よく使う引数にはデフォルトを設定しておくと、使い勝手が良くなります。


キーワード引数で明示的に渡す

引数をキーワード付きで指定すると、順番を気にせず渡すことができます。

def profile(name, age, city):
print(f"{name}さんは{age}歳で、{city}に住んでいます。")

profile(age=30, city="東京", name="健一")

順序がバラバラでも、キーワードをつけることで正しく渡されます。
関数に多くの引数があるときに、間違いを減らせる便利な方法です。


可変長引数:*argsと**kwargs

Pythonでは、引数の数が可変な関数も定義できます。

*args(複数の位置引数をまとめる)

def show_items(*args):
for item in args:
print(f"アイテム: {item}")

show_items("りんご", "バナナ", "みかん")

このように、*argsは複数の引数をタプルとして受け取ります。

**kwargs(複数のキーワード引数をまとめる)

def show_profile(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

show_profile(name="花子", age=25, city="大阪")

**kwargsはキーワード引数を辞書として受け取る形です。


引数のアンパック(展開)について

逆に、リストや辞書の内容を関数に渡すときにも***を使って展開できます。

リストの展開(*)

def add(a, b, c):
print(a + b + c)

values = [1, 2, 3]
add(*values) # 6

辞書の展開(**)

def describe(name, age):
print(f"{name}さんは{age}歳です。")

info = {"name": "次郎", "age": 28}
describe(**info)

このように、すでにあるデータ構造を関数に渡すときに便利です。


引数の順番に注意

関数を定義するとき、引数の並び順にはルールがあります。

(位置引数, デフォルト引数, *args, キーワード専用引数, **kwargs)

例えば、以下は正しい例です:

def sample(a, b=10, *args, c, **kwargs):
pass

この順番を守らないと、構文エラーになります。キーワード専用引数(Python 3.8以降の*以降の引数)は特に注意が必要です。


Pythonの引数に関するよくあるエラーと対処法

1. 引数の数が合わない

def greet(name):
print(f"こんにちは、{name}さん!")

greet() # TypeError: greet() missing 1 required positional argument: 'name'

→ デフォルト引数を使うか、呼び出し時に値を忘れずに渡しましょう。

2. キーワード引数を誤る

def greet(name):
print(f"こんにちは、{name}さん!")

greet(username="花子") # TypeError: greet() got an unexpected keyword argument 'username'

→ 関数が受け取れる引数名と一致しているか確認すること。


実用的な引数の活用例

例1:ログ出力関数の柔軟な引数指定

def log(message, level="INFO", *, timestamp=True):
from datetime import datetime
if timestamp:
print(f"{datetime.now()} [{level}] {message}")
else:
print(f"[{level}] {message}")

log("アプリケーションが起動しました")
log("エラーが発生しました", level="ERROR", timestamp=False)

キーワード専用引数(*以降)を使うことで、柔軟かつ安全な引数指定ができます。


まとめ

Pythonの引数は単なる「データ渡し」にとどまらず、プログラムの柔軟性と読みやすさを高める大切な構文です。
基本の位置引数やデフォルト引数に始まり、キーワード引数や可変長引数、アンパックといった応用まで、知っておくことでコードの幅が一気に広がります。

Pythonに慣れてくると、引数の設計がそのまま関数の使いやすさに直結することがわかってきます。ぜひ、実際のコードで今日学んだことを試してみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。

Recent Posts

C#でテキストファイルに書き込む方法を徹底解説!

プログラムからテキストファイル…

13時間 ago

比例と反比例を完全マスター!中学生にもわかる関数の基礎入門

数学の世界において「比例」と「…

13時間 ago

中学生でもわかる!一次方程式の解き方を丁寧に解説

数学の中でも「方程式」は、避け…

13時間 ago