5章統合 関数とは?

5章 関数

5.1 関数とは?

関数の種類

関数ってどんな種類があるのですか?

関数には
①組み込み関数(print, len, range など)
②ユーザー定義関数(def で作るもの)
③ライブラリの関数(標準ライブラリ、外部ライブラリ)
などがあります。

🌱ライブラリに関しては10章で詳しくお話ししますが、以下の種類があります。
①Python標準ライブラリ(math.sin など)
・Pythonに最初から含まれている、インストール不要、 import する必要はある。
②外部ライブラリ(pandasなど)
・最初は入っていない、 pip install pandas が必要、その後 import で使う。

組み込み関数

組み込み関数は、最初からPythonに用意されていて、すぐ使える関数のことです。インポート不要です。Python 3 には 70個以上の組み込み関数があります。

よく使う関数はどんなのがあるのですか?

以下のものはとてもよく使います。覚えておきましょう。

① 出力・入力
print(“こんにちは”)
input(“名前は?”)
print() → 画面に表示
input() → キーボード入力を受け取る

② 数値計算
abs(-5) # 絶対値 → 5
round(3.14) # 四捨五入 → 3
pow(2, 3) # 2の3乗 → 8

③ データの長さ・合計
len([1,2,3]) # → 3
sum([1,2,3]) # → 6
min([1,2,3]) # → 1
max([1,2,3]) # → 3

④ 型(データ型の変換)
int(“10”) # 文字 → 数値
float(“3.14”)
str(123) # 数値 → 文字
list(“abc”) # → [‘a’,’b’,’c’]

⑤ 繰り返しでよく使う
range(5) # 0〜4
enumerate([“A”,”B”])

⑥ 型を調べる
type(100) # int
isinstance(5, int) # True

組み込み関数のまとめ

✔ import不要
✔ どのPython環境でも使える
✔ 基本機能をカバーしている

5.2 よく使う関数のランキング

よく使う関数の順に、使い方を教えてください。

それでは、初心者〜中級者が日常的によく使う順に説明します。

1位~10位(初級者向け)

🥇 第1位 print()
print(“Hello”) → 文字を表示 Hello
print(i) → 変数 i を表示
print(1 + 2) → 計算結果を表示  3
👉 ほぼ毎回使う
デバッグ・確認・表示の基本

🥈 第2位 len()
len([1,2,3]) → 文字数を表示  3
表示する場合は、print(len([1,2,3]))
👉 文字数・要素数を数える
リスト・文字列操作で超頻出

🥉 第3位 range()
for i in range(6): → iを0~5まで繰り返し
for i in range(1,6): → iを1~5まで繰り返し
👉 forループの相棒
繰り返し処理の基本

for i in range(1,4):
    print(i)

出力:

1
2
3

4位 int(), float(), str()
int(“10”) 文字を整数に変換
float(“3.14”) 文字を少数に変換
str(100) 数字を文字に変換
👉 型変換は毎日のように使う

5位 input()
name = input(“名前:”)
入力(input)は文字列になるので、数字として使う場合は変換が必要
👉 学習段階では超重要、Runを一時的に停止することにも使える

6位 sum()
sum([1,2,3]) → 計算結果を表示  5
表示する場合は、print(sum([1,2,3]))
👉 データ処理で頻出

7位 min() / max()
max([5,2,9])
表示する場合は、print(max([5,2,9]))
👉 統計・解析系でよく使う

8位 type()
type(5)
表示結果は<class ‘int’>などで返します。
「これは int 型(整数クラス)」という意味です
👉 エラー対策・学習時に多用

9位 enumerate()
for i, v in enumerate(list_data):
for文との重要コンビです。
👉 リストデータをインデックス付き(番号付き)でループするので便利

list_data = ["A", "B", "C"]

for i, v in enumerate(list_data):
    print(i, v)

出力:

0 A
1 B
2 C

🔹 1から始めたい場合

list_data = ["A", "B", "C"]

for i, v in enumerate(list_data, start=1):
    print(i, v)

出力:

1 A
2 B
3 C

10位 zip()
for a, b in zip(list1, list2):
👉 2つのリストを同時処理

names = ["太郎", "花子", "次郎"]
ages = [20, 18, 25]

for name, age in zip(names, ages):
    print(name, age)

出力:

太郎 20
花子 18
次郎 25

11位以降(中級者向け)

sorted() →並び替え
reversed() →逆順
abs() →絶対値
round() →四捨五入
any() →どれかTrue
all() →全部True
map() →一括変換
filter() →条件抽出
dir() →中身確認
help() →説明表示

5.3 関数と文の違い

