関数

ある特定の処理を行うプログラムの部品を関数といい、関数名()のようにして呼び出す。ごく基本的な機能や汎用性のある関数は標準ライブラリや外部ライブラリから利用できるが、無い場合は自作する。

  1. 関数の種類(利用手順による分類)
  2. 組み込み関数の呼び出し
  3. 関数の引数
  4. 組み込み関数以外の関数呼び出し import文
  5. 組み込み関数の一覧
  6. 関数の作成
  7. 戻り値
  8. 戻り値の定義 return文
  9. メソッド

関数の種類(利用手順による分類)

標準ライブラリはPythonに付属しているのですぐに使える。ライブラリの分類詳細


組み込み関数の呼び出し

標準ライブラリのうち組み込み関数なら関数名()のようにするだけで呼び出せる。プログラムの同じファイル内で自ら定義した関数を呼び出すときも同様。

関数名()

関数の引数

関数に渡す情報(引数)があれば()内に入れる。引数として典型的にはオブジェクトを渡す。引数が複数ある場合は,で区切る。

関数名(引数)
関数名(引数1, 引数2)

関数の入れ子

下記のように入れ子にした関数は、まず関数2が実行されて、その戻り値が引数として関数1に渡され、関数1が実行される。

関数1(関数2())

組み込み関数以外の関数呼び出し import文

関数は特定のモジュールに含まれている。組み込み関数以外の関数を利用する際は、まずファイルの冒頭などにおいてimport文でモジュール名を指定しておき、実際に呼び出すところではモジュール名.関数名()のようにする。

import モジュール名
モジュール名.関数名(引数)

また、そもそも外部ライブラリに属する関数については、ダウンロードなど追加設定をしておく必要がある。


組み込み関数の一覧

下記はよく使う組み込み関数。すべての組み込み関数の一覧は公式サイトへ


bool関数

bool()は、真理値を判定する組み込み関数。空文字や空の要素の判定にも使える。

# 空文字・空要素・0・NoneはFalseとなる
空 = ''
print(bool(空))
空 = []
print(bool(空))
print(bool(0))
print(bool(None))

float関数

float()は、"1.5"のように文字列となっているデータ型を小数値に変換(戻り値)する組み込み関数。

例えばinput()で受け取ったキーボード入力は文字列なので、そのままでは計算に利用できない。

入力 = input() # 数値を入力しても文字列扱い
print(float(入力) + 0.5)

print(入力 + 0.5) # こうするとエラー

help関数

help()は、主に対話モードで実行する組み込み関数で、ヘルプシステムが起動する。そこで調べたいモジュール名やオブジェクト名を打つと、その説明を参照できる。

# 対話モードで
>>> help()

# プロンプトが「help>」に変わる。
# randomモジュールについて調べたいとき、
help> random

# 文字列オブジェクトについて調べたいとき、
help> str

# 元の対話モードに戻る
help> quit

input関数

input()は、標準入力(キーボード入力)からの文字列を受け取る組み込み関数。関数実行で端末入力待ちになり、その後改行が行われるとプログラムに戻り、1行分の入力文字列を受け取る。数値が入力されても文字列扱いとなる。

入力 = input()
print(入力)

int関数

int()は、"10"のように文字列となっているデータ型を整数値に変換(戻り値)する組み込み関数。

例えばinput()で受け取ったキーボード入力は文字列なので、そのままでは計算に利用できない。

入力 = input() # 数値を入力しても文字列扱い
print(int(入力) + 5)

print(入力 + 5) # こうするとエラー

小数点以下は切り捨てとなる。

print(int(1.99999)) # 1

len関数

len()は、文字数やリストなどの要素数を調べる組み込み関数。

入力 = input()
print(len(入力)) # 入力の文字数

リスト = ['Python', 'HTML', 'Java']
print(len(リスト)) # リストの要素数

max関数

max()は、最大値を返す組み込み関数。

print(max(100, 1, 10)) # 100

min関数

min()は、最小値を返す組み込み関数。

print(min(100, 1, 10)) # 1

open関数

open()は、ファイルの読み書きに使う組み込み関数。詳しくはファイル操作へ


pow関数

pow()は、累乗の計算をする組み込み関数。下記は2の10乗。累乗は関数の代わりに演算子**を使ってもいい。

print(pow(2, 10)) # 1024
print(2**10) # 1024

print関数

print()は、端末画面に文字列を表示(標準出力)する組み込み関数。デフォルトで最後に改行が行われるが、改行させない場合は後ろの引数をend=""とする。下記は1行で「HelloWorld!」と出力。

print("Hello", end="") # 改行なし
print("World!")

標準エラー出力

標準エラー出力(端末画面にエラーとして文字列を表示)とするなら、引数にfile=sys.stderrを付ける。

import sys
print("エラー発生", file=sys.stderr)

range関数

range()は、指定範囲の整数列を生成する組み込み関数で、特にfor文で使う。

for i in range(5):
  print(i) # 0から4

for i in range(10, 15):
  print(i) # 10から14

for i in range(20, 30, 3): # ステップを3
  print(i) # 20 23 26 29 (3ずつ増える)

for i in range(10, 5, -1): # ステップをマイナスにして逆順
  print(i) # 10から6

生成されたrangeオブジェクトをリスト化するにはlist()関数を使う。

範囲 = range(10, 20, 2) # 10から開始、20未満、ステップは2
print(list(範囲)) # [10, 12, 14, 16, 18]

round関数

round()は、数値を四捨五入する組み込み関数。引数2は小数点以下の桁数。

print(round(3.14)) # 3
print(round(3.141592, 3)) # 3.142

str関数

str()は、数値などのオブジェクトを文字列にする組み込み関数。例えば数値と文字列を+で文字列結合したいときなどに使う。

print('今年は' + str(2016) + '年') # 今年は2016年

print('今年は' + 2016 + '年') # こうするとエラー

sum関数

sum()は、合計値を出す組み込み関数。引数はリストなど。

リスト = [1, 10, 100]
print(sum(リスト)) # 111

type関数

type()は、オブジェクトの型を判定する組み込み関数。

オブジェクト = "abc"
print(type(オブジェクト)) # <class 'str'>
オブジェクト = 10
print(type(オブジェクト)) # <class 'int'>
オブジェクト = False
print(type(オブジェクト)) # <class 'bool'>
オブジェクト = [1, "あ", True]
print(type(オブジェクト)) # <class 'list'>
オブジェクト = None
print(type(オブジェクト)) # <class 'NoneType'>

関数の作成

関数はdefの行から始まり、処理の行はインデント(行頭のスペース)を揃えて行い、そのインデントの終了までが関数定義の範囲。

def 関数名(引数1, 引数2, …):
  処理
# インデントの終わりまでが定義の範囲
# 定義
def hello(引数):
  print(引数 + "さん、こんにちは")

# 呼び出し
hello("アリス") # アリスさん、こんにちは

戻り値

関数を呼び出すと、その処理が終わると何らかの値(オブジェクト)が戻ってきて(戻り値)、それを変数に代入するなどして後で使える。

戻り値 = 関数1() # いったん変数に入れる場合
関数2(戻り値)

# 変数を使わないこれも同じ。関数1が実行された後、関数2の実行となる
関数2(関数1()) # 関数1で戻ってきたオブジェクトが関数2の引数になる

戻り値は関数の定義の際にreturn文で指定する。指定がない場合はNoneが戻る。例えばprint関数では戻り値がNoneなので、

戻り値 = print('こんにちは')
print(戻り値)

出力はこうなる。

こんにちは
None

戻り値の定義 return文

関数定義の際、return文の後ろに返すオブジェクトを指定する。

def 倍返し(引数):
  return 引数 * 2

戻り値 = 倍返し(10)
print(戻り値) # 20

メソッド

関数のうち、オブジェクトに属していてオブジェクト.関数名()のようにして呼び出すものを特にメソッドという。

例えば文字列オブジェクトには、文字列を操作するための様々な文字列メソッドが用意されている。

早口 = 'すもももももももものうち?!'

# 出現回数をカウントするcount関数
print(早口.count('も')) # 8

上記のように変数に代入したオブジェクトのメソッド呼び出しは、変数名.メソッド名()のようにする。