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

2023-11-25

我在 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 和一个星号参数组成。它具有最小的内置用法(__import__, getattr, and chr各一次)。

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

Here顺便说一下,代码的作者解释了它是如何工作的。


问题的答案如下:该代码避免了print声明者os.write()ing to stdout的文件描述符,即1:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