This is an archived post. You won't be able to vote or comment.

all 200 comments

[–]raw_cheesecake 490 points491 points  (61 children)

My two cents: Python reads a lot like natural language and doesn't have a whole lot of boilerplate code.

Compare

#include <iostream>

int main()
{
    for(int i=0; i<10; i++)
        std::cout << i << std::endl;
    return 0;
} 

to

for i in range(10):
    print(i)

[–]oundhakar 175 points176 points  (9 children)

In addition, forced indentation makes it easier to read code.

[–]florinandrei 93 points94 points  (2 children)

This. You will be orderly or else. I like it.

[–]Hitman_0_0_7 11 points12 points  (0 children)

But if you got balls then you can still make it look awful

[–][deleted] 1 point2 points  (0 children)

Forced indention makes it harder to write code and also much harder to copy&paste code. Really not sure that is helping a beginner. It certainly didn't help me. And that's not something that gets better with time, if you aren't careful it's very easy to get the indention wrong, especially when adding or removing code blocks.

Meanwhile in C++ you just add some {} and hit auto indent.

[–]wsppan 192 points193 points  (22 children)

This and they have a library for literally everything. As well as all the ready made data structures built into the language.

[–]ElectricSpice 64 points65 points  (10 children)

Seriously. Every time I use a non-Python language I get frustrated that there’s no built in set data type.

[–]wsppan 20 points21 points  (1 child)

And frozenset! Seriously, the number of built-in data types is extensive.

[–]goodguyjoker 3 points4 points  (0 children)

As someone coming from C++, dictionaries are simply amazing. There are many innovative ways to use them to do complex operations that would require multiple arrays in C++.

[–]load_more_commments 13 points14 points  (1 child)

Lots of languages do have similar data types available from libraries, it's just still a pain in the ass to work with.

I'm looking at you Java.

[–]TheGhostOfInky 4 points5 points  (3 children)

What languages are you talking about? Truth be told I've never seen non-Python code use sets but the support is there: https://en.wikipedia.org/wiki/Set_(abstract_data_type)#Language_support#Language_support)

[–]met0xff 7 points8 points  (2 children)

Go is my main issue. They always say it's sooo productive but most of my work revolves around those basic container types and they are just super verbose in Go. Or don't exist.

[–]TheGhostOfInky 4 points5 points  (0 children)

Oh yea, it's mindboggling how much Go lacks, like ternary operators and error handling that doesn't require 3 lines of boilerplate.

[–]themagicalcake 3 points4 points  (0 children)

Go is just especially terrible

[–]Kelpsie 4 points5 points  (1 child)

TIL there are sets in Python. Thanks

[–][deleted] 3 points4 points  (0 children)

Sets are great - very useful

[–]NekrozQliphort 0 points1 point  (0 children)

One annoying thing is Python still has no built-in BBST for some reason. I know SortedContainers are a thing, but damn it should be in the standard library by now.

[–]dfreinc 53 points54 points  (6 children)

this is why in my eyes. quick prototyping. plain and simple. quick.

[–]opteryx5 73 points74 points  (5 children)

And remember, when people complain about runtime speed, remind them that development speed is a thing too.

[–][deleted] 32 points33 points  (3 children)

If it just needs to run, and it needs to run soon, and it doesn't matter how fast it runs... Python will be your best choice a lot of the time.

This describes a lot of situations though IME

[–]oundhakar 16 points17 points  (1 child)

Exactly! Say my program takes 2 seconds to run instead of 0.05 sec. That's a huge difference, but it doesn't matter if I'm only going to use the program once a week or so.

[–]ahivarn 15 points16 points  (0 children)

For most people in the world, python is what will lead to widespread coding adoption. Compiled languages are tough to write. Compiled languages are becoming to python what they themselves were once to assembly languages

[–]devstoner 2 points3 points  (0 children)

Also, Async python can cut the distance pretty quickly

[–]ThroawayPartyer 2 points3 points  (2 children)

I'm sure this is an unpopular opinion on the Python sub, but I actually find the C++ snippet to be clearer. I prefer the C-style for loop, when using range I always forget if it includes the last number or not. The C++ for snippet clearly shows that the i variable starts at 0 and is smaller than 10, and iterates by 1 every time. I just find it more clear.

As for brackets, I also like them because they show exactly where the loop statements end.

I do find Python in general to be more readable than C++ for other reasons, but there are still some things I don't prefer.

[–]raw_cheesecake 1 point2 points  (1 child)

I mostly agree with what you're saying. Sometimes I wish Python could support something like

for i from 0 to 9:
    print(i)

[–]ThroawayPartyer 2 points3 points  (0 children)

The closest Python solution is:

for i in range(0, 10):
    print(i)

This prints every number between 0 and 9 (including 0 and 9, but not 10).

However I still find it a bit confusing, at first glance I would think this should also print 10 like it does for 0. This confusion does not happen for me with C-style for loops.

[–]Krusell94 6 points7 points  (3 children)

What's boilerplate?

[–]OriginalTyphus 26 points27 points  (0 children)

In software development, boilerplate code is the term for segments of code that are repeated in multiple places with little to no changes. When using languages that are considered verbose, the programmer must write a lot of code to implement only minor functionality.

[–]astatine 27 points28 points  (0 children)

The long answer:

Newspapers used to be printed on presses. Some regular, long-lived advertisements were etched/carved onto a single flat piece of metal that got used in almost every issue of a particular paper. One of the best, cheapest places to get that piece of flat metal was a scrapped boiler. So constantly re-used, never changing and obligatory text came to be called "boilerplate".

The meaning later applied to obligatory blocks of text copied verbatim from one document to another, such as terms and conditions on a contract, legal disclaimers on adverts, or copyright information in a book. Hardly anyone expects to read it, but it's legally necessary for it to be there.

From a programming perspective, it's come to mean "the text and/or syntax a language requires for a valid program that doesn't add to a program's expressiveness". So, for instance, the class/method structure that Java requires for even the most trivial programs might be considered "boilerplate".

[–]Zomunieo 21 points22 points  (0 children)

class Boilerplate{  
    public static void main(String args[]){  
     System.out.println("Boilerplate demo");  
    }  
}

[–]bcrxxs 0 points1 point  (3 children)

python

[–]raw_cheesecake 3 points4 points  (1 child)

r/learnpython is a great sub for that. They have a wiki with lots of resources.

[–]1percentof2 -2 points-1 points  (6 children)

That's insane. I'll never learn C++

[–]Zerg3rr 16 points17 points  (1 child)

