Articles of python internals

¿Por qué Python emite STORE_SUBSTR cuando ya hay un INPLACE_ADD?

Si desmonta la siguiente función def test(): t = (1, 2, [30]) t[2] += [40] return t Verá que el código de byte correspondiente para t[2] += [40] ve así: 3 18 LOAD_FAST 0 (t) 21 LOAD_CONST 2 (2) 24 DUP_TOPX 2 27 BINARY_SUBSCR 28 LOAD_CONST 4 (40) 31 BUILD_LIST 1 34 INPLACE_ADD 35 ROT_THREE […]

¿Qué sucede cuando eres inherente a un módulo en lugar de una clase en Python?

Recientemente me encontré con esta pregunta . import Object class Visitor(Object): def __init__(self): super(Visitor,self).__init__() def visit(self, obj): pass def getIsDone(self): return False isDone = property(fget =lambda self:self.getIsDone()) Me sale este error: TypeError: module.__init__() takes at most 2 arguments (3 given) y su respuesta: class A:pass print(A) #outputs import urllib print(urllib) #outputs Tu error está ocurriendo […]

¿Qué es la stack en Python?

¿Qué llamamos “stack” en Python? ¿Es la stack C de CPython? Leí que los cuadros de stack de Python se asignan en un montón. Pero pensé que el objective de una stack era … astackr los fotogtwigs. ¿Qué hace entonces la stack?

¿Por qué es tan lento comprobar la instancia (algo, mapeo)?

Recientemente comparé el rendimiento de las collections.Counter Counter con sorted para verificaciones de comparación (si algún iterable contiene los mismos elementos con la misma cantidad) y si bien el rendimiento de gran scope de Counter es generalmente mejor que el sorted , es mucho más lento para los iterables cortos. Al usar line_profiler el cuello […]

Implementación de NoneType, razones y detalles

Recientemente leí en alguna parte que el valor especial None en python es un objeto singleton de su propia clase, específicamente NoneType . Esto se explica mucho, ya que la mayoría de los errores relacionados con None en Python producen AttributeError s en lugar de un especial “NoneError” o algo así. Dado que todos estos […]

¿Por qué el módulo namedtuple no utiliza una metaclase para crear objetos de clase nt?

Pasé un tiempo investigando las collections.namedtuple llamó módulo de doble hace unas semanas. El módulo utiliza una función de fábrica que llena los datos dynamics (el nombre de la nueva clase de namedtuple y los nombres de atributos de la clase) en una cadena muy grande. Luego, exec se ejecuta con la cadena (que representa […]

¿Por qué lleva más tiempo importar una función desde un módulo que todo el módulo en sí?

Considerar: >>> timeit.timeit(‘from win32com.client import Dispatch’, number=100000) 0.18883283882571789 >>> timeit.timeit(‘import win32com.client’, number=100000) 0.1275979248277963 Se tarda mucho más en importar solo la función de despacho en lugar de todo el módulo, lo que parece contrario a la intuición. ¿Podría alguien explicar por qué la sobrecarga para tomar una sola función es tan mala? ¡Gracias!

Lista de búsqueda más rápido que la tupla?

En el pasado, cuando he necesitado búsquedas de tipo matricial en un circuito cerrado, por lo general uso tuplas, ya que parecen tener un rendimiento extremadamente alto (cerca de usar solo n-número de variables). Sin embargo, decidí cuestionar ese supuesto hoy y encontré algunos resultados sorprendentes: In [102]: l = range(1000) In [103]: t = […]

¿Se puede definir __setattr __ () en una clase con __slots__?

Digamos que tengo una clase que define __slots__ : class Foo(object): __slots__ = [‘x’] def __init__(self, x=1): self.x = x # will the following work? def __setattr__(self, key, value): if key == ‘x’: object.__setattr__(self, name, -value) # Haha – let’s set to minus x ¿Puedo definir __setattr__() para ello? Como Foo no tiene __dict__ , […]

Objeto personalizado en el lugar que desempaqueta diferentes comportamientos con __getitem__ python 3.5 vs python 3.6

una pregunta de seguimiento sobre esta pregunta : corrí el siguiente código en python 3.5 y python 3.6, con resultados muy diferentes: class Container: KEYS = (‘a’, ‘b’, ‘c’) def __init__(self, a=None, b=None, c=None): self.a = a self.b = b self.c = c def keys(self): return Container.KEYS def __getitem__(self, key): if key not in Container.KEYS: […]