Al igual que tú, me mudé de C # a Python. El cambio no es muy difícil, dado que Python se enfoca mucho en asegurarse de que el código sea lo más accesible posible. El cambio más grande para mí fue pasar de Windows a Linux. Linux tiene una gran carga terminal, mientras que el desarrollo de Windows tiene mucha IU.
Sin embargo, la buena noticia es que las personas que comienzan a programar desde cero tienen mucho éxito con Python. Esto significa que los programadores experimentados pueden recogerlo con bastante facilidad.
Aquí hay una lista de diferencias que he encontrado:
- Tuplas, diccionarios, matrices, conjuntos : Python se centra mucho en utilizar la estructura más útil de inmediato. Como resultado, tiene un fuerte énfasis en el azúcar sintáctico alrededor de las estructuras de datos de uso común. Veo tuplas y diccionarios en casi todas partes. En C # también tenemos estos, pero no tenemos la sintaxis breve para ellos como lo hace Python, por lo que no se usan con tanta frecuencia. Python hace un muy buen trabajo al hacer que estas estructuras sean muy fáciles de usar.
- Sin decoraciones de tipo explícitas : la última versión de Python tiene lo que llaman sugerencias de tipo. Sin embargo, es probable que use una de las versiones más vainillas de Python. 2.7 y 3.3 siguen siendo versiones muy populares. Lo que notará es que Python no tiene una escritura explícita. En cualquier sitio. No hay forma de definir el tipo de una variable que no sea asignarle un valor (las variables son el tipo del valor que se les asigna). Esto no significa que Python no tenga un sistema de tipos; Mucho de esto está simplemente escondido debajo del capó.
- El alcance comienza en el nivel del módulo : en C #, tiene espacios de nombres, clases, métodos. Estos son los bloques que definen el alcance y existen limitaciones en cada uno. Python, por otro lado, le permite definir la lógica donde la necesite. Puede anidar clases, definir clases dentro de funciones, definir funciones dentro de funciones, etc. Existen limitaciones en algunos casos, como las clases, pero son mucho menos estrictas. Comienza en el nivel del módulo, lo que significa que el código se ejecuta en la importación del módulo si no está encapsulado en nada.
- Gran énfasis en las comprensiones de listas y dictados : Python pone gran énfasis en el azúcar sintáctico para simplificar las operaciones de listas y diccionarios. Reconocerá esto como similar a LINQ. Si bien no estoy totalmente de acuerdo con que sea tan robusto como LINQ (aquí hay un punto de vista opuesto), le recomiendo que lo use siempre que trabaje con listas y diccionarios (a menos que la lógica no se pueda hacer con la comprensión de listas / dict) .
- Los archivos Py pueden ejecutarse individualmente : dado que el código puede ejecutarse en el nivel del módulo, puede ejecutar cualquier archivo Python individualmente. Es común ver a un guardia principal al final del archivo. Python técnicamente no tiene una función “principal”. En cambio, tienen un guardia principal, y se puede definir en cualquier archivo.
- La encapsulación es realmente pública : le recomiendo que recoja una copia de Effective Python de Brett Slatkin. En el libro, Brett señala que Python en realidad no tiene miembros de clase privada. Incluso con guiones bajos dobles, el intérprete simplemente cambia el nombre del campo de una manera inteligente para “ocultarlo”. Esto significa que puede diseñar al revés la denominación para “no ser privado” de algo. Este patrón de “nada debe ser privado” se enfatiza mucho en Python. Si bien el truco del doble bajo puntaje no es completamente infrecuente, no se recomienda. Cuando trabaje con Python, suponga que nada es privado , así que diseñe en torno a todo lo que sea público.
- Los decoradores son extremadamente potentes : las personas detrás de Python aprovecharon al máximo la naturaleza de tipo dinámico del lenguaje. Este tipo de naturaleza hace que sea muy fácil ajustar e intercambiar una función, clase o método durante el tiempo de ejecución. Los decoradores son muy potentes y, como resultado, existen tanto para clases como para funciones. Funcionan realmente bien para limpiar el código repetitivo, es una forma muy compacta y limpia.
- Python está fracturado en 2.xy 3.x : la división ocurrió originalmente porque Python 2.x no tenía suficiente soporte para Unicode. Definitivamente puedes hacer unicode en 2.x, pero no es sencillo. Como resultado, nació 3.x y también abordó algunos de los problemas de idioma en 2.x. Desde entonces, la comunidad ha sido muy lenta para actualizar a 3.x. Las dos versiones no son totalmente compatibles, aunque si se adhiere a una sintaxis común y usa las seis bibliotecas, puede ser compatible con ambas versiones. Espere ver proyectos importantes que admitan 2.7 + 3.xo simplemente 2.7.
¡Espero que esto ayude!
- ¿Soy el único que ve que Quora está censurada?
- Amo mucho a mi novia, los dos estamos tan enamorados, ¿tengo problemas para expresarle mi amor o mi amor (LDR)? ¿Qué tengo que hacer?
- Mi novia y yo hemos estado en una relación feliz y contenta durante 2 años. En este tiempo, nunca hemos tenido una pelea. ¿Esto es normal?
- Pronto cumpliré 22 años (en septiembre) y realmente no tengo un sueño o metas en la vida. Hasta ahora he logrado casi nada. ¿Qué debo hacer para motivarme?
- Quiero seguir una carrera en diseño de videojuegos o campos relacionados con eso. ¿Es este un buen campo?