ホームページ >バックエンド開発 >Python チュートリアル >関数 `lyrics()` が「一番最初の行」を出力するのに、print(lyrics()) が「None」を返すのはなぜですか?

関数 `lyrics()` が「一番最初の行」を出力するのに、print(lyrics()) が「None」を返すのはなぜですか?

DDD
DDDオリジナル
2024-12-08 22:28:13861ブラウズ

Why does print(lyrics()) return

なぜ「なし」出力になるのでしょうか? 2 つの Print ステートメントを解明する

次の関数を使用すると、特有の問題が発生します:

def lyrics():
    print("The very first line")
print(lyrics())

期待される「最初の行」の代わりに、出力は不可解なことに「The最初の行」の後に「なし」が続きます。

隠されたものを明らかにする真実

この不可解な動作の背後にある犯人は、2 つの print ステートメントの存在にあります。歌詞関数内で、最初のステートメントは「最初の行」を表示する役割を果たします。ただし、関数は明示的に値を返しません。つまり、Python はデフォルト値 None を割り当てます。

関数の外側の 2 番目の print ステートメントは、lyrics() によって返された値を出力しようとします。この関数は実質的に None を返すため、端末に「None」を出力します。

問題の修正: Return ステートメントの採用

この状況を修正し、望ましい結果を保証するには出力では、明示的に値を返すように Lyrics 関数を変更します。 return ステートメントを追加することで、関数が生成する値を指定できます。

たとえば、次のコードを考えてみましょう。

def lyrics():
    print("The very first line")
    return None

print(lyrics())

これで、コードは「最初のline" として、歌詞関数内の return ステートメントは明示的に None を返します。

Return についてデフォルト

関数内で return ステートメントを省略すると、Python は自動的に None を返すことに注意してください。コードには明示的に記載されていませんが、この動作は、戻り値を明示的に指定していない関数が依然として None を出力する理由を理解するために重要です。

追加の例

詳細明確にするために、次のコード スニペットを検討してください。

def test1():
    print("In function.")

a = test1()
print(a)  # Prints None

print(test1())  # Prints "In function." and then None

test1()  # Prints "In function." and returns None (not printed)

この例では、test1() は暗黙的に None を返します。リターンステートメント。したがって、後続の print ステートメントは前述のように動作します。

特定の戻り値を保証するには、目的の値を含む return ステートメントを使用します。例:

def test():
    return "ACV"

print(test())  # Prints "ACV"

a = test()
print(a)  # Prints "ACV"

test() 関数内で明示的に「ACV」を返すことにより、出力には意図した値が正しく表示されます。

以上が関数 `lyrics()` が「一番最初の行」を出力するのに、print(lyrics()) が「None」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。