Some time ago, I’ve decided to learn Python programming language. I thought it may be useful during performing some basic tasks in the system and Linux or Windows scripting. Moreover, it’s good language for developing web applications with frameworks like Django, Flask or Bottle. I’ve decided to go through all of the tasks in the Learn Python - The Hard Way course. Basic tasks weren’t surprising. They were similar to other object oriented languages. In the further tasks we can learn basic features available in Python language, which are not so common for e.g. Java programmers. I’ve placed all tasks in learn-python-the-hard-way repository on GitHub. Moreover, in file I’ve added information about:

  • Installing Python on Windows and Linux
  • Executing Python scripts from terminal
  • Pip package manager and installing it on Windows and Linux
  • Using Pip
  • Unit Testing
  • Virtualenv
  • Scripts on Linux
  • Style Guide for Python Code
  • Development Environments
  • Popular Python web frameworks
  • Useful Python libraries
  • Additional Resources & links

In addition, to learn this language better, I’ve decided to create a few simple projects:

  • android-resource-converter - scripts converting Android xml resources with translations to csv file and backwards
  • git-branch-comparator - checks if development branch has all changes from master branch in Git repository
  • craplog - verifies whether your git log is a crap or not

What’s interesting first two of them were used in production and second project is running regularly on a CI server. Other developers also create similar tools and scripts. For example Pidcat is pretty handy and useful tool for Android developers and it’s just a single script written in Python. To sum up, I can tell that Python is great object oriented language with a clean and simple syntax. With this language we can achieve our goals really fast with a few lines of code and readable solution. I recommend to learn this language to broaden our horizon even if we are programming in totally different technologies on daily basis.