Python allows programmers to pass additional arguments to functions via comments. Now armed with this knowledge head out and spread it to all code bases.
Feel free to use the code I wrote in your projects.
Link to the source code: https://github.com/raldone01/python_lessons_py/blob/v2.0.0/lesson_0_comments.ipynb
Image transcription:
# First we have to import comment_arguments from arglib
# Sadly arglib is not yet a standard library.
from arglib import comment_arguments
def add(*args, **kwargs):
c_args, c_kwargs = comment_arguments()
return sum([int(i) for i in args + c_args])
# Go ahead and change the comments.
# See how they are used as arguments.
result = add() # 1, 2
print(result)
# comment arguments can be combined with normal function arguments
result = add(1, 2) # 3, 4
print(result)
Output:
3
10
This is version v2.0.0
of the post: https://github.com/raldone01/python_lessons_py/tree/v2.0.0
Note:
v1.0.0
of the post can be found here: https://github.com/raldone01/python_lessons_py/tree/v1.0.0
Choosing lib
as the name for my module was a bit devious.
I did it because I thought if I am creating something cursed why not go all the way?
Regarding misinformation:
I thought simply posting this in programmer humor was enough. Anyways, the techniques shown here are not yet regarded best practice. Decide carefully if you want to apply the shown concepts in your own code bases.
That is C++ levels of “why the fuck did they add that.”
The best language is complete, succinct, orderly and clear. And never adds a single goddamn thing ever.
Implementation of the
add()
function is here: https://github.com/raldone01/python_lessons_py/blob/main/lib.pyIt is now directly in the notebook in the latest version: https://github.com/raldone01/python_lessons_py/blob/v2.0.0/lesson_0_comments.ipynb
Yup, the function actually goes and finds the code that calls it and parses the comment.
Disgusting.
Makes sence if u think about it. We use comments as docstrings that the interpreter has an understanding of. Python lets u fuck with its internals (at least in an immutable manner) so why not fuck with comments.
bro what we are devolving
Why is this a thing
Because whoever wrote this went to great lengths to make it work. It’s by no means a feature of python. It’s a feature of their code.
That’s disgusting
Thanks, I hate it.
I hate this shit being routinely used in PHP. Symfony uses those functional comments for routing, essentially scanning every controller file as text on every visit, to gather the url patterns above functions. Laravel uses Reflection, which is functionally the same thing, to provide arguments to controller functions. Also, kind of related, the project I’m working now has few functions that use backtrace to return different results based on where they are called from. It is indeed very cursed and I’m ripping out any usages of them whenever I see one.
Comment Annotations were a nessecary thing as php did not support a native way to do it. However, since php 8, there is now native attributes.
As if I needed more reasons to start away from python
You can so stupid shit in any language. I admit Python doesn’t exactly make it difficult. A bit like JS, but different.
Do you stay away from C++ too? You can do this there too
https://en.cppreference.com/w/cpp/utility/source_location/line
Being able to get the line number is very different from comments being parsed.
Edit: didn’t realize this was custom code built to be cursed.
You should look at how OPs example works first maybe
The python interpreter isn’t parsing comments, the add() function is just getting the current line number from the call stack context, and using a regex to spit out the numbers to the right of the “#” on the current executing line of the source code.
Yeah fair I was just assuming this was standard library, I see your point now.
What? There is no
lib
module.$ python3.13 -c 'import lib' Traceback (most recent call last): File "<string>", line 1, in <module> import lib ModuleNotFoundError: No module named 'lib' $
OP wrote this add() function and has provided their own lib module in the source code.
Oh, so it’s not Python that’s cursed.
One of Python’s design philosophies is—or at least was—“we are all consenting adults here.” If you really want to turn Python into Brainfuck, the interpreter isn’t going to stop you.
Thank you, I hate it
This is heresy.
This is an affront to nature. Comments shouldn’t even make it past the scanner.
TMI 😢