Articles of python python internals

¿Cómo evita __slots__ una búsqueda en el diccionario?

He escuchado que __slots__ hace que los objetos sean más rápidos al evitar una búsqueda en el diccionario. Mi confusión viene de que Python es un lenguaje dynamic. En un lenguaje estático, evitamos una búsqueda en el diccionario para una a.test haciendo una optimización en tiempo de comstackción para guardar el índice en la instrucción […]

¿Por qué crear una lista de una lista la hace más grande?

Veo algunas inconsistencias cuando uso sys.getsizeof en lo que deberían ser listas idénticas. (Python 2.7.5) >>> lst = [0,1,2,3,4,5,6,7,8,9] >>> sys.getsizeof(lst) 76 >>> lst2 = list(lst) >>> sys.getsizeof(lst2) 104 >>> lst3 = list(lst2) >>> sys.getsizeof(lst3) 104 >>> sys.getsizeof(lst[:]) 76 >>> sys.getsizeof(lst2[:]) 76 ¿Alguien tiene una explicación simple?

¿Python optimiza una variable que solo se utiliza como valor de retorno?

¿Hay alguna diferencia definitiva entre los siguientes dos fragmentos de código? El primero asigna un valor a una variable en una función y luego devuelve esa variable. La segunda función simplemente devuelve el valor directamente. ¿Python los convierte en un bytecode equivalente? ¿Es uno de ellos más rápido? Caso 1 : def func(): a = […]

Python: el __getattribute__ método y descriptores

de acuerdo con esta guía sobre descriptores de python https://docs.python.org/2/howto/descriptor.html los objetos de método en las nuevas clases de estilo se implementan utilizando descriptores para evitar encuadrarlos en la búsqueda de atributos. la forma en que entiendo esto es que hay un tipo de objeto de método que implementa __get__ y devuelve un objeto de […]

¿Cómo funcionan realmente las comparaciones encadenadas en Python?

El documento de Python para comparaciones dice: Las comparaciones se pueden encadenar arbitrariamente, por ejemplo, x < y <= z es equivalente a x < y and y <= z , excepto que y se evalúa solo una vez (pero en ambos casos z no se evalúa en absoluto cuando se encuentra x < y […]

Internos para tuplas de python

>>> a=1 >>> b=1 >>> id(a) 140472563599848 >>> id(b) 140472563599848 >>> x=() >>> y=() >>> id(x) 4298207312 >>> id(y) 4298207312 >>> x1=(1) >>> x2=(1) >>> id(x1) 140472563599848 >>> id(x2) 140472563599848 hasta este punto, estaba pensando que solo habrá una copia de objeto inmutable y que todas las variables compartirán (señalarán). Pero cuando lo intenté, los […]

¿Cuándo es útil en python?

Realmente no puedo pensar en ninguna razón por la que Python necesite la palabra clave del (y la mayoría de los idiomas parecen no tener una palabra clave similar). Por ejemplo, en lugar de eliminar una variable, uno podría asignarle None . Y al eliminar de un diccionario, se podría agregar un método del . […]

¿Cómo funciona internamente el intercambio de miembros en las tuplas de python (a, b) = (b, a)?

In [55]: a = 5 In [56]: b = 6 In [57]: (a, b) = (b, a) In [58]: a Out[58]: 6 In [59]: b Out[59]: 5 ¿Cómo funciona este intercambio de valores de ayb internamente? Definitivamente no está utilizando una variable temporal.