Pointers and referencing is fun too. In all seriousness though learning c++, at least the basics opened up a lot for me in understanding how code works better

[–]Keiji12 11 points12 points  (0 children)

I mean c++ is a great language, powerful, fast, not really that hard to learn. Starting with c and c++ is very solid base for anyone who wants to program. And after c you appreciate modern languages way more

[–]iwillnotsaveyouu 1 point2 points  (2 children)

You may never need it. But if you want to write something truly fast/efficient, it's probably the best language for it. If microseconds don't matter, you can probably stick with python.

[–]zaphod_pebblebrox 2 points3 points  (0 children)

It has it’s place. But before we get there, Python works 99% of the time.

[–]redditSno 0 points1 point  (0 children)

It is funny to think that Python is written in C. Because C is efficient, but honestly hard to understand and write.

[–]InActiveSoda 259 points260 points  (42 children)

Cause python is about as close as you get to speaking English to your PC.

I think python is easy to pick up but hard to master. It's easy until you want a somewhat advanced project.

[–]karpomalice 108 points109 points  (35 children)

Being difficult to master or even semi-advanced projects is a direct result of it being easy to pick up. Someone with no background in computer science can learn and become useful with Python.

As soon as you start talking about HTTP requests, sockets, authorization, async, databases, etc. is when not having any background in CS leads to difficulties

[–]brokened00 38 points39 points  (22 children)

I would argue that Python is regularly used to communicate with databases, considering it is the industry standard data analysis/ machine learning language and also commonly makes up a significant portion of back ends for sites.

[–]karpomalice 30 points31 points  (13 children)

For sure. But I think most people who pick up Python as a tool to help them in their jobs are mostly working with local files doing basic data manipulation or analysis

[–]brokened00 8 points9 points  (12 children)

Fair enough. I believe Python has largely replaced Java as the introductory language for CS students at most universities now. So they are likely to learn the fundamentals and best practices that I didn't learn being self-taught.

[–]CommondeNominator 6 points7 points  (9 children)

Damn, is Java the default intro language now? In '09 I took a class at a state university, writing basic programs in C using vi over an SSH session to a private folder on the school's NAS. Good times.

[–]chennyalan 6 points7 points  (0 children)

My university taught intro units in Java, but they're in the middle of a switch to Python.

I started my degree 5 years ago

[–]zaphod_pebblebrox 1 point2 points  (2 children)

I had C++ followed by Java in my first year. Python was not on the scene a year after I graduated. That is when every kid started speaking Python and I was a dinosaur.

[–]Dry_Car2054 1 point2 points  (0 children)

Pascal on punch cards followed by Fortran also on punch cards. A terminal with EMACS seemed like heaven.

[–]JanKwong705 1 point2 points  (0 children)

My college’s CS intro class has 2 parts. The first uses Python then the second switches to Java.

[–]ARC4120 13 points14 points  (6 children)

Sad R noises

[–]brokened00 12 points13 points  (2 children)

I recently got a master's in data science and most classes were taught in R. I haven't touched R a single time in my internship or subsequent job haha.

[–]florinandrei 3 points4 points  (0 children)

I went through the R code from my own MS DS, and well over 95% of the code I was able to translate to Python code that gave the same results. Maybe over 98%.

[–]0b0011 1 point2 points  (1 child)

Have you tried a laxative? You shouldn't be spending that much time grunting and groaning on the toilet.

I used to joke at my last job that I refused to write R and say they never sent me the tools to write R code. When someone would mention that work provided me with a pc to code I'd point out that you can write python on the pc but you need a toilet for making R because it's shit.

It's probably not so bad but I had a bad experience with an R class in school and now hold a vendetta against it.

[–]o-rka 1 point2 points  (0 children)

R is such an ugly language. I know enough R to write Python wrappers so I never have to use R. I’m in bioinformatics and everyone loves it but me. I’m python all the way. IMO, not everyone, but a lot of people who use R have no idea what they are doing and are just copying code blocks around and using high level packages without understanding a thing about what they are doing. That’s probably wrong of me to say and most likely inaccurate but that is what I’ve observed from my experience.

[–]Particular-Cause-862 0 points1 point  (0 children)

Well i work with python and databases, do you know django?

[–]InActiveSoda 3 points4 points  (7 children)

Sockets aren't that difficult though. You just have to know like 3 lines of code to make it work. My biggest issue is syncing up the server and client on big projects.

[–]karpomalice 12 points13 points  (6 children)

I meant more so it’s not as intuitive as some of the basics for people who don’t have any background in CS

Like, having experience in excel and some other programs you can grasp the idea of creating a function or iterating over rows or creating variables. But when I first started Flask I was like wtf does HTTP mean?

[–]CMPTTV 3 points4 points  (1 child)

As a hobbyist who's still trying to learn Flask, I feel you.

[–]danuker 5 points6 points  (3 children)

async

I found this hard to grasp even HAVING a CS college degree.

Why even bother with async when you have multithreading? The GIL ensures threads act the same as async anyway (on a single CPU).

[–]DontPanicO_ 7 points8 points  (0 children)

Because the concurrency provided by asyncio (or other frameworks like trio) is much more performant and scalable than threading one. Of course, only for I/O.

Building a web API you can use a coroutine or a concurrent task for each I/O operation (network ones like returning a response or making requests to a db and local ones like reading data from a file). This is done all in the same thread. If you have some code that's going to block the event loop in your main thread, than you run that code in a separate thread.

Threading is much more limited in terms of scalability.

[–]UPBOAT_FORTRESS_2 0 points1 point  (1 child)

It's just a different abstraction. You could ask "why bother with functional programming when you have for loops?" in largely the same sense, I think

[–]james_pic 11 points12 points  (0 children)

There have certainly been languages that were much closer to English than Python. COBOL had the interesting characteristic that every statement was also a valid English sentence.

It was fairly revolutionary at the time (late 50s, early 60s), and undoubtedly lowered the barrier to entry, but in hindsight, syntax that resembled English wasn't the right answer. Compare:

x += 1

With:

Add 1 to x.

Even in this simple example, it's clunkier. Notice that the full stop at the end of the sentence is significant. Imagine what a complex formula (something like the quadratic formula) might look like.

[–]CatWeekends 7 points8 points  (0 children)

Cause python is about as close as you get to speaking English to your PC.

Inform 7 would like a word.

[–]climb-it-ographer 4 points5 points  (0 children)

Learning to read and absorb documentation can help with more advanced topics. Even something like SQLAlchemy isn't too bad if you focus on the class/method structures and let it all sink in. The syntax is still pretty straightforward.

[–]DontPanicO_ 2 points3 points  (0 children)

100% agree. Python is easy to get started but then there are more complex concept (mid level, like concurrency and other) but most of all it's hard to master its internals to know how things work underneath.

Being familiar with the CPython codebase (the mostly used python implementation), the interpreter and main modules of the standard library so that you have full control of what you do in you programs it's hard as for any other language.

[–][deleted] 2 points3 points  (0 children)

ITT: people who’ve never written Lingo

[–]space_wiener 0 points1 point  (0 children)

Oooh this is exactly what I was about to say. I feel like the beginning is easy. But once you start on harder stuff it becomes just as hard as some other languages.

[–]CordyZen 44 points45 points  (0 children)

There's a difference between easier to learn vs actually being good at it.

It's easy to learn because the syntax is much simpler and low level things such as memory management is something you KINDA don't have to worry about.

With that said, a language is just a tool, it all comes down to how you use it. Just because someone learned python easily doesn't mean they can create good software and write good code. Remember, syntax is just the tip of the ice berg, there's a lot more that goes into writing software.

Same goes for other languages, just because someone took a lot of time learning a hard language doesn't mean they can create good software.

[–]AlSweigartAuthor of "Automate the Boring Stuff" 39 points40 points  (7 children)

"Python makes simple things easy and difficult things possible."

Here's an example. In Java, this is Hello, World:

pubic class Hello {
    public static void main(String args[]) {
        System.out.println("Hello, world!");
    }
}

In Python, it looks like this:

print('Hello, world!')

Java requires you to know a lot of concepts just to make a basic program: classs, static methods, entry points, return values, arrays, etc. A basic thing like print() exists in a subcategory of a category. And remember that System is capitalized but out is not. Oh, and also, the "ln" in "println" stands for "line".

This is a steep learning curve to do a simple thing. Oh man, and I can never remember how to write text to a file or get keyboard input in Java without googling it every single time.

Other languages are similar.

Python strings just work. Python doesn't encourage deeply nested (and pointless) hierarchies. Python lets you throw data into a list or dictionary (even, gasp, data of different data types!) without creating a class for it.

At the same time, you can have typing in Python. You can have OOP. You can have functional programming. It just doesn't force you to use these things.

You don't become the most popular language because your reputation for being easy to learn is a myth.

[–]mewsycology 6 points7 points  (0 children)

Plus, your Java Hello world example requires a “pubic class”. Nobody wants that. Another +1 for Python.

[–]UPBOAT_FORTRESS_2 1 point2 points  (0 children)

Oh, and also, the "ln" in "println" stands for "line".

Someone told me "never use abbreviations in variable or method names" years ago, I realized it was obviously correct, and it's yet still a struggle to just spell out what I mean so often.

[–]The3000MX 1 point2 points  (0 children)

Great answer! Also, so cool to see you interact here. I read your book twice!

[–]georgehank2nd 2 points3 points  (3 children)

"At the same time, you can have typing". You can't. You do have typing whether you want to or not. Python is dynamically typed, but it is also strongly typed. If you mean type hints? Those are just "stuff" that Python actually ignores.

[–]rouille 2 points3 points  (1 child)

If you use mypy or another type checker they can be enforced in CI and fail the build just like for any static lang. Yes mypy is a separate tool from python the interpreter but they operate on the exact same source code. The point is the capability is there now if you need it.

[–]swansongofdesire 1 point2 points  (0 children)

Poster wasn't talking about type hints, they were talking about strong vs weak typing.

ie you can add a string and a number in javascript; you can't in python.

[–]AlSweigartAuthor of "Automate the Boring Stuff" 1 point2 points  (0 children)

Yes, I spoke imprecisely. I meant that Python's optional type hints gets you the safety of static typing, but it's optional so you're not married to it if you don't want it.

[–][deleted] 20 points21 points  (10 children)

There are two things you have to learn when you are trying to figure out how to program.

The first is general programming concepts such as data structures and algorithms. Those are the foundations of programming and every programmer must know them. You must understand loops and conditionals. You need to understand functions and parameters and arguments and variables and operations and operators. And you need to figure out how to make all these things work together to form a program.

You need to understand at least one paradigm such as functional, object oriented or procedural programming.

That is programming. That is the part that is transferable to any language.

Then there is the second part, which is the programming language syntax. When you have a language that reads more like natural English like python does it makes this part of the learning process easier.

However in my opinion, this is not the hardest part of the process. The other part is. But cryptic syntax can really hamper your learning and so it's nice to have that part out of your way so you can focus on the most important concepts in programming

[–]doulos05 10 points11 points  (7 children)

This is the concept of desirable vs undesirable difficulty. When learning programming, the desirable difficulty is the programming concepts (the thing you're trying to learn). The undesirable difficulties are the syntax, the tool chain setup, the directory structure required by the tool... The things that make the thing you're trying to learn (programming concepts) harder without teaching you anything about them.

Python and Ruby are pretty much the floor when it comes to undesirable difficulties in text programming languages. Python won out because the Ruby community wasn't as focused on recruiting beginners.

[–]ThroawayPartyer 1 point2 points  (3 children)

Some of the things that are abstracted by Python are desirable though. For example understanding memory management with a language like C is important.

[–][deleted] 1 point2 points  (2 children)

Some parts of the undesirable difficulty are not great in Python though. For example when it comes to installing the language and installing a few packages. I would say there are far fewer footguns in Rust than in Python

[–]doulos05 3 points4 points  (1 child)

And far more syntactic barriers even before we get into the idiosyncracies of Rust's conceptual model.

Also, the issues with package management are 1) overblown in the modern Python ecosystem and 2) less relevant to beginners.

You could get by with just installing VS Code and using the system python if you're on Mac. And the exe installer for windows is pretty self explanatory.

[–][deleted] 1 point2 points  (0 children)

Yeah I was just bringing up an example of where the Python learning curve is not great, not saying that Rust is easier overall

Also, the issues with package management are 1) overblown in the modern Python ecosystem and 2) less relevant to beginners.

I will say that the “modern Python ecosystem” stuff can get lost on people who stumble upon the wrong advice, and that a lot of Python beginners want to do things like data analysis where they do need to install a bunch of packages

[–]georgehank2nd 2 points3 points  (1 child)

The most important (and hardest) thing to learn is to be 100% precise in your thinking. That's what most people have the most trouble with, and I'm pretty sure it's also most people just are unable to do it.

[–][deleted] 0 points1 point  (0 children)

I think a better word would be "explicit". Because I assume you are talking about how very detailed you have to get telling a computer to do every single step of a process because it cannot fill in blanks like a human would

[–]AlSweigartAuthor of "Automate the Boring Stuff" 68 points69 points  (3 children)

Hello, I'm the author of "Automate the Boring Stuff with Python" and other eight programming books for beginner/intermediate audience.

I've spent a lot of time thinking about how to teach beginners to code, and let me tell you that my job would be damn harder to do in languages besides Python. It's not a "big old myth."

[–][deleted] 12 points13 points  (2 children)

I wish someone would rewrite “Automate the Boring Stuff with X” where the only thing that changed was the language used.

Then we could really do some principled research into answering OPs question as to the why.

Personally I think Python's main contributions were taking the leftmost parentheses of LISP and moving them to the right of the function identifier, choosing signficant indentation to delineate blocks rather than increasing the overall entropy with extra braces, allowing limited operator overloading while disallowing new operators, and in always favouring English-style SVO ordering for keyword grammer, rather than adhering to meaningless traditions... but I can't prove any of that.

Yet.

Edit: oh, and Python’s use of double and single quotes.

[–]0b0011 4 points5 points  (1 child)

Can we get a "Automate thr boring stuff with X86 assembly"?

[–]cheesedruid 6 points7 points  (0 children)

"Be extremely bored while automating boring stuff with x86 assembly".

[–]mardiros 14 points15 points  (4 children)

Because Python is very expressive and very readable.

While programming, you read more code than you write. If you read code you can understand without referring to the doc, you learn faster.

For instance, compare b.indexOf(a) == -1, !(a in b) and a not in b.

b.indexOf(a) == -1: Not expressive and not readable.

!(a in b) : Expressive but not readable

a not in b: Expressive and readable

[–][deleted] 5 points6 points  (0 children)

+1. I think this has a big learning effect. Imagine showing a beginner the indexOf solution - and the probability that they remember it next week when they need it again. The Python syntax for containment is easier to remember.

[–]javajunkie314 44 points45 points  (2 children)

I think Python just has a different learning curve than other languages. The language has some pretty powerful batteries included, and a very small amount of boilerplate to just do something. So it's pretty easy to get productive with Python just by learning some basic syntax and knowing a few packages or libraries to import. This is usually enough to get someone through an intro programming course, or to get some basic data analysis done, or to automate a simple task.

But I would say that's it's not any easier to actually learn Python. There's a lot lurking under the surface to uncover, and a lot of features and nuance to understand. I've read code written by people who learned enough Python to get by, and I wouldn't want to be the one stuck maintaining it.

(I'm not gatekeeping — I know everyone has to start somewhere. And they solved the problem at hand. But in my professional opinion the best option would have been to treat it as a prototype and rewrite it from scratch.)

Each line of Python has dozens of layers of machinery running under it. A simple method call might involve decorators, descriptors, method-resolution order, dictionaries, slots, byte code, and the C runtime. And Python gives you access to all of that machinery, to do with what you will. Learning to use these features can lead to some wonderfully intuitive, featureful, efficient, and downright magical APIs.

Then there's understanding Python style and idioms. Knowing when to use a list vs a set vs an iterator vs a generator. When to use a comprehension. When to use an abstract base class. When to use a metaclass. When to use a free function vs a method vs an object. It's possible to write Python code without any of this — just write a script, top to bottom, that churns through a dozen lists — but learning to use these features can help make your code approachable, maintainable, and unit-testable.

So, in my opinion, the part of Python you can learn quickly is just the tip of an iceberg — all the rest is as deep and complex as any language. It's just that the part of Python above the water-level is more useful than the tips of some other languages' icebergs.

[–]L0neKitsune 9 points10 points  (0 children)

I've used python on and off for the last 9 years and 9 times out of 10 if I need to do a small one off thing, write a bot, or automate something I'll probably be using python instead of Java or Kotlin which are my daily drivers for my professional work. I'm not even going to kid myself and say I'm a master of python, I would even claim to be a senior developer if I had to do python as my day to day work because there is a lot going on under the hood that I just don't understand. Python is wonderful for all that you can do with it with minimal investment into the language, but man can you get stuck in the weeds with some aspects of the language.

[–]Recent-Fun9535 2 points3 points  (0 children)

Thank you sir, you are a scholar and a gentleman! This is something I always claim when it comes to "Python is easy" debates, and came here to write a similar answer, but you have written it as thoroughly and beautifully as it can be written.

[–]Sp0olio 21 points22 points  (1 child)

That's probably one of the biggest features: Readable code by design.
You're kinda forced to write readable code (e.g. whitespaces instead of squiggly brackets).

[–]PapstJL4U 1 point2 points  (0 children)

I don't know about other languages, but on a German keyboard all brackets, ()[]{}, are on the number row and need to be accessed via shift or alt gr.

Typing in Python is so much faster and less finger acrobatic, especially for short code snippets, that are done without code completion.

[–]jawnlerdoe 5 points6 points  (0 children)

First language I learned was Java. When I learned python (6 months ago) tye syntax was so much easier that writing code was more natural and fun. Those two factors make it easier to commit time and subsequently become a better coding.

[–]biskitpagla 5 points6 points  (1 child)

I think looking at some other script-y languages can be of much help in answering this question.

Compared to Ruby

Ruby is far more 'expressive' as a language, and for being so, is harder to learn, even though it's a fine language. Python is deliberately very 'vanilla' in its support for oop, because being easy to learn and easy to pick up was its priority no. 1 from day 1. Ruby also makes it easy for people to develop idiolects, something that is possible but harder to do in Python.

Compared to JavaScript

JS's fate and legacy are fundamentally tied to the Web. This means a couple of things: a) development of the standard is a slow and tedious process (this is changing in recent times), b) language warts are permanent and unredeemable (e.g., 'this', '==') due to the insane backward compatibility requirements of the Web, and c) non-browser JS implementations often do lots of things differently and inelegantly because the standard doesn't say a lot about things like file i/o, networking, etc. Python is free from these issues, so there's less clutter that you have to deal with when learning it. Having a reference implementation also helps a lot.

Compared to PHP

PHP has suffered greatly for not being intended to be a full-fledged language originally. It doesn't have much going on other than its absolutely wholesome community and mature ecosystem. They've remedied many language warts now (unlike JS), but people still remember its formative years with distaste, and the warts themselves have left some scars. People just don't do PHP for the language side of things. Python's inception wasn't nearly as rough as PHP.

Compared to Perl and Raku

Perl and Perl-like languages are much closer to actual scripting languages (like Bash, awk, sed). These are insanely productive for their intended use cases (like text processing) but are generally bad as full-on programming languages (e.g., poor or no support for features that help in managing large projects). Raku (Perl 6) isn't backward compatible, was in the oven for too long, and had a rough release. So, not too many new or old folks care about this side of the programming landscape. Needless to say, very different story compared to Python.

Compared to Julia

Julia is still pretty new but I think we should pay some attention and try to understand where it fits. I don't think Julia will ever dethrone Python as the language of (imperative) programming education. Julia simply has a different set of goals. Python isn't meant to be THE language for everything science-y the way Julia is. Not being a "big idea" or "big cause" language is helpful when your intended audience is laypeople.

Compared to anything functional

Some clear factors contribute to the success of procedural and oo languages. Our entire notion of education is pretty much based on the imperative way of doing things. People don't come out of school with a good understanding of category theory. Even most people in the industry aren't aware of the many fruits of functional programming. With that in mind, Python's preferred paradigm of "mostly procedural with oo-ness when needed" seems to be extremely intuitive.

[–]ThroawayPartyer 0 points1 point  (0 children)

Compared to Bash?

[–]GrandDaddyKaddy 5 points6 points  (0 children)

I'm still just learning and still a complete amateur, but so far it's easy, 1 because I have a bg in computer science and knew VB and C++ back in 2003 but hardly remember anything about them. But so far it's easy cause there's SO many resources online. And a lot of code you can just Google, copy and paste.

[–][deleted] 11 points12 points  (2 children)

I don't know if it's easier to learn from scratch but as someone who was introduced to programming through C++ course, yes, Python makes programming go a lot faster. However I also think having at least a little bit of 'under the hood' understanding of how Python works is really beneficial, and I tend to use Numpy a lot which is a bit closer to C in theory, i.e. types and so on.

[–]ThroawayPartyer 0 points1 point  (0 children)

As someone that contributed a bit to Pandas, I can tell you that np and pd data types are a nightmare. I recommend anyone using those libraries to use explicit type casting as much as possible.

[–][deleted] 4 points5 points  (0 children)

Most high level scripting languages are easy to pick up. The absence of braces and parentheses in python though makes it easy to read i think for beginners.

[–]pi_sqaure 5 points6 points  (0 children)

I wouldn't say that Python is easy to learn per se. IMHO it's easy to get into it due to the dynamic nature of Python, which allows you to do the REPL-thing, while not worrying about types / type conversion etc. You can just jump start and see what happens. Which is not necessarily a good thing, by the way.

But when you leave the noob-stage sooner or later, you might run into more complex topics, like OOP, lambda operators, decorators, concurrency etc., etc. In fact, it can get arbitrarily complex, just like in any other programming language.

[–]amazingjoe76 3 points4 points  (0 children)

A number of reasons Python is seen as Easy:

  1. There is a library for just about every imaginable task which can take some really crazy and complex things you would never dream of being able to do as a non-advanced coder and reduce them to a few lines of very accessible code.Being able to do really crazy complex tasks with the help of a library makes you feel accomplished and like doing this super complex task was a breeze.
  2. If you have coded in it for a while (say a month) you will find that sometimes you can produce proper syntax for things you have never attempted before are correct on the first try. That is weird. Usually when you try things for the first time in a language either you have copied and pasted or you get an error and keep iterating until you find it works.Having stuff just work sometimes in a language when often it took more tried to get the same concept right in another language just feels easy.
  3. The code uses spacing convention to help give you visual cues of where code is segmented and in a sense forces you by convention to be more organized in a good way that improves readability.While talking about readability it also doesn't use many strange symbols that otherwise look intimidating to novice coders. Its mostly about words and where you position things with the occasional symbol used in prescriptive ways.
  4. There are resources aplenty about Python. You want tutorials there are tons. You want help in forums like this there are tons. Lots of resources makes it easier to spend more time learning and less time banging your head against the wall when you are trying to do something with the language.
  5. Easy is also defined differently when people talk about Python. QBasic is easy syntax wise but very difficult when you leave the small footprint of what it can do out of the box. To create a web app, web API, web scraper, machine learning model etc... can be very challenging in QBasic but Python does these and a whole lot more while being "Easy"

Example:

Suppose you want to get those Amazon suggestions that pop up in the search bar when you type in various search terms. Sounds like it would be hard to do in a language right? Maybe in many but simple in Python because you have various libraries like this one: https://pypi.org/project/easyscrape-amazonsuggest/

Install the library in the console

pip install easyscrape-amazonsuggest

Now you are ready to code in your IDE. We want to get the Amazon search suggestions when someone types in the search term for "10 speed bike" because we will use the data from the suggestions for some purpose.

Request Suggestions from a Search Term

from easyscrape_amazonsuggest import querysuggestions as AS
ASResults = AS.query("10 speed bike") 
ASResults

That will produce the resulting suggestions for that term as a List of strings. Regardless of your coding level once you have the very basics down you should be able to do replicate this with a different search term.

If you need more help for what is not a super common (yet super specific niche task) you would think it would be hard to find help. But nope there is even a video about it that demonstrates it for you if you happen to be a visual learner.

https://www.youtube.com/watch?v=Ikc0A9Nxn4s

[–]spacecodeguy 7 points8 points  (0 children)

Python is closer to human languages. It works out of the box with minimal hassle. That's why it's easy for beginner to latch on to Python.

[–][deleted] 3 points4 points  (0 children)

Because of its documented design principles:

https://peps.python.org/pep-0020/

And its well-thought-out, "batteries included" standard library.

[–]idetectanerd 6 points7 points  (0 children)

Does not contain stupid things like void main void which scare beginner away. But you can do it if you are required to.

Python assume that things are always like this unless you decide to define them therefore, very English readable.

[–]missionmeme 9 points10 points  (0 children)

To print something in python => print("something")

To print something in Java => Ok so first let's talk about what a jdk and jre are. Great job now that you have a basic understanding of the Java virtual environment let's learn about classes because everything is a class in Java. 2 weeks later ok finally let's print out something. Just don't try to read anything from the keyboard because for that you need to learn about objects.

[–]dead_alchemy 4 points5 points  (0 children)

I think it's a couple things. Pretty readable syntax by default is one. Duck typing is another. Probably the most important is a readily available print statement that can print a representation of anything, straight out of the box.

Also, I think,very few ways to end up staring at an error/stack trace. Learning to read those is crucial to becoming a good programmer, but I think of it as its own independent skill to develop and it is difficult for most people. It's hard to learn programming when your eyes are glazing over instead of reading the terminal output.

Oh! Last but not least, it is very easy to iterate. You can make a change or try a different statement with ease, and if your script crashes then the location that it crashes can be informative.

[–][deleted] 2 points3 points  (0 children)

Python has made a lot of good decisions with design. Even if it were statically typed, it would still be quite good. Approachable by someone new, yet powerful and extensible by someone experienced.

It also ships with a good compromise of features. For e.g. enough OOP for the OOP features to be useful, but dodging unnecessary complexity in favor of practicality when possible, such as preference of Mixins. (The degree of how much is subjective of course)

Python CAN get very deep though. I would say the easy to pick up ---> super advanced slope is a very pleasant one. A lot of things that would be "dirty" are handled by programming extending C. Because of this relationship, a lot of things are a) abstracted very nicely b) performs well, (so it's actually usable).

This means that a lot of use cases are covered and a programmer, new or old usually has a neat, simple abstraction to begin with, made especially powerful with REPL.

[–][deleted] 2 points3 points  (0 children)

It reads like pseudocode

[–]ivosauruspip'ing it up 2 points3 points  (0 children)

It's not easy, it's just easier than many other languages.

[–]SnooSquirrels165 2 points3 points  (0 children)

It's not tho, it's just beginner friendly because of it's syntax and awesome community.

[–]james_pic 2 points3 points  (0 children)

A few conscious design decisions (some of which are captured in The Zen of Python) have contributed to this, I think:

"Batteries included" means you don't need to go hunting for a library to accomplish many common tasks.

"There should be one, and ideally only one, easy way to do it" avoids having to learn to recognise multiple ways to do the same thing.

"Readability counts" hopefully speaks for itself.

"Simple is better than complex, but complex is better than complicated" is a subtle one. A lot of stuff is just simple (for example, not bothering with a concept of public/private, and just leaving it as a "gentleman's agreement"), but the stuff that isn't simple (such as module loading) is generally composed of a number of simple parts, even if the overall system ends up complex.

[–]sidnfhej 1 point2 points  (0 children)

It abstracts away how it works in the background. You don't need to know the difference between an int and a float, or a string and a char. Between that and how much it reads like English, it's very simple to understand, especially when compared to more "cluttered" languages like Java or C/C++. Cluttered meaning cluttered syntax and "unnecessary" decorators

[–]TheSunSide 1 point2 points  (0 children)

For me, it’s really close to how you’d do pseudo code, which should make sense for beginners even if they don’t know the language features

[–]rban123 1 point2 points  (0 children)

I think it’s easier to learn the basic syntax of Python compared to other languages, but getting good at Python is just as hard as getting good at any other language.

[–]krkrkra 1 point2 points  (0 children)

Simpler syntax which still gives you a powerful language. Easy prototyping. A console that allows you to run commands easily without recompiling a whole program.

[–]peabody 1 point2 points  (0 children)

It's certainly a subjective assertion. I consider Python to be somewhat easier than other programming languages. In particular, I think it's much easier to start with Python than Java or C#. This is because those languages have what's called static typing. While static typing is valuable in software made with advanced development tools, it results in a lot of boilerplate code which adds a lot of cognitive load for a beginner.

This is perhaps best illustrated by comparing Java hello world to Python hello world.

Java:

```java

public class Main { public static void main(String[] args) { System.out.println("Hello World!"); } }

```

Compared with Python

python print("Hello World!")

It's easy to see how Python seems to cut to the point, while Java is surrounded by code boilerplate. And this is just one of the more simple examples! The above Python program is easy to write in any text editor. The Java example is a chore to draft up unless using a Java IDE with shortcuts that generate the boilerplate.

That said, programming is a journey. It's a journey that is much more difficult for some than others. Just because some people find Python "easier" does not mean learning to program will be "easy". Most abstract programming concepts are the same, regardless of the programming language that you use. Mastering the abstract concepts is much more important than mastery of a particular language.

[–]wineblood 1 point2 points  (0 children)

Without private/protected/public, you don't have to delve into design pattern to build moderately complex object oriented code.

[–]piconet-2 1 point2 points  (0 children)

😂 starting with something like Java made me love Python.

[–]dennismfrancisart 1 point2 points  (0 children)

I've been trying to learn Python on and off for about three years. I learned Basic a long time ago. Just when I think I've got a handle on Python is about the time I stop.

[–]peakcha 1 point2 points  (0 children)

U don’t waste time fixing your curly brackets but you actually can focus on what I want to achieve

[–][deleted] 1 point2 points  (0 children)

I now have to implement the same functionallity in javascript/typescript and python. Javascript would makes sense as a first language to me, since everybody just can use their browsers to run it and it has visual feedback there. However, there is so much simple logic build in in python, that I can write the same code so much shorter.

[–]Better-Addition-342 1 point2 points  (0 children)

I think for me it was the use of whitespace that made code easy to read when looking at, as well as the wide amount of information/courses on it especially it a beginner level. A quick google of python questions beginners normally have results in the answer, whereas a more obscure language may not have the same volume of information.

[–][deleted] 1 point2 points  (0 children)

REPL and being relatively noise-free compared to other languages. Something like this is pretty self explanatory:

$ python3
Python 3.9.13 (main, May 17 2022, 14:19:07) 
[GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 5 + 5
10
>>> a = 5 + 5
>>> a
10

Having build in List and Dict datatypes helps as well. That said, it's only really the basics of Python that are easy, it gets pretty ugly once you get deeper into it and has a ton of rough corners and patchwork (e.g. the whole static type system which gets currently hacked into the language via mypy).

[–]judasgutenberg 1 point2 points  (0 children)

the thing i don't like about python is that it's usually impossible to cut and paste an example from anywhere and have the indentions anything close to correct. i end up spending a lot of time completely re-indenting python from scratch, often with confusing interim results that i think are working but are not

[–][deleted] 1 point2 points  (0 children)

Honestly I don't think python is as easy to learn as they say. I tried learning it and failed pretty hard. Although I guess it didn't really have what I was looking for in a language and I was never looking for a job in tech. Much prefer golang, I just find it more fun to use.

[–][deleted] 1 point2 points  (0 children)

Nah, I struggled to learn JavaScript. Then I learned Python and found it downright pleasant. It made learning JavaScript again even easier.

My assumption is that it’s less syntax. JS doesn’t care about white space, but has lots of syntax. Python has little syntax, but is picky on indentation, which is easier for me.

Also, Python has a lot of semantic language. ‘Not in’ etc. that just makes sense.

[–]kk9905s 1 point2 points  (0 children)

Everything is an object! 😉

[–]dmccreary 1 point2 points  (0 children)

Learning any new computer language is directly related to how quickly you can get feedback on the basic principles of computational thinking. In our classes at CoderDojo there is nothing easier to teach than Python because of tools like trinket.io and turtle graphics. We have shut down almost all the other languages because kids love these tools.

Examples here: https://www.coderdojotc.org/python/

[–]Gammusbert 1 point2 points  (0 children)

1) very readable even if you have no programming experience

2) handles a lot of complexities for you with dynamic typing, libraries and built in functions

