Articles of python internals

Accediendo al nombre al que está asignado un objeto que está siendo creado

Estoy escribiendo algún código para determinar el nombre al que se asigna un objeto. Esto es para el trabajo de depuración general y para familiarizarme más con los internos de python. Lo tengo estructurado como un decorador de clase para que todas las instancias de esa clase tengan sus nombres grabados si es posible. El […]

¿Por qué una clase __dict__ es un mappingproxy?

Me pregunto por qué una clase __dict__ es un mappingproxy , pero una instancia __dict__ es solo un dict simple >>> class A: … pass >>> a = A() >>> type(a.__dict__) >>> type(A.__dict__)

¿Cómo imprimir statement crear una variables locales

Las preguntas están al final de este post. Primer fragmento: diccionario variable local vacío. def outer(): x = 1 def inner(): print “Local variables: %s” % locals() return inner() print outer() Salida: variables locales: {} Segundo fragmento: imprime la función interior () y crea una entrada de variable local. def outer(): x = 1 def […]

¿Por qué es str.translate mucho más rápido en Python 3.5 en comparación con Python 3.4?

Estaba tratando de eliminar los caracteres no deseados de una cadena dada usando text.translate() en Python 3.4. El código mínimo es: import sys s = ‘abcde12345@#@$#%$’ mapper = dict.fromkeys(i for i in range(sys.maxunicode) if chr(i) in ‘@#$’) print(s.translate(mapper)) Funciona como se esperaba. Sin embargo, el mismo progtwig cuando se ejecuta en Python 3.4 y Python […]

Uso seguro del método de eliminación en python

Heredé una clase UserList de la lista e implementé el siguiente método para eliminar las entradas que están marcadas como eliminadas def purge_deleted(self): for element in list.__iter__(self): if ele.mark_deleted < 1: self.remove(element) El elemento en sí mismo es una entidad complicada que tiene métodos que prevalecen sobre los operadores de comparación. Preguntas ¿Funcionará con éxito […]

Convertir una serie de pasos en cadenas: ¿por qué se aplica mucho más rápido que un astype?

Tengo un pandas.Series contienen enteros, pero necesito convertirlos en cadenas para algunas herramientas pandas.Series . Supongamos que tengo un objeto de la Series : import numpy as np import pandas as pd x = pd.Series(np.random.randint(0, 100, 1000000)) En StackOverflow y otros sitios web, he visto a la mayoría de las personas argumentar que la mejor […]

¿Por qué algunas comparaciones de coma flotante <enteros son cuatro veces más lentas que otras?

Cuando se comparan flotantes con enteros, algunos pares de valores tardan mucho más en evaluarse que otros valores de una magnitud similar. Por ejemplo: >>> import timeit >>> timeit.timeit(“562949953420000.7 < 562949953421000") # run 1 million times 0.5387085462592742 Pero si el valor flotante o entero se hace más pequeño o más grande en una cierta cantidad, […]

¿Por qué los arrays de Python son lentos?

Esperaba que array.array fuera más rápido que las listas, ya que las matrices parecen estar sin caja. Sin embargo, obtengo el siguiente resultado: In [1]: import array In [2]: L = list(range(100000000)) In [3]: A = array.array(‘l’, range(100000000)) In [4]: %timeit sum(L) 1 loop, best of 3: 667 ms per loop In [5]: %timeit sum(A) […]

Dict / Set Parsing Consistencia de la Orden

Contenedores que aceptan objetos hashable (como las claves de dict o los elementos set ). Como tal, un diccionario solo puede tener una clave con el valor 1 , 1.0 o True etc. (nota: algo simplificado: se permiten las colisiones de hash, pero estos valores se consideran iguales) Mi pregunta es: ¿el orden de análisis […]

¿Qué hay debajo del capó de x = ‘y’ ‘z’ en Python?

Si ejecuta x = ‘y’ ‘z’ en Python, obtendrá x establecido en ‘yz’ , lo que significa que se está produciendo algún tipo de concatenación de cadenas cuando Python ve múltiples cadenas una al lado de la otra. Pero, ¿qué tipo de concatenación es esta? ¿Realmente está ejecutando ‘y’ + ‘z’ o está ejecutando ”.join(‘y’,’z’) […]