为什么Python不打印返回值?

时间:2014-01-22 09:20:18

标签: python printing return

我正在参加算法和数据结构(Python)课程。在书中有一个“堆栈”的例子,其中的方法返回某些值。在本书中,调用方法时会打印这些值。但是,当我运行程序时,没有打印任何内容。我必须自己打印返回值。这是Python 2和3之间的区别,还是我做错了什么?这是代码。

class Stack:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items)-1]

    def size(self):
        return len(self.items)

s=Stack(); s.push(5)
s.size()
s.isEmpty()
s.peek()

所以,这应该打印“1”,“False”和“5”。但事实并非如此。

4 个答案:

答案 0 :(得分:7)

在交互式解释器中,Python将打印repr表达式值(None除外)以方便使用。在脚本中,您必须手动打印,因为在脚本中自动打印非常难以处理。

答案 1 :(得分:3)

如果您没有包含打印声明,为什么要打印? 尝试:

print s.size()
print s.isEmpty()
print s.peek()

答案 2 :(得分:2)

我假设您的输入文件中有代码,例如a.py.在这种情况下,s.size()等的值被忽略。另一方面,如果您在交互式python会话中键入类似的内容,则会自动为您打印这些值。尝试所有这些调用的最佳方法是:从输入文件中删除s上的所有操作,只留下堆栈定义。然后使用

python -i a.py

这将使用堆栈定义加载您的文件,然后可以使用交互模式(所谓的REPL),您可以尝试s=Stack(); s.push(5)等。

答案 3 :(得分:0)

你可以

s=Stack()
s.push(5)
print s.size()
print s.isEmpty()
print s.peek()

或将return语句替换为print