for はリストにありませんでしたが、関数ではないのですか?

❌ for は関数ではありません
✅ for は「文(statement)」です

関数と文の違い

✅ 関数(function)

丸かっこ () を使う
値を返す
式として使える

例:
len([1,2,3])
range(5)
print(“hi”)

✅ 文(statement)

プログラムの構造を作る命令
値を返さない
丸かっこは不要

使い方の例:
文 for i in range(5):
関数 print(i)

では for の正体は?

for は、繰り返し構文(ループ構文)です。

🧠 重要ポイント

for は関数ではありませんが、
内部で関数のような仕組みを使っています。

実は:
for i in range(5):
は内部的にこういうことをしています:

it = iter(range(5))
while True:
i = next(it)

つまり:

for → 文
range() → 関数
iter() → 組み込み関数
next() → 組み込み関数
forは裏で関数を使って動いています。

Pythonでの分類

🟢 文(statement)

for
if
while
def
class
import
return
break
continue
pass

🟢 関数(function)

print()
input()
len()
range()
sum()
min()
max()
int()
float()
など

なぜ重要?

この違いを理解すると:
なぜ for() と書けないのか
なぜ if() と書かないのか
なぜ return は関数の中でしか使えないのか
が全部つながります。

5.4 ユーザー定義関数

👉 **「ひとまとまりの処理に名前をつけたもの」**です。

いちばん簡単な例

def hello():
print(“こんにちは”)

これは
def → 関数を作る合図
hello → 関数の名前
() → 引数(今はなし)
: → ここから中身
インデント部分 → 実行される処理

実行するには?

hello()

👉 これで中の処理が実行されます。
関数は「ボタン」です。

helloボタン
↓ 押す(hello())
こんにちは と表示

🔹 引数(入力)を使う関数
def hello(name):
print(f”こんにちは、{name}さん”)

実行:hello(“太郎”)

結果:こんにちは、太郎さん

👉 name が 入力(引数)

🔹 戻り値(return)
def add(a, b):
return a + b

使い方:
result = add(3, 5)
print(result)

出力:8

👉 return は「結果を返す」

まとめ

def: 関数を作る
引数: 入力
return: 結果を返す
関数: まとめた処理

🎯 なぜ関数を使う?

✔ 同じ処理を何回も使える
✔ コードが整理される
✔ バグが減る
✔ 読みやすくなる

🌱 クラスとの違い(超簡単)

関数 → 単体の処理
クラス → データ+処理をまとめる仕組み

ユーザー定義関数

① ユーザー定義関数とは?

一言でいうと、自分で作る関数です。

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

使うとき:

greet(“田村”)

👉 よく使う処理を 名前付きでまとめる ためのもの。

② 基本的な関数の形

def 関数名(引数1, 引数2):
処理
return 戻り値

例:

def add(a, b):
    return a + b

x = add(3, 5)
print(x)

③ 変数の有効範囲(スコープ)

超重要ポイントです ⚠️

def func():
    x = 10
    print(x)func()
print(x) # エラー!

ルール

関数の中の変数 → ローカル変数

関数の外 → グローバル変数

関数の外では中の変数は見えません。

グローバル変数を読むのはOK

x = 5

def func():
print(x) # OK

書き換えるときは注意

x = 5

def func():
global x
x = 10

👉 ただし あまり使わないのが正解
(バグの元)

④ 引数にデフォルト値を設定

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

greet()
greet("田村")

複数ある場合


def power(x, n=2):
    return x ** n

👉 「よく使う値」を省略できて便利。

⑤ 引数の順番ルール

def func(a, b=10, c=20):

デフォルトなし → 先

デフォルトあり → 後

❌ これはダメ:

def func(a=10, b):

⑥ 関数を別ファイル化する(ここが実務っぽい)

ファイル構成例

project/
├─ main.py
└─ utils.py

utils.py

def add(a, b):
return a + b

main.py

import utils
print(utils.add(3, 5))

または:

from utils import add
print(add(3, 5))

⑦ なぜ別ファイルにするのか?

見通しが良くなる
再利用できる
Notebook でも使える
大きなプログラムに自然に拡張できる

👉 src フォルダを見かける理由も、ここにつながります。

⑧ よくある初心者あるある(大事)

❌ Notebook の別セルに書いた関数が消えた?

→ カーネル再起動している

❌ 別ファイルが import できない?

→ カレントディレクトリ問題

(ここも必要なら整理できます)

まとめ(ここだけ覚えればOK)

ユーザー定義関数 = 自分で作る処理の塊
def で定義
変数は関数の中が基本
デフォルト引数で使いやすく
大きくなったら別ファイルへ
import でつなぐ