如何在没有任何print语句的情况下打印Hello World

时间:2015-07-14 07:29:18

标签: python

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

(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 _, __, ___, ____, _____, ______, _______, ________: _)))

因为它是单行代码,Here's格式良好的代码更易读。

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

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

顺便提一下,

Here是代码作者解释其工作原理的地方。

1 个答案:

答案 0 :(得分:13)

所写问题的答案:代码通过print os.write()的{​​{1}}文件描述符避免stdout语句,1

getattr(__import__("os"), "write")(1, "Hello world!\n")

其余的解释详见https://benkurtovic.com/2014/06/01/obfuscating-hello-world.html。而不是在这里摘要,只需阅读原文!