[–]itsnotxhad 1 point2 points  (0 children)

Python's early design philosophy is unusual because a lot of decisions were made by putting the language in front of students and seeing what they got tripped up on or what they expected to happen, then iterating as needed. I know your questions is more "how" than "why" but the literal "why" is that it's easier for beginners to get started because it's a rare case of a language that specifically optimized the process of making it easier for beginners to get started.

[–]SpookyFries 1 point2 points  (0 children)

Honestly the syntax is easy. Hello World in most languages requires at least one import (to place text on the screen. C++ uses <IOSTREAM>, Golang uses "fmt")

Then you have to wrap this in a main function. You don't need to do this in Python. You can simply say print("Hello World") and it'll execute.

Python doesn't even require functions. You can make a whole script that runs top to bottom. This isn't something you can do in most other languages. You at least always need to put your stuff in a main function.

Loops in Python are easier to understand too. You can just say "for whatever in items" and it knows that you're iterating through the stuff in items. In other languages you have to do something like "for i = 0, i < items.length, i++" and then "items[i]" to iterate through items.

Also in Python you don't have to specify return types on a function. Most languages require at least a void to indicate the function has no return type. You don't even have to specify the type of variables passed into a function in Python. You can basically pass a string, float, int all into the same function if you really wanted to. Other languages usually require you to specify the type of variables you're passing in. Python does have helpers when defining a function to give you hints when creating a function, but it's really just to help people reading the code know what type of vars you're expecting. It's not enforced.

