python-internals

¿Cómo funciona el decorador @ property?

Me gustaría entender cómo funciona la función incorporada property. Lo que me confunde es que property también se puede usar ... @x.deleter def x(self): del self._x Y, ¿cómo se crean los x.setter y x.deleter decoradores? Estoy confundido.

¿Los diccionarios están ordenados en Python 3.6+?

Los diccionarios están ordenados en Python 3.6 (al menos bajo la implementación de CPython) a diferencia de las encarnaciones ... ymond Hettinger.) Actualizar Diciembre de 2017: dict la orden de retención de inserción está garantizada para Python 3.7

¿Por qué es" 1000000000000000 en rango(1000000000000001) " tan rápido en Python 3?

Entiendo que la función range(), que en realidad es un tipo de objeto en Python 3, genera su contenido sobre la marcha, simi ... spuestas de poke y de wim proporcionan la C código fuente relevante y explicaciones para aquellos que estén interesados.

¿Son posibles las variables estáticas de clase?

¿Es posible tener variables de clase estáticas o métodos en python? ¿Qué sintaxis se requiere para hacer esto?

¿Cuándo es útil del en python?

Realmente no puedo pensar en ninguna razón por la que python necesita la palabra clave del (y la mayoría de los idiomas parec ... . ¿Hay alguna razón para mantener del en python, o es un vestigio de los días previos a la recolección de basura de Python?

tiempo.sueño-duerme hilo o proceso?

En Python para *nix, ¿time.sleep() bloquea el hilo o el proceso?

¿Son las tuplas más eficientes que las listas en Python?

¿Hay alguna diferencia de rendimiento entre las tuplas y las listas cuando se trata de instanciación y recuperación de elementos?

¿Por qué es x**4.0 más rápido que x**4 en Python 3?

¿Por qué es x**4.0 más rápido que x**4? Estoy usando CPython 3.5.2. $ python -m timeit "for x in range(100):" " x**4.0" 1 ... uera del bucle. Revisé y la situación solo ocurre (por lo que he visto) cuando la base se está elevando. ¿Alguna idea de eso?

¿Por qué dos listas idénticas tienen una huella de memoria diferente?

He creado dos listas l1 y l2, pero cada una con un método de creación diferente: import sys l1 = [None] * 10 l2 = [None fo ... stas son idénticas en Python de lo contrario. ¿Por qué es eso? ¿Es esto algo interno de CPython, o alguna otra explicación?

¿Por qué es más lento iterar sobre una cadena pequeña que sobre una lista pequeña?

Estaba jugando con timeit y noté que hacer una comprensión de lista simple sobre una cadena pequeña tomó más tiempo que hacer ... imeit("[x for x in ['a', 'b', 'c']]") 1.5286479570345861 ¿Qué está sucediendo en un nivel inferior que está causando esto?

¿Por qué el orden en los diccionarios y conjuntos es arbitrario?

No entiendo cómo el bucle sobre un diccionario o conjunto en python se hace por orden 'arbitrario'. Es decir, es un lenguaje ... ritmo que decida qué parte del diccionario o conjunto se elige, 1er, segundo y así sucesivamente. ¿Qué me estoy perdiendo?

Acceso a variables de clase desde una lista comprensión en la definición de clase

¿Cómo se accede a otras variables de clase desde una comprensión de lista dentro de la definición de clase? Lo siguiente fu ... # ... ]] En este ejemplo, apply() habría sido una solución decente, pero lamentablemente se ha eliminado de Python 3.

¿Por qué es max más lento que sort?

He encontrado que max es más lento que la función sort en Python 2 y 3. Python 2 $ python -m timeit -s 'import random;a=ra ... fle(a)' 'max(a)' 1000 loops, best of 3: 371 usec per loop Por qué es max (O(n)) ¿más lento que la función sort (O(nlogn))?

¿Por qué puedo usar el mismo nombre para iterador y secuencia en un bucle for de Python?

Esta es más una cuestión conceptual. Recientemente vi un fragmento de código en Python (funcionó en 2.7, y también podría hab ... cione según lo previsto. Están en diferentes ámbitos? ¿Qué está pasando bajo el capó que permite que algo como esto funcione?

¿Por qué el código utiliza variables intermedias más rápido que el código sin ellas?

Me he encontrado con este comportamiento extraño y no he podido explicarlo. Estos son los puntos de referencia: py -3 -m tim ... hon con timeit.timeit() @ 10000 loops produjo 0.703 y 0.804 respectivamente. Todavía muestra aunque en menor medida. (~12.5%)

Python: ¿por qué son * y ** más rápidos que / y sqrt()?

Mientras optimizaba mi código me di cuenta de lo siguiente: >>> from timeit import Timer as T >>> T(lambd ... e que ver con la forma en que python se implementa en C, pero me pregunto si a alguien le importaría explicar por qué es así.

¿Por qué tupla(set([1,"a","b","c","z","f"])) == tupla(set(["a","b","c","z","f",1])) 85% del tiempo con el hash de la aleatorización habilitado?

Dada la respuesta de Zero Pireo a otra pregunta, tenemos que x = tuple(set([1, "a", "b", "c", "z", "f"])) y = tuple(set(["a" ... "f", 1])) print(x == y) Imprime Trueaproximadamente el 85% de las veces con la aleatorización hash activada. ¿Por qué 85%?

¿Por qué las tuplas ocupan menos espacio en la memoria que las listas?

A tuple ocupa menos espacio de memoria en Python: >>> a = (1,2,3) >>> a.__sizeof__() 48 Mientras que li ... t;>> b = [1,2,3] >>> b.__sizeof__() 64 ¿Qué sucede internamente en la administración de memoria de Python?

Cuando es hash (n) = = n en Python?

He estado jugando con la función hash de Python . Para números enteros pequeños, aparece hash(n) == n siempre. Sin embargo, ... rece que el hash de Python 3 siempre tiene un valor positivo, mientras que el hash de Python 2 puede tomar valores negativos.