Edición del código de Python y uso de IntelliSense

Dado que invierte mucho tiempo de desarrollo en el editor de código, la compatibilidad de Python en Visual Studio proporciona funciones para ayudarle a ser más productivo. Las características incluyen resalte de sintaxis de IntelliSense, finalización automática, ayuda para la firma, invalidaciones de método, búsqueda y navegación.

El editor de código está integrado con la ventana Interactiva de Visual Studio. A medida que trabaja, es fácil intercambiar código entre las dos ventanas. Para obtener más información, consulte Paso 3: Usar la ventana interactiva de REPL y Uso de la ventana interactiva - Comando Enviar a interactiva.

La Esquematización le ayuda a mantenerse centrado en determinadas secciones del código. Para obtener documentación general sobre la edición de código en Visual Studio, vea Características del editor de código.

El Explorador de objetos de Visual Studio permite inspeccionar las clases de Python definidas en cada módulo y las funciones definidas en esas clases. Puede acceder a esta característica en el menú Ver o mediante el método abreviado de teclado Ctrl+Alt+J.

Uso de las características de IntelliSense

IntelliSense ofrece finalizaciones, ayuda para la firma, información rápida y coloración de código. Visual Studio 2017 versión 15.7 y posteriores también admite sugerencias de tipo.

Para mejorar el rendimiento, IntelliSense en Visual Studio 2017, versión 15.5 y versiones anteriores, depende de la base de datos de finalizaciones que se genera para cada entorno de Python en el proyecto. Es posible que tenga que actualizar la base de datos si agrega, quita o actualiza paquetes. El estado de la base de datos se muestra en la ventana Entornos de Python (un complemento del Explorador de soluciones) en la pestaña IntelliSense. Para obtener más información, consulte Referencia de la ventana Entornos.

Visual Studio 2017, versión 15.6 y posteriores, utiliza un medio diferente para proporcionar finalizaciones de IntelliSense que no dependen de la base de datos.

Finalizaciones

Las finalizaciones aparecen como instrucciones, identificadores y otras palabras que pueden especificarse adecuadamente en la ubicación actual en el editor. Intellisense rellena la lista de opciones en función del contexto y filtra los elementos incorrectos o que distraen. Las finalizaciones a menudo se desencadenan introduciendo instrucciones diferentes (como import) y operadores (incluido el punto), pero pueden aparecer en cualquier momento seleccionando el método abreviado del teclado Ctrl+J +Espacio.

Captura de pantalla que muestra la finalización de miembros a través de IntelliSense en el editor de Visual Studio.

Cuando se abre una lista de finalizaciones, puede buscar la finalización que desee con las teclas de dirección, el mouse o bien escribiendo algo más. A medida que escriba más letras, la lista se seguirá filtrando para mostrar las finalizaciones probables. También puede usar accesos directos como:

  • Escribir letras que no están al principio del nombre, como "parse" para buscar "argparse"
  • Escribir solo las letras que se encuentran al principio de palabras, como "abc" para buscar 'AbstractBaseClass' o "air" para buscar "as_integer_ratio"
  • Omitir letras, como "b64" para buscar "base64"

Estos son algunos ejemplos:

Captura de pantalla que muestra la finalización de miembros con filtrado en el editor de Visual Studio.

Las finalizaciones de miembros aparecen automáticamente al escribir un punto después de una variable o un valor, junto con los métodos y atributos de los tipos posibles. Si una variable puede ser de más de un tipo, la lista incluye todas las posibilidades de todos los tipos. Se muestra información adicional para indicar qué tipos admiten cada finalización. Cuando todos los tipos posibles admiten una finalización, no se muestra ninguna anotación.

Captura de pantalla que muestra la finalización de miembros en varios tipos en el editor de Visual Studio.

De manera predeterminada, no se muestran los miembros "dunder" (miembros que comienzan y terminan con un doble carácter de subrayado). En general, no se debe acceder a dichos miembros directamente. Si necesita usar un miembro "dunder", escriba el doble carácter de subrayado inicial para agregar estas finalizaciones a la lista:

Captura de pantalla que muestra los tipos de finalización de miembros dunder privados en el editor de Visual Studio.

Las instrucciones import y from ... import muestran una lista de módulos que pueden importarse. La instrucción from ... import genera una lista que incluye miembros que pueden importarse desde el módulo especificado.

Captura de pantalla que muestra la importación y la finalización de la importación en el editor de Visual Studio.

Las instrucciones raise y except muestran listas de clases que probablemente sean tipos de error. Puede que la lista no incluya todas las excepciones definidas por el usuario, pero ayuda a encontrar rápidamente las excepciones integradas adecuadas:

Captura de pantalla que muestra la finalización de excepciones en el editor de Visual Studio.

Al seleccionar el símbolo @ (en) se inicia un decorador y se muestran los posibles decoradores. Muchos de estos elementos no se pueden usar como decoradores. Compruebe la documentación de la biblioteca para determinar qué decorador se va a usar.

Captura de pantalla que muestra la finalización del decorador en el editor de Visual Studio.

Para obtener más información, consulte Opciones - Resultados de finalización.

Sugerencias de escritura

Las sugerencias de escritura están disponibles en Visual Studio 2017, versión 15.7 y posteriores.

"Sugerencias de escritura" en Python 3.5 + (PEP 484 (python.org) es una sintaxis de anotación de funciones y clases que indica los tipos de argumentos, valores devueltos y atributos de clase. IntelliSense muestra sugerencias de tipo cuando mantiene el mouse sobre las llamadas a funciones, argumentos y variables que tengan dichas anotaciones.

En el ejemplo siguiente, la clase Vector se declara como el tipo List[float], y la función scale contiene sugerencias de tipo para sus argumentos y el valor devuelto. Al mantener el mouse sobre una llamada a esa función se muestran las sugerencias de tipo:

Captura de pantalla que muestra cómo pasar el cursor sobre una llamada de función para mostrar sugerencias de tipo.

En el ejemplo siguiente puede ver cómo los atributos anotados de la clase Employee aparecen en la ventana emergente de finalización de IntelliSense para un atributo:

Captura de pantalla que muestra la finalización de IntelliSense para una clase con sugerencias de tipo.

También es útil validar las sugerencias de tipo en todo el proyecto, porque los errores normalmente no aparecerán hasta el tiempo de ejecución. Para ello, Visual Studio integra la herramienta estándar del sector Mypy mediante el comando de menú contextual Python>Ejecutar Mypy en el Explorador de soluciones:

Captura de pantalla donde aparece los comandos de linting disponibles para proyectos de Python en el Explorador de soluciones.

Al ejecutar el comando se le solicita que instale el paquete Mypy, si es necesario. Después, Visual Studio ejecuta Mypy para validar las sugerencias de tipo de cada archivo de Python en el proyecto. Los errores se muestran en la ventana Lista de errores de Visual Studio. Al seleccionar un elemento en la ventana se desplaza a la línea adecuada del código.

Como ejemplo sencillo, la siguiente definición de función contiene una sugerencia de tipo para indicar que el argumento input es de tipo str, mientras que la llamada a esa función intenta pasar un entero:

def commas_to_colons(input: str):
    items = input.split(',')
    items = [x.strip() for x in items]
    return ':'.join(items)

commas_to_colons(1)

Al usar el comando Ejecutar MyPy en este código se genera el siguiente error:

Captura de pantalla que muestra el resultado de ejemplo de las sugerencias de tipo de validación de Mypy.

Nota:

Para las versiones de Python anteriores a la 3.5, Visual Studio también muestra las sugerencias de tipo que proporcione a través de archivos de código auxiliar de Typeshed (.pyi). Puede usar archivos de código auxiliar si no desea incluir sugerencias de tipo directamente en el código o para sugerencias de tipo para una biblioteca que no los usa directamente. Para obtener más información, consulte Creación de códigos auxiliares para los módulos de Python en la wiki de proyecto de Mypy.

Actualmente, Visual Studio no admite sugerencias de tipo en los comentarios.

Ayuda para la firma

Al escribir código que llama a una función, la ayuda de firma aparece al escribir el paréntesis de apertura (. Muestra la documentación y la información de parámetros disponibles. Puede acceder a la ayuda de firma con el método abreviado de teclado Ctrl+Mayús+Espacio dentro de una llamada de función. La información que se muestra depende de las cadenas de documentación del código fuente de la función, pero incluye los valores predeterminados.

Captura de pantalla que muestra la ayuda para la firma en el editor de Visual Studio.

Sugerencia

Para deshabilitar la ayuda de firma, vaya a Herramientas>Opciones>Editor de texto>Python>General. Desactive la casilla Finalización de instrucción>Información de parámetro.

Información rápida

Al pasar el puntero del mouse sobre un identificador aparece una sugerencia de información rápida. Según el identificador, la información rápida puede mostrar los valores o tipos posibles, cualquier documentación disponible, los tipos de devolución y las ubicaciones de definición:

Captura de pantalla que muestra información rápida para mostrar información en el editor de Visual Studio.

Coloración de código

La coloración de código utiliza información desde análisis de código a variables de colores, instrucciones y otras partes del código. Las variables que hacen referencia a módulos o clases pueden mostrarse en un color diferente de las funciones u otros valores. Los nombres de parámetro pueden aparecer en un color diferente al de las variables locales o globales. De manera predeterminada, las funciones no se muestran en negrita.

Captura de pantalla que muestra los colores de código y sintaxis en el editor de Visual Studio.

Para personalizar los colores, vaya a Herramientas>Opciones>Entorno>Fuentes y colores. En la lista Mostrar elementos, modifique las entradas de Python deseadas:

Captura de pantalla que muestra las opciones de Fuentes y Colores en Visual Studio.

Inserción de fragmentos de código

Los fragmentos de código son pedazos de código que se pueden insertar en los archivos mediante un método abreviado de teclado y seleccionando Tab. También puede usar los comandos Editar>IntelliSense>Insertar fragmento y Delimitar con, seleccionar Python y luego el fragmento deseado.

Por ejemplo, class es un acceso directo para un fragmento de código que inserta una definición de clase. El fragmento de código aparece en la lista de finalización automática cuando se escribe class:

Captura de pantalla que muestra un fragmento de código para el acceso directo de clase.

Al seleccionar Tab, se genera el resto de la clase. Puede escribir sobre el nombre y la lista de bases, moverse entre los campos resaltados con Tab y luego seleccionar Entrar para empezar a escribir el cuerpo.

Captura de pantalla que muestra el resaltado en áreas de un fragmento de código para completarlas.

Cuando use el comando de menú Editar>IntelliSense>Insertar fragmento de código, primero debe seleccionar Python, y luego el fragmento que desee:

Captura de pantalla que muestra cómo seleccionar un fragmento de código mediante el comando Insertar fragmento de código.

Del mismo modo, el comando Editar>IntelliSense>Delimitar con, coloca la selección actual en el editor de texto dentro de un elemento estructural elegido. Supongamos que tiene un fragmento de código similar al siguiente ejemplo:

sum = 0
for x in range(1, 100):
    sum = sum + x

Al seleccionar este código y elegir el comando Delimitar con aparece una lista de fragmentos de código disponibles. Al elegir def en la lista de fragmentos de código, el código seleccionado se coloca dentro de una definición de función. Puede usar la tecla Tab para navegar entre el nombre de función resaltado y los argumentos:

Captura de pantalla que muestra cómo usar el comando Delimitar con para fragmentos de código.

Examen de los fragmentos de código disponibles

Puede ver los fragmentos de código disponibles en el Administrador de fragmentos de código. Acceda a esta característica desde Herramientas>Administrador de fragmentos de código y seleccione Python como lenguaje:

Captura de pantalla que muestra el Administrador de fragmentos de código en Visual Studio.

Para crear sus propios fragmentos de código, vea Tutorial: Crear un fragmento de código.

Si escribe un fragmento de código excelente que le gustaría compartir, no dude en publicarlo de manera resumida y hacérnoslo saber. Es posible que podamos incluirlo en una futura versión de Visual Studio.

La compatibilidad con Python en Visual Studio proporciona varias maneras de navegar rápidamente dentro del código, incluidas las bibliotecas para las que está disponible el código fuente. Puede encontrar bibliotecas con código fuente para la barra de navegación y los comandos Ir a definición, Ir a y Buscar todas las referencias. También se puede usar el Examinador de objetos de Visual Studio.

La barra de navegación se muestra en la parte superior de cada ventana del editor e incluye una lista de dos niveles de definiciones. La lista desplegable izquierda contiene definiciones de funciones y clases de nivel superior en el archivo actual. La lista desplegable derecha muestra una lista de definiciones dentro del ámbito que se muestra a la izquierda. A medida que recorra el editor, las listas se actualizan para mostrar el contexto actual y, además, puede seleccionar una entrada de estas listas para ir directamente a ella.

Captura de pantalla que muestra la barra de navegación en el editor de Visual Studio.

Sugerencia

Para ocultar la barra de navegación, vaya a Herramientas>Opciones>Editor de texto>Python>General y desactive Configuración>Barra de navegación.

Ir a definición

El comando Ir a definición rápidamente salta del uso de un identificador (por ejemplo, un nombre de función, clase o variable) a la ubicación de la definición del código fuente. Para invocar el comando, haga clic con el botón derecho en un identificador y seleccione Ir a definición o coloque el símbolo de intercalación en el identificador y seleccione F12. El comando funciona en todo su código y las bibliotecas externas donde el código fuente está disponible. Si el código fuente de la biblioteca no está disponible, Ir a definición salta a la correspondiente instrucción import para una referencia de módulo o muestra un error.

Captura de pantalla en la que se muestra el comando Ir a definición en Visual Studio.

Ir a

El comando Editar>Ir a (Ctrl+,) muestra un cuadro de búsqueda en el editor donde puede escribir cualquier cadena y consultar las posibles coincidencias en el código que define una función, una clase o una variable que contiene la cadena. Esta característica proporciona una función similar a Ir a definición, pero sin tener que buscar un uso de un identificador.

Para navegar a la definición de ese identificador, haga doble clic en cualquier nombre o seleccione el nombre con las teclas de dirección y Entrar.

Captura de pantalla que muestra el comando Ir a en Visual Studio.

Buscar todas las referencias

La característica Buscar todas las referencias es una forma útil de detectar aquellas instancias en las que un identificador determinado se define y utiliza, incluidas las importaciones y las asignaciones. Para invocar el comando, haga clic con el botón derecho en un identificador y seleccione Buscar todas las referencias o coloque el símbolo de intercalación en el identificador y seleccione Mayús+F12. Al hacer doble clic en un elemento de la lista se navega hasta su ubicación.

Captura de pantalla que muestra los resultados de Buscar todas las referencias en Visual Studio.