関数とモジュール

defでオリジナルの関数を定義できる

#引数ひとつ
def serch4vowels(word:str) -> set: #アノテーションを付加して可読性を高める
    """指定された単語内の母音を返す"""
    vowels = set('aeiou')
    return vowels.intersection(set(word))

#引数ふたつ 引数のデフォルト値を指定している
def search4letters(phrase:str, letters:str='aeiou') -> set:
    """phrase内のlettersの集合を返す。"""
    return set(letters).intersection(set(phrase)

アノテーションとは、関数の説明、メタデータのようなもので、

アノテーションを使って、戻り値の方と引数の型を記述する。

※ただしアノテーションはPython3の最新バージョンでしか利用できない。

位置指定とキーワード指定

def serch4letters(phrase:str, letters:str='aeiou') -> set:

#位置引数
search4letters('abc', 'xyz')
#1番目の文字列がphraseに代入され、2番目の文字列がlettersに代入される。

#キーワード引数
search4letters(letters='xyz', phrase='abc')
#任意の順序で代入可能

モジュールのインポート順について

「import random」としたときに、インタプリンタがモジュールを探す主な場所は以下の3つだけ覚えておけばOK。

  • 作業ディレクトリ
  • インタプリンタのsite-packageの位置
  • 標準ライブラリの位置

モジュールをsite-packageに入れる

作業フォルダを作成し、中に以下3つのファイルを入れる

  • 1.配布ファイルの説明…README.txt
  • 2.setup.py
  • 3.配布ファイル
from setuptools import setup

#setup関数の引数を入れるが多くは省略可能
setup(
    name='vsearch', #引数nameは配布ファイル名を指定するのが一般的
    version='1.0',
    description='Ther Head First Python Search Tools',
    author='HF Python 2e',
    url='headfirstlabs.com',
    py_modules=['vsearch'] #パッケージに入れる.pyファイルのリスト
    )

実行する

$mkdir mymodules
$cd mymodules

#フォルダの中に以下3つのファイルを入れる
#1.配布ファイルの説明 README.txt
#2.setup.py
#3.配布ファイル

$py -3 setup.py sdist 

コマンド実行後、mymodulesフォルダ内にdistフォルダが生成され、

その中にvsearch-1.0.tar.gzファイルが生成された。

これで配布ファイルとして梱包されたことになる。

次にpipを使ってsite-packageへのパッケージのインストールを行う

py -3 -m pip install vsearch-1.0.tar.gz