Pythonのimport文の使い方を分かりやすく解説する

スポンサーリンク

Pythonのimport文は、ユーザーが対応するプログラム内で特定のモジュールをインポートすることを可能にします。

これはC/C++の#include header_fileに似ています。

インタプリタは特定のコードでimport文に出会うとすぐに、ローカルスコープで同じものを探し、検索パスにモジュールが存在すれば、それをインポートします。

まず、組み込みモジュールのセクションで特定のモジュールを探します。

見つからない場合は、カレントディレクトリにあるモジュールを検索します。

モジュールは、インポートされた回数に影響されることなく、特定のプログラム内で一度だけロードされる。

構文は以下の様な感じです。

import module_name

例えば、以下の様になります。

import collections

1. モジュールからのクラス/関数のインポート

モジュールからクラスや関数をインポートするには、次のような構文を使います。

from {module} import {class/function}

例えば、以下の様になります。

from collections import OrderedDict
from os import path
from math import pi
print(pi)

結果は、以下の通りです。

3.141592653589793

2. import * ステートメント

import * 演算子を使用すると、特定のモジュールのすべてのメソッドと定数をインポートすることができます

from math import *
print(pi)
print(floor(3.15))

結果は以下の通りです。

出力: “`
3.141592653589793
3


---



### 3. Python の import as ステートメント

import as` ステートメントは、ユーザーがオリジナルのモジュール名のエイリアスを提供するのに役立ちます。

<div class="wp-block-syntaxhighlighter-code"><div><div class="syntaxhighlighter nogutter python" id="highlighter_666863"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="python comments"># python import as</code></div><div class="line number2 index1 alt1"><code class="python keyword">import</code> <code class="python plain">math as M</code></div><div class="line number3 index2 alt2"> </div><div class="line number4 index3 alt1"><code class="python functions">print</code><code class="python plain">(M.pi)</code></div><div class="line number5 index4 alt2"><code class="python functions">print</code><code class="python plain">(M.floor(</code><code class="python value">3.18</code><code class="python plain">))</code></div></div></td></tr></tbody></table></div></div></div>

出力します。

3.141592653589793
3


---



### 4. ユーザー定義モジュールのインポート

あるプログラムの関数を、その名前を使って別のプログラムにインポートすることができます。

最初に、pythonのコードを作成する必要があります。

test.py

<div class="wp-block-syntaxhighlighter-code"><div><div class="syntaxhighlighter nogutter python" id="highlighter_127875"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="python keyword">def</code> <code class="python plain">sub(a, b):</code></div><div class="line number2 index1 alt1"><code class="python spaces">    </code><code class="python keyword">return</code> <code class="python functions">int</code><code class="python plain">(a) </code><code class="python keyword">-</code> <code class="python functions">int</code><code class="python plain">(b)</code></div><div class="line number3 index2 alt2"> </div><div class="line number4 index3 alt1"><code class="python keyword">def</code> <code class="python plain">lower_case(str1):</code></div><div class="line number5 index4 alt2"><code class="python spaces">    </code><code class="python keyword">return</code> <code class="python functions">str</code><code class="python plain">(str1).lower()</code></div></div></td></tr></tbody></table></div></div></div>

次に、別の python スクリプトを作成し、そこで上記の test.py スクリプトをインポートする必要があります。

test2.py

<div class="wp-block-syntaxhighlighter-code"><div><div class="syntaxhighlighter nogutter python" id="highlighter_787257"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="python keyword">import</code> <code class="python plain">test</code></div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2"><code class="python functions">print</code><code class="python plain">(test.sub(</code><code class="python value">5</code><code class="python plain">,</code><code class="python value">4</code><code class="python plain">))</code></div><div class="line number4 index3 alt1"><code class="python functions">print</code><code class="python plain">(test.lower_case(</code><code class="python string">'SafA'</code><code class="python plain">))</code></div></div></td></tr></tbody></table></div></div></div>

出力します。

1
safa


---



### 5. 他のディレクトリからインポートする

別のディレクトリからスクリプトをインポートするには、 `importlib` ライブラリを使用します。

