这段代码如何在没有任何print语句的情况下打印Hello World ?



我在Python中找到了这段代码,它在不使用字符串"Hello World"的情况下打印"Hello World"。它是一行代码,一个表达式(即没有print语句)。

(lambda _, __, ___, ____, _____, ______, _______, ________: getattr(__import__(True.__class__.__name__[_] + [].__class__.__name__[__]), ().__class__.__eq__.__class__.__name__[:__] + ().__iter__().__class__.__name__[_____:________])(_, (lambda _, __, ___: _(_, __, ___))(lambda _, __, ___: chr(___ % __) + _(_, __, ___ // __) if ___ else (lambda: _).func_code.co_lnotab, _ << ________, (((_____ << ____) + _) << ((___ << _____) - ___)) + (((((___ << __) - _) << ___) + _) << ((_____ << ____) + (_ << _))) + (((_______ << __) - _) << (((((_ << ___) + _)) << ___) + (_ << _))) + (((_______ << ___) + _) << ((_ << ______) + _)) + (((_______ << ____) - _) << ((_______ << ___))) + (((_ << ____) - _) << ((((___ << __) + _) << __) - _)) - (_______ << ((((___ << __) - _) << __) + _)) + (_______ << (((((_ << ___) + _)) << __))) - ((((((_ << ___) + _)) << __) + _) << ((((___ << __) + _) << _))) + (((_______ << __) - _) << (((((_ << ___) + _)) << _))) + (((___ << ___) + _) << ((_____ << _))) + (_____ << ______) + (_ << ___))))(*(lambda _, __, ___: _(_, __, ___))((lambda _, __, ___: [__(___[(lambda: _).func_code.co_nlocals])] + _(_, __, ___[(lambda _: _).func_code.co_nlocals:]) if ___ else []), lambda _: _.func_code.co_argcount, (lambda _: _, lambda _, __: _, lambda _, __, ___: _, lambda _, __, ___, ____: _, lambda _, __, ___, ____, _____: _, lambda _, __, ___, ____, _____, ______: _, lambda _, __, ___, ____, _____, ______, _______: _, lambda _, __, ___, ____, _____, ______, _______, ________: _)))

由于它是单行代码,这是一段格式良好的代码,更易于阅读。

它仅由函数、属性访问、列表、元组、基本数学、一个True和一个星形参数组成。它具有最小的内置使用量(__import__, getattrchr各一次)。

我真的很难理解它。它的作用有什么可能的解释吗?

顺便说一下,这里是代码作者解释它是如何工作的地方。

问题的答案如下所示:代码通过os.write()转到stdout的文件描述符1:

来避免print语句
getattr(__import__("os"), "write")(1, "Hello world!n")

其余的解释详见https://benkurtovic.com/2014/06/01/obfuscating-hello-world.html。不要在这里做总结,直接读原文吧!

最新更新