如何在python3中模拟python2打印语句的行为?

时间:2018-11-16 06:16:09

标签: python-3.x python-2.7 printing

有时我会整理一些快速代码,并使用长括号括起来的表达式。我希望能够不使用其他花哨的东西或**kwargs来快速轻松地打印它们。我希望能够像在python2中那样使用print关键字进行此类使用。我该怎么办?

1 个答案:

答案 0 :(得分:0)

这是一个使用运算符重载的黑客,您至少可以在某种程度上模拟print关键字。

如果要编写一个类并重载其任何operator(a,b)方法,则从数学上来说,您将可以在方法主体中编写所需的任何内容,并将一些值作为RHS传递给运算符。例如,这是一个类:

class printkw:
    def __lshift__(self, value=None):
        print(value)
        return value

然后,如果您执行类似的操作

printk = printkw()
printk << "hello world"

然后它将产生输出

hello world

如果您想完全匿名地使用它,可以逃脱

printkw() << "hello world"

尽管现在看起来更加不美观了。

您选择重载的运算符可以是任何东西;但是,即使是=赋值运算符,我个人更喜欢lshift运算符,因为它使它看起来类似于C ++。同样,赋值运算符在语义上也没有意义:您不会分配要输出的内容。但是,这完全取决于您的偏好。

当然,这就是我已经所说的,是 hack ,并且可能会被皱眉。当然,我不会经常使用这样的黑客手段(老实说,到目前为止只有大约两次),也不建议这样做。但是,有时您只有很长的语句,或者有时您想调试和编写一些又脏又又麻烦的东西,必须正确地对表达式加上括号可能很乏味,这就是我使用此技巧的时候。对于常规使用,请避免使用它,因为在其他人期望它是标准print()函数的情况下,它可能会中断打印,但是您改用了上述关键字仿真。

相关问题