👻

returnの仕組み

2022/11/29に公開

return value logic

仕事で、FlaskとDashというPythonのフレームワークとライブラリを使っていて、ハマったことがあった!
それは、以前作られたソースコードを参考に入力機能を作っていたときに、debugして知ったんだけどreturnをプログラムの終わりに書いて実行したら、あれなんで1箇所しか実行されないんだ?
そんなエラーにハマった😇

入力フォームを例にやってみる

まずは、正しい例
といっても、Python仕事で使ったのは、最近なんでわかってるか怪しい😅
pythonに限ったことではないですけどね。

nameという変数に値が入ってないので、if文が実行されて年齢が入力されてませんとログが出てくるプログラム

main.py
name = '田中太郎'
age = ''
address = 'Tokyo'

def validation():
    if len(name) == 0:
        print('名前が入力されてません!')
    
    if len(age) == 0:
        print('年齢が入力されてません!')
    
    if len(address) == 0:
        print('メールアドレスが入力されてません!')
    return
validation()

実行結果

エラーが出てきましたね。でもif文全てにreturnをつけるとどうなるかというと....

正しくない例

main.py
name = '田中太郎'
age = ''
address = 'Tokyo'

def validation():
    if len(name) == 0:
        print('名前が入力されてません!')
    return
    if len(age) == 0:
        print('年齢が入力されてません!')
    return
    if len(address) == 0:
        print('メールアドレスが入力されてません!')
    return
validation()

実行結果

あれ、エラーをスルーしてる....
returnってそもそもどんなロジックで動いているのかというと、戻り値を返して関数を修了する。
JavaScriptやってたときもreturn文を使ってたのですが、似たようなプログラムを書いてたときは、こんなこと起きなかったきがしますが、知識不足でしたね💦
ちなみにロジックて英語は論理って意味だそうです😅

最後に

今回は、普段やっていることのOutputを兼ねてやってみました。
僕の使ってる私物のMacはSSDの容量が少ないので、PyCharm入れたくても入れられないので、VScode使おうかと思ったが、ブラウザで動くコード保管機能があるONLINE PYTHONという便利なサービスを見つけたので、共有しておきますね。

https://www.online-python.com/KXmLvup8J6

Discussion