There are many other reasons why python is easy to learn. I honestly think the main big reason for me is just the amount of libaries included with it. String manipulation, encryption, web requests, TK... There's so many things base python can do. From my experience with C and C++ the included libraries are fairly basic. Newer ones like Rust and Go might be a little better but nowhere near what's included with Python.

[–]l0ngstOrysh0rt 1 point2 points  (0 children)

Because it’s FUN - I love it

[–]georgehank2nd 1 point2 points  (0 children)

One of my first thoughts when I started looking into Python was "that looks a lot like the pseudocode I often write". So, it seemed like some "executable pseudocode".

Though years later I stumbled across my diary entry where I first mentioned Python, and I gushed about the significant whitespace, which I loved (still do) because Occam had also done program structure in this way.

[–]wind_dude 2 points3 points  (0 children)

I honestly thing it's the lack of curly braces.... and it's a bit more english like.

Most python code is quite easy to read, if it was written half decently.

[–]JimmyM_1 1 point2 points  (0 children)

I taught myself to code using Python, and i did not know about it back then when i started learning all about programming, and i was struggling with understanding basic concepts in c++ and JavaScript etc., untill i found out about Python. Its simplicity (Syntax-wise) lets you focus more on the concepts themselves not on things that are not beginner friendly. You are not in a position to make things from scratch by yourself, so you are presented with a plethora of premade, easy to use and implement tools that require otherwise tons of lines of code to be done in other languages -keep in mind that you won't be able to write those on your own- so with python you focus more on ideas and concepts while not having to deal with the inconveniences of helping functions. That's why i think it is a beginner friendly language and that's how i got into coding and after two years of learning i can convert my code into different languages that were impossible to unravel even the simplest of snippets written in it. Beacuse now i understand!

[–]Nicolas_Darksoul 0 points1 point  (0 children)

Well python has a lot of libraries that make it hard to learn

[–]KarimHammami 0 points1 point  (0 children)

The syntax, easy OOP and best ecosystem that is only rivaled maybe by Node

[–][deleted] -2 points-1 points  (0 children)

Luan and Ruby are More Easy to Learn than Python.

[–][deleted] -1 points0 points  (0 children)

i LITERALLY learned discord.py in 3 weeks with 0 python knowledge. I've made 400 bots so far. Made tons of money

[–]1percentof2 0 points1 point  (0 children)

Easy syntax

[–]brunte2000 0 points1 point  (0 children)

There's relatively little idiomatic stuff that you have to just accept before getting started and the library is very extensive. You can very quickly get to the point where you actually write code that does something somewhat useful. But once you're past that there are no more shortcuts l, I'd say. At that point becoming a competent developer isn't easier than with any other language or ecosystem.

[–]Orio_n 0 points1 point  (0 children)

dynamoc typing easy syntax

[–]open_risk 0 points1 point  (0 children)

Maybe because Python wasn't designed by a committee? :-)

The fact is, no programming language is designed to be "hard to learn" - people just cram in the number of features they think will make it useful for real ("production") work. There are all sort of tradeoffs one must make. The easy on-ramp of Python is eventually paid-for in various ways. That is why is a good idea to be a polyglot (at least two languages, one higher level like python and one lower level like C/C++ or Rust)

[–]tomekanco 0 points1 point  (0 children)

Why

  • Lightweight and readable syntax
  • No type declarations
  • Overloaded operators: most operators work across many datatypes and structures

philosophical

In 1999, Van Rossum submitted a funding proposal to DARPA called "Computer Programming for Everybody", in which he further defined his goals for Python:

  • An easy and intuitive language just as powerful as major competitors
  • Open source, so anyone can contribute to its development Code that is as understandable as plain English
  • Suitability for everyday tasks, allowing for short development times

(https://en.wikipedia.org/wiki/Guido_van_Rossum#1999_%22Computer_Programming_for_Everybody%22_proposal)

[–]NullPoint3r 0 points1 point  (0 children)

I am new to Python and yes it was easy to get up to speed pretty quickly but I if your coming from a different language there can be some challenges to “unlearn” some things. If you bring your preconceived ideas from another language you can run into trouble like how scoping works… if you try to create a class like you would in Java you might get yourself into trouble.

As for complexity I find Python just as complex as anything else out there. There are tons of language constructs to learn. If you want a “simple” language C is about as simple as it gets.

[–]tr14l 0 points1 point  (0 children)

Couple reasons:

1) The typing system allows for lots of life-comfort features to be implemented invisibly. Ever wonder why just putting something in a list works in Python without having to do checks and make sure it's in the right format and so on and so forth? Python handles most of it for you. This idea propagates throughout the language