最初に、python スクリプトを作成し、その中で関数を定義する必要があります。

test1.py

<div class="wp-block-syntaxhighlighter-code"><div><div class="syntaxhighlighter nogutter python" id="highlighter_589800"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="python keyword">def</code> <code class="python plain">sub(a, b):</code></div><div class="line number2 index1 alt1"><code class="python spaces">    </code><code class="python keyword">return</code> <code class="python functions">int</code><code class="python plain">(a) </code><code class="python keyword">-</code> <code class="python functions">int</code><code class="python plain">(b)</code></div><div class="line number3 index2 alt2"> </div><div class="line number4 index3 alt1"><code class="python keyword">def</code> <code class="python plain">lower_case(str1):</code></div><div class="line number5 index4 alt2"><code class="python spaces">    </code><code class="python keyword">return</code> <code class="python functions">str</code><code class="python plain">(str1).lower()</code></div></div></td></tr></tbody></table></div></div></div>

次に、別の python スクリプトを作成して別のディレクトリに保存し、test1.py (別のディレクトリに存在する) から機能をインポートします。

design.py

<div class="wp-block-syntaxhighlighter-code"><div><div class="syntaxhighlighter nogutter python" id="highlighter_74248"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="python keyword">import</code> <code class="python plain">importlib, importlib.util</code></div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2"><code class="python keyword">def</code> <code class="python plain">module_directory(name_module, path):</code></div><div class="line number4 index3 alt1"><code class="python spaces">    </code><code class="python plain">P </code><code class="python keyword">=</code> <code class="python plain">importlib.util.spec_from_file_location(name_module, path)</code></div><div class="line number5 index4 alt2"><code class="python spaces">    </code><code class="python plain">import_module </code><code class="python keyword">=</code> <code class="python plain">importlib.util.module_from_spec(P)</code></div><div class="line number6 index5 alt1"><code class="python spaces">    </code><code class="python plain">P.loader.exec_module(import_module)</code></div><div class="line number7 index6 alt2"><code class="python spaces">    </code><code class="python keyword">return</code> <code class="python plain">import_module</code></div><div class="line number8 index7 alt1"> </div><div class="line number9 index8 alt2"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">module_directory(</code><code class="python string">"result"</code><code class="python plain">, </code><code class="python string">"../inspect_module/test1.py"</code><code class="python plain">)</code></div><div class="line number10 index9 alt1"> </div><div class="line number11 index10 alt2"><code class="python functions">print</code><code class="python plain">(result.sub(</code><code class="python value">3</code><code class="python plain">,</code><code class="python value">2</code><code class="python plain">))</code></div><div class="line number12 index11 alt1"><code class="python functions">print</code><code class="python plain">(result.lower_case(</code><code class="python string">'SaFa'</code><code class="python plain">))</code></div></div></td></tr></tbody></table></div></div></div>

出力します。

1
safa

もう一つの方法は、モジュールディレクトリを sys.path リストに追加することです。

---



### 6. 別のファイルからクラスをインポートする

tests.py

<div class="wp-block-syntaxhighlighter-code"><div><div class="syntaxhighlighter nogutter python" id="highlighter_220463"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="python keyword">class</code> <code class="python plain">Employee:</code></div><div class="line number2 index1 alt1"><code class="python spaces">    </code><code class="python plain">designation </code><code class="python keyword">=</code> <code class="python plain">""</code></div><div class="line number3 index2 alt2"> </div><div class="line number4 index3 alt1"><code class="python spaces">    </code><code class="python keyword">def</code> <code class="python plain">__init__(</code><code class="python color1">self</code><code class="python plain">, result):</code></div><div class="line number5 index4 alt2"><code class="python spaces">        </code><code class="python color1">self</code><code class="python plain">.designation </code><code class="python keyword">=</code> <code class="python plain">result</code></div><div class="line number6 index5 alt1"> </div><div class="line number7 index6 alt2"><code class="python spaces">    </code><code class="python keyword">def</code> <code class="python plain">show_designation(</code><code class="python color1">self</code><code class="python plain">):</code></div><div class="line number8 index7 alt1"><code class="python spaces">        </code><code class="python functions">print</code><code class="python plain">(</code><code class="python color1">self</code><code class="python plain">.designation)</code></div><div class="line number9 index8 alt2"> </div><div class="line number10 index9 alt1"> </div><div class="line number11 index10 alt2"><code class="python keyword">class</code> <code class="python plain">Details(Employee):</code></div><div class="line number12 index11 alt1"><code class="python spaces">    </code><code class="python functions">id</code> <code class="python keyword">=</code> <code class="python value">0</code></div><div class="line number13 index12 alt2"> </div><div class="line number14 index13 alt1"><code class="python spaces">    </code><code class="python keyword">def</code> <code class="python plain">__init__(</code><code class="python color1">self</code><code class="python plain">, </code><code class="python functions">ID</code><code class="python plain">, name):</code></div><div class="line number15 index14 alt2"><code class="python spaces">        </code><code class="python plain">Employee.__init__(</code><code class="python color1">self</code><code class="python plain">, name)</code></div><div class="line number16 index15 alt1"><code class="python spaces">        </code><code class="python color1">self</code><code class="python plain">.</code><code class="python functions">id</code> <code class="python keyword">=</code> <code class="python plain">name</code></div><div class="line number17 index16 alt2"> </div><div class="line number18 index17 alt1"><code class="python spaces">    </code><code class="python keyword">def</code> <code class="python plain">get_Id(</code><code class="python color1">self</code><code class="python plain">):</code></div><div class="line number19 index18 alt2"><code class="python spaces">        </code><code class="python keyword">return</code> <code class="python color1">self</code><code class="python plain">.</code><code class="python functions">id</code></div></div></td></tr></tbody></table></div></div></div>

デザイン.py

<div class="wp-block-syntaxhighlighter-code"><div><div class="syntaxhighlighter nogutter python" id="highlighter_486399"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="python keyword">import</code> <code class="python plain">importlib, importlib.util</code></div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2"><code class="python keyword">def</code> <code class="python plain">module_directory(name_module, path):</code></div><div class="line number4 index3 alt1"><code class="python spaces">    </code><code class="python plain">P </code><code class="python keyword">=</code> <code class="python plain">importlib.util.spec_from_file_location(name_module, path)</code></div><div class="line number5 index4 alt2"><code class="python spaces">    </code><code class="python plain">import_module </code><code class="python keyword">=</code> <code class="python plain">importlib.util.module_from_spec(P)</code></div><div class="line number6 index5 alt1"><code class="python spaces">    </code><code class="python plain">P.loader.exec_module(import_module)</code></div><div class="line number7 index6 alt2"><code class="python spaces">    </code><code class="python keyword">return</code> <code class="python plain">import_module</code></div><div class="line number8 index7 alt1"> </div><div class="line number9 index8 alt2"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">module_directory(</code><code class="python string">"result"</code><code class="python plain">, </code><code class="python string">"../Hello/tests.py"</code><code class="python plain">)</code></div><div class="line number10 index9 alt1"> </div><div class="line number11 index10 alt2"><code class="python plain">a </code><code class="python keyword">=</code> <code class="python plain">result.Employee(</code><code class="python string">'Project Manager'</code><code class="python plain">)</code></div><div class="line number12 index11 alt1"><code class="python plain">a.show_designation()</code></div><div class="line number13 index12 alt2"> </div><div class="line number14 index13 alt1"><code class="python plain">x </code><code class="python keyword">=</code> <code class="python plain">result.Details(</code><code class="python value">4001</code><code class="python plain">,</code><code class="python string">'Safa'</code><code class="python plain">)</code></div><div class="line number15 index14 alt2"><code class="python plain">x.show_designation()</code></div><div class="line number16 index15 alt1"><code class="python functions">print</code><code class="python plain">(x.get_Id())</code></div></div></td></tr></tbody></table></div></div></div>

出力します。

Project Manager
Safa
Safa
“`

スポンサーリンク

まとめ

さて、今回はimport文の機能性について理解しました。

タイトルとURLをコピーしました