Python 3関数の多戻り値の問題


スクリプト言語として、関数が複数の値を返すのは便利なことです.例を挙げます.
def ttt():
    return 3,4,5
a,b,c = ttt()

tttという関数は3つの値を返し,a,b,cに与えられることがわかる.しかし、私たちが少し改造すると、以下の問題が発生します.
def ttt():
    return 3,4,5
a,b = ttt()

ValueError: too many values to unpack (expected 2)

どうして私たちはaとbだけに値を割り当てることができませんか?資料を調べると、Python関数は依然として単一の値を返していることがわかります.戻り値はtupleです.しかし、文法上、1つのtupleを返すと括弧を省略することができ、複数の変数は同時に1つのtupleを受信し、位置によって対応する値を与えることができるので、Pythonの関数は多値を返すのは実は1つのtupleを返すことである.したがってpythonの複数の戻り値は戻り値の個数に注意する必要があり、個数が分からない場合は1つの変数賦値を値してlenなどの方法で個数を求めることができ、そうしないと奇妙なエラーが発生します.