Python 3.x 带有end参数的print函数不会在Python控制台中打印任何内容

Python 3.x 带有end参数的print函数不会在Python控制台中打印任何内容,python-3.x,pycharm,Python 3.x,Pycharm,当我打印时,即:print(“text”)一切都正常,我将输出结果发送到控制台 但是,当我将end=“”添加到打印功能时,即:print(“text”,end=“”),我在控制台中没有得到任何结果 我用另一个值作为end参数进行了一点实验。当我设置\n时,它工作正常。此外,当在系统终端(Ubuntu 16.04)中执行上述异常时,也不会发生 这是我的密码: class Tree: def __init__(self, cargo, left=None, right=None):

当我打印时,即:
print(“text”)
一切都正常,我将输出结果发送到控制台

但是,当我将
end=“”
添加到打印功能时,即:
print(“text”,end=“”)
,我在控制台中没有得到任何结果

我用另一个值作为
end
参数进行了一点实验。当我设置
\n
时,它工作正常。此外,当在系统终端(Ubuntu 16.04)中执行上述异常时,也不会发生

这是我的密码:

class Tree:
    def __init__(self, cargo, left=None, right=None):
        self.cargo = cargo
        self.left = left
        self.right = right
    def __str__(self):
        return str(self.cargo)


def print_tree_postorder(tree):
    if tree is None: return
    print_tree_postorder(tree.left)
    print_tree_postorder(tree.right)
    print(tree.cargo, end=" ")
谁能告诉我为什么会发生这种情况,并帮助我解决这个问题?我想知道这是一个bug还是只是我有这个问题

我正在使用:

  • 来自我的virtualenv的Python 3.5.2
  • PyCharm社区版2016.3.3,JRE:1.8.0_112-release-408-b6 amd64,JVM:OpenJDK 64位

PyCharm可能会等到看到换行符后再将输出去干扰到控制台…@holdenweb这听起来像是一个可能的原因。。你能想出解决这个问题的方法吗?当你想显示输出时,试着添加
sys.stdout.flush()
调用。如果PyCharm足够好地模拟了
stdout
,它应该会触发任何缓冲输出的显示,但没有承诺…而
sys.stdout.flush()
将解决这个问题,python3的
print()
将其作为可选参数:
print(“text”,end='',flush=True)
。这里不需要另一行代码!