【Python】レッスン3-1:関数の基本を理解しよう

Lesson2ではPythonの制御構造について学習してきました。
今回から関数とスコープ編に入ります。このページはその入り口、関数の基本について見ていきます。
Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数とスコープ編
・Lesson3-1:関数の基本を理解しよう ◁今回はココ
・Lesson3-2:関数の戻り値とデフォルト引数を理解しよう
・Lesson3-3:スコープの概念を理解しよう
・Lesson3-4:関数を使いこなそう
・Lesson3-5:無名関数を理解しよう
・練習問題3-1:丁半賭博ゲームを作ろう
・練習問題3-2:石取りゲームを作ろう
Lesson4:データ構造編
Lesson5:オブジェクト指向編
次のステップ:Python基礎習得者にお勧めの道5選(実務or副業)
関数を定義して呼び出す|単独で動作するコードのブロック
def
で関数を定義し、必要なときに呼び出して処理をまとめる――それがPythonの「関数」です。
複雑な処理を小さな部品に分けて名前を付けることで、コードは読みやすくなり、再利用もしやすくなります。
本記事では、関数の基本構文(定義と呼び出し)を中心に、用語や考え方をシンプルに押さえます。
初心者が知りたい「どう書く?どう呼ぶ?どこまで分ける?」という疑問に答える内容です。
まずは基本から。サンプルを動かしながら、手を動かして理解を深めていきましょう。
関数とは何か?|仕組みと定義方法
関数 とは一連の処理をまとめて一つの名前で呼び出すことができる仕組みです。
一つのコードの中で何度も使用する処理を関数として定義しておけば、それを呼び出すだけでその処理を何度でも実行することができます。
これによりコードの見通しが良くなり、保守もしやすくなります。
Pythonで関数を定義するには、def
キーワード を使います。基本的な構文は以下の通りです。
def 関数名(引数): # 新しい関数の定義 処理内容 # この関数の処理内容
def
: 関数を定義するためのキーワードです。- 関数名: 関数の名前です。任意の名前を付けることができますが、分かりやすい名前を付けるのが望ましいです。
- 引数: 関数に渡す値です。引数が不要な場合は空の括弧
()
にします。
例えば、引数として人の名前を受け取り、その名前を使って挨拶文を出力する関数の例を見てみましょう。
def greet(name): # 引数nameを受け取る、greetという名前の関数を定義 print(f"Hello, {name}!") # この関数の処理内容
この関数を実行すると、受け取ったnameを使用して「Hello, name!」と出力されます。
関数の呼び出し方|1つ or 複数の引数を使用する例
定義された関数は、関数名を記述するだけで呼び出すことができます。
先ほど定義した関数greetの場合は、以下のように呼び出すことができます。
greet("Alice") # 事前に定義された関数greetに、引数Aliceを渡して実行
このように関数を呼び出すことで、name
に”Alice”を渡し、greet
関数がHello, Alice!
と出力します。
すなわち事前に関数greetを定義しておくことで、たった1行のコードでそれを使用できるということです。
次にもう少し複雑な例として、引数に2つの数値を取り、それらを足し合わせる関数addを定義してみましょう。
def add(a, b): # 2つの引数aとbを受け取る、addという名前の関数を定義 print(a + b) # この関数の処理内容
この関数は2つの引数a
とb
を受け取り、その合計値を出力します。
add(3, 5) # 関数add_numbersに、2つの引数を渡して実行
関数add_numbers
に3と5を渡して呼び出すと、合計の8が出力されます。
このように、関数を使うことで繰り返し使う処理を簡単にまとめることができます。
- コラム:引数には「実引数」と「仮引数」の2種類がある
-
実引数と仮引数|2種類の引数の違いを理解しよう
関数を理解するうえで重要なのが、実引数(じつひきすう)と 仮引数(かひきすう)の違いです。
まず、仮引数とは関数を定義するときに使われる変数のことです。
関数が呼び出されたときに渡される値(実引数)を受け取るための名前として使われます。
一方、実引数は関数を呼び出すときに渡す具体的な値のことです。
def greet(name): # この name は仮引数 print(f"Hello, {name}!") greet("Alice") # この"Alice"は実引数
仮引数は「受け取る側」、実引数は「渡す側」と覚えておくとわかりやすいでしょう。
代表的な組み込み関数の例と使い方を紹介
Pythonには多くの便利な 組み込み関数 が最初から用意されています。
これらの関数は自分で定義する必要がなくすぐに利用することができます。
以下は、代表的な組み込み関数の例です。
1.print()
: コンソールに文字列や変数の値を表示する関数。
print("Hello, World!") # 出力: Hello, World!
2.input()
: ユーザーからの入力を受け取る関数。
name = input("あなたの名前を入力してください: ") print(f"こんにちは、{name}さん!")
3.len()
: リストや文字列の長さを返す関数。
my_list = [1, 2, 3, 4] print(len(my_list)) # 出力: 4
4.sum()
: リストやタプルなどの数値の合計を計算する関数。
numbers = [1, 2, 3, 4] print(sum(numbers)) # 出力: 10
5.range()
: 一定範囲の整数のリストを生成する関数。
for i in range(5): print(i) # 出力: 0 1 2 3 4
これらの組み込み関数は非常に便利で、プログラミングの効率を大幅に向上させます。
特にprint()
やlen()
などは頻繁に使用されるため、初心者でもすぐに習得できるでしょう。
まとめ
この図は、このレッスン3「関数編」で学習する内容をまとめた図です。
今回は一番上のシンプルな関数の定義と呼び出しについて学びました。(戻り値については次のレッスンで学びます)
本章では、関数の考え方(処理をひとかたまりにする仕組み)、def
による定義、呼び出し方などを確認しました。
これで、よく使う処理を小さな部品に分けて名前を付ける基本の流れを、自分の手で書けるようになります。
コードの重複を減らし、読みやすさや再利用性を高める土台が整いました。
あとは、身近な処理をひとつ選んで関数化し、同じ書き方で別の入力に試すことを繰り返してみましょう。
手を動かすほど、関数設計の勘どころが自然と身につきます。
- サイト改善アンケート|ご意見をお聞かせください(1分で終わります)
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。1分だけ、ご協力いただけますと幸いです。
【Python】サイト改善アンケート
練習問題|関数を使ってみよう
この記事で学習した「関数の基本」を復習する練習問題に挑戦しましょう。
問題|複利計算関数を作ろう
銀行にお金を預けた際、年利を考慮して預けた元金が数年後にどれだけ増えるかを計算するプログラムを作成しましょう。
元金、年利、預ける年数を入力して、関数を使ってその計算結果を画面に表示します。
以下の要件に従ってコードを完成させてください。
- 関数
calculate_and_print_interest
を定義し、元金、年利、預ける年数を引数として受け取ること。 - 関数内で、以下の複利計算式を使って最終的な金額を計算し、乗示すること。
計算式: 最終金額 = 元金 × (1 + 年利 / 100) の (預けた年数)乗 - ユーザーから元金、年利(%)、預ける年数を
input
関数を使って入力させること。 - ユーザーが入力した値を使って、関数を呼び出し、最終的な金額を表示すること。
ただし、以下のような実行結果となるコードを書くこと。
元金を入力してください: 100000 年利(%)を入力してください: 5 預ける年数を入力してください: 10 10年後の預金額は: 162889.46円です。
ヒント|難しいと感じる人だけ見よう
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
1.関数
calculate_and_print_interest
の定義
1-1. 元金、年利、年数の引数を受け取る
1-2. 複利計算の式を使用し、最終金額を計算
1-3. 計算結果を日本語で表示する2.メイン部分
2-1.input
関数を使ってユーザーから元金を入力してもらう
2-2.input
関数を使ってユーザーから年利(%)を入力してもらう
2-3.input
関数を使ってユーザーから預ける年数を入力してもらう
2-4. 関数calculate_and_print_interest
を呼び出す
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
def '''(穴埋め)'''(principal, rate, years): # シンプルな複利計算の式を使用 # 最終金額 = 元金 * (1 + 年利) ** 年数 '''複利の式を用いて final_amount を計算する代入文を書く''' # 計算結果を直接表示 print(f"{years}年後の預金額は: {final_amount:.2f}円です。") # メイン部分 # ユーザーから元金、年利、年数を入力してもらう principal = float(input("元金を入力してください: ")) rate = float(input("年利(%)を入力してください: ")) years = int(input("預ける年数を入力してください: ")) # 関数を呼び出して最終的な金額を計算し、表示する '''(穴埋め)'''(principal, rate, years)
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例|複利計算関数プログラムのサンプルコード
例えば以下のようなプログラムが考えられます。
- 正解コード
-
def calculate_and_print_interest(principal, rate, years): # 最終金額 = 元金 * (1 + 年利) ** 年数 final_amount = principal * (1 + rate / 100) ** years # 計算結果を直接表示 print(f"{years}年後の預金額は: {final_amount:.2f}円です。") # メイン部分 # ユーザーから元金、年利、年数を入力してもらう principal = float(input("元金を入力してください: ")) rate = float(input("年利(%)を入力してください: ")) years = int(input("預ける年数を入力してください: ")) # 関数を呼び出して最終的な金額を計算し、表示する calculate_and_print_interest(principal, rate, years)
解答例の解説|複利計算関数プログラムの考え方
解答例の詳細解説は以下の通りです。
- 詳細解説
-
関数の定義
def calculate_and_print_interest(principal, rate, years):
- この部分は関数を定義しています。必要な引数(
principal
、rate
、years
)を受け取り、その処理を実行します。 principal
,rate
,years
はそれぞれ、元金、年利、預ける年数を表します。
複利計算を行う部分
final_amount = principal * (1 + rate / 100) ** years
- この行は、複利計算を行っています。
principal
(元金)に対して、年利(rate
)を考慮し、数年後の最終的な金額を計算しています。
計算結果を表示する部分
print(f"{years}年後の預金額は: {final_amount:.2f}円です。")
print
関数を使って、計算結果を画面に表示します。f"{years}年後の預金額は: {final_amount:.2f}円です。"
という形式で、years
年後の預金額(final_amount
)を日本語で表示しています。:.2f
は小数点以下2桁まで表示することを意味します。
メイン部分:ユーザーからの入力を受け取る
principal = float(input("元金を入力してください: ")) rate = float(input("年利(%)を入力してください: ")) years = int(input("預ける年数を入力してください: "))
input
関数を使って、ユーザーから元金、年利、年数を入力してもらいます。float
関数は、入力された値を実数(小数を含む数値)に変換します。元金と年利は小数点以下も扱えるようにするためにfloat
を使用します。int
関数は、入力された値を整数に変換します。預ける年数は整数として扱います。
関数の呼び出し
calculate_and_print_interest(principal, rate, years)
この関数が実行されると、金利計算が行われ、最終的な預金額が表示されます。
ここで、先ほど定義した関数
calculate_and_print_interest
を実際に呼び出し、ユーザーが入力した元金、年利、年数を引数として渡します。 - この部分は関数を定義しています。必要な引数(
関数の基本の疑問解消|FAQと用語のまとめ
初心者がつまずきやすいポイントをFAQとしてまとめ、またよく使う専門用語をわかりやすく整理しました。
理解を深めたいときや、ふと疑問に感じたときに役立ててください。
FAQ|関数の基本に関するよくある質問
- Q1. Pythonで関数を定義するメリットは何ですか?
-
関数を定義することで、コードを繰り返し使い回せるため、保守性や可読性が向上します。また、処理を分割することで、プログラムの構造が明確になり、エラーの特定も容易になります。
- Q2. input()で受け取った値を関数に渡すにはどうすればいいですか?
-
input()
で取得した値を変数に格納し、それを引数として関数に渡せば処理が可能です。例えば、user_input = input()
とし、my_function(user_input)
のように使います。
- Q3. 関数名はどう決めればいいですか?
-
関数名はその関数が何をするかが一目で分かるよう、動詞+目的語の形式(例:
calculate_total
など)が望ましく、Pythonの命名規則(スネークケース)に従うのが一般的です。
Python用語集|関数の基本に関する用語一覧
今回の記事で出てきた用語・関数などを一覧で紹介します。
このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。
Python用語 | 定義・使い方の概要 | 解説記事へのリンク |
---|---|---|
関数 | ひとまとまりの処理に名前を付けて再利用可能にしたもの。def で定義される | 本記事 |
引数 | 関数に渡す入力値のこと。関数内の処理に使用される | 本記事 |
実引数 | 関数を呼び出し時に渡す具体的な値 | 本記事 |
仮引数 | 関数定義時に受け取る値の名前で、関数内で実引数の値を扱うために使う | 本記事 |
戻り値(返り値) | 関数の処理結果として呼び出し元に返される値 | Lesson3-2 |
return | 関数の処理を終了し、戻り値を返すためのキーワード | Lesson3-2 |
組み込み関数 | Pythonに標準で用意されている関数。print() や len() などが含まれる | 本記事 |
sum() | 数値の入ったイテラブル(リストなど)の合計値を計算して返す関数 | 本記事 |
print() | 引数に指定した値を画面に出力するための組み込み関数 | Lesson1-1 |
input() | ユーザーからの入力を受け取り、その結果を文字列として返す組み込み関数 | Lesson1-1 |
len() | 文字列、リストなどの要素数(長さ)を返す組み込み関数 | Lesson1-4 |
range() | 連続した整数の列を生成する関数。主に for 文の繰り返し処理と一緒に使用される | Lesson2-5 |