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文の機能性について理解しました。