Last active
March 12, 2018 08:49
-
-
Save misteio/f873024943f59475cac6e8ebbb35152b to your computer and use it in GitHub Desktop.
Python Tricks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Different ways to test multiple | |
# flags at once in Python | |
x, y, z = 0, 1, 0 | |
if x == 1 or y == 1 or z == 1: | |
print('passed') | |
if 1 in (x, y, z): | |
print('passed') | |
# These only test for truthiness: | |
if x or y or z: | |
print('passed') | |
if any((x, y, z)): | |
print('passed') | |
# How to merge two dictionaries | |
# in Python 3.5+ | |
>>> x = {'a': 1, 'b': 2} | |
>>> y = {'b': 3, 'c': 4} | |
>>> z = {**x, **y} | |
>>> z | |
{'c': 4, 'a': 1, 'b': 3} | |
# Using namedtuple is way shorter than | |
# defining a class manually: | |
>>> from collections import namedtuple | |
>>> Car = namedtuple('Car', 'color mileage') | |
# Our new "Car" class works as expected: | |
>>> my_car = Car('red', 3812.4) | |
>>> my_car.color | |
'red' | |
>>> my_car.mileage | |
3812.4 | |
# We get a nice string repr for free: | |
>>> my_car | |
Car(color='red' , mileage=3812.4) | |
# Like tuples, namedtuples are immutable: | |
>>> my_car.color = 'blue' | |
AttributeError: "can't set attribute" | |
# The get() method on dicts | |
# and its "default" argument | |
name_for_userid = { | |
382: "Alice", | |
590: "Bob", | |
951: "Dilbert", | |
} | |
def greeting(userid): | |
return "Hi %s!" % name_for_userid.get(userid, "there") | |
>>> greeting(382) | |
"Hi Alice!" | |
>>> greeting(333333) | |
"Hi there!" | |
# Function argument unpacking | |
def myfunc(x, y, z): | |
print(x, y, z) | |
tuple_vec = (1, 0, 1) | |
dict_vec = {'x': 1, 'y': 0, 'z': 1} | |
>>> myfunc(*tuple_vec) | |
1, 0, 1 | |
>>> myfunc(**dict_vec) | |
1, 0, 1 | |
# In-place value swapping | |
# Let's say we want to swap | |
# the values of a and b... | |
a = 23 | |
b = 42 | |
# The "classic" way to do it | |
# with a temporary variable: | |
tmp = a | |
a = b | |
b = tmp | |
# Python also lets us | |
# use this short-hand: | |
a, b = b, a | |
# Functions are first-class citizens in Python. | |
# They can be passed as arguments to other functions, | |
# returned as values from other functions, and | |
# assigned to variables and stored in data structures. | |
>>> def myfunc(a, b): | |
... return a + b | |
... | |
>>> funcs = [myfunc] | |
>>> funcs[0] | |
<function myfunc at 0x107012230> | |
>>> funcs[0](2, 3) | |
5 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment