外部ファイルのインポート

外部ファイルのインポート #

プログラムの中で、別のプログラムにある変数や関数を利用したい場合もある。その時はファイルをインポートしてくるのが手っ取り早いことが多い。その方法を示す。

Javaではimport文があり、これを利用することで他のプログラムを利用することができる。
利用するには、importの後に利用したいクラス名をパッケージ名を含めて記載する。
ただし、自分と同じパッケージに属している他クラスはimport文無しでも利用できるので、import文は主に外部パッケージにあるクラスに対し利用する。

前述のリストやMapの所では、これらのクラスを利用するためにListクラスやMapクラスをimportしていた。これもimportを利用している例になる。

指定したパッケージ以下のクラスを全てインポートしたい時は、「*」を利用することで指定したパッケージに属する全てのクラスを利用できる。

しかし、どのクラスを利用しているかを判別するために、大体は「*」は使わずクラスを明示してインポートする。

例1(クラスを指定してインポートしたい時。大体はこっちを使用)

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;

class Main{
  public static void main(String args[]){
    List<Integer> l = new ArrayList<Integer>();
    l.add(1);
    l.add(3);
    l.add(1,100);

    for(int i=0;i<l.size();i++){
        System.out.println(l.get(i));
    }

    Map<String,String> m = new HashMap<>();

    m.put("key","value");
    m.put("key2","value");
    m.put("key","value3");

    System.out.println(m);
  }
}

例2(「*」を指定してインポートしたい時)

import java.util.*;

class Main{
  public static void main(String args[]){
    List<Integer> l = new ArrayList<Integer>();
    l.add(1);
    l.add(3);
    l.add(1,100);

    for(int i=0;i<l.size();i++){
        System.out.println(l.get(i));
    }

    Map<String,String> m = new HashMap<>();

    m.put("key","value");
    m.put("key2","value");
    m.put("key","value3");

    System.out.println(m);
  }
}

Pythonにもimport文があり、これを利用することで他のプログラム(モジュール)を利用することができる。

import (pythonファイル(モジュール)名)

これにより、指定したモジュールがインポートされ、利用できるようになる。利用するには、このモジュール名を使う。
また、別モジュールが持つ変数や関数のみをインポートしたい時は以下のような構文を利用する。

from (モジュール名) import (変数、関数名)

実行例を以下に示す。

$ ls
add.py
$ cat add.py
#add.py。同じディレクトリに作成しておく
a=1
b=2
c=3
d=4

def adder(a,b):
    return a+b
$ python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> #add.pyをインポート
>>> import add
>>> 
>>> #addのa
>>> add.a
1
>>> #addのb
>>> add.b
2
>>> #addのadder
>>> add.adder(1,2)
3
>>> add.adder(2,3) 
5
>>> quit()
$
$ python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> #add.pyのaだけインポート
>>> from add import a
>>> a
1
>>> #addはインポートしてないので以下はエラー
>>> add.a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'add' is not defined
>>> #bもインポートしてないのでエラー
>>> b 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
>>>