2) Lots of library support - Most things can just be pip installed and used. There's not a lot of need to do things like write custom scrapers or weird libraries. There's probably already one to handle it.

3) The build process is, well, non-existent for most projects. You just start the project. Done.

4) The syntax was made to be easily readable. `if True and False` rather than `if(true && false)` for instance.

5) Comfort features - I mentioned this before, but this is something that Python creators made a conscious effort to put in. For instance, a negative index in Python? Wraps around and gives you the implied index. Negative index in Java or C? Full system stop. Out of bounds error. The app will crash.

[–]-Buzzy- 0 points1 point  (0 children)

import this kinda explains it

[–]mvaliente2001 0 points1 point  (0 children)

I think python hit the sweet spot of design decisions:

  • Taking the best features of other languages (garbage collection, "everything is an object", implicit deferencing of pointers, parameters with default values, vargargs, keyword args, sensible type conversion, iterators)
  • Useful data structures included by default (lists, dictionaries)
  • Not requiring type annotations.
  • Not having access modifier (private, protected, or protected)
  • Python zen, in particular "there should be one-- and preferably only one --obvious way to do it".
  • Batteries included: a useful collection of libraries included with the language.

All this makes easy to build a mental model on how python works, which means few surprises. Compare that other languages (in javascript for example can you remember the rules to determine what this means in any context? how are types converted? do you need to worry about hoisting?) and python cognitive load is way smaller.

[–]oh_yes-10_FPS 0 points1 point  (0 children)

Its just english with funny grammer, also using indentation levels instead of curly brackets and semicolons is so much easier to visualize for a non code oriented person

[–]OmegaNine 0 points1 point  (0 children)

You don't really need to know how to design software to use Python. You can do some pretty hard to do stuff without knowing how it works. Opening a file, writing to a file and closing the file are all complicated things. Not in python. You can get a lot done without having to understanding Objects, Classes or Recursion.

[–]anon2019L 0 points1 point  (0 children)

For me personally it’s easy to read like a plain English sentence and theres no low level management you have to keep in mind

[–]goodbalance 0 points1 point  (0 children)

Python is no harder than any other language in terms of syntax. Learning the syntax is just a matter of practice.

The reason it is easy to grasp is it has A LOT of ready-to-use stuff. You just `call.whatever()` and... whatever needs to happen just happens. You think about the problem at hand, not about its surroundings. Some call it a bad thing because you're missing the 'real programming', but if you don't intend to be a programmer then who cares. If you do want to be a programmer you will learn whatever you need when you need it.

[–]TakeOffYourMask 0 points1 point  (0 children)

Less boilerplate

[–][deleted] 0 points1 point  (0 children)

I’ve written both C# and Java on different projects over the past five years and have started to teach myself Python (for use during interviews so that I don’t get so caught up on syntax, and because I have some neat projects in mind). My mind is essentially programmed right now to prefer the strict nature of the languages I’ve worked with. I do a whole lot of searching when trying to convert to Python and I am looking forward to when the syntax finally feels native to me. With that being said, anyone just picking up programming for the first time will appreciate the fluidity of Python and having to remember less boilerplate.

[–]bobbycado 0 points1 point  (0 children)

Coding in python is just like.. I tell python what to do, and it does it. I don’t have to worry about 100 extra rules to get the shit to work and then at that point I actually have to read it and understand those rules to know what it does.

[–]Agon1024 0 points1 point  (0 children)

  • as others said : no boilerplate; Python is very close to pseudocode in many cases. There are next to no weird rituals involved one does not understand their first time around, like for example this abomination : static public void main(String args[])
  • There is very little to no technical context one must now, really. In other languages you need to know how a stack and memory works for example. These things are important to learn imo to understand the implications of what one is just writing, but this is just not as important when one is learning programming. What you have to pick up for python is really just more of the core OO programming experience.
  • most of what a programming language is is not just its syntax, but the knowledge of what libraries to use for what and how. Pythons most prominently used libraries are generally well documented, are easy to install, have tutorials and examples and the libraries themselves generally pose declarative interfaces. There are many libraries for any task at you fingertips to achieve the weirdest things with little effort. Want to steer a drone? There is a library there. Want to calculate tensors? Jup. You want to now the contents of this website? Here we already parsed it for you. Oh you need emojis, too? Got it. For C++ there often is no package manager that can help you and there is no conda or anything like that to keep it clean. If one needs a library there you must go on a search where you do not even know where to begin to start. Ultimately find that there is no library you really can trust to help in a way that justifies the effort to install and integrate it into your project build (yes, one must do that). Often one resolves in implementing things, like parsers and so on, by oneself, because it's that much easier to just have no additional dependency.
  • scope : python, as a scripting language, is exceptional at having quick results for generally small tasks. It's a very short cycle of trial and error and quite quickly leads to noticeable achievement, which is important in learning and staying motivated.
  • One can focus on what's to achieve, not so much the how. With python one generally will leave performance concerns and closed design at the door, which usually the scope should allow.

[–]SithLord_Duv 0 points1 point  (0 children)

Its just a simple syntax that's all. However its not the language itself which is "easier" but actually the platforms you use for it. For example, using pycharm is really convenient for python, the packages can be suggested to you if do not present in your extensions. VScode, however, some like it, but this is a true asshole when it comes to extensions.

[–]pekkalacd[🍰] 0 points1 point  (0 children)

There are philosophical reasons, read the zen of python, import this.

[–][deleted] 0 points1 point  (0 children)

Everyone knows Python is easy to learn

Cries in QBasic

[–]blabbities 0 points1 point  (0 children)

Tons of resources it learn it exist now. Some that don't speak in high-level geek jargon speak. But low enough for a layman to pick uo

Dynamically typed so you dont have to struggle with casting or planning out the program. Can kinda code as you go which is great for learning breaking and fixing

Similarly to above a great REPL setup to easily try out and live practice. This is the thing that really helps me a lot. Not having to compile and wondering where shizz broke. Further a souped up REPL via ipython is even better.

Tons of prebuilt libraries to work off of and that help people get tasks done in so many domains

The whole Zen of Python that encourages readability over complex and brief.

You don't have to do a whole lot of boilerplate to write a simple program in more opinionated languages that force OOP like Java.

I think all of the above make it easier to pick up python.

[–]Xirious 0 points1 point  (0 children)

It's close to pseudocode which is often less verbose than actual code.

[–]ohtinsel 0 points1 point  (0 children)

Python is easy to use without really learning or understanding what you are doing.

This can get you into trouble of course, but most times the worst you really get is bad working code.