The State Of Python In 2021

Python is an interpreted high-level general-purpose programming language. 

At the risk of alienating most of the readership of this magazine, here is a confession. I hated Python for a very long time. My issue was not with the language per se, even though the indentation rules have put me off for a while. No, the reason I kept myself away from Python was the unfortunate contact with some (too many for my taste) hubris-filled Python developers. Well, that, and the no man’s land that was the transition between Python 2 and 3.

That was, of course, unfortunate. But after a few years, pragmatism naturally brought me back to Python again; not so much the language per se, which I now neither like nor dislike, but the sheer amount of libraries available (and their excellent quality). Another big contributing factor to this renewed interest in Python was the long awaited announcement of the deprecation of Py 2; this event signals a major point of maturity in the language, and one that was badly required. The ecosystem around Python is outstanding, and the rise of Machine Learning cemented its status as the new Fortran, while at the same time it became the new pseudocode, or even, the new BASIC.

These days it is not only hard, but unwise for a developer to ignore Py. This article is the product of six months of exploration in online and offline media, to find out how much Py has permeated our craft. The result was a surprise even to this author. Python is not only everywhere, it has become a “default” programming language for the computer industry.

As stated above, the first thing that brought me into Python was its libraries. I needed to get stuff done (who does not?) and Python had precisely the libraries I needed. Its standard csv package was the first one I explored and used with intensity, almost 20 years ago; next came argparse, doctest, and shutil, all part of the standard library. Manipulating data in CSV format took me to export it to other formats; Python-OpenXML provided a first solution, later enhanced with Pandas to manipulate Excel files.

Little by little, I started to use Python more and more. At some point I got a job as a Django application developer, a framework pompously marketed “for perfectionists with deadlines”; a punchline filled with hubris and undeserved merit. Thankfully these days Cloud Native Python apps are built around less monolithic options such as Flask, Pyramid, or Tornado.

In terms of IDEs, PyCharm, Spyder, or Wing, are fighting for the attention of developers, many of whom are migrating to Visual Studio Code with Microsoft’s own Py extension (who by the way are very interested in the Py ecosystem lately). Developers might be interested to use mypy, Flake8 or Pylint to check the quality of their code.

Most Py scripts start and end their life in the command line. But for those interested in providing a GUI, choices abound: Kivy for touchscreen apps, the venerable wxPython, the powerful Qt for Py, and its often overlooked sibling PySide2. In the experimental part of the spectrum, REMi, and Gooey deserve special mentions; the former turning scripts into fully-fledged web apps, and the latter transforming any CLI script into a desktop GUI application. Python has also strong interoperability with other languages and runtimes. Suffice to mention SWIG and Boost.Python, enabling interoperability with C and C++; and Jython, enabling its use in the JVM–still lacking support for Python 3 at the time of this writing.

Speaking about alternative implementations of the language, one must also mention PyPy, recommended by Guido van Rossum for its speed, and IronPython for .NET, whose Py 3 alpha implementation was recently released. Python is a fertile ground for package managers and build systems: Conan, Poetry, Wheels, redo (a recursive build system), and of course the venerable pip, together with the more recent pipx (an equivalent to JavaScript’s npx command).

Many ground-breaking ideas have been powered by Python lately: Ansible; asciinema; the Atheris code coverage tool; authentik (replacement for Keycloak); Beautiful Soup to parse HTML; bump2version; Celery for distributed queue processing; Click and Typer to replace argparse; Cookiecutter; Depix to recover passwords from pixelized screenshots; Diagrams; Ecco to explore NLP models; Glances to monitor your servers; GOMP to compare Git branches; IceCream; jrnl to write your journals; lorem to create placeholder text; Outrun to run commands in a separate machine; Pillow to manipulate images; pdoc to generate API docs; PyGithub; PyYAML; qrcode; rainbowstream; Ramanujan Machine; Requests for your HTTP needs; Rich for formatting text in the console; TOML because there are not enough configuration languages; Vulture to find dead code; youtube-dl to download videos online; Weechat Matrix protocol client; whereami; the Whoosh search library; and so much more.

Full Version

Python is dynamically-typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly, procedural), object-oriented and functional programming.