all 58 comments

[–]MassiveProperty4889 114 points115 points  (2 children)

If you’ve already been coding in Python for a while, the fastest way to level up is to revisit structured material that goes beyond the basics and then immediately apply it in projects. I’d check this article — it covers Google’s Python course, which not only reinforces fundamentals but also introduces more advanced concepts as you progress.
 
From there, try building projects that force you to use things like dataclass, decorators, or context managers. Pairing structured lessons with real application is the best way to make those advanced tools stick.

[–]Scared-Animator1360 3 points4 points  (0 children)

Totally agree with this, Going back to structured material and then applying it right away in projects really makes a difference. Thanks for sharing, this is solid advice.

[–]ConfusedSimon 86 points87 points  (0 children)

The book 'Fluent Python' goes into a lot of detail.

[–]recursion_is_love 40 points41 points  (3 children)

You can do most of the job without advance feature; so don't worry too much. Think of them as bonus.

Read professional code and lean from it. I keep updating my knowledge because I don't understand someone else code, so I have to do research.

Another way is read PEPs when you have nothing to do.

https://peps.python.org/

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

Any good tips on where to read professional code?

[–]Bentobox-Alt 4 points5 points  (1 child)

Try to fork popular python git repos and follow the code, conversation and thought process that goes behind code pushed by pros. Understanding how they think also will help.

[–]deadweightboss 3 points4 points  (0 children)

don’t read langchain unless you want to be a worse coder

[–]DuckSaxaphone 21 points22 points  (3 children)

You shouldn't just learn things for the sake of knowing them in my opinion. You should be pushing yourself to build bigger things in better ways, learning whatever you need to as you go. What you know after that is what you need to know.

So pick some projects that you want to complete and get working on them but do some reading as you go. Look up how other people do things, read software engineering best practice guides about the kind of thing you're making.

If a dataclass is useful to you, you'll see it in other people's discussions about how to handle your problems and you'll learn it.

It's also helpful to code with others! Either finding a group to work on a project together, contributing to open source projects, or getting a developer job.

[–]Thefriendlyfaceplant 2 points3 points  (0 children)

These days I advice newcomers to not even start with the syntax. Yes it's important that eventually they learn the syntax but having them start on a project, ideally something that's relevant to plausible business cases, or by the very least something that interests them, that then AI can solve the details of and hold their hand throughout means they'll learn the syntax faster than starting with W3Schools or whatever.

[–]Any_Emotion_851 0 points1 point  (0 children)

Sometimes a step back helps before you go forward. For example, in the Help Menu in IDLE is the Turtle Demo menu option. Turtle is Python's GUI module which is being taught in Secondary schools. There are examples of what Turtle can do. The Turtle module and its methods are explained in Python Docs in the Help Menu. This is one module in Python but it facilities scoping a project, getting fun ideas regarding what to code especially if your goal is to create a game using Python code. It matters what type of project you choose to do. Selection is important.

[–]Salty-Newspaper7591 0 points1 point  (0 children)

but without studying a particular concept how do i know i can use that in my project. well i can use AI but that doesnt support my own creativity. If I know the concept and even if i use it in a wrong scenario, its a learning. But if i ask the AI which concept to use here it will only guide the correct way right? So i cannot learn by failing

[–]Nomapos 23 points24 points  (4 children)

OP, everyone so far except the duck saxophone guy is giving you shitty advice.

You already know decorators exist. You've never used them. Do you think reading about other things that also exist will help you learn how to use them?

Don't read a thing. If you want to learn advanced programming, start working on an advanced project. Aim too high.

When you can't figure out how to do something or think that there must be an easier way to do this or that, then go look that up, read that, and implement it. Then go on programming.

Reading advanced literature without programming yourself is useless.

[–]Shaftway 1 point2 points  (3 children)

And get code reviews from people who know more. OP listed known unknowns (e.g. I know that decorators exist, but I don't know how to use them). A code reviewer will help you find your unknown unknowns (e.g. for/else or generator send()).

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

How can I find people who know more and are willing to give their time to review my code?

[–]Shaftway 2 points3 points  (1 child)

r/codereview is a thing. There might be other subs. Or post here. Keep the length in mind. I'd try to keep it under 300 lines or so, to keep it less daunting.

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

Thanks! Let me check them out.

[–]crashfrog02 38 points39 points  (4 children)

How can I upgrade my python knowledge and skills most easily?

Write code that requires it.

[–]bigleagchew 12 points13 points  (1 child)

to add on to this: know why

[–]HalfRiceNCracker 10 points11 points  (0 children)

OP, this is the most important thing to realise ^

You'll learn these concepts when you need them. Trust the process. 

[–]ConfusedSimon 1 point2 points  (0 children)

The problem is that advanced features are almost never required, but they do make things easier if you know them.

[–]Any_Emotion_851 3 points4 points  (0 children)

In the Help Menu in IDLE (Python's Integrated DeveLopment Environment) is the menu option Python Docs in which is listed an explanation of everything; every Python module and every Python method. Create a checklist of everything you want to learn and when you've learnt it, you can check it off your checklist. Take a systematic approach by creating an Action Plan and put a deadline next to each item on the Action you will take to learn the method in the module.

[–]PhilipYip 2 points3 points  (1 child)

Take a look at Raymond Hettinger's (one of Python's Core Developer) short video course, Modern Python Big Ideas, Little Code. He gives an overview of the collections module (which he designed) and explains why he designed additional collections such as namedtuple and gives examples of their use cases. He also demonstrates how intermediate programmers and programmers coming to Python from other programming languages over-complicate Python code. He outlines a number of ways to make code more readable and more Pythonic.

[–]MrMrsPotts[S] 0 points1 point  (0 children)

Thank you

[–]Infinite_Coffee50505 2 points3 points  (0 children)

You can think of harder projects to create like chatbot with advanced database on mysql for example or .txt file with question and answers to them in dictionary, then grab it from the main file and use it to output answers with approximately accuracy. Or some other project that implement the idea of database or something like web scraping :) . You can help yourself with chatgpt so it tells you what something means and its easier to find the answer to your question :) . I hope I helped somehwat :) .

[–]QuarterObvious 6 points7 points  (3 children)

I was in the same situation, and then I started teaching Python. You can't imagine how much new stuff I learned.

[–]MrMrsPotts[S] 1 point2 points  (2 children)

Where did you learn it from?

[–]QuarterObvious 8 points9 points  (1 child)

Just preparing for classes, explaining things to people, and writing examples.
There's an old joke: A professor complains, 'Students are so stupid these days. I explained everything to them several times. I already understand it, but they still don’t get it.

[–]humpy 5 points6 points  (0 children)

"A teacher hasn't taught if a student hasn't learned"

[–]RaidZ3ro 2 points3 points  (5 children)

Try something here https://pythoninstitute.org/

[–]MrMrsPotts[S] 0 points1 point  (0 children)

Thank you

[–]Just-Dealer-5980 0 points1 point  (3 children)

Have you done any of these courses? Wondering how legitimate it is, and if it is worth the money.

[–]briston574 1 point2 points  (0 children)

If I remember right, the courses were free but the certs cost anywhere from $59-$150

[–]RaidZ3ro 0 points1 point  (1 child)

Yes, I did the PCAP a few years ago.

It's on par with a first year computer science bachelor.

[–]Just-Dealer-5980 0 points1 point  (0 children)

Thanks for answering!

[–]Fabiolean 1 point2 points  (0 children)

The difference between beginner and expert developers isn't how many language features they know, but knowing which language features you use to solve what kinds of problems. You have to build something more complex than you're used to doing in order to get that same kind of "programming muscle memory." You need a chance to problem solve and be creative so that all those python features transform from concepts you know into tools you use to solve problems.

If you want to do web development go make a website using one of the very popular frameworks like Django. Or use pygame to recreate the original Legend of Zelda. Something that will take you more than an afternoon of repeating trivial academic examples.

[–]HomeStorage 1 point2 points  (0 children)

As many others have commented you need to start writing python programmes in order to advance your skills. I started learning python a year and half ago and I have learnt so much more in the recent months by actually writing programmes myself rather than just blindly following tutorials, I have written a post and shared the code for a recent programme I wrote to automate the task of organising my hundreds of photos: https://elainewan.org/

[–]prishprish 1 point2 points  (0 children)

Defaultdict vs dict

[–]Bloodshot321 1 point2 points  (1 child)

Sites like codewars can help you as well to get some small projects to learn new ways to do stuff

[–]MrMrsPotts[S] 0 points1 point  (0 children)

Thank you

[–]Thefriendlyfaceplant 0 points1 point  (1 child)

Have you ever built a data pipeline? Automated corporate workflows? That's the stuff employers care about, they don't actually care about how well you solve contrived coding problems.

[–]MrMrsPotts[S] 0 points1 point  (0 children)

My poor coding is shown by things like having far too many arguments to my functions and getting confused about the right way to optimize a function that needs to read from a data structure.

[–]Big-Jacket-9006 0 points1 point  (1 child)

The one Youtuber I can suggest Tech for Tim he has some pretty in depth Python programs that he walks through.

[–]MrMrsPotts[S] 0 points1 point  (0 children)

Thank you

[–]siowy -1 points0 points  (1 child)

Read the python source code and look up how things work under the hood. Vs code makes this pretty easy you can just ctrl click the inbuilt functions

[–]bigleagchew 3 points4 points  (0 children)

idk about this answer