有时我会整理一些快速代码,并使用长括号括起来的表达式。我希望能够不使用其他花哨的东西或**kwargs
来快速轻松地打印它们。我希望能够像在python2中那样使用print
关键字进行此类使用。我该怎么办?
答案 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()
函数的情况下,它可能会中断打印,但是您改用了上述关键字仿真。