Top five things to improve your coding (in no particular order):

1. Document your code (automatically)
2. Write Object Oriented code
3. Get acquainted with useful packages (This post)
4. Write tests for your code
5. Use a version control system

I reckon the best feature of Python is the amount an variety of free open source packages that are available. I don’t think you can really consider Python apart from them – and to be honest, I can’t think of any Python work I’ve done that doesn’t include at least one external package. Python on its own is kind of like a computer with just an operating system installed without any applications – its got potential but can’t do a huge amount. Install and application and you can make it do anything.

With python there are are certain core modules that come pre installed with python, for example os, which helps with file/folder manipulation, or re for pattern matching with regular expressions. You’ll find a need for those sooner or later. The other types of modules are external packages which you’ll need to install. Of course, you can just download anyone’s myproject.py and then import myproject, but I’m talking about packages that are listed on PyPi, the official external package index for Python. You can install these packages through pip:

`mkdir newproject # create newproject folder`
`cd newproject -roles # move into the newproject folder `
`python3 -m venv env # create a python virtual environment`
`source env/bin/activate # activate the virtual environment`
`pip3 install package_name # install the external package`

If I want to do something in Python my first port of call is to look for an external package that can help me – I don’t need to reinvent the wheel! My first port of call (apart from a google search!) is the awesome-python list on github. Here are some quick links to some key segments with my most used module from each:

Making something web based? Use flask or checkout Web Frameworks

Drawing graphs and presenting data? Try matplotlib or checkout Data Visualization

Processing data? Try Pandas / numpy or checkout Data Analysis

Making a desktop application? Try Tkinter or checkout GUI

Making a game or graphical environment? Use Pygame or checkout Game Development

Parsing HTML pages? Try Beautiful Soup or checkout HTML manipulation

There are many other types of python project so just have browse and you’re sure to find something useful in your area, image manipulation, audio processing …