Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/trekhleb/learn-python
📚 Playground and cheatsheet for learning Python. Collection of Python scripts that are split by topics and contain code examples with explanations.
https://github.com/trekhleb/learn-python
learning learning-by-doing learning-python programming-language python python3
Last synced: 19 days ago
JSON representation
📚 Playground and cheatsheet for learning Python. Collection of Python scripts that are split by topics and contain code examples with explanations.
- Host: GitHub
- URL: https://github.com/trekhleb/learn-python
- Owner: trekhleb
- License: mit
- Created: 2018-08-29T15:20:05.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-08-06T12:42:59.000Z (3 months ago)
- Last Synced: 2024-10-15T04:41:11.213Z (about 1 month ago)
- Topics: learning, learning-by-doing, learning-python, programming-language, python, python3
- Language: Python
- Homepage:
- Size: 126 KB
- Stars: 16,302
- Watchers: 739
- Forks: 2,666
- Open Issues: 23
-
Metadata Files:
- Readme: README.es-ES.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- fucking-awesome-awesomeness - by @trekhleb
- fucking-lists - learn-python
- awesomelist - learn-python
- awesome-by-example - Learn Python: 📚 Playground and cheatsheet for learning Python
- collection - learn-python
- lists - learn-python
- awesome-awesomeness - by @trekhleb
- made-in-ukraine - Playground and Cheatsheet for Learning Python
- StarryDivineSky - trekhleb/learn-python
- awesome-starz - trekhleb/learn-python - 📚 Playground and cheatsheet for learning Python. Collection of Python scripts that are split by topics and contain code examples with explanations. (Python)
README
# Playground y Cheatsheet para aprender Python
[![Build Status](https://travis-ci.org/trekhleb/learn-python.svg?branch=master)](https://travis-ci.org/trekhleb/learn-python)
> Esta es una colección de scripts de Python divididos en [categorías](#contenido) que contienen
ejemplos de código con sus explicaciones, diferentes usos y links a recursos adicionales.> _Lee esto en:_ [_Inglés_](README.md), [_Portugués_](README.pt-BR.md), _Traditional Chinese_](README.zh-TW.md).
Es un **playground** ya que puedes cambiar o añadir cosas al código para ver
cómo funciona y [probarlo](#probando-el-código) usando aserciones. También puedes
[revisar el código](#revisando-el-código) que has escrito y averiguar si está acorde con
la guía de estilos de Python. Todo esto, en conjunto, puede hacer que tu proceso de aprendizaje
sea más interactivo y puede ayudarte a mantener la calidad del código muy alta desde el principio.Es un **cheatsheet** porque puedes regresar y revisar los ejemplos de código para
fortalecer tus conocimientos sobre las [sentencias y contrucciones estándar de Python](#contenido).
Además, ya que el código tiene muchas aserciones, podrás ver el resultado de las funciones/sentencias en el mismo
código sin la necesidad de ejecutarlos.> _También puede interesarte 🤖 [Interactive Machine Learning Experiments](https://github.com/trekhleb/machine-learning-experiments)_
## Cómo usar este repositorio
Cada script de Python en este repositorio sigue la estructura:
```python
"""Lists <--- Nombre del tema# @see: https://www.learnpython.org/en/Lists <-- Link a recurso adicional
Aquí puede haber una explicación detallada del tema en concreto (ej: información general sobre listas).
"""def test_list_type():
"""Explicación del sub-tema.
Cada archivo contiene funciones de prueba que muestran sub-temas (ej: tipos de listas, métodos en listas).
"""
# Este es un ejemplo de cómo construir una lista. <-- Estos comentarios explican el procedimiento
squares = [1, 4, 9, 16, 25]
# Las listas pueden ser indexadas y cortadas.
# Al indexar devuelve el item.
assert squares[0] == 1 # <-- Estas aserciones muestran el resultado.
# Al cortar devuelve una nueva lista.
assert squares[-3:] == [9, 16, 25] # <-- Estas aserciones muestran el resultado.
```Normalmente, querrás hacer lo siguiente:
- [Encontrar el tema](#contenido) que quieres aprender o revisar.
- Leer los comentarios y/o la documentación que está escrita en cada docstring del script (toma como ejemplo el script de arriba).
- Ver los ejemplos de código y las aserciones para conocer diferentes maneras de usar el código y entender el resultado previsto.
- Cambiar el código o añadir nuevas aserciones para ver cómo funcionan las cosas.
- [Probar](#probando-el-código) y [revisar](#revisando-el-código) el código para ver si funciona y si está escrito
correctamente.## Contenido
1. **Empezando**
- [¿Qué es Python?](src/getting_started/what_is_python.md)
- [Sintaxis de Python](src/getting_started/python_syntax.md)
- [Variables](src/getting_started/test_variables.py)
2. **Operadores**
- [Operadores aritméticos](src/operators/test_arithmetic.py) (`+`, `-`, `*`, `/`, `//`, `%`, `**`)
- [Operadores Bitwise](src/operators/test_bitwise.py) (`&`, `|`, `^`, `>>`, `<<`, `~`)
- [Operadores de atribución](src/operators/test_assigment.py) (`=`, `+=`, `-=`, `/=`, `//=` etc.)
- [Operadores de comparación](src/operators/test_comparison.py) (`==`, `!=`, `>`, `<`, `>=`, `<=`)
- [Operadores lógicos](src/operators/test_logical.py) (`and`, `or`, `not`)
- [Operadores de identidad](src/operators/test_identity.py) (`is`, `is not`)
- [Operadores de asociación](src/operators/test_membership.py) (`in`, `not in`)
3. **Tipos de datos**
- [Números](src/data_types/test_numbers.py) (incluyendo booleans)
- [Strings](src/data_types/test_strings.py) y sus métodos
- [Listas](src/data_types/test_lists.py) y sus métodos (incluyendo comprensión de listas)
- [Tuples](src/data_types/test_tuples.py)
- [Sets](src/data_types/test_sets.py) y sus métodos
- [Diccionarios](src/data_types/test_dictionaries.py)
- [Tipo de casting](src/data_types/test_type_casting.py)
4. **Control de flujo**
- [La sentencia `if`](src/control_flow/test_if.py)
- [La sentencia `for`](src/control_flow/test_for.py) (y la función `range()`)
- [La sentencia `while`](src/control_flow/test_while.py)
- [La sentencia `try`](src/control_flow/test_try.py)
- [La sentencia `break`](src/control_flow/test_break.py)
- [La sentencia `continue`](src/control_flow/test_continue.py)
5. **Funciones**
- [Definición de función](src/functions/test_function_definition.py) (sentencias `def` y `return`)
- [Ámbito de variables dentro de funciones](src/functions/test_function_scopes.py) (sentencias `global` y `nonlocal`)
- [Valores de argumento predeterminados](src/functions/test_function_default_arguments.py)
- [Argumentos de palabras clave](src/functions/test_function_keyword_arguments.py)
- [Listas de argumento arbitrario](src/functions/test_function_arbitrary_arguments.py)
- [Listas de argumentos en funciones](src/functions/test_function_unpacking_arguments.py) (sentencias `*` y `**`)
- [Expresiones Lambda](src/functions/test_lambda_expressions.py) (sentencia `lambda`)
- [Strings de documentación](src/functions/test_function_documentation_string.py)
- [Anotaciones en funciones](src/functions/test_function_annotations.py)
- [Decoradores de funciones](src/functions/test_function_decorators.py)
6. **Clases**
- [Definición de clase](src/classes/test_class_definition.py) (sentencia `class`)
- [Objetos de clase](src/classes/test_class_objects.py)
- [Objetos de instancia](src/classes/test_instance_objects.py)
- [Métodos de objetos](src/classes/test_method_objects.py)
- [Variables de clase y de instancia](src/classes/test_class_and_instance_variables.py)
- [Herencia](src/classes/test_inheritance.py)
- [Herencia múltiple](src/classes/test_multiple_inheritance.py)
7. **Módulos**
- [Módulos](src/modules/test_modules.py) (sentencia `import`)
- [Paquetes](src/modules/test_packages.py)
8. **Errores y excepciones**
- [Controlando excepciones](src/exceptions/test_handle_exceptions.py) (sentencia `try`)
- [Generando excepciones](src/exceptions/test_raise_exceptions.py) (sentencia `raise`)
9. **Archivos**
- [Leyendo y escribiendo](src/files/test_file_reading.py) (sentencia `with`)
- [Métodos de objetos de archivo](src/files/test_file_methods.py)
10. **Adicionales**
- [La sentencia `pass`](src/additions/test_pass.py)
- [Generadores](src/additions/test_generators.py) (sentencia `yield`)
11. **Pequeño tour de las librerías estándar**
- [Serialización](src/standard_libraries/test_json.py) (librería `json`)
- [Parámetros en archivos](src/standard_libraries/test_glob.py) (librería `glob`)
- [Expresiones regulares](src/standard_libraries/test_re.py) (librearía `re`)
- [Matemática](src/standard_libraries/test_math.py) (librerías `math`, `random` y `statistics`)
- [Fechas y horas](src/standard_libraries/test_datetime.py) (librería `datetime`)
- [Compresión de datos](src/standard_libraries/test_zlib.py) (librearía `zlib`)## Pre-requisitos
**Instalando Python**
Asegúrate de que tienes [Python3 instalado](https://realpython.com/installing-python/) en tu sistema.
Podrías utilizar la librería estándar [venv](https://docs.python.org/es/3/library/venv.html) para crear
entornos virtuales y tener Python, pip y todos los paquetes instalados en el directorio de tu
proyecto local para evitar cometer errores con paquetes del sistema y sus versiones.Dependiendo de la instalación, tendrás acceso a Python3 ejecutando `python` o `python3`. Lo mismo
aplica para el administrador de paquetes pip - puedes tener acceso a él ejecutando `pip` o `pip3`.Puedes ver tu versión actual de Python ejecutando:
```bash
python --version
```Ten en cuenta que cuando leas `python` en este repositorio, se asume que es Python **3**.
**Instalando dependencias**
Instala todas las depencias requeridas para el proyecto ejecutando:
```bash
pip install -r requirements.txt
```## Probando el código
Las pruebas son hechas usando el framework [pytest](https://docs.pytest.org/en/latest/).
Puedes añadir más pruebas por ti mismo añadiendo archivos y funciones con el prefijo `test_`
(ej: `test_topic.py` con la función `def test_sub_topic()` adentro).Para ejecutar todas las pruebas, por favor escribe el siguiente comando desde el directorio
raíz del proyecto:```bash
pytest
```Para ejecutar diferentes pruebas escribe:
```bash
pytest ./path/to/the/test_file.py
```## Revisando el código
La revisión del código está hecha usando las librerías [pylint](http://pylint.pycqa.org/) y [flake8](http://flake8.pycqa.org/en/latest/).
### PyLint
Para revisar si el código sigue la guía de estilos
[PEP 8](https://www.python.org/dev/peps/pep-0008/), por favor ejecuta:```bash
pylint ./src/
```En caso de que linter detecte un error (ej: `missing-docstring`), te recomiendo leer más sobre
el error concreto ejecutando:```bash
pylint --help-msg=missing-docstring
```[Más sobre PyLint](http://pylint.pycqa.org/)
### Flake8
Para revisar si el código sigue la guía de estilos
[PEP 8](https://www.python.org/dev/peps/pep-0008/), por favor ejecuta:```bash
flake8 ./src
```O, si quieres ver un output más detallado, ejecuta:
```bash
flake8 ./src --statistics --show-source --count
```[Más sobre Flake8](http://flake8.pycqa.org/en/latest/)
## Apoya al proyecto
Puedes apoyar al proyecto a través de ❤️️ [GitHub](https://github.com/sponsors/trekhleb) o ❤️️ [Patreon](https://www.patreon.com/trekhleb).