I hate on it mainly for its lack of static typing.
I tried building a HomeAssistant add-on in python, and it was not a good experience. Idk what IDE python devs usually use but VSCode did not provide much assistance.
Why would you hate on it? It has its usecases. You won’t build an OS in Python, but I’d much rather do data processing in Python than in C
PeriodicallyPedantic@lemmy.ca 3 weeks ago
cooligula@sh.itjust.works 3 weeks ago
You can in fact statically type in Python. For example, defining variables:
six: int = 6 hello_world: str = "Hello World!"
Or defining functions:
def foo(x: int) -> int: return x**2
If you only want to use static Python, you can use the mypy static checker:
# Install mypy if you don’t have it pip install mypy # Run the checker on the file (e.g., example.py) mypy example.py
Kornblumenratte@feddit.org 3 weeks ago
That’s just a fancy way of commenting on the intended types, no static typing though.
Python will happily execute:
six: int = 6 six = "Hello World!"
cooligula@sh.itjust.works 3 weeks ago
But mypy will not accept it :)
Omgpwnies@lemmy.world 3 weeks ago
What you’re describing is type hints, it’s syntactic sugar and not used at all by the interpreter.
For example, this is a “legal” statement:
foo: int = “bar”Your IDE and linter will complain, but the interpreter just chops the hints off when compiling, and it’s left with
foo = “bar”PeriodicallyPedantic@lemmy.ca 3 weeks ago
I was using that syntax, but nothing seemed to be checking it. Running an external app to get static checking done isn’t great, presumably there are extensions for common IDEs?
But the poor vscode developer experience went beyond that. I attribute it to dynamic typing because most of my frustration was with the IDE’s inability to tell me the type of a given variable, and what functions/properties were accessable on it.
I hope it’d be better on an IDE made specifically for python, although idk how many extensions I’d have to give up for it, and things like devcontainers.
MonkderVierte@lemmy.zip 3 weeks ago
But the poor vscode developer experience went beyond that.
Yeah, vscode is too laggy.
buttnugget@lemmy.world 3 weeks ago
I am currently taking a Python class and we are using PyCharm I’m not a developer, so I don’t know if it’s good yet.
buttnugget@lemmy.world 3 weeks ago
Maybe I’ll build an OS in Python just for the fun of it! Haha
cooligula@sh.itjust.works 3 weeks ago
You just cannot do it, I’m afraid. Python is an interpreted language, and requires de CPython library to be translated into machine code so that it can then be run, but that requires an underlying OS that makes the calls. The closest thing would be micropython, which can be run inside the Linux kernel, but that’s about it. The only thing I can think of is using a custom compiler that would generate either C/C++ or assembly code from a Python script, and then compile it using a standard C/C++/assembly compiler.
MonkderVierte@lemmy.zip 3 weeks ago
So, there?
cooligula@sh.itjust.works 3 weeks ago
That is not the same as building an OS in Python hahaha
buttnugget@lemmy.world 3 weeks ago
Well shoot! This is really interesting though. I’m not a programmer, but I think I understand the basics of this.
PlexSheep@infosec.pub 3 weeks ago
Guess they have to write a python compiler first then.