auカブコム証券APIとPythonでトレードアプリ開発。
初心者向けにアプリ開発方法を解説します。 第3回[関数呼び出し編]
関数の呼び出し方法をマスターしてレベルアップしましょう。
第3回auカブコム証券APIとPythonでトレードアプリ開発。初心者向けにアプリ開発方法を解説します。[関数呼び出し]
動画の目次
【目次】
01:04 前回の振り返り
04:56 サンプルコード解説
09:33 関数のコードをシンプルにして解説
15:36 別のPythonファイルから関数を呼び出す練習
27:37 関数を呼び出すコードに書き換える
解説
動画で解説したPythonコード
動画で解説したPythonコードはこちらです。
「新しく覚えることを最小にして、動くものを作る」これを最優先としています。
初心者が理解しやすいように、コード記述の美しさや、推奨されている記述ルールよりも、単純であることを優先しました。
◇関数で取得する銘柄情報◇
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import get_token_def if st.button('関数で銘柄情報を取得します。'): st.write('ボタンが押されました。') token_value = get_token_def.generate_token() #pprint.pprint(get_token_def.get_symbol(token_value)) content_symbol = get_token_def.get_symbol(token_value) symbol_value = content_symbol.get('Symbol') symbolName_value = content_symbol.get('SymbolName') st.write('Symbol:', symbol_value) st.write('symbolName_value:', symbolName_value) else: st.write('ここに銘柄情報が表示されます。') |
関数のコードをシンプルにして解説
関数のコードをシンプルにして解説します。
関数の構成を似せて、シンプルに書き直しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import pprint def token_test(): moji1 = 'あれやってから、' moji2 = 'これやった。' moji3 = moji1 + moji2 return moji3 def symbol_test(token_test_value): moji4 = token_test_value + '「これが最後の処理」' return moji4 token_test_value = token_test() pprint.pprint(symbol_test(token_test_value)) |
上のコードを実行すると。以下の結果が出力されます。
‘あれやってから、これやった。「これが最後の処理」’
◇コードの解説◇
pprintをインポートします。
※pprintとはPythonの標準ライブラリーでオブジェクトをキレイに整形して出力するためにインポートしています。
このページのコードには必要ありませんが、動画内で解説しているauカブコム証券のサンプルコードに合わせています。
import pprint
関数を作ります。
def token_test():
関数の中で実行されるのは次のコードです。
moji1 = ‘あれやってから、’
moji2 = ‘これやった。’
moji3 = moji1 + moji2 return moji3
関数のリターンは、return moji3
2つ目の関数を作ります。
def symbol_test(token_test_value):
関数の中で実行されるのは次のコードです。
moji4 = token_test_value + ‘「これが最後の処理」’
関数のリターンは、return moji4
関数token_test()を呼び出して、変数token_test_valueに代入します。
token_test_value = token_test()
関数symbol_testの引数token_test_valueとして呼び出します。
pprintで整形して出力します。
pprint.pprint(symbol_test(token_test_value))
出力結果はこちら。
‘あれやってから、これやった。「これが最後の処理」’
別のPythonファイルから関数を呼び出す練習
別のPythonファイルから関数を呼び出す練習をしましょう。
2つのPythonファイルを新しく作りました。
test_main.py
test_Aaa.py
test_Aaa.py
1 2 3 4 |
print('Aaaが実行されました。') def aaa(): print('aaa内の関数から実行されました。') |
この上のコードを実行すると、出力結果は以下となります。
Aaaが実行されました。
関数aaa()は定義されているだけなので、関数aaa()内のprint文は実行されません。
関数を呼び出すなら、aaa()を記載します。
test_Aaa.py
1 2 3 4 5 6 |
print('Aaaが実行されました。') def aaa(): print('aaa内の関数から実行されました。') aaa() |
これで実行すると、出力結果は以下となります。
Aaaが実行されました。
aaa内の関数から実行されました。
別のPythonファイル(test_main.py)から関数を呼び出します。
test_main.pyからtest_Aaa.py内の関数を呼び出します。
test_main.py
1 2 3 |
import test_Aaa test_Aaa.aaa() |
◇コードの解説◇
関数を呼び出すために、関数が書かれているPythonファイルをインポートします。
import test_Aaa
関数が書かれているPythonファイル名の後にピリオドをつけて関数名を記述します。
test_Aaa.aaa()
この上のコードを実行すると、出力結果は以下となります。
Aaaが実行されました。
aaa内の関数から実行されました。
aaa内の関数から実行されました。
この3行が出力されます。
aaa内の関数から実行されました。
がダブって出力されています。
これは、test_Aaaをインポートした時点でtest_Aaa.pyが実行されるからです。
test_main.py
1 2 3 |
import test_Aaa test_Aaa.aaa() |
1行目のimport test_Aaaが実行されると、test_Aaa.pyのコードが実行されます。
test_Aaa.py
1 2 3 4 5 6 |
print('Aaaが実行されました。') def aaa(): print('aaa内の関数から実行されました。') aaa() |
この時点での出力結果はこちら。
Aaaが実行されました。
aaa内の関数から実行されました。
つづいて、test_main.pyの3行目で関数test_Aaa.aaa()を呼び出しているので、
test_main.py
1 2 3 |
import test_Aaa test_Aaa.aaa() |
aaa内の関数から実行されました。
上が出力されます。
よって、出力結果は
Aaaが実行されました。
aaa内の関数から実行されました。
aaa内の関数から実行されました。
このようになるのです。
他のPythonファイルから呼び出されたときに実行させないために
インポートしただけで、関数が書かれたPythonコードが実行されるのはチョットやっかいです。
他のPythonファイルから呼び出されたときに、関数を実行させないために、以下のコードを追記します。
if __name__ == ‘__main__’:
他の方が書いたPythonコードを見ていると、よく見かけませんか?
まず使い方を解説します。
test_Aaa.py
1 2 3 4 5 6 7 |
print('Aaaが実行されました。') def aaa(): print('aaa内の関数から実行されました。') if __name__ == '__main__': aaa() |
これでtest_Aaa.pyを実行してみましょう。出力結果は以下となります。
Aaaが実行されました。
aaa内の関数から実行されました。
if __name__ == ‘__main__’: の中に記述しているaaa()が実行されています。
もう一度test_main.pyから関数aaa()を呼び出してみましょう。
test_main.py
1 2 3 |
import test_Aaa test_Aaa.aaa() |
test_main.pyを実行してみましょう。出力結果は以下となります。
Aaaが実行されました。
aaa内の関数から実行されました。
test_main.pyから関数aaa()を呼び出すと、test_Aaa.pyに記述された、
if __name__ == ‘__main__’: 中の関数aaa()は実行されません。
Python初心者のあなた。 頭の中に?マークがたくさん浮かんでいませんか。
この if __name__ == ‘__main__’: は、Python初心者の多くがつまずくポイントだと思います。
if __name__ == ‘__main__’:攻略については、別の記事で解説します。
少々お待ちください。
この記事を書いた人
あしおゆたか
投資歴21年の個人投資家
机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。
スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。(現在自粛中)
◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション
◇運営者情報はこちら