Skip to main content
 首页 » 编程设计

python之意外的 Python 打印行为

2025年05月04日14jillzhang

刚遇到以下我无法理解的 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 

我希望输出:

65 
1 Mary 409 
65 
2 Paul 402 
65 
3 Susan 522 

而是输出:

1 Mary 65 
409 
2 Paul 65 
402 
3 Susan 65 
522 

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

我没有找到任何关于此行为的引用资料,也不知道如何通过谷歌搜索此内容。顺便说一下,我在这里使用的是 Python 2.7.3。 Anyhoo,我在这里很困惑。

请您参考如下方法:

这不仅仅是print 语句,它是函数调用。

print i, name, valuate(name) 

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