虽然我已经看到了关于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
我的问题是,这个额外的无值来自哪里?
如果我将函数输出推送到下一行,但是使用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语句的同一行会导致函数表现不同吗?
谢谢你的时间!
答案 0 :(得分:3)
您正在调用一个不会显式返回任何内容的函数。此类函数的默认返回值为None
。
只是不打印函数的返回值:
print 'Array = ', x
print 'The array backwards is',
print_array_backwards(x)
答案 1 :(得分:1)
将print array[0]
更改为return array[0]
。 None
来自print_array_backwards()
的返回值,因为您未指定任何内容None
。