意外的Python打印行为

Joo*_*ost 1 python

刚遇到以下Pythonic行为,我无法理解:

names = ["Paul", "Mary", "Susan"]
names.sort()

def valuate(string):
    print ord('A')
    return sum(ord(s) for s in string)

i = 1
for name in names:
    print i, name, valuate(name)
    i += 1
Run Code Online (Sandbox Code Playgroud)

我希望输出:

65
1 Mary 409
65
2 Paul 402
65
3 Susan 522
Run Code Online (Sandbox Code Playgroud)

但相反输出:

1 Mary 65
409
2 Paul 65
402
3 Susan 65
522
Run Code Online (Sandbox Code Playgroud)

似乎print语句已经尝试输出3个元素,并且当调用print ord('A')时,将其作为第三个语句?

我没有找到任何关于这种行为的引用,也不知道我如何才能谷歌这一点.顺便说一句,我在这里使用Python 2.7.3.Anyhoo,我在这里很困惑.

jim*_*ark 6

这不仅仅是print声明,而是函数调用.

print i, name, valuate(name)
Run Code Online (Sandbox Code Playgroud)

i然后name,打印然后调用valuate打印65(和新行)然后返回时print语句继续打印返回值(和另一个换行符).