A post about how this community’s banner used the python 2 print syntax - print "Hello World"
- made me question, can we print a hello world message in Python 3 without using parentheses?
It turned out to be sort of a fun challenge, I’ve found 3 different approaches that work. I’d be interested to see what you come up with! (it seems I can’t put spoilers in Lemmy, so I won’t share my solutions yet in case y’all want to have a go).
Edit: Posted my solutions in the comments
Just one question: why?
You can put spoilers in posts or comments this way:
::: spoiler Title Secret :::
Here is how it renders:
Title
Secret
(AFAIK apps don’t render these correctly, only the website)
Can confirm not hiding on Memmy
Same on Jerboa. Though given the apps’ fast development progress we probably won’t have to wait too long :)
Not working on connect either
You could base64 encode the solution
But then you still need to use parentheses to decode it
Ah sorry I meant for the spoiler. He could base64 the solution given that he doesn’t know how to do spoilers on lemmy
Ah true that would have worked, figured since spoilers don’t work on most apps I might as well just post them.
Gave some thoughts but couldn’t find any. I need the solutions
Alright, here are my solutions :)
- Import Easter egg
import __hello__
Not the most technically interesting, but a fun Easter egg!
- Class decorators
@print @lambda _: "Hello World" class Foo: ...
Decorators are another way of calling a function, so can be abused to solve this task. You need to decorate a class rather than a function though, since a function definition requires parentheses!
- Dunder methods
class Printer: __class_getitem__ = print Printer["Hello World"]
There might be some other Dunder methods you can use to do this, although it’s sort of difficult since most (e.g.
__add__
) only describe behaviour on the instance of the class.- More dunder methods
from _sitebuiltins import Quitter Quitter.__add__ = print exit + "Hello World"
Writing number 3 made me realise I just needed to find a class that already had an instance and change that. I’m sure there are many other cases of this, but here’s one!
Very interesting solutions. I was in the direction of using dunder methods but could not figure out how. Haven’t heard of the
__class_getitem__
. The second solution is especially inspiring.