1

関数から返された 0 を Python が自動的に None オブジェクトに変換する理由がよくわかりません。私はほぼすべての一般的な言語でプログラミングを行ってきましたが、これまでに遭遇したことはありません。結果に 0 を設定すると、関数から 0 が返されると予想されます。

Pythonがこれを行う理由を誰か説明してもらえますか?

編集:

さらに詳しい情報を提供するために、C++ クラスのラッパーがあり、戻り値の型は void ポインターです。したがって、値が 0 の整数を返す場合は、None 型になります。これは誰にとっても意味がありますか?

私はPythonが初めてで、戻り値ではなくNone型がいつ期待されるかを理解しようとしています。

4

3 に答える 3

5

C++ クラスのラッパーがあり、戻り値の型は void ポインターです。したがって、値が0の整数を返す場合、Noneタイプが返されます

0 はNULLC++ のポインターの値です (ただし、 として参照する必要がありますNULL)。

void*型を返す C++ 関数があり、 を返す0場合、事実上 を返すことになるため、Python でNULL返されます。None

次の質問に興味があるかもしれません: C++ ではポインタに NULL または 0 (ゼロ) を使用しますか? (こちらnullptrもご覧ください)。

于 2012-08-24T20:58:03.180 に答える
4

単なる推測ですが、次のようなことをしている場合:

def gives_none()
    #does stuff
    0

Python には明示的な return ステートメントが必要であることを認識していません。ここでゼロを返す言語もありますが、Python の動作はそうではありません。明示的な return ステートメントがなければ、関数は を返しNoneます。試す:

def works():
    #does stuff
    return 0
于 2012-08-24T20:56:34.817 に答える
1

Python は Java のように戻り値の型を強制しないため、実際には関数の最後に return ステートメントを入れるのを「非常に簡単に」忘れてしまいます。これにより、関数は None を返します。

于 2012-08-24T20:57:23.207 に答える