Python は関数の終わりがどこにあるかをどのように知るのでしょうか? 質問する

Python は関数の終わりがどこにあるかをどのように知るのでしょうか? 質問する

私は Python を学習しているところですが、関数の「def」がいつ終了するのか混乱しています。

次のようなコードサンプルがあります:

def myfunc(a=4,b=6):
    sum = a + b
    return sum

myfunc()

return があるために終了しないのはわかっています (if 文を見たことがあるからです... FOO の場合は BAR を返し、それ以外の場合は FOOBAR を返します)。Python は、これが自分自身を呼び出す再帰関数ではないことをどのようにして知るのでしょうか。関数が実行されると、return が見つかるまでプログラム内を進み続けるのでしょうか。そうなると、興味深いエラーが発生する可能性があります。

ありがとう

ベストアンサー1

Python では空白が重要です。インデントが小さくなると関数は終了します。

def f():
    pass # first line
    pass # second line
pass # <-- less indentation, not part of function f.

1 行の関数はインデントなしで 1 行に記述できることに注意してください。

def f(): pass

そして、セミコロンの使用ですが、これは推奨されません:

def f(): pass; pass

上記の3つの形式は関数の終了がどのように定義されるかを示しています文法的にセマンティクスPython では関数を終了する方法が 3 つあります。

  • ステートメントを使用しますreturn。これは、あなたが知っている他の命令型プログラミング言語と同じように機能します。

  • ステートメントを使用しますyield。これは、関数がジェネレータであることを意味します。その意味を説明することは、この回答の範囲を超えています。誰か Python の yield ステートメントを説明してくれませんか?

  • 最後の文を実行するだけです。これ以上文がなく、最後の文が文でない場合return、関数は最後の文が であるかのように存在しますreturn None。つまり、明示的なreturn文がない場合、関数は を返しますNone。この関数は を返しますNone

    def f():
        pass
    

    そしてこれもまた同様です:

    def f():
        42
    

おすすめ記事