Python逗号分隔打印更改函数行为

Python逗号分隔打印更改函数行为,python,printing,delimiter,Python,Printing,Delimiter,虽然我已经看到了关于Python定界符的其他问题,但我还没有找到一个问题来回答这个问题,所以我来回答。我正在编写一个函数,该函数将递归地向后打印数组,它似乎工作得很好: def print_array_backwards(array): if (len(array) == 1): print array[0], return print_array_backwards(array[1:]) print array[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
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_array_backwards函数的输出与其他文本对齐时,如下所示:

print 'Array = ', x
print 'The array backwards is', print_array_backwards(x)
print 'Array = ', x
print 'The array backwards is', 
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
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)
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]
更改为
返回数组[0]
None
来自
print\u array\u backwards()
的返回值,由于您未指定任何内容,因此该返回值为
None

print array[0]
更改为
return array[0]
None
来自
print\u array\u backwards()
的返回值,由于您没有指定任何内容是
None

,因此您正在调用一个不显式返回任何内容的函数。此函数的默认返回值为
None

只需不打印函数的返回值:

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

您正在调用一个不显式返回任何内容的函数。此函数的默认返回值为
None

只需不打印函数的返回值:

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

哼!谢谢,这是完全有道理的!谢谢,这是完全有意义的。尽管这在特定的代码段中工作,但这几乎是不可取的:您最终会得到一个函数,该函数既可以将内容打印到标准输出,又可以返回一个不同的值作为输出的一部分。如果这在特定的代码段中工作,这几乎是不可取的:您将得到一个函数,该函数既可以将内容打印到标准输出,也可以作为输出的一部分返回不同的值。