¿Qué son los tipos hash en Python?


Mejor respuesta

Para comprender los tipos hash en Python, debe comprender qué es el hash y por qué se usa. Así que aquí hay una breve descripción general del hash:

aña Cuando aplica un hash a un objeto, realmente significa que lo está ejecutando a través de alguna función. Esta función se llama función hash. Lo que hace esta función hash es brindarle una salida única para una entrada única. Por ejemplo, digamos que tenemos una función hash llamada hash y dos variables ayb tales que a! = B, luego hash (a)! = Hash (b). En teoría, de todos modos. En la práctica, ejecutará en una colisión de hash. Eso significa a! = B pero hash (a) == hash (b). Un ejemplo sería si su función hash es x mod 10, entonces hash (12) == hash (2). Hay algunas formas de manejar esto.

aña Python usa esto para almacenar claves en diccionarios. La forma en que hacen esto es hash del objeto, luego mapean el hash a un índice en una matriz y luego ponen el valor allí. Entonces, por ejemplo, digamos que desea almacenar «123» en la tecla «abc». Digamos que Python inicializó una matriz para un diccionario en 10. Lo que Python hará es hash (abc) y luego mod por 10 para ponerlo en un diccionario. Digamos que hash (abc) devuelve 1234. Python luego lo modifica en 10 para obtener 4. Luego coloca “123” en el índice 4.

Así que básicamente un tipo hash es solo un tipo que puede ser hash. Puede hacer que una función pueda tener hash sobrescribiendo \_\_hash\_\_ y \_\_eq\_\_ en Python. Pero debe tener cuidado para asegurarse de que el hash devuelva lo mismo cada vez que obtenga el mismo objeto. Por ejemplo, si hace que \_\_hash\_\_ devuelva un número aleatorio cada vez que lo llame, nunca volverá a encontrar su objeto en un hash. Al mismo tiempo, no desea devolver lo mismo para todos los objetos, porque entonces obtendrá muchos falsos positivos.

Por supuesto, esto es un poco más complicado y esto es extremadamente Breve descripción general, pero estos son los conceptos básicos detrás del hash

Respuesta

Esta es una pregunta difícil (pero buena). En inglés americano, la pregunta puede ser leída como um lista todas las cosas que el lenguaje Python no puede hacer.. Eso es difícil (para mí) porque no sé lo suficiente como para enumerarlos todos. A continuación he enumerado algunas de las cosas que Python no puede hacer. Por favor, lea todas las demás respuestas para más información.

  1. Python doesn cont work for device drivers. Los controladores de dispositivo deben ser súper rápidos y con una gran capacidad de respuesta. Python tampoco tiende a serlo. Los controladores de dispositivo tienen que correr de forma independiente. Python tiene un gran sistema de tiempo de ejecución. Python usa un sistema de recolección de basura algo similar a Java. En algunos casos, las pausas para la recolección de basura son intolerables.
  2. Python no se puede usar en algunas computadoras realmente pequeñas. Algunas computadoras (como Arduino en general) son demasiado pequeñas para Python. Python tiene una biblioteca en tiempo de ejecución que requiere demasiada memoria para algunas máquinas. Hay algo llamado MicroPython. Sin embargo, incluso MicroPython usa mucha más memoria que la que tienen algunos sistemas (muy pequeños). Tenga en cuenta que la Raspberry Pi está basada en Python.
  3. Python realmente no se ejecuta en el navegador. Existen herramientas y soluciones para este problema. Sin embargo, JavaScript es (de lejos) la herramienta dominante para la programación de front-end, no Python.
  4. Python no es tan portátil. En realidad, Python es superportátil. Sin embargo, debe tener el tiempo de ejecución de Python ya instalado. Como consecuencia, la mayoría de los juegos no están escritos en Python. La instalación del tiempo de ejecución de Python es un gran obstáculo para muchas aplicaciones. En este sentido, Python es muy parecido a Java. Java es realmente muy, muy portátil. Sin embargo, debe tener una JVM ya instalada.
  5. Python es demasiado lento para algunos usos. Los juegos tienen requisitos de FPS muy exigentes y necesitan procesar un gran número de píxeles. Como consecuencia, la mayoría de los juegos están escritos en C / C ++, no en Python. En promedio, Python es aproximadamente 100 veces más lento que C ++. En muchos casos (en la mayoría de los casos), eso no es un gran problema. Para juegos y algunas otras aplicaciones, lo es.
  6. Python isn not much of a bar bare metal. Lenguaje. Si necesita acceder directamente al hardware y manipularlo, es posible que Python no sea una buena opción. Ver el punto 1 (controladores de dispositivo) anterior. Tenga en cuenta que Python no tiene punteros verdaderos con direcciones de máquina reales en ellos. Este es un problema crítico en algunos casos.
  7. Python es prácticamente de un solo subproceso (vea las otras respuestas). Este es un gran problema en algunos casos (no muchos realmente) y no es un problema en otros. Tenga en cuenta que Python no hace un trabajo particularmente bueno al usar núcleos tradicionales. Sin embargo, algunas bibliotecas de Python muy importantes explotan los núcleos CUDA.

aña En general, Python es una herramienta bastante buena. Personalmente, me encanta. Sin embargo, no es la opción correcta para todo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *