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.
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:
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.
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:
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.
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:
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.
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:
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:
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:
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:
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.
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:
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.
Para personalizar los colores, vaya a Herramientas>Opciones>Entorno>Fuentes y colores. En la lista Mostrar elementos, modifique las entradas de Python deseadas:
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
:
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.
Comandos de menú
Cuando use el comando de menú Editar>IntelliSense>Insertar fragmento de código, primero debe seleccionar Python, y luego el fragmento que desee:
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:
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:
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.
Navegar por el código
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.
Barra de navegación
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.
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.
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.
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.