Python 3.x 如何返回而不是打印

Python 3.x 如何返回而不是打印,python-3.x,calling-convention,Python 3.x,Calling Convention,我通过使用print()获得了所需的结果,但在使用返回时,我希望得到相同的结果。如何将其更改为返回?当我这样做时,它只返回第一个键,value,我想在这里输入BST中的四个键 def inOrder(self, aNode): if aNode: self.inOrder (aNode.leftChild) print (aNode.key + ' ' + aNode.payload +'\n') self.inOrder (aNo

我通过使用
print()
获得了所需的结果,但在使用
返回时,我希望得到相同的结果。如何将其更改为
返回
?当我这样做时,它只返回第一个
键,value
,我想在这里输入BST中的四个键

 def inOrder(self, aNode):
       if aNode:
        self.inOrder (aNode.leftChild)
        print (aNode.key + ' ' + aNode.payload +'\n')
        self.inOrder (aNode.rightChild)

我要查找的结果是四个键后跟它们的值。

要完全按照您的要求执行,您需要使用关键字(来自
语句的
收益的详细信息)

它将返回一个生成器,您可以使用
list(按顺序(…)

您还可以有一个专用的参数,在执行以下操作时进行更新:

 def inOrder(self, aNode, res=[]):
       if aNode:
        self.inOrder(aNode.leftChild, res)
        res.append((aNode.key, aNode.payload))
        self.inOrder(aNode.rightChild, res)

这将提供类似的结果。

您还可以使用
print
作为参数,您可以使用该参数传递类似于
list.append
:)哦,是的,这很聪明,但是对于检索结果列表的情况,您必须单独创建列表,然后将其方法传递给函数,否则将丢失其引用。i、 e
l=[];node.inoorder(node,l.append)
。这使得IMO的阅读变得有点困难。那么,我如何将它作为每个键之间的字符串返回,后跟它的值呢?谢谢大家:)对于Python3.6和更高版本,用
f“{aNode.key}{aNode.payload}”替换
(aNode.key,aNode.payload)
(可能需要转换为字符串)。
 def inOrder(self, aNode, res=[]):
       if aNode:
        self.inOrder(aNode.leftChild, res)
        res.append((aNode.key, aNode.payload))
        self.inOrder(aNode.rightChild, res)