Python es un lenguaje de programación de alto nivel, de propósito general, dinámicamente tipado e interpretado que es ampliamente utilizado para diversas aplicaciones, como desarrollo web, análisis de datos, aprendizaje automático, automatización y más. Python es conocido por su sintaxis simple y legible, su rico conjunto de bibliotecas y módulos y su compatibilidad multiplataforma.
Python 3.7 es una versión importante del lenguaje Python que fue lanzado el 27 de junio de 2018. Presenta varias nuevas características y mejoras que hacen que Python sea más potente, expresivo y fácil de usar. Algunos de los aspectos más destacados de esta versión son:
En este artículo, exploraremos cómo descargar e instalar Python 3.7 en su máquina, cuáles son los principales beneficios de usar esta versión y cuáles son algunos de los posibles inconvenientes o problemas de compatibilidad que podría encontrar.
Antes de descargar e instalar Python 3.7, es posible que desee comprobar si ya tiene Python en su máquina y qué versión es. Para ello, puede usar una aplicación de línea de comandos, como PowerShell en Windows o Terminal en macOS o Linux.
Para comprobar tu versión de Python en Windows, sigue estos pasos:
Si tienes Python instalado, deberías ver algo como esto:
PS C: Usuarios user> python -versión Python 3.9.5 Si no tienes Python instalado o si tienes una versión anterior a 3.7, deberías ver algo como esto:
PS C: Users user> python -versión python : El término 'python' no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operable. Para comprobar tu versión de Python en macOS o Linux, sigue estos pasos:
Si tienes Python instalado, deberías ver algo como esto:
$ python -versión Python 2.7.16 $ python3 -versión Python 3.9.5 Si no tienes Python instalado o si tienes una versión anterior a 3.7, deberías ver algo como esto:
$ python --version -bash: python: comando no encontrado $ python3 --version -bash: python3: comando no encontrado Hay dos formas principales de descargar Python 3.7 en su máquina: desde el sitio web oficial de Python o desde la tienda de Windows (si está usando Windows 10).
Para descargar Python 3.7 desde el sitio web oficial, siga estos pasos:
Para descargar Python 3.7 desde Windows Store, siga estos pasos:
Para instalar Python 3.7 en Linux usando el código fuente, siga estos pasos:
Las anotaciones son metadatos que se pueden adjuntar a variables, parámetros, funciones, clases y módulos en Python. Por lo general, se utilizan para proporcionar sugerencias de tipo, que son sugerencias opcionales para los tipos esperados de valores o argumentos. Por ejemplo, puede escribir una función como esta:
def add(x: int, y: int) -> int: return x + y En Python 3.7, las anotaciones se evalúan en tiempo de definición, lo que significa que se ejecutan como expresiones cuando se analiza el código. Esto puede causar algunos problemas, como:
class Node: def __init__(self, value: int, next: Node): self.value = value self.next = next Esto generará un NameError porque Node no está definido todavía cuando se evalúa la anotación. Tienes que escribirlo así:
class Node: def _init__(self, value: int, next: 'Node'): self.value = value self.next = next>
# mod1.py from mod2 import Foo def bar(x: Foo) -> Ninguno: pass # mod2.py from mod1 import bar class Foo: def __init_(self): bar(self) Esto levantará un ImportError porque mod1 y mod2 dependen el uno del otro. Tienes que escribirlo así:
# mod1.py from typing import TYPE_CHECKING if if TYPE_CHECKING: from mod2 import Foo def bar(x: 'Foo') -> Ninguno: pass # mod2.py from mod1 import bar class Foo: def __init_(self): bar(self) from __future_ import annotations Esto hará que todas las anotaciones en su módulo se almacenen como cadenas, en lugar de ser evaluadas como expresiones. Esto mejorará el rendimiento, permitirá referencias hacia adelante y evitará las importaciones circulares. Todavía puede acceder a las expresiones originales usando la función typing.get_type_hints() o el atributo __annotations__ de los objetos.
Depuración es una habilidad esencial para cualquier programador, ya que le permite encontrar y corregir errores en su código. Una de las herramientas de depuración más comunes es un punto de interrupción, que es un punto en su código donde la ejecución se detiene y le permite inspeccionar el estado de su programa.
En Python 3.7, hay una nueva función incorporada llamada breakpoint() que facilita la inserción de puntos de interrupción en su código. Simplemente puede llamar a esta función en cualquier lugar de su código donde desee pausar la ejecución y lanzar un depurador. Por ejemplo, puedes escribir algo como esto:
def factorial(n): if n == 0: return 1 else: breakpoint() return n * factorial(n - 1) Esto detendrá la ejecución cuando la función sea llamada con un argumento positivo y abrirá un depurador en su terminal. A continuación, puede utilizar los comandos del depurador para inspeccionar las variables, paso a través del código, evaluar expresiones, etc.La función breakpoint() es personalizable, ya que puede configurar qué depurador usar y cómo iniciarlo. Por defecto, usa el módulo pdb, que es el depurador estándar de Python. Sin embargo, puede cambiar esto estableciendo la variable de entorno PYTHONBREAKPOINT en el nombre de otro módulo o función de depuración. Por ejemplo, puede usar ipdb, que es una envoltura alrededor de pdb que proporciona un shell IPython interactivo. Para hacerlo, puede escribir esto en su terminal antes de ejecutar su script:
export PYTHONBREAKPOINT=ipdb.set_trace Las clases de datos son una nueva característica en Python 3.7 que simplifica la creación de clases que principalmente almacenan atributos de datos y proporcionan métodos predeterminados para la comparación, representación e inicialización. Las clases de datos son similares a namedtuple o struct en otros idiomas, pero son más flexibles y potentes.
Para crear una clase de datos, debe usar el decorador @dataclass del módulo dataclasses y definir los atributos de su clase como variables de clase con anotaciones de tipo. Por ejemplo, puede escribir una clase de datos como esta:
from dataclasses import dataclass @dataclass class Point: x: float y: float Esto generará automáticamente un método __init__() que toma x e y como argumentos y los asigna a self. x y self. y, respectivamente. También generará un método __eq_() que compara dos instancias de Punto por sus atributos, un método __repr__() que devuelve una representación de cadena de una instancia de Punto, y un método __hash_() que devuelve un valor hash de una instancia de Punto.
Puedes crear y usar instancias de Point como esta:
p1 = Point(1.0, 2.0) p2 = Point(3.0, 4.0) print(p1) # prints Point(x=1.0, y=2.0) print(p1 == p2) # prints False print(hash(p1)) # prints 3713081631934410656 /pre>Las clases de datos también admiten algunas características adicionales, como:
@dataclass class Rectángulo: width: float = 0.0 height: float = 0.0 Esto hará que los argumentos width y height sean opcionales al crear una instancia de Rectángulo.
Esto hará que el atributo área no se incluya en el método __init__(), pero todavía se generará en los otros métodos. También puede usar otras opciones, como repr, compare, hash, etc., para controlar cómo se usan sus atributos en diferentes métodos.
@dataclass class Circle: radius: float área: float = field(init=False) def __post_init__(self): self.área = 3.14 * self.radius 2 Esto calculará y asignará el atributo de área basado en el atributo radius después de crear una instancia de Circle.
Las variables de contexto son una nueva característica en Python 3.7 que le permite administrar el estado específico del contexto de una manera segura para subprocesos sin usar el almacenamiento local de subprocesos. Las variables de contexto son similares a las variables globales, pero son locales a un contexto, que es un conjunto de valores que están asociados con un cierto flujo de ejecución.
Para crear y usar variables de contexto, debe usar la clase ContextVar del módulo contextvars y la función contextvars.copy _context() del mismo módulo. Por ejemplo, puedes escribir algo como esto:
Este ejemplo muestra cómo puede crear una variable de contexto llamada nombre, establecer y obtener su valor en el contexto actual, hacer una copia del contexto actual, modificar y obtener el valor de la variable de contexto en la copia, y obtener el valor de la variable de contexto en el contexto original. Como puede ver, el valor de la variable de contexto es diferente en diferentes contextos, pero es consistente dentro de cada contexto.
Las variables de contexto son útiles para situaciones en las que necesita almacenar algún estado que sea relevante para un flujo de ejecución específico, como una solicitud, una tarea, una consecuencia, etc., sin afectar otros flujos o subprocesos. Por ejemplo, puede usar variables de contexto para almacenar información como identidad de usuario, configuración regional, zona horaria, nivel de registro, etc.
Python 3.7 también introduce muchas otras mejoras y mejoras en varios aspectos del lenguaje, como:
Si bien Python 3.7 ofrece muchos beneficios y mejoras sobre versiones anteriores del lenguaje, también tiene algunos inconvenientes y problemas de compatibilidad que debe tener en cuenta antes de usarlo. Algunos de ellos son:
En este artículo, hemos aprendido cómo descargar e instalar Python 3.7 en su máquina, cuáles son las principales características y beneficios de esta versión, y cuáles son algunos de los posibles inconvenientes o problemas de compatibilidad que puede encontrar.
Python 3.7 es una versión importante del lenguaje Python que introduce varias nuevas características y mejoras que hacen que Python sea más potente, expresivo y fácil de usar. Algunos de los aspectos más destacados de esta versión son la evaluación pospuesta de anotaciones, la función de punto de interrupción incorporado (), las clases de datos, las variables de contexto y otras mejoras en la biblioteca estándar, la implementación de CPython y la documentación.
Por lo tanto, le recomendamos que utilice Python 3.7 si desea aprovechar las nuevas características y mejoras que ofrece, pero también estar preparado para hacer frente a algunos desafíos y cambios que puede traer. También debe mantener su versión de Python y paquetes actualizados para garantizar el mejor rendimiento y seguridad de sus proyectos de Python.
A: La forma más fácil de actualizar su versión de Python a 3.7 es descargarla e instalarla desde el sitio web oficial o la tienda de Windows, como hemos explicado antes. Sin embargo, también debe comprobar si su código y paquetes existentes son compatibles con Python 3.7 antes de actualizar, ya que algunos cambios pueden romper su código o causar errores. Puede usar herramientas como pyenv, virtualenv o pipenv para administrar múltiples versiones y entornos de Python en su máquina.
A: Las sugerencias de tipo son anotaciones opcionales que puedes usar para indicar los tipos esperados de valores o argumentos en tu código Python. Se utilizan principalmente para la comprobación de tipo estático, que es un proceso de verificación de que su código sigue las reglas de tipo en tiempo de compilación o antes de ejecutarlo. Para usar sugerencias de tipo en Python 3.7, tienes que importar el módulo de escritura y usar los tipos predefinidos o crear tus propios tipos usando genéricos o alias. Por ejemplo, puede escribir una función como esta:
from typing import List, Dict def count_words(text: str) -> Dict[str, int]: words = text.split() counts = for word in words: counts[word] = counts.get(word, 0) + 1 devuelve counts Esta función tiene sugerencias de tipo que indican que el texto debe ser una cadena, y que el valor devuelto debe ser un diccionario de cadenas y enteros. Puede usar herramientas como mypy, pytype o pyre para verificar su código en busca de errores de tipo usando estas sugerencias de tipo.
A: La función breakpoint() es una nueva función incorporada en Python 3.7 que le permite insertar un punto de interrupción en su código que lanzará automáticamente un depurador cuando se ejecute. Para usar la función breakpoint(), tienes que llamarlo en cualquier lugar de tu código donde quieras pausar la ejecución y lanzar un depurador. Por ejemplo, puedes escribir algo como esto:
def factorial(n): if n == 0: return 1 else: breakpoint() return n * factorial(n - 1) Esto detendrá la ejecución cuando la función sea llamada con un argumento positivo y abrirá un depurador en su terminal. A continuación, puede usar los comandos del depurador para inspeccionar las variables, pasar por el código, evaluar expresiones, etc. De forma predeterminada, la función breakpoint() utiliza el módulo pdb, que es el depurador estándar de Python. Sin embargo, puede cambiar esto estableciendo la variable de entorno PYTHONBREAKPOINT en el nombre de otro módulo o función depurador.
A: Las clases de datos son una nueva característica en Python 3.7 que simplifica la creación de clases que principalmente almacenan atributos de datos y proporcionan métodos predeterminados para la comparación, representación e inicialización. Para crear una clase de datos, debe usar el decorador @dataclass del módulo dataclasses y definir los atributos de su clase como variables de clase con anotaciones de tipo. Por ejemplo, puede escribir una clase de datos como esta:
from dataclasses import dataclass @dataclass class Point: x: float y: float p1 = Point(1.0, 2.0) p2 = Point(3.0, 4.0) print(p1) # prints Point(x=1.0, y=2.0) print(p1 == p2) # prints False print(hash(p1)) # prints 3713081631934410656 /pre>A: Las variables de contexto son una nueva característica en Python 3.7 que le permite administrar el estado específico del contexto de una manera segura para subprocesos sin usar el almacenamiento local de subprocesos. Las variables de contexto son similares a las variables globales, pero son locales a un contexto, que es un conjunto de valores que están asociados con un cierto flujo de ejecución.
Para crear y usar variables de contexto, debe usar la clase ContextVar del módulo contextvars y la función contextvars.copy_context() del mismo módulo. Por ejemplo, puedes escribir algo como esto:
from contextvars import ContextVar, copy_context # Crear un nombre de variable de contexto = ContextVar('name') # Establecer un valor para la variable de contexto name.set('Alice') # Obtener el valor de la variable de contexto print(name.get()) # imprime Alice # Cree una copia del contexto actual ctx = copy_context() # Modifique el valor de la variable context en la copia ctx.run(name.set, 'Bob') # Obtenga el valor de la variable context en la copia print(ctx.run(name.get)) # imprime Bob # Obtiene el valor de la variable de contexto en la impresión de contexto original (name.get()) # imprime Alice Este ejemplo muestra cómo puede crear una variable de contexto llamada nombre, establecer y obtener su valor en el contexto actual, hacer una copia del contexto actual, modificar y obtener el valor de la variable de contexto en la copia, y obtener el valor de la variable de contexto en el contexto original. Como puede ver, el valor de la variable de contexto es diferente en diferentes contextos, pero es consistente dentro de cada contexto.