An A-Z of Useful Python Tricks - freeCodeCamp - Org - Medium PDF
An A-Z of Useful Python Tricks - freeCodeCamp - Org - Medium PDF
org - Medium
Python is one of the world’s most popular, in-demand programming languages. This is
for many reasons:
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 1/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
I use Python daily as an integral part of my job as a data scientist. Along the way, I’ve
picked up a few useful tricks and tips.
Most of these ‘tricks’ are things I’ve used or stumbled upon during my day-to-day work.
Some I found while browsing the Python Standard Library docs. A few others I found
searching through PyPi.
However, credit where it is due — I discovered four or five of them over at awesome-
python.com. This is a curated list of hundreds of interesting Python tools and modules.
It is worth browsing for inspiration!
all or any
One of the many reasons why Python is such a popular language is because it is
readable and expressive.
It is often joked that Python is ‘executable pseudocode’. But when you can write code
like this, it’s difficult to argue otherwise:
if any(x):
print("At least one True")
if all(x):
print("Not one False")
bashplotlib
You want to plot graphs in the console?
collections
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 2/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
Python has some great default datatypes, but sometimes they just won’t behave exactly
how you’d like them to.
Luckily, the Python Standard Library offers the collections module. This handy add-on
provides you with further datatypes.
dir
Ever wondered how you can look inside a Python object and see what attributes it has?
Of course you have.
>>> dir()
>>> dir("Hello World")
>>> dir(dir)
This can be a really useful feature when running Python interactively, and for
dynamically exploring objects and modules you are working with.
emoji
Yes, really.
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 3/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
print(emojize(":thumbs_up:"))
Fear not, however. The __future__ module lets you import functionality from future
versions of Python. It’s literally like time travel, or magic, or something.
print("Hello World!")
geopy
Geography can be a challenging terrain for programmers to navigate (ha, a pun!). But
the geopy module makes it unnervingly easy.
There’s also a useful distance class. It calculates the distance between two locations in
your favorite unit of measurement.
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 4/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
print(location.address)
print(location.location)
howdoi
Stuck on a coding problem and can’t remember that solution you saw before? Need to
check StackOverflow, but don’t want to leave the terminal?
Ask it whatever question you have, and it’ll do its best to return an answer.
Be aware though — it scrapes code from top answers from StackOverflow. It might not
always give the most helpful information…
inspect
Python’s inspect module is great for understanding what is happening behind the
scenes. You can even call its methods on itself!
The code sample below uses inspect.getsource() to print its own source code. It also
uses inspect.getmodule() to print the module in which it was defined.
The last line of code prints out its own line number.
import inspect
print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 5/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
Of course, beyond these trivial uses, the inspect module can prove useful for
understanding what your code is doing. You could also use it for writing self-
documenting code.
Jedi
The Jedi library is an autocompletion and code analysis library. It makes writing code
quicker and more productive.
Unless you’re developing your own IDE, you’ll probably be most interested in using Jedi
as an editor plugin. Luckily, there are already loads available!
You may already be using Jedi, however. The IPython project makes use of Jedi for its
code autocompletion functionality.
**kwargs
When learning any language, there are many milestones along the way. With Python,
understanding the mysterious **kwargs syntax probably counts as one.
The double-asterisk in front of a dictionary object lets you pass the contents of that
dictionary as named arguments to a function.
The dictionary’s keys are the argument names, and the values are the values passed to
the function. You don’t even need to call it kwargs !
This is useful when you want to write functions that can handle named arguments not
defined in advance.
List comprehensions
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 6/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
One of my favourite things about programming in Python are its list comprehensions.
These expressions make it easy to write very clean code that reads almost like natural
language.
numbers = [1,2,3,4,5,6,7]
evens = [x for x in numbers if x % 2 is 0]
odds = [y for y in numbers if y not in evens]
def visit(city):
print("Welcome to "+city)
map
Python supports functional programming through a number of inbuilt features. One of
the most useful is the map() function — especially in combination with lambda
functions.
x = [1, 2, 3]
y = map(lambda x : x + 1 , x)
In the example above, map() applies a simple lambda function to each element in x . It
returns a map object, which can be converted to some iterable object such as a list or
tuple.
newspaper3k
If you haven’t seen it already, then be prepared to have your mind blown by Python’s
newspaper module.
It lets you retrieve news articles and associated meta-data from a range of leading
international publications. You can retrieve images, text and author names.
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 7/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
So if you were thinking of using BeautifulSoup or some other DIY webscraping library
for your next project, save yourself the time and effort and $ pip install newspaper3k
instead.
Operator overloading
Python provides support for operator overloading, which is one of those terms that
make you sound like a legit computer scientist.
It’s actually a simple concept. Ever wondered why Python lets you use the + operator
to add numbers and also to concatenate strings? That’s operator overloading in action.
You can define objects which use Python’s standard operator symbols in their own
specific way. This lets you use them in contexts relevant to the objects you’re working
with.
class Thing:
def __init__(self, value):
self.__value = value
def __gt__(self, other):
return self.__value > other.__value
def __lt__(self, other):
return self.__value < other.__value
something = Thing(100)
nothing = Thing(0)
# True
something > nothing
# False
something < nothing
# Error
something + nothing
pprint
Python’s default print function does its job. But try printing out any large, nested
object, and the result is rather ugly.
Here’s where the Standard Library’s pretty-print module steps in. This prints out
complex structured objects in an easy-to-read format.
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 8/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
A must-have for any Python developer who works with non-trivial data structures.
import requests
import pprint
url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)
Queue
Python supports multithreading, and this is facilitated by the Standard Library’s Queue
module.
This module lets you implement queue data structures. These are data structures that
let you add and retrieve entries according to a specific rule.
‘First in, first out’ (or FIFO) queues let you retrieve objects in the order they were
added. ‘Last in, first out’ (LIFO) queues let you access the most recently added objects
first.
Finally, priority queues let you retrieve objects according to the order in which they are
sorted.
__repr__
When defining a class or an object in Python, it is useful to provide an ‘official’ way of
representing that object as a string. For example:
This makes debugging code a lot easier. Add it to your class definitions as below:
class someClass:
def __repr__(self):
return "<some description here>"
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 9/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
someInstance = someClass()
sh
Python makes a great scripting language. Sometimes using the standard os and
subprocess libraries can be a bit of a headache.
It lets you call any program as if it were an ordinary function — useful for automating
workflows and tasks, all from within Python.
import sh
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')
Type hints
Python is a dynamically-typed language. You don’t need to specify datatypes when you
define variables, functions, classes etc.
This allows for rapid development times. However, there are few things more annoying
than a runtime error caused by a simple typing issue.
Since Python 3.5, you have the option to provide type hints when defining functions.
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 10/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
Vector = List[float]
Matrix = List[Vector]
z = addMatrix(x, y)
Although not compulsory, type annotations can make your code easier to understand.
They also allow you to use type checking tools to catch those stray TypeErrors before
runtime. Probably worthwhile if you are working on large, complex projects!
uuid
A quick and easy way to generate Universally Unique IDs (or ‘UUIDs’) is through the
Python Standard Library’s uuid module.
import uuid
user_id = uuid.uuid4()
print(user_id)
This creates a randomized 128-bit number that will almost certainly be unique.
In fact, there are over 2¹²² possible UUIDs that can be generated. That’s over five
undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).
The probability of finding duplicates in a given set is extremely low. Even with a trillion
UUIDs, the probability of a duplicate existing is much, much less than one-in-a-billion.
Virtual environments
This is probably my favorite Python thing of all.
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 11/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
Chances are you are working on multiple Python projects at any one time.
Unfortunately, sometimes two projects will rely on different versions of the same
dependency. Which do you install on your system?
Luckily, Python’s support for virtual environments lets you have the best of both
worlds. From the command line:
Now you can have standalone versions and installations of Python running on the same
machine. Sorted!
wikipedia
Wikipedia has a great API that allows users programmatic access to an unrivalled body
of completely free knowledge and information.
The wikipedia module makes accessing this API almost embarrassingly convenient.
import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
print(link)
Like the real site, the module provides support for multiple languages, page
disambiguation, random page retrieval, and even has a donate() method.
xkcd
Humour is a key feature of the Python language — after all, it is named after the British
comedy sketch show Monty Python’s Flying Circus. Much of Python’s official
documentation references the show’s most famous sketches.
The sense of humour isn’t restricted to the docs, though. Have a go running the line
below:
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 12/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
import antigravity
YAML
YAML stands for ‘YAML Ain’t Markup Language’. It is a data formatting language, and is
a superset of JSON.
Unlike JSON, it can store more complex objects and refer to its own elements. You can
also write comments, making it particularly suited to writing configuration files.
The PyYAML module lets you use YAML with Python. Install with:
import yaml
PyYAML lets you store Python objects of any datatype, and instances of any user-
defined classes also.
zip
One last trick for ya, and it really is a cool one. Ever needed to form a dictionary out of
two lists?
The zip() inbuilt function takes a number of iterable objects and returns a list of
tuples. Each tuple groups the elements of the input objects by their positional index.
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 13/14
8/10/2019 An A-Z of useful Python tricks - freeCodeCamp.org - Medium
Please share any of your own favorite Python tricks by leaving a response below!
https://medium.com/free-code-camp/an-a-z-of-useful-python-tricks-b467524ee747 14/14