Python for everyone : Mastering Python The Right Way 
Tags: python, datascience, machinelearning, ai
Published: 2022-03-07 17:00:54

Python is a high-level programming language that is easy for everyone to learn due to its simple syntax.
Beginners will take a shorter period of time to be up and running!

It is widely used in web and APIs development, cryptography, games development, scripting (automation) tasks, artificial intelligence, data science, web scrapping (crawling) and many other areas.

In this blog post, I will explore the areas you need to cover all the way from beginner, intermediate and into advanced level. Thereafter, I will also highlight various specialization areas that you may need to look at depending on your area of interest.
I will also highlight some of the popular free Python learning resources.

The best practice on how to master Python programming just like any other programming language is to ensure you execute one or more project after each level before proceeding onto next levels. Think of any idea that you can implement using the concepts you have covered after during the completed level and make it you project.

**1. Beginner Level**

At this level ensure you cover and understand the following:

- Application areas of Python
- Downloading and Installing Python
- User interfaces or IDEs like the ones listed below. Pick and use one of your desired IDEs while working with Python:
    - [Pycharm](https://www.jetbrains.com/pycharm/promo/)
    - [Visual Studio Code Editor] (https://code.visualstudio.com/)
    - [Spyder IDE] (https://www.spyder-ide.org/)
    - [Sublime Text] (https://www.sublimetext.com/)
    - [PyDev] (https://www.pydev.org/) 
- Program structure
- Interactive shell
- Executables or script files
- Variables
- Data types
- Conditions
- Chained conditions
- Control flow
- Loops and Iteration
- Data structures ( Lists, Tuples, Sets and Dictionaries)
- Functions
- Common Methods
- File input/output

This gives you a good base but before you proceed onto the next level, you have a milestone checkpoint (a project!).

**Beginner Level Project** : Think of a project or task you can accomplish using the concepts you have covered so far.


**2. Intermediate Level**

Here you need to explore the following key aspects of Python programming language:

- Object Oriented Programming (classes and object, Encapsulation, Inheritance and Polymorphism) 
- Lambda functions
- *args AND **kwargs in function definitions
- pip (package installer for Python)
- Virtual programming environments
- Modules

**Intermediate Level Project** : Think of a project or task you can accomplish using the concepts you have covered so far including the beginner level concepts.

**3. Advanced Level**

Concepts you need to cover and understand:

-  Decorators
-  Generators
-  Testing (unittest, nose(or nose2) and pytest)
-  [PEP 8 - Styling Guide for Python code] (https://www.python.org/dev/peps/pep-0008/)
-  Packaging your python application
-  Cython

**Advanced Level Project** : Think of a project or task you can accomplish using the concepts you have covered so far all the way from beginner to the advanced.


**4. Specialization Areas**

After going through basic, intermediate and into advanced levels, you may decide to choose one or more of the areas to go deeper into the key application areas of Python programming language.

**4.1 Web and APIs development**

In web development explore the following Python web frameworks:

- [Flask (with Jinja2)] (https://flask.palletsprojects.com/en/2.0.x/)
- [Django] (https://www.djangoproject.com/)
- [FastAPI] (https://fastapi.tiangolo.com/)
- [Pyramid] (https://docs.pylonsproject.org/projects/pyramid/en/latest/index.html)
- [TurboGears] (https://turbogears.org/)
- [CherryPy] (https://cherrypy.dev/)
- [web2py] (http://web2py.com/)
- [Bottle] (https://bottlepy.org/docs/dev/)
- [AIOHTTP] (https://docs.aiohttp.org/en/stable/)
- [CubicWeb] (https://www.cubicweb.org/)
- [Dash] (https://dash.plotly.com/)
- [Falcon] (https://falcon.readthedocs.io/en/stable/)
- [Giotto] (https://giotto.readthedocs.io/en/latest/index.html)
- [Growler] (https://pypi.org/project/growler/)
- [Hug](https://www.hug.rest/)
- [Morepath] (https://morepath.readthedocs.io/en/latest/)
- [Pycnic] (http://pycnic.nullism.com/)
- [Sanic](https://sanic.dev/en/)

**4.2 Cryptography**

We have several libraries in Python that provides cryptographic recipes and primitives to python developers:

- [M2Crypto] (https://pypi.org/project/M2Crypto/)
- [PyCrypto] (https://pypi.org/project/pycrypto/)
- [pyOpenSSL] (https://www.pyopenssl.org/)
- [python-nss] (https://pypi.org/project/python-nss/)
- [Botan’s Python bindings] (https://botan.randombit.net/handbook/api_ref/python.html)


**4.3 Games development**

For games development enthusiasts, Python provides the following libraries / frameworks:

- [Pygame] (https://github.com/pygame/pygame)
- [Pykyra] (https://pykyra.updatestar.com/)
- [Pyglet] (http://pyglet.org/)
- [PyOpenGL] (http://pyopengl.sourceforge.net/)
- [Kivy] (https://kivy.org/doc/stable/)
- [Panda3D] (https://www.panda3d.org/)
- [Coco2D] (http://www.cocos2d.org/)
- [Python Ogre] (https://wiki.ogre3d.org/Python-Ogre)
- [Ren'Py] (https://www.renpy.org/)
- [Arcade] (https://pypi.org/project/arcade/)


**4.4 Scripting (automation) tasks**

In case in systems administration, you will need to create Python code in files, make the files executable.
This helps to automate routine tasks.

**4.5 Artificial Intelligence(AI)**

Let's look at the libraries / frameworks that Python offers for AI areas: Machine Learning (ML), Compute Vision, Natural Language Processing (NLP), Neural Networks, Robotics, Fuzzy logic and Expert systems.

4.5.1 Machine Learning

- [scikit-learn] (https://scikit-learn.org/stable/)
- [TensorFlow] (https://www.tensorflow.org/)
- [PyTorch] (https://pytorch.org/docs/stable/index.html)
- [XGBoost] (https://xgboost.readthedocs.io/en/stable/)
- [matplotlib] (https://matplotlib.org/)


4.5.2 Computer Vision

- [fastai] (https://www.fast.ai/)
- [OpenCV] (https://opencv.org/)
- [SimpleCV] (http://simplecv.org/)
- [Dockerface] (https://www.opensourceagenda.com/projects/dockerface)
- [imutils] (https://pypi.org/project/imutils/)
- [IPSDK] (https://www.reactivip.com/image-processing/)
- [Keras] (https://keras.io/)
- [matplotlib] (https://matplotlib.org/)
- [scikit-image] (https://scikit-image)
- [PyTorchCV] (https://pypi.org/project/pytorchcv/)
- [Python-tesseract] (https://pypi.org/project/pytesseract/)
- [OpenFace] (http://cmusatyalab.github.io/openface/)
- [Vigranumpy] (https://ukoethe.github.io/vigra/doc-release/vigranumpy/index.html)
- [face-recognition] (https://pypi.org/project/face-recognition/)
- [albumentations] (https://albumentations.ai/docs/)

4.5.3 Natural Language Processing

- [NLTK] (https://www.nltk.org/)
- [Spacy] (https://spacy.io/)
- [Gensim] (https://pypi.org/project/gensim/)


4.5.4 Neural Networks

- [faan2] (https://pypi.org/project/fann2/)
- [ffnet] (https://pypi.org/project/ffnet/)
- [PyTorch] (https://pytorch.org/docs/stable/index.html)

4.5.5 Robotics

- [Robot Framework] (https://github.com/robotframework/robotframework)
- [Pyro (Python Remote Objects)] (https://github.com/irmen/Pyro4)
- [DART (Dynamic Animation and Robotics Tookkit)] (http://dartsim.github.io/)
- [PyRobot] (https://pypi.org/project/pyrobot/)
- [PyDy (Python Dynamics)] (https://github.com/pydy/pydy)
- [SOFA (Simulation Open Framework Architecture )] (https://github.com/sofa-framework/sofa)
- [Klamp't (Kris's Locomotion and Manipulation Toolkit)] (http://motion.cs.illinois.edu/klampt/)
- [Pybotics] (https://pypi.org/project/pybotics/)
- [Sinocos] (https://github.com/siconos/siconos)
- [iDynTree] (https://github.com/robotology/idyntree/blob/master/README.md)

4.5.6 Fuzzy Logic

- [fuzzylogic] (https://pypi.org/project/fuzzylogic/)
- [simpful] (https://pypi.org/project/simpful/)
- [scikit-fuzzy] (https://github.com/scikit-fuzzy/scikit-fuzzy)

4.5.6 Expert Systems

- [pyclips] (https://pypi.org/project/pyclips/)
- [experta] (https://pypi.org/project/experta/)


**4.6 Data science**

- [Bokeh] (https://bokeh.org/)
- [matplotlib] (https://matplotlib.org/)
- [NumPy] (https://numpy.org/doc/stable/)
- [SciPy] (https://scipy.org/)
- [pandas] (https://pandas.pydata.org/)
- [scikit-learn] (https://scikit-learn.org/stable/)
- [TensorFlow] (https://www.tensorflow.org/)

**4.7 Web scrapping (crawling)**
As web is text-based platform, Python has libraries for working with JSON, HTML, XML and other formats.

- [requests] (https://pypi.org/project/requests/)
- [BeautifulSoup] (https://pypi.org/project/beautifulsoup4/)
- [Scrappy] (https://scrapy.org/)
- [MechanicalSoup] (https://mechanicalsoup.readthedocs.io/en/stable/)
- [Selenium] (https://www.selenium.dev/)
- [Pyspider] (http://docs.pyspider.org/en/latest/)

**4.8 GUI Based desktop applications**

In order to develop desktop GUI applications, Python provides the following capabilities:

- [PyQt] (https://wiki.python.org/moin/PyQt)
- [tkinter] (https://docs.python.org/3/library/tkinter.html)
- [wxPython] (https://www.wxpython.org/)
- [Kivy] (https://kivy.org/doc/stable/)
- [PySide] (https://pypi.org/project/PySide/)


**5 Learning Resources**

While learning, choose a particular resource and stick to it. Avoid hopping from one learning resource to the the other. Below I am sharing some of the common Python learning resources.

**5.1 Websites**
- [Automate the boring stuff] (https://automatetheboringstuff.com/)
- [Freecodecamp] (https://www.freecodecamp.org/)
- [geeksforgeeks] (https://www.geeksforgeeks.org/)
- [Tutorialspoint] (https://www.tutorialspoint.com/)
- [studytonight] (https://www.studytonight.com/)
- [javatpoint] (https://www.javatpoint.com/)
- [sololearn] (https://www.sololearn.com/home)
- [w3schools] (https://www.w3schools.com/python/)
- [guru99] (https://www.guru99.com/)
- [Pythonspot] (https://pythonspot.com/)
- [Learnpython] (https://www.learnpython.org/)
- [Python Tutor] (https://pythontutor.com/)
- [Full Stack Python] (https://www.fullstackpython.com/)
- [Programiz] (https://www.programiz.com/)


**5.2 Youtube Channels**

- [Freecodecamp] (https://www.youtube.com/c/Freecodecamp)
- [Amigoscode] (https://www.youtube.com/channel/UC2KfmYEM4KCuA1ZurravgYw)
- [Tech with Tim] (https://www.youtube.com/c/TechWithTim)
- [Edureka] (https://www.youtube.com/channel/UCkw4JCwteGrDHIsyIIKo4tQ)
- [Telusko] (https://www.youtube.com/channel/UC59K-uG2A5ogwIrHw4bmlEg)
- [Traversy Media] (https://www.youtube.com/channel/UC29ju8bIPH5as8OGnQzwJyA)


**5.3 Books**

*Beginners*
- [Automate The Boring Stuff with Python] (https://www.amazon.co.uk/Automate-Boring-Stuff-Python-2nd/dp/1593279922/ref=sr_1_1?crid=2IL5LR7KOCSYK&keywords=automate+the+boring+stuff+with+python&qid=1646650594&sprefix=automate+%2Caps%2C56&sr=8-1)
- [Python Crash Course] (https://www.amazon.co.uk/Python-Crash-Course-2nd-Edition/dp/1593279280/ref=sr_1_1?crid=1NN3QCS8RT0UN&keywords=python+crash+course&qid=1646650741&s=books&sprefix=python+crash%2Cstripbooks%2C62&sr=1-1)
- [Learn Python 3 the Hard Way] (https://www.amazon.co.uk/Learn-Python-Hard-Way-Introduction/dp/0134692888/ref=sr_1_1?crid=2WWK8DQB4BCJQ&keywords=learn+python+3+the+hard+way&qid=1646650768&s=books&sprefix=Learn+Python+%2Cstripbooks%2C56&sr=1-1)

*Intermediate*
- [Fluent Python] (https://www.amazon.co.uk/Fluent-Python-Luciano-Ramalho/dp/1491946008/ref=sr_1_1?crid=1USAE5HVZOWJA&keywords=fluent+python&qid=1646650857&s=books&sprefix=FLUENT%2Cstripbooks%2C49&sr=1-1)
- [Effective Python] (https://www.amazon.co.uk/Effective-Python-Specific-Software-Development/dp/0134853989/ref=sr_1_1?crid=2XJASNE5MZVUY&keywords=effective+python&qid=1646650898&s=books&sprefix=effective+python%2Cstripbooks%2C35&sr=1-1)
- [Python Cookbook] (https://www.amazon.co.uk/Python-Cookbook-David-Beazley/dp/1449340377/ref=sr_1_1?crid=WA0W55V9TKM9&keywords=python+cookbook&qid=1646650980&s=books&sprefix=python+coo%2Cstripbooks%2C49&sr=1-1)

**5.4 Coding Practice**

For code challenges and practices you can check out the following websites:

- [HackerRank] (https://www.hackerrank.com/)
- [Codewars] (https://www.codewars.com/)
- [Exercism] (https://exercism.org/)
- [Codechef] (https://www.codechef.com/)
- [Leetcode] (https://leetcode.com/)
- [HackerEarth] (https://www.hackerearth.com/)
- [Codeforces] (https://codeforces.com/)
- [CodeinGame] (https://www.codingame.com/start)
- [Codingbat] (https://codingbat.com/python)

**6. Python Project Ideas**

You can check out below list of project ideas that you can try to using Python programming language.

- Quiz app
- Calculator
- Web automation
- Classic snake game
- Web crawler
- Music Player
- Instagram Bot
- Twitter Bot
- Reddit Bot
- Alarm Clock
- Image downloader
- Face recognition
- URL shortener
- File explorer
- Notification system
- File rename tool
- Password generator

**7. Free platforms to host your test applications**

Incase you need to host your trial applications, check the below  free platforms:

- [Github pages] (https://github.com/)
- [Netlify] (https://www.netlify.com/)
- [Heroku] (https://www.heroku.com/)
- [Firebase] (https://firebase.google.com/)
- [Vercel] (https://vercel.com/)
- [pythonanywhere] (https://www.pythonanywhere.com/)

**Conclusion**

 Key takeaways:
- Practice, practice and practice! code everyday.
- Choose a study resource that suits you and stick to it.
- Do projects before moving to the next level.
- Document your learning journey in a blog since you learn more when you share.
- Use code version control like Git/Github, bitbucket etc for all your code that you write.
- Never stop learning.

Feel free to leave comments. Thank you! 

Oh, I almost forgot, please checkout an [instagram-video-and-photos-downloader](https://github.com/emwadun/instagram-video-and-photos-downloader) I created. It is one of my projects.