2010-08-18 18 views
15

Tengo una buena comprensión de C, mi primer lenguaje de programación. Conozco una cantidad razonable de trucos y técnicas, y he escrito bastantes programas, principalmente para material científico. Ahora me gustaría diversificar y entender OOP, y Python parece una buena dirección para seguir.Viniendo de C, ¿cómo debo aprender Python?

He visto varias preguntas sobre cómo aprender Python, pero la mayoría eran de personas que buscaban comenzar a programar por primera vez. No necesito un tutorial que me diga qué es una cadena, pero I do necesito una que me diga cómo hacer una cadena en Python. ¿Alguna ayuda sobre algunas buenas fuentes para revisar? Puntos de bonificación si la fuente es gratuita :)

+0

una cadena es una cadena es una cadena ... cadenas pitón pueden contener el carbón nul :) –

+0

Paso 1. Aprender a búsqueda. Paso 2: Comience con esto: http://stackoverflow.com/questions/1590689/what-is-the-best-advanced-python-book Esta pregunta es probablemente un duplicado total. –

+0

C (cosas realmente básicas para micros incrustados) y Python son los dos idiomas con los que trato. Recuerde perder ';' pero también poner '()' alrededor de 'if' condicionales cuando vuelva a C: P –

Respuesta

28

Conocía C antes de conocer Python. Sin intención de ofender, pero no creo que tu conocimiento de C sea tan importante. A menos que leas muy, muy despacio, solo prepárate para aprender Python. No tomará tanto tiempo hojear el material con el que está familiarizado, y no es como si un tutorial de Python dirigido a programadores C lo convirtiera en un mejor programador de Python: podría enseñarle cosas en un orden diferente, es todo y plantea algunas cosas específicas que harías en C, pero que no deberías hacer en Python.

Las cadenas en Python en realidad son algo diferentes de las cadenas en C, y se usan de manera diferente. Recomiendo aprenderlos "desde cero", en lugar de pensar en ellos en términos de sus diferencias de las cadenas C. Por un lado, en Python 2 es mejor no usar para usar la clase de "cadena" de Python para representar cadenas: hay una clase de cadena Unicode separada y para aplicaciones prácticas de Python (casi cualquier cosa que involucre datos de usuario), lo necesita. (Python 3 corrige esto, por lo que la clase str es una cadena Unicode). Debe establecer una buena práctica de trabajo para los datos de unicode/byte y decodificar/codificar.

Un error común al aprender un segundo lenguaje de programación, es pensar "Sé cómo programar, solo necesito traducir lo que hago en C en Python". No, tu no. Si bien es cierto que un algoritmo puede ser básicamente el mismo en diferentes idiomas, la forma natural de hacer una cosa en particular puede ser completamente diferente en diferentes idiomas. Escribirás mejor el código Python si aprendes a usar Python idiomáticamente, que si tratas de escribir Python como un programador C. Muchos de los "trucos" que usted sabe que tienen sentido en C serán inútiles o contraproducentes en Python. Por el contrario, muchas cosas que debería hacer felizmente en un programa típico de Python, como asignar y liberar mucha memoria, son cosas en C que probablemente haya aprendido a pensar dos veces. En parte porque el programa típico de C tiene diferentes restricciones del programa típico de Python, y en parte porque solo tiene que escribir más código y pensar más para conseguir ese tipo de cosas en C que en Python.

Si está aprendiendo el idioma porque necesita programar urgentemente un sistema/plataforma que tiene Python pero no tiene C, escribir programas Python que funcionen como programas C es una medida provisional razonable. Pero eso probablemente no se aplica a usted, e incluso si lo hizo, no es el objetivo final.

Una cosa que le puede interesar mirar debido a su experiencia en C, es la API de Python/C. Python es ideal para muchas cosas, pero no da como resultado el núcleo computacional más rápido posible de aplicaciones científicas [tampoco C, probablemente, pero no entremos en FORTRAN por el momento ;-)]. Entonces, si pretendes continuar con la programación científica a través de tu mudanza a Python, y tus programas suelen estar ligados a la memoria del bus de memoria y la CPU haciendo inmensas cantidades de operaciones de cálculo de números (miles de millones de operaciones), entonces te gustaría saber cómo para escapar a C si alguna vez lo necesitas. Considéralo un último recurso, sin embargo.

Usted necesita entender Python razonablemente bien antes de la API Python/C tiene mucho sentido, sin embargo.

Oh, sí, y si quieres entender OOP en general, recuerda más adelante echar un vistazo a algo como Java, Objective-C, C++ o D. Python no es solo un lenguaje OO, es una dinámica OO idioma. Puede que no te des cuenta de comparar solo C con Python, pero los tipos dinámicos vs estáticos es un problema completamente independiente de la OOP-ness de Python. Los objetos Python son como tablas hash que le permiten adjuntar nuevos campos de cualquier manera, pero los objetos en muchos otros lenguajes OO almacenan datos de una manera mucho más parecida a C struct.

+1

Gracias por atornillar mi cabeza en línea recta. Muy útil. –

+2

It * is * best usar el tipo 'str' para cadenas en Python 3.x. – dan04

+1

@dan: buen punto. –

15

he aprendido todo lo que sé sobre Python de la documentación oficial: http://docs.python.org/

y es gratis.

+1

Sí, yo también, vaya al tutorial. Como Python es bastante simple, aprenderás el idioma en uno o dos días: http://docs.python.org/tutorial/index.html – Eike

9

dive into python es un buen lugar para comenzar

fuego hasta un intérprete, IPython es incluso mejor que el intérprete de Python llanura

uso dir() y ayuda() para hurgar

y don No olvides leer el official docs al menos una vez

+0

Vine de PHP y encontré el buceo en python como un gran recurso. Muy fácil de seguir y entender – Jayrox

+0

+1 por mencionar 'Inmersión en Python'. –

1

diveintopython, documentos oficiales, "pitón de aprendizaje" de Mark Lutz (4ª edición) es uno de los mejores libros.

1

Si tiene experiencia en programación, Python es bastante sencillo de recuperar. La tarea más onerosa es aprender las bibliotecas y modismos. La documentación en python.org es bastante buena y gratuita. Si está haciendo números crujientes, seguramente querrá familiarizarse con la extensión numpy.

1

Como alguien que ha trabajado con Java durante más de 12 años, descubrí que encontrar un problema y resolverlo en un nuevo idioma es la mejor manera de aprender. No creo en la lectura; desperdicia una gran cantidad de tiempo y puedes terminar leyendo por mucho tiempo.

Mi consejo es que encuentres un problema y te pones a resolverlo con Python. Aprenderás mucho en el proceso.

Buena suerte

Cuestiones relacionadas