Python同士の連携方法(別ファイルのpython関数実行や引数でつなぐ)

スポンサーリンク

Pythonは色々なすごい人の機能を引っ張ってきて使うことが多い。
Pythonファイル同士の連携ができるようになると、他ファイルの関数を実行したり、他ファイルに値を送って、処理してくれた値を拾うようにして色々なことが出来ます。

3つのパターンで紹介をするよ

今回は3つのパターンでの連携方法を紹介します。
1つ目はそのまま他pythonファイルと連携される方法
2つ目は引数というある情報を伝えながら他pythonファイルと連携する方法
3つ目はコマンドプロンプトで引数をつけて実行すると使えるようになる方法

とこれらは結構使います。

※引数はイメージで例えると、python1ファイルに体重を入れるメニューがあって、python2ファイルが0.8倍にしてくれる機能を持ったものとしましょう。
python1ファイルに入れた体重80kgを、python2ファイルに80kgという情報を伝える箱が引数と思ってもらえればいいです。

引数なしで他pythonファイルを読む

まず呼び出すほう=呼ぶ元のファイルをtest1.pyとします。
呼び出される方をtest2.pyとします。
これら2つのpythonファイルは同じフォルダに入れて下さい。


################# ##test1.py
import test2 # 参照先のpythonファイル名

print(“test1だよ”)

test2.go3() # pythonファイル名.関数名
##############################

まず、import test2と呼び出される方のファイルをpy拡張子なしでファイル名だけ入れて下さい。
test1だよと表示できるようにprint構文を入力します。(これは表示だけの問題なので入れなくてもOK)
他のpythonファイルを連携して、他のpythonファイルを実行するときは
pythonファイル名.関数名()と入力して下さい。
今回の場合はtest2.pyのgo3という関数を読み出します。

これで別ファイルの関数の処理を実行してくれます。

################# 呼ばれる側のほう test2.py
def go3(): # 関数go3
print(“test2だよ”)

if __name__ == ‘__main__‘: # これをやると、直接test2.pyを読んだ時に下の関数を実行する
go3()

#####################

呼ばれる方の設定は上記のとおりです。
呼び出すことを行いませんのでimportは不要です。

今回は関数go3を実行させることになるので、関数を作成するしてみましょう。
関数は、def 関数名():で定義して下さい。
別回の繰り返しと同じように、関数の中身の操作はtabで1回揃えてあげて下さい。
なかにtest2だよを表示する分を組んでみます。

あと、if __name__ == ‘__main__’:というおまじないを作成しています。
これは何かというと、今は別のpythonファイルから呼び出される内容ですが、このtest2.pyを実行した時に何をするかの内容です。
この中にgo3()とgo3関数を実行するように入れていますので、test2.pyを直接開いた時にはgo3を実行することになります。

では実際に実行してみます。
test1.pyで作成した、test1だよの後に、test2.pyのgo3関数にあるtest2だよを表示できるようになりました。

引数ありでpythonファイルを読み込む

前述どおりで引数という何かの値を渡してあげる方法です。

#### 引数付きの場合はこうする#####test1-1.py

import test21 # 参照先のpythonファイル名

print(“test1だよ”)

moji = “amazonギフト”

test21.go3(moji) # pythonファイル名.関数名(引数名)
########################

他のpythonファイルを読み出すので、他のpythonファイル名をimportで定義します。
今回はmojiという変数にamazonギフトと決めて、そのmojiを引数で、他のpythonファイルに飛ばしてやりましょう。

実行させるには、先ほどの方法に1文を増やすだけでOKです。
pythonファイル名.関数名(引数名)
test21.go3.(moji)
と変数mojiを引数に入れて飛ばすので、その分を追加するだけでOKです。

############ 呼ばれる側のほう。引数付きの場合. test21.py
def go3(moji): # 関数go3(引数)
print(moji + “だよ”)

if __name__ == ‘__main__‘: # これをやると、直接test2.pyを読んだ時に下の関数を実行する
go3()

############################

呼ばれる側の関数は、def 関数名(引数)のカッコのところに引数を入れましょう。今回は変数mojiが飛んでくるのでmojiにしています。
その下で実行するprint(moji …. )のmojiは呼び出す側で定義したamazonギフトが入ってきます。

はい、こんな感じで無事に出てきました。

コマンドプロンプトに引数を入れて実行する場合

これもよく使う手法の一つです。
pythonを実行する時にはコマンドプロンプトにpython hogehoge.pyとpythonとファイル名を打ち込んで実行をしますが。この時にファイル名の後ろにスペースを開けて、文字を追加すると引数として実行することが可能です。
なんだかんだ使うので覚えておきましょう。


sys.pyというpythonファイルを実行するものを作ります。
コマンドプロンプト上でpython sys.py inu nekoと入れる例とします。

ここにあるinu nekoはinuという1つ目の引数、nekoという2つ目の引数を定義しています。

################sys.py

import sys

args = sys.argv
####### argv: “argument vector”(引数の配列)の略

print(args[1]) # 1つ目のコマンドライン引数
print(args[2]) # 2つ目のコマンドライン引数
##########################

コマンドプロンプトで入れた引数を入れる場合はまず、import sysでsys機能を読み込むようにして下さい。
sys.argvに引数の配列が入っているため、argsという変数に打ち込みましょう。(args=sys.argv)

配列の使用法にもなりますが、変数名[n]とnに配列数を入れるとその配列に入った変数値を読み出すことが出来ます。
今回は1つ目と2つ目の配列に入っていますので、
args[1] / args[2]として、それをprintしていますので、引数の配列のコメント表示するようにしています。

上の実行例のように、1つ目の文字表示にはinuという1つ目の引数、2つ目の文字表示にはnekoという2つ目の引数が出てきました。

特集ページ:Pythonを学んで活用してみよう

コメント

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