アメリエフの技術ブログ

Amelieff Staff Blog

python : importで自分で書いたプログラムを使おう

f:id:Fuku-I:20210415123101p:plain:h100

こんにちは。

今週のお題「下書き供養」です!!

今回はpythonのimportについてお話しします。

pythonのimportを用いると、標準のライブラリやpipでインストールしたパッケージを読み込んで様々な関数を使うことができます。

例えばtestimport.pyというファイルで

import sys

args = sys.argv
print(args[1])

などというプログラムを書いて実行すると以下のようになります。

$ python testimport.py hogehogehoge
hogehogehoge

これはsysの機能である"args"を使って引数をとり、それを書き出しています。

自作プログラムのインポート

今回着目するのは、「自分で定義した他のpythonプログラムもimportできる」という点です。 実際にやってみましょう。まずは一つ簡単なスクリプトを用意します。

func.py

def plus(a,b):
    return a + b

同じディレクトリにこの関数を呼び出すスクリプトを書いてみましょう。

call.py

# 上で定義したスクリプトのファイル名をimport
import func

# ファイルの中の関数は'.'で接続して'[file].[function]'という形で使える
print(func.plus('Reference', 'Genome'))

func スクリプトの中に書いてある plus という関数を使いたいので、 func.plus(...) というように実行しました。
最初の方で行った sys.argv と同様ですね。

そして後に書いたスクリプトを実行!

$ python call.py
ReferenceGenome

という結果となり、自分で定義した関数を呼び出せます。 長いプログラムを書くときや、機能別にファイルを分けたいときなどは非常に便利なので、ぜひ試してみてくださいね。

ファイル名にご注意いただきたい件

例えば sys.py のように 、標準のライブラリやpipでインストールしたパッケージと同じ名前をつけてしまうと
import の際にエラーの元になります。

(´-`).。oO(numpyのデータをちょっと操作するプログラムを作ろう。numpy.pyっと) ← ダメ絶対

環境設定によって、その場にある自作関数と 標準ライブラリ等のどちらが優先して読み込まれるかは異なりますが、
どちらにしても予期せぬエラーの元になるので止めましょう。