Hello everybody. And welcome back to the YouTube video. So in today's video would all be doing is discussing the topics and skills that you need to learn to become a master at the Python programming language. Now I've broken these skills up into four main categories. Those are basic intermediate advanced, and then finally expert slash master level. And if you're someone who's a beginner programmer, you can kind of treat this video as a curriculum or kind of a general guideline on the skills that you should learn. And in what order you should learn them. If you're someone who is more intermediate or we consider yourself advanced, then maybe I'll list some skills and topics you haven't heard of before. And I can give you some ideas for things that you may want to learn to really make your Python skills just that much better. So without further ado, let's go ahead and get started and talk about the skills and topics you need to learn to become a master at the Python programming language. So a quick note here that I have a ton of resources related to the topics I'm going to be mentioning here, especially in the beginner and intermediate sections. So I will link those resources in the description and I'll leave kind of a list of the topics that I've talked about here. So if you're getting lost or if, you know, you think I'm going to quickly just consult the description and it will have kind of like a mini transcript of what we've talked about in this video. So let's get started with the basic section. So this is really focusing on just fundamental programming concepts and really understanding like the basic, basic building blocks of programming. So the core syntax, the way a program actually reads, uh, the way the different lines of codes are going to be executed, conditions, variables, all that kind of stuff. So to give us kind of a formal list of the topics that I would learn in some kind of relative order, some of these will be out of order. I would go with, and I have a list kind of in front of me right here, variables. So you want to understand how variables work. So, you know, X equals one, Y equals two X equals Y what does X equal? You know, just the basics like that and understanding why we even use variables in programming then probably moving forward into conditions. So Boolean conditions, you know, how do we compare two different variables together? How do we check if the user typed something in and it's equal to something else, chaining conditionals together. So, okay. How can we make a chain conditional that has more than one condition in it? How do we evaluate, you know, this condition and that condition at the same time, next that's going to be operators that you want to learn. So how do we add two variables subtract two variables. What is the modulates operator do into your division? Just these basic tools that you're going to need to be using. As soon as you get out of this basic level, then after that, it's probably going to go to control flow. So it's things like if else, else, if you're going to want to master those, then just learning about loops and Iterable. So for loops, while loops, how do we loop through a list? How do we loop through a dictionary that leads me nicely into what else I would recommend learning, which is basic data structures in Python. So understanding lists, understanding, sets, understanding dictionaries, what about strings booleans ins floats. That's all stuff that you really need to master after that. And you've learned kind of the core basic syntax and language features of Python. Then you're probably going to move into functions. Functions are really important, a huge part of Python, and really will teach you a lot if you can understand how those work. And that leads me nicely into the next thing, which is mutable and immutable data types. So it's actually not known to a lot of beginner programmers that a string is treated very differently in Python than say a list. I can actually pass a list to a function and modify that list what's known as kind of in place rather than actually creating a new version of it. Whereas with a string, I cannot modify the original string that I pass into that function. Kind of hard to explain that without a good example, but that's what I'm trying to get at with mutable verse immutable. Then after you've done that, I would learn about some of the common methods in Python. So for example, if you have a string, how do you turn that string into all uppercase or all lowercase? How do you add a new element to a list or add a new element to a set, just kind of these basics, um, operations and methods, which are really easy to learn and find it, but that you kinda need to know before moving much, um, much further, sorry. Okay. And then finally I would recommend having a basic knowledge of IO operations, so input, output operations. And what I mean by that is really just, how do you read from a text file? How do you write to a text file? Can you open a CSV file, things that you may need to do, especially if you want to actually make some kind of real applications or maybe you want to store something or whatever it may be, you should know kind of those basic topics. So that is going to be the basic section for you guys. I know that's a lot and it sounds really overwhelming. I can promise you these topics are not that hard. Just a bunch of things that I would recommend. You know, if you want to get on your way to becoming a master at Python. So now moving out of the basics, we're going to head into these intermediate skills. Now I'll quickly say that it's very important to practice these skills that you're learning. You need to actually implement this. You need to really use this in a coding project. You shouldn't just be watching videos that tell you about these things. You should be at least following along with those videos, making changes, actually writing that code with your hands by yourself. That is how you're going to get better. But anyways, let's go into the intermediate skills. I have my list here as well. The first thing that I'm going to focus on here and intermediate skills is object oriented, programming, understanding classes and understanding objects. So this goes a really long way, and this is something that you're going to want to understand, especially if you're using other languages other than Python, uh, but super important. It's used pretty much everywhere. And if you only get one thing from this intermediate section, understand that you have to have a really good foundation and object oriented programming to really understand anything above this level. So after that, of course, understanding now how to work with classes, make objects a little bit about basic kind of design patterns in good practices when it comes to object oriented programming. And then after you've learned that I would recommend you move into data structures. So once you have a solid foundation of object oriented, you want to learn about data structures. Now this is intimidating for a lot of people. I'll quickly say that. One of the ways I really practice my knowledge and data structures is using a site called algo expert. It is a paid platform. If you guys are interested in it, I do have a 10% discount code, but that is what I use to prepare for my coding interviews. So I usually talk about it just cause people ask kind of what my resources were. So I'll leave that in the description, but moving forward, you do definitely need to understand data structures, whatever way you decide to learn. That is totally fine, but understanding the cues, um, you know, hash maps, the stacks priority cues, whatever it may be, you just need to understand those topics cause they will come up and understanding the efficiency and time complexity in big O notation is actually really important when it comes to becoming a good programmer. Next, after that, you're going to learn more about some specific Python skills in my opinion, and I will learn about comprehensions. So in Python, there's these really cool, fancy looking things called list comprehensions dictionary, comprehensions. I think you can do them for sets and a bunch of other things as well, but they're pretty much ways of doing kind of one liners. Some people don't like them, but it's a very pathetic thing. And Python is just meaning something that's pretty specific to Python. So definitely learn about list comprehensions, dictionary, comprehensions, and just be able to at least read them and understand them. If you see them next, I would recommend you learn about Lambda functions. So these are anonymous functions. They're actually super useful. I can almost guarantee you'll see them in immediately be like, Oh, I could have used that here. And they're going to be used in the next thing I'm going to talk about, which is the collections module as well as map and filter. So what Lambda is just to give it really a basic explanation, essentially, as an anonymous function, it doesn't have a name. You write it on one line, but you can use it like in really specific places. And it makes a lot of sense. So map and filter are methods that you can use on collections where you will use Lambda within them. So you have to look at that to really understand, but that's why I'm talking about Lambda after that. And after you look into the collections module, which has a built in module in Python, which implements some of the data structures that I talked about previously, you're going to want to look into star ARG and star star quarks. So when it comes to passing arguments or parameters, if you don't know how many you're going to be passing out where you want to set up decorators or more advanced things, you need to understand this thing called orgs, which is Astrix arcs and then asterix, asterix, quarks. And that's a mouthful, but you need to know those. Then I would recommend learning about inheritance. This kind of goes with object oriented programming, but I just wanted to list it as a separate thing in case people didn't think of that. But inheritance is very important as well. And just other object oriented principles like polymorphism and all those kinds of things. Next, I would recommend learning about advanced class behavior in Python. So things like Dunder methods, of course, things like medic classes and more advanced stuff we'll talk about later, but there is these things called Dunder methods. If you've ever seen underscore underscore and knit, that's an example of a special method in Python. Dunder stands for double underscore. If you ever see double underscore, EEQ double underscore, that is pretty much implementing a higher level operation on a class. So just understanding how those works is really important. Next, I would recommend you learn about PIP. So Python package manager, or whatever that actually stands for and how you can install modules and use third party modules in your Python programs. That's really important then understanding Python environments. So using like Anaconda environments, for example, environment variables, and finally making your own modules. So actually separating your code out from this kind of one huge, massive Python file into separate modules that make sense. Now those are kind of the basic things for intermediate. One last thing I'll throw in is asynchronous programming. So async IO, which is a built in module in Python that could technically go into kind of the more advanced section, but I'll throw it in here just in case. So anyways is my list for the intermediate section. This definitely have the most amount of stuff. Now we're going to get into some tricky stuff in the advanced and expert level section. All right. So next we're moving into the advanced section. Okay. I want to be clear here that a lot of the topics in this section you don't really need to know to be good at Python, right? To consider yourself a Python developer to go work as a software engineer, you don't need to know most of what I'm going to describe here. These are kind of nuances, specific things in the language. And if you know the basic and intermediate stuff, you can learn this when you need to learn it kind of thing. So yeah, just don't be discouraged if you don't already know these things. I only recently learned them. I do have a tutorial series on my channel though, that goes through them in what I consider to be a pretty kind of digestible form. Anyways, let's go through the list. The first thing I have is decorators. So if you have like a class method, a static method and UCL at static method at class method at login required, those are examples of decorators, things that decorate a function or a method. I think you can decorate a class as well. Although I might be wrong on that. Uh, we also have have a generators. So generators are a way to kind of utilize memory efficiently in Python. Let's say you have a really long collection or you're generating a collection rather than just generating the entire thing. You can generate one item at a time. If you only need access to one item from that collection at a time, or maybe two items or three items or something like that, you can use a generator to do that. Next. We have context managers you've ever seen that with keywords. So like, you know, with open files, this that's an example of a context manager essentially enforcing that there's kind of a cleanup operation that happens when you break out of that context manager. Next we have medic classes. These are too advanced, even really give a basic description, but they are pretty much how Python classes actually operate and allow you to do some really advanced things with classes, hook into some things that you can't usually hook into unless you know about them. And then next after you learn about decorators, generators, context, pantries, and yeah, medic classes, I would recommend learning about concurrency and parallelism. This arguably could go into the intermediate section. This could be in a different order. I wasn't quite sure where to put this, but I definitely would consider this kind of an advanced topic. So say you have a CPU core that has four processing cores on it. So for actual CPU, how can you use Python to utilize all of those cores? Well, that's when you're going to learn about something called a global interpreter lock, and then you can talk about multiprocessing and multithreading so multithreading is essentially how do we let one part of our program kind of wait while the other program is doing something and how do we not block pieces of code, uh, when they don't need to be blocked. So that's a really vague definition of it, but that should hopefully give you a little bit of an idea. It's pretty much revolving around speed within the Python language, then I would get into testing. So once you've learned all of those, I would learn about unit testing and how you can actually do test driven development in Python or in whatever programming language, just understanding testing pipelines. And all of that is very important. Then I would learn about how you actually build and manipulate packages. So packages are different than modules, but I throw this in the advanced section because if you're writing enough code that you could fill a module, you're probably sorry, a package you're probably advanced. And then finally in the advanced section, I added. This could probably go into the export or master level section, but Ethan is essentially how can you write C code that can interact with Python? So say I have a really performance, heavy piece of code or operation that needs to be done super quickly. And I don't trust Python to do that for me, or Python's just not capable. I can actually write that block of code in C and then link it up to Python using a module called the. All right. So that concludes the idea and section. So now we move into the expert slash master section. Now this section was really hard for me to come up with because I figured that if you made it pass basic intermediate and advanced, you can pretty much learn anything you want. And at this point you probably have an idea of what you want to do, and you don't need me to tell you, but I'm just going to go through some of the things that I would imagine, you know, the master and expert level programmers might do. And these are really specific. So I would say with, once you learn kind of all of these general things related to Python, you know, a lot about the Python programming language, maybe you even understand the interpreters and the compilers and lower level features of Python. So understanding how Python is actually built and really like the low level concepts that most people don't care to get into. I'd classify that as something that most experts and master level Python programmers should know, then you're going to be singing, talking about what am I doing with Python? So where am I using these skills? Maybe you're a web developer. Maybe you're making professional websites. Maybe you're doing artificial intelligence and machine learning. Maybe you're a data scientist. Maybe you're working with microcontrollers. Maybe you're scripting, maybe you're doing ethical. Hacking is about a million different things you could do once you get to this level and where you're going to go as a master or expert, is really based on where your expertise is and what you actually want to do. Maybe your writing breasts, API APIs, maybe you're actually creating these artificial intelligence models or analyzing data for a company. And that's why I can't really give any concrete examples for master or expert level things you need to know in Python. But I would say once you get to that level, you kind of need to focus in on one specific area or maybe you're good at all those things, but you need to now learn about modules. You need to learn about TensorFlow or Keras and actually figure out how you can take all of this theoretical knowledge of the language and apply that into some kind of job into some kind of business and actually use those skills. So I'm going to keep this section short. That's all I have for expert or master. I apologize if that may have disappointed you, but I think that's really the reality when you get that good. Now you're doing something with the code, you know, right. Maybe you're teaching it, maybe you're, you know, AI ML, data science, web dev, whatever it may be, you're doing something with it. So anyways, that has pretty much been my video. I wanted to kind of go through and just quickly list off all of the different topics and things. I think you should know if you're working towards becoming a master in Python. So if this video helped you out, please do make sure you leave a, like subscribe to the channel. And of course I will see you all again in another YouTube. Yeah, Yeah.