This is heresy.
This is an affront to nature. Comments shouldn't even make it past the scanner.
we need a programming horror community for stuff like this
They chose violence.
I assume the people freaking out about how dumb python is didn't bother to read the code and have never coded in python in their life, because the behavior here is totally reasonable. Python doesn't parse comments normally, which is what you'd expect, but if you tell it to read the raw source code and then parse the raw source code for the comments specifically, of course it does.
You would never, ever accidentally do this.
...you'd also never, ever do it on purpose.
yeah frankly this post is borderline misinformation, they specifically import a library to read comments as arguments, it's like redefining keywords in C and complaining about C being dumb
I'm going to say it just is misinformation, if that's what "lib" is here.
IMO comments should never ever be parsed under any circumstances but I probably don't know enough to really speak on this
This isn't standard python. lib
is not in the standard library. Python also doesn't have any special variables where it stores comments, other than __doc__
which stores a docstring. If I had to guess, add
is reading the file/REPL via __file__
.
Comments should be removed before shipping.
Well now that causes breakage two dependencies down the line. Good luck with that. 😅
Python is an interpreted language but for a compiled language absolutely (and obviously).
No, your intuition is correct, this is extremely cursed.
Seen in a code review (paraphrased):
"Why does this break when you add comments in the middle?"
Why would python even expose the current line number? What’s it useful for?
On a serious note:
This feature is actually very useful. Libraries can use it create neat error messages. It is also needed when logging information to a file.
You should however never ever parse the source code and react to it differently.
You underestimate the power of us, print debuggers.
The add
function in the example above probably traverses the call stack to see what line of the script is currently being executed by the interpreter, then reads in that line in the original script, parses the comment, and subs in the values in the function call.
This functionality exists so when you get a traceback you can see what line of code triggered it in the error message
I fucking hate this, thanks OP
How do I delete this part of the python documentation?
This is some javascript level shit
That's disgusting
Thank you, I hate it
checks the community to make sure I'm in programmer humor
Yeah that checks out
You know that this is acutally working right??? 😊
Yup, just one of those posts that could of course work in either
Implementation of the add()
function is here: https://github.com/raldone01/python_lessons_py/blob/main/lib.py
Yup, the function actually goes and finds the code that calls it and parses the comment.
Disgusting.
This does not actually work, right? Right?
The add()
function (that is available in the source code) basically uses some built in debugging tools to find out where in the code the function is called, and then parses the comment from the file and uses it for adding stuff.
I’ve never tried (becuse why would you…) but something similar can probably be built in any interpreted language
It’s not something Python does by design
Thanks :) ! Could you tell me what use case/purpose such function can have from a dev perspective?
This stuff is normally used for creating human readable error messages. E.g. printing the line of your code that actually set off the exception
I'd say nothing that can't be achieved by docstrings.
This specific use case? To make a meme, mainly ¯\(ツ)/¯
As for the components: Parsing comments have been used for stuff like type hints / formatting / linting, tho generally not at run time (afaik).
The tooling for finding out where something is called from can be used to give a better understanding of where things go wrong when an exception happens or similar, to add to logs.
I would say that in general you don’t need either functionality except for certain edge-usecases
Anakin:
Anakin:
Every day further from god's light etc...
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
That's quite cool. But I'm not sure what's the use case for it.
I feel sick
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.
Why, just why
Programmer Humor
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
- Posts must be relevant to programming, programmers, or computer science.
- No NSFW content.
- Jokes must be in good taste. No hate speech, bigotry, etc.