0

Python区切り文字に関する他の質問を見てきましたが、これに答える質問を見つけることができなかったので、ここに行きます. 配列を逆方向に再帰的に出力する関数を書いていますが、問題なく動作しているようです。

def print_array_backwards(array):
    if (len(array) == 1):
        print array[0],
        return
    print_array_backwards(array[1:])
    print array[0],

##########################################

x = [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]

print 'Array = ', x
print_array_backwards(x)

出力します:

Array =  [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
4 3 2 1 0 4 3 2 1 0

問題は、次のように、print_array_backwards 関数の出力を他のテキストと合わせて印刷しようとしたときです。

print 'Array = ', x
print 'The array backwards is', print_array_backwards(x)

これは出力されます:

Array =  [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
The array backwards is 4 3 2 1 0 4 3 2 1 0 None

私の質問は、この余分な None 値はどこから来たのですか??

関数の出力を次の行にプッシュするが、次のように print ステートメントでコンマを残す場合:

print 'Array = ', x
print 'The array backwards is', 
print_array_backwards(x)

私は明らかに目的の出力を取得します:

Array =  [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
The array backwards is 4 3 2 1 0 4 3 2 1 0

関数を print ステートメントの同じ行に残すと、関数の動作が異なる理由を理解できる人はいますか?

御時間ありがとうございます!

4

2 に答える 2

3

明示的に何も返さない関数を呼び出しています。このような関数のデフォルトの戻り値は ですNone

関数の戻り値を表示しないでください。

print 'Array = ', x
print 'The array backwards is',
print_array_backwards(x)
于 2013-11-11T21:36:01.700 に答える
1

に変更print array[0]return array[0]ます。はのNone戻り値から来ていprint_array_backwards()ます。何も指定していないので、これは ですNone

于 2013-11-11T21:35:49.527 に答える