Admin at NotATether.com, developer at ChainWorks Industries & online entrepreneur
Have you ever felt that you are not coding Python as productive as you want to be? Have you ever found yourself repeating the same statements consecutively but each with slight changes?
Well then, is guide is for you. The beauty of Python is that it gives us several valuable constructs to avoid repetition and to do more work with less code.
You may already know such gems as what I call the "two-variable swap trick" involving the use of tuples or the "multiple value input” trick that gets many variables from
by running the resulting line through
, or even the one-liner fit reversing an array using
, but this article will give you even more shortcuts to use.
You might know that there are some C functions such as
, which take a variable number of arguments depending on the value of the first one. This is easy to replicate in Python by using list expansion after the initial positional arguments.
def fun1(*a): res=1 for ele in a: res*=ele return res ans=fun1(5,6,9,6,9,6,6) print(ans) # prints `524880`
Here's another more organic example, a calculator that makes use of positional arguments:
OP_ADD = 1 OP_SUBTRACT = 2 OP_MULTIPLY = 3 #... def calculator(op, *var): if op == OP_ADD: a, b = *var return a + b elif op == OP_NEG: a = *var return -a #...
Have you ever found yourself writing code like this?
if foo == True: print("All is well!") else: print("We may have a problem")
You don't have to do that! This can be done in one line using the condensed form of the
print("All is well!" if foo == True else "We may have a problem")
By making use of the
method as a key, we can convert arrays to dictionaries to find how many times each element occurs.
In Python, you can chain two less-than or greater-than operators to test whether a number is within a range. No more having to test them separately!
if 1 < x < 10: #...
It's happened to most of us. The debugger goes kaput, and it forces us to sprinkle
statements everywhere to trace program execution while finding a bug. Now seeing is everything, and most people can't write good words that help someone identify where control flow is (I know I can’t).
comes in handy.
is a PyPI module that contains a function you can place anywhere in the program, and when you call it without arguments, it will tell you the file and line number, as well as function it's in as well as the current time.
When you do call it with an argument, however, it will print the name and value of the variable you passed. It's convenient to avoid mass repetition from writing a bunch of your own
from icecream import ic def hello(user:bool): if user: ic() else: ic() hello(user=True) num1 = 30 num2 = 40 ic(num1) ic(num2)
Having said all that, make sure you avoid the following pitfalls while coding:
for the iterator in
loops. This forces you to get the list length again using
. It is better to use
in such scenarios to get both the value and index. Additionally, avoid using
syntax if you need indices in the loop.
for i in ...
to access dictionary keys if they may not exist. Instead of handling
exceptions (and it's tempting to omit
groups when accessing random dictionary keys), use the
method of dictionaries, which will return
if the key does not exist. The resulting
conditional is much easier to handle in code.
So as you just saw, Python is a very rich language that gives you more straightforward ways of programming the same thing. And where the functionality is not built-in, there is usually a PyPI module that does it.
Create your free account to unlock your custom reading experience.