概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
- 作者:Paul Barry
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
Pythonにおける関数
Pythonにおける関数の基本構成
def a_descriptive_name(optional_arguments):
"""ドキュメンテーション文字列"""
# ここに関数のコードが入る。
# ここに関数のコードが入る。
# ここに関数のコードが入る。
return optional_value
- Pythonにおける関数は、コードを再利用する最も基本的な手段である
- 関数の基本的な構成
defキーワードから始まる行を先頭に記述する- 処理の内容を、
defキーワードのある行の次の行以降に字下げして記入する """(ダブルクォーテーション3つ)で囲った文字列は「ドキュメンテーション文字列(docstring)」というreturn文により、1つの値を返すことができるreturn文がない場合、関数の戻り値はNoneとなる
def行の構成- 関数の名前
()で囲った引数群- 最後にコロン
:を忘れないように
Pythonにおける関数の呼び出し方
def search4vowels():
# ...略
# 関数呼び出し
search4vowels()
- 関数を呼び出すには、関数名と関数が取る引数の値を指定すればよい
- 引数を持たない関数を呼び出す場合、引数の記載は
()とする
- 引数を持たない関数を呼び出す場合、引数の記載は
- IDLEにおいては、関数を含むモジュールを実行すると、以下の動作をする
- シェルを起動する(新たに起動、または既存のシェルを再起動)
- 起動されたシェルに、モジュールに含まれる関数をインポートする
引数とは
- Pythonにおける関数は、0個以上の任意の数の引数を取ることができる
- 関数が引数を取るように定義するには、
def行の()内に引数の名前を入力すればよい- 当該引数(仮引数)は、関数ブロック内で変数として用いることができる
- 関数呼び出し時には、関数定義の際に定義した引数(仮引数)と同じ数の引数(実引数)を渡さなければならない
- 仮引数の数と実引数の数が一致しない場合、
TypeErrorがスローされる
- 仮引数の数と実引数の数が一致しない場合、
def search4vowels(word):
# ...略...
vowels = set('aeiou')
found = vowels.intersection(set(word))
# ...略...
↑引数wordを取る関数search4vowels()を定義し、関数ブロック内でwordを変数として用いている例。
# 仮引数の数は1つである
def search4vowels(word):
"""入力した単語内の母音を表示する。"""
vowels = set('aeiou')
found = vowels.intersection(set(word))
for vowel in found:
print(vowel)
# 仮引数の数と実引数の数が一致する関数呼び出し
search4vowels('hitch-hiker')
# => e
# => i
# 関数呼び出し時に実引数の数が足りない場合、TypeErrorとなる
search4vowels()
# TypeError: search4vowels() missing 1 required positional argument: 'word'
# 関数呼び出し時に実引数の数が多すぎる場合、TypeErrorとなる
search4vowels('hitch-hiker', 'Sky')
# TypeError: search4vowels() takes 1 positional argument but 2 were given
関数は結果を返すことができる
- Pythonにおいて、関数に結果を返させるためには
return文を用いる return文が実行されることにより、以下の事態が発生する- 関数の実行が終了される
return文に与えられた値が呼び出し側のコードに返される
- 関数の戻り値は、常に一つのオブジェクトである
- 複数のオブジェクトを返したい場合は、リストなどの構造化データを用いて1つのオブジェクトにまとめる
return文が実行されずに関数の実行が終了された場合、関数の戻り値はNoneとなる
# return文がないため、戻り値は常にNoneである
def search4vowels(word):
"""入力した単語内の母音を表示する。"""
vowels = set('aeiou')
found = vowels.intersection(set(word))
for vowel in found:
print(vowel)
print(search4vowels('hello'))
# => o # search4vowels()内でprint関数が実行されたことによる副作用
# => e # search4vowels()内でprint関数が実行されたことによる副作用
# => None # search4vowels()の戻り値
↑値を返さない関数の実行例。
def search4vowels(word):
"""母音が見つかったかどうかによってブール値を返す。"""
vowels = set('aeiou')
found = vowels.intersection(set(word))
return bool(found)
print(search4vowels('hitch-hiker'))
# => True
print(search4vowels('galaxy'))
# => True
print(search4vowels('Sky'))
# => False
↑ブール値を返す関数の実行例。
def search4vowels(word):
"""指定された単語内の母音を返す。"""
vowels = set('aeiou')
return vowels.intersection(set(word))
print(search4vowels('hitch-hiker'))
# => {'e', 'i'}
print(search4vowels('galaxy'))
# => {'a'}
print(search4vowels('Sky'))
# => set()
↑集合を返す関数の実行例。空の集合はset()と表示される。