1. ホーム
  2. python

[解決済み] Pythonのオーバーロードされた関数

2023-01-20 01:58:11

質問

Pythonでオーバーロードされた関数を持つことは可能ですか?

C#では次のようなことをします。

void myfunction (int first, string second)
{
    # Some code
}

void myfunction (int first, string second, float third)
{
    # Some different code
}

そして、私が関数を呼び出すと、引数の数に基づいて2つを区別することになります。Pythonで同じようなことをすることは可能でしょうか?

どのように解決するのですか?

編集 Python 3.4 の新しいシングルディスパッチジェネリック関数については、以下を参照してください。 http://www.python.org/dev/peps/pep-0443/

Pythonでは一般的に関数をオーバーロードする必要はありません。Pythonは 動的型付け であり、関数へのオプションの引数をサポートしています。

def myfunction(first, second, third = None):
    if third is None:
        #just use first and second
    else:
        #use all three

myfunction(1, 2) # third will be None, so enter the 'if' clause
myfunction(3, 4, 5) # third isn't None, it's 5, so enter the 'else' clause