Autocompletar en IDE de lenguaje dynamic, específicamente Python en PyDev

Soy nuevo en Python, con un fondo en lenguajes estáticos incluyendo muchos y muchos Java.

Me decidí por PyDev en eclipse como IDE después de verificar las características / popularidad, etc.

Me sorprendió el hecho de que el autocompletar no parece funcionar correctamente para los componentes integrados. Por ejemplo, si bash completar automáticamente en el archivo de datos después de:

archivo de datos = abrir (directorio + “/” + cuenta, ‘r’) archivo de datos.

No se sugieren métodos útiles (por ejemplo, realines). Sólo cosas como llamar .

    Estoy acostumbrado a aprender un idioma al saltar a las definiciones de clase y al usar mucho autocompletar para ver rápidamente lo que hará una clase. Mi ‘intérprete’ de PyDev está bien configurado con ‘incorporaciones forzadas’.

    ¿Es posible obtener auto-completar para builtins con PyDev? ¿Me estoy acercando al IDE de forma incorrecta, es decir, debería tener un intérprete ejecutando el lado y hacer pruebas con él? Hasta ahora, los IDE parecían débiles, por ejemplo, IDLE segfaulted en mi nueva mac después de 2 minutos. Me encantaría saber qué hacen los desarrolladores experimentados de Python cuando exploran módulos desconocidos (integrados), ya que esto me hace reconsiderar mi atracción inicial hacia Python. ¡Me gusta un idioma que puedes aprender explorando fácilmente!

    Gracias,

    En mi opinión, el shell de Python es un lugar mucho mejor para explorar nuevos módulos que confiar en un IDE. No se olvide, en Python puede hacer cualquier cosa en el shell que pueda hacer en un progtwig, porque no hay un paso de comstackción separado. Y en el shell, puedes usar dir(x) para encontrar todas las propiedades y métodos de x, ya sea que x sea un módulo, una clase o lo que sea.

    Aún mejor, el shell iPython mejorado proporciona la finalización de tabs para todos los objetos.

    De hecho, debido a esto, muchos progtwigdores de Python, incluido yo mismo, no usan un IDE en absoluto, sino un simple editor de texto (yo uso VIM).

    Solo para mantenerlo actualizado para que los nuevos lectores no se confundan con el estado actual de Pydev; el ejemplo que dio ahora funciona en Pydev. (por cierto, se debe evitar el funcionamiento manual en las rutas, use os.path.join en su lugar)

    Me encantaría saber qué hacen los desarrolladores experimentados de Python cuando exploran módulos desconocidos (integrados)

    Yo uso ipython . Ipython es una versión mejorada de la shell interactiva que agrega el llenado de tabs y el acceso rápido a la cadena de documentación de un objeto. También ofrece muchas otras características que el shell estándar no tiene; aquí puede encontrar un resumen de sus características.

    Alguien que tenga más conocimientos aquí puede darte una respuesta detallada. Aquí hay una breve.

    El autocompletar para un lenguaje de tipo dynamic puede por naturaleza nunca ser tan rico como el de un idioma de tipo estático. En el caso de open por ejemplo, no hay manera de averiguar cuál será el tipo de retorno en el momento de escribir el código. La firma del método no incluye un tipo de retorno a diferencia de un lenguaje de tipo estático como Java. En consecuencia, el IDE no puede darte ninguna pista.

    Sin duda debes tener un REPL en ejecución durante cualquier desarrollo de Python. Una de las ventajas de un lenguaje interpretado es que puede probar pequeños fragmentos de su código en el REPL a medida que avanza. También es un buen lugar para comprobar su comprensión de cómo funcionan los módulos integrados y otros módulos.

    Trabajo en Ubuntu, así que no sé qué tan fácil o difícil es ejecutar IDLE en una Mac. Generalmente trabajo con iPython muy útil para las necesidades de REPL y uso Pydev para otro desarrollo (como Django). Es posible que desee darle una oportunidad a iPython.

    Quieres IPython . Como Daniel señaló anteriormente, el shell interactivo es una forma mucho mejor de explorar Python (y de hecho, la mayoría de los otros idiomas también).

    Esto podría ayudar a configurarlo en OSX.

    Es posible que desee echar un vistazo a WingIDE. Autocompleta tu archivo de datos correctamente.

    Si no puede inferir el tipo, puede usar una aserción como

     assert isinstance(datafile, file) 

    para ayudar al autocompletador

    Uso PyDev en el trabajo para saber de dónde vienes. Si estás dispuesto a considerar otras herramientas, echa un vistazo a PyCharm de JetBrains , ese es mi nuevo IDE de Python preferido para mis propios proyectos. Ninguna afiliación de la que hablar, excepto para decir que la recogeré cuando esté fuera de la versión beta. 🙂