見出し画像

関数アノテーション

今日は、『Head First Python』4章 "コードの再利用" で学んだことをアウトプットします。

関数にはコードと(通常は)ドキュメント(説明)を入れる

コードはdef行よりも1段階インデントし、適宜コメントを補います。コメントを追加するには、”””で囲んだ文字列を使う方法(docstring)と、#記号を前につけて単一行コメントにする方法の2つがあります。docstringは関数の目的を説明します。

def a_descriptive_name(optional_arguments):
    """ドキュメンテーション文字列"""
    # ここに関数のコードが入る。
    # ここに関数のコードが入る。
    # ここに関数のコードが入る。
    return optional_value

アノテーションを使ってドキュメントを改善する

Python 3はアノテーション(型ヒントとも呼ばれています)という概念をサポートしています。アノテーションを使うと、戻り値の型と引数の型を(標準的な方法で)記述します。
関数アノテーションはオプションで、使わなくても問題ありません。また、アノテーションから関数に関する詳細がわかりますが、その他の振る舞い(型チェックなど)はしません。

実際の関数の引数にアノテーションを付けてみると、下記のようになります。

def search4vowels(word:str) -> set:
   """指定された単語内の母音を返す"""
   vowels = set('aeiou')
   return vowels.intersection(set(word))
1番目のアノテーションはこの関数が引数wordの型として文字列を期待していることを示し(:str)、2番めのアノテーションは呼び出し側に集合を返すことを示しています(- > set)。

なぜ関数アノテーションを使うのか?

プログラマにとってのアノテーションの役割は、関数に渡す型や関数から返される型を調べるために関数のコードを読まなくてもいいようにすることです。
アノテーションを使わないと、プログラマは関数のコードを読まなければいけません。最適に書かれたdocstringでさえ、やはりアノテーションが含まれていないと読まなければいけません。

アノテーションは組み込み関数helpで表示することができます。

>>> help(search4vowels)
Help on function search4vowels in module __main__:

search4vowels(word: str) -> set
   指定された単語内の母音を返す

サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