And with the recent addition of new syntax, I would hardly call Python easy.
And with the recent addition of new syntax, I would hardly call Python easy.
Most python programmer use 10% of the language, the same 10% that is described in most tutorial, because that's enough, and they don't even know the rest exist.
This makes for a very smooth, but long learning curve which allow you to enjoy python in the early years, yet keep getting a kick out of it after 15 years.
I hear a lot of people raising the same kind of concern you do in comments, but in the field, I never do with people actually using the language.
Once you get thrown in a big project that makes heavy use of type hinting (plus the whole environment of it, mypy et all), Object Oriented design and all those hidden things...you realize how much you really don't know.
And that 10% is way too small. To be productive in Python, you need to know at least 50%, or you will be reinventing a lot of existing things. Poorly.
But 99.9999999% projects won't implement metaclasses.
Most won't event implement decorators, context managers or generators. Use them, sure.
In the olden days, programmers would have to make 90% of that, alone.
Maybe this is the reason why everyone and their grandma can call themselves programmers these days.
I agree: Python has Batteries Included. But additional Batteries are Optional.
But that's exactly what that expression means?
A car with an automatic transmission is "easy to learn and use", but an automatic transmission is way more complicated to construct than a manual one.
The comparison makes no sense.
class A():
@property
def a(self):
raise Exception('go away')
a = A()
then hasattr(a, 'a') will return False in Python 2.7 (and throw as expected in Python3)A true WTF moment, the tests and the API have been slightly broken for years, without anyone noticing.
You can do these things in the extremely rare cases that you must, but other than that you shouldn’t.
It's so easy to learn & use that children manage to be productive with it (the Roblox community).
It's still powerful though. With few enough primitives to remain simple & understandable, it has just enough primitives to build anything. People have written web frameworks, window managers and video games in Lua.
It's got less pitfalls, "voodoo magic" and advanced weirdness than any other language I know. You can learn 90% of the language from its Wikipedia page. Every time I encounter some of Python's internal weirdness, I wish Lua had been the scripting language of the 2000s instead. Unfortunately Python has a vast collection of libraries available that keep us using it instead.
*and by easy there I mean streamlined and more intuitive on most expected "common" tasks than the alternatives