Raspberry Pi 3 & Python 開発ブログ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbian 8.0(NOOBS Ver1.9.2)を使用して開発中。

【スポンサーリンク】

Pythonプログラム入門(importの使い方)

【スポンサーリンク】

今回はimportの使い方を紹介したいと思います。規模が大きくなると、プロジェクトにpackage(フォルダ)を作成して、階層化してコードを整理しないと管理が難しくなります。package内のコードファイルをimportして関数やクラスを使用する方法を記載します。

 

__init__.pyの存在

 私はPythonを使い始めた頃、このファイルの意味がよくわかりませんでした。他の言語でこういうしくみを経験したことがなかったからです。しかしながら、Visual Studioでpackageを作成すると、自動的に__init__.pyが作成されます。

 

調べてみると単純にPythonがフォルダをフォルダとして認識するために必要なファイルということでした。なので、ファイルの中身は空っぽでOKです。フォルダの下に__init__.pyファイルがあるだけで、Pythonはフォルダがあるということを認識できるのです。

 

packge内のファイルのimport

それではサンプルで動作を説明したいと思います。まず、フォルダ構成は下記とします。importA.pyのコードには、1つの関数と1つのクラスが書かれています。

◇フォルダ構成

|── test.py
|── packageA
|    |── __init__.py
|    |── importA.py

◇importA.pyのコード

# -*- coding: utf-8 -*-

def printA():
    print "importA_printFunction"

class MyClassA(object):

    def __init__(self):
        self.name = "import_MyClassA"
 
    def getName(self):
        return self.name

    def setName(self, name):
        self.name = name

 

それではtest.pyからimportA.pyの関数やクラスをimportして使えるようにします。いくつか書き方がありますので、場合に応じて使い分けてください。

◇パターン1 (関数やクラスを直接読み込む)
# -*- coding: utf-8 -*-
from packageA.importA import printA
from packageA.importA import MyClassA

printA()
a = MyClassA()
print(a.getName())
◇パターン2 (パターン①のワイルドカード版)
# -*- coding: utf-8 -*-
from packageA.importA import *

printA()
a = MyClassA()
print(a.getName())
◇パターン3 (importAモジュールを読み込む)
# -*- coding: utf-8 -*-
from packageA import importA

importA.printA()
a = importA.MyClassA()
print(a.getName())
◇パターン4 (importしたモジュールの名前を置き換えるimportA ⇒ rename)
# -*- coding: utf-8 -*-
from packageA import importA as rename

rename.printA()
a = rename.MyClassA()
print(a.getName())


少しわかりにくいですが、fromでパスを指定して、importでモジュールや関数/クラスをして読み込むという形になります。