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 could base64 encode the solution
Ah sorry I meant for the spoiler. He could base64 the solution given that he doesn’t know how to do spoilers on lemmy
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!
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)
Same on Jerboa. Though given the apps’ fast development progress we probably won’t have to wait too long :)