1. ホーム
  2. python

[解決済み] Pythonで関数をforward-declare/prototypeする方法は?[重複している]をクリックします。

2022-02-18 14:58:38

質問

C++のような汎用的なPythonプログラムでメソッドのプロトタイプを作成するにはどうすればよいですか?

//PROTOTYPE
do python protoyping

writeHello() //GIVES ERROR AS IT WAS NOT DEFINED YET

def writeHello():
    print "Hello"

解決方法は?

Pythonにはプロトタイピングがありません。 必要ない .

Pythonはグローバルを検索する 実行時に を意味します。 を使用した場合 writeHello を指定すると、その場でオブジェクトが検索されます。オブジェクトはコンパイル時に存在する必要はありませんが する は実行時に存在する必要があります。

C++では、2つの関数が互いに依存し合うようにプロトタイプを作成する必要があります。そうすればコンパイラは、後から定義された2番目の関数を使用していることを突き止めることができます。しかし、Pythonは2番目の関数 の代わりに実行時に そのため、このような前方定義は必要ありません。

例で説明すると

def foo(arg):
    if not arg:
        return bar()

def bar(arg=None):
    if arg is not None:
        return foo(arg)

ここで、両方の foobar は、関数が呼び出されたときにグローバルとして検索されます。 bar() Pythonがコンパイルするために foo() が正常に動作することを確認します。