> Not only because the syntax is more human-friendly, but also because the Python interpreter is natively integrated in all Unix distros That's kind of very optimistic evaluation - literally anything beyond "import json" will likely lead you into the abyss of virtual envs. Running something created with say Python 3.13.x on Ubuntu 22.04 or even 24.04 (LTSs) / Rocky 9 and the whole can of worms opened. things like vir…
I have a silly theory that I only half joke about that docker/containers wouldn't've ever taken off as fast as it did if it didn't solve the horrible python dependency hell so well. You know something is bad when fancy chrooting is the only ergonomic way of shipping something that works. My first taste of Python was as a sysadmin, back in 2012 or so, installing a service written in Python on a server. The dependency…
I'm switching to Python and actually liking it
421–430 of 718 posts
Re: I'm switching to Python and actually liking it
#422Earlier quoted context omitted.
Amazing. If you need to ask this question I am guessing you have spent too long with Python . No other language uses this underscore madness for special methods or otherwise. Because it’s just , I don’t know a more appropriate word for it , stupid.
Oh yes they do: https://www.php.net/manual/en/language.oop5.magic.php The programming languages world is broad/varied enough that any statement like "no other language does this!" is almost certainly wrong (outside of esoteric languages, which python and php most certainly are not)
__add, __sub, __mul, __div, __mod, __pow, __unm, __idiv
__band, __bor, __bxor, __bnot, __shl, __shr
__concat, __len
__eq, __lt, __le
__index, __newindex, __call
__gc, __close, __mode, __nameRe: I'm switching to Python and actually liking it
#423Earlier quoted context omitted.
I write a decent amount of Python, but find the walrus operator unintuitive. It's a little funky that API_KEY is available outside of the `if`, perhaps because I had first seen the walrus operator in golang, which restricts the scope to the block.
This isn't really unique to the walrus operator, it's just a general python quirk (albeit one I find incredibly annoying). `for i in range(5): ...` will leave `i` bound to 4 after the loop.
But if something fails in a loop running in the repl or jupyter I already have access to the variables.
If I want to do something with a loop of data that is roughly the same shape, I already have access to one of the the items at the end.
Short circuiting/breaking out of a loop early doesn't require an extra assignment.
I really can't see the downside.
Re: I'm switching to Python and actually liking it
#424"And guess what's the de facto programming language for AI? Yep, that sneaky one." Is this referring at all to to PyTorch. If not, any guesses what the author has in mind "Not only because the syntax is more human-friendly, but also because the Python interpreter is natively integrated in all Unix distros." Is this referring to GNU/Linux. UNIX (UNIX-like) includes more than Linux; some UNIX distributions do not inclu…
What is the reason you prefer not to simply let python lie around? Security?
Re: I'm switching to Python and actually liking it
#425Earlier quoted context omitted.
… node_modules is your venv. If we use uv from TFA, like the commands are nearly 1:1: npm install uv sync npm install foo uv add foo > It doesn't have to also store a local copy of NodeJS … which Node devs do have a thing for, too, called nvm, written in bash .
The difference is it's default, it always works the same everywhere, it actually writes down the deps, and I don't have to manually switch between them (or set up fancy bashrc triggers) like venvs.
This point is true; the ecosystem simply can't change overnight. uv is getting there, I hope.
> it always works the same everywhere
`uv` works the same, everywhere?
> it actually writes down the deps
`uv add` does that, too.
> I don't have to manually switch between them (or set up fancy bashrc triggers) like venvs.
You don't have to do that with `uv`, either?
Re: I'm switching to Python and actually liking it
#426"And guess what's the de facto programming language for AI? Yep, that sneaky one." Is this referring at all to to PyTorch. If not, any guesses what the author has in mind "Not only because the syntax is more human-friendly, but also because the Python interpreter is natively integrated in all Unix distros." Is this referring to GNU/Linux. UNIX (UNIX-like) includes more than Linux; some UNIX distributions do not inclu…
"And guess what's the de facto programming language for AI? Yep, that sneaky one." He's referring to Python in general "Not only because the syntax is more human-friendly, but also because the Python interpreter is natively integrated in all Unix distros." I think he means that its available or readily available in many major linux distributions like Ubuntu, Fedora, NixOS, etc. I don't think native is the right word.…
I do not use bash. I use ash. Bash is too slow for me, like Python.
Re: I'm switching to Python and actually liking it
#427Earlier quoted context omitted.
This isn't really unique to the walrus operator, it's just a general python quirk (albeit one I find incredibly annoying). `for i in range(5): ...` will leave `i` bound to 4 after the loop.
I find it incredibly intuitive and useful that it does that. sometimes it drives me nuts that it doesn't do it for comprehensions but I can see why. But if something fails in a loop running in the repl or jupyter I already have access to the variables. If I want to do something with a loop of data that is roughly the same shape, I already have access to one of the the items at the end. Short circuiting/breaking out o…
Re: I'm switching to Python and actually liking it
#428> Not only because the syntax is more human-friendly, but also because the Python interpreter is natively integrated in all Unix distros That's kind of very optimistic evaluation - literally anything beyond "import json" will likely lead you into the abyss of virtual envs. Running something created with say Python 3.13.x on Ubuntu 22.04 or even 24.04 (LTSs) / Rocky 9 and the whole can of worms opened. things like vir…
Re: I'm switching to Python and actually liking it
#429Just a small note on the code in the linked script: API_KEY = os.environ.get("YOUTUBE_API_KEY") CHANNEL_ID = os.environ.get("YOUTUBE_CHANNEL_ID") if not API_KEY or not CHANNEL_ID: print("Missing YOUTUBE_API_KEY or YOUTUBE_CHANNEL_ID.") exit(1) Presenting the user with "Missing X OR Y" when there's no reason that OR has to be there massively frustrates the user for the near zero benefit of having one fewer if statemen…
Neophytes take notice. Attention to details like this is what separates truly great programmers from merely good ones. That said, for scripts reusable by others you should use command line arguments . Environment variables in lieu of command line arguments is a huge code smell.
Re: I'm switching to Python and actually liking it
#430Earlier quoted context omitted.
This isn't really unique to the walrus operator, it's just a general python quirk (albeit one I find incredibly annoying). `for i in range(5): ...` will leave `i` bound to 4 after the loop.
Oddly enough, "except" variables don't remain bound! try: x = int('cat') except Exception as e: pass print(e) # So, it appears Python actually has three variable scopes (global, local, exception block)?
e = 'before'
try:
x = int('cat')
except Exception as e:
e2 = e
print(e)
print(e2) #
It's not a scoping thing, the bound exception variable is actually deleted after the exception block, even if it was already bound before!