¿Cuáles son algunos hacks de Python menos conocidos?

Obtención del valor predeterminado para una clave en el diccionario –

Solo use el método get (key, default)

>>> my_dict = {‘a’: 1, ‘b’: 2, ‘c’: 3}
>>> mi_dicto [‘d’]
Rastreo (llamadas recientes más última):
Archivo “”, línea 1, en
KeyError: ‘d’
>>> my_dict.get (‘d’, 0)
0

Usando métodos __xx__ predefinidos –

Al anular estas funciones, puede definir cómo se comportarán los objetos de su clase en las operaciones generales de Python:

clase Enemigo (Personaje):
# Qué sucederá cuando hagas Enemigo (‘Jocker’, 100)
def __init __ (self, name, kill_xp):
self.name = name
self.kill_xp = kill_xp

# ¿Qué pasará cuando compares dos enemigos?
# con operaciones booleanas
# El que tenga mayor kill_xp gana.
def __cmp __ (yo mismo, otro):
devuelve self.kill_xp – other.kill_xp

# Fusionar dos enemigos
def __add __ (yo mismo, otro):
volver enemigo (self.name + ” + other.name,
self.kill_xp + other.kill_xp)

# Aumentar Kill XP
# jocker + = 20
# jocker.kill_xp ahora 120
def __iadd __ (yo mismo, otro):
self.kill_xp + = otro

Más funciones de este tipo aquí.

Usando el mapa

Mapea objetos a otros basados ​​en alguna relación (y mucho más).

Definitivamente matar (enemigo):
enemy.name = ‘Late’ + enemy.name
enemy.kill_xp = 0
enemigo de vuelta

enemigos = [jocker, owlman, deadshot]
dead_enemies = []
para enemigos en enemigos:
dead_enemies.append (kill (enemigo)) # Yawn …

dead_enemies = list (mapa (matar, enemigos)) # COOL !!

Eliminar duplicados de la lista de objetos –

Póngalos en una lista ( set ()) .

>>> redundant_list = [1, 2, 4, ‘a’, ‘b’, 3, 2, 1, ‘b’, ‘c’]
>>> lista (conjunto (redundant_list))
[‘a’, 1, 2, ‘b’, 4, ‘c’, 3]

Lea la documentación de Python en su navegador –

Solo usa la utilidad de línea de comandos pydoc

pydoc -p 8080

Abra el navegador, vaya a 127.0.0.1:8080 y disfrute de la documentación oficial de Python.

Funciones Lambda –

Aquí hay un ejemplo para obtener todos los subconjuntos posibles (una línea de rock).

>>> magic = lambda l: reduce (lambda z, x: z + [y + [x] para y en z], l, [[]])
>>> magia ([1, 2, 3])
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]

Aquí hay algo que he notado que no mucha gente sabe …

Al definir una clase, por ejemplo,

clase MyClass:
def __init __ (self, name, val):
self.name = name
self.val = val

def __str __ (self):
devuelve “Name:” + self.name + “Value:” + str (self.val)

x = MyClass (“algo”, 56)
imprimir x

El resultado es “Nombre: algo Valor: 56”

Básicamente, cada vez que esa clase se usa como una cadena, su valor se convierte en el resultado de su función __str__ en lugar del valor predeterminado “

Creo que puedes hacer esto con __int__, __dict__ y __list__ también.