{"id":13459866,"url":"https://github.com/trekhleb/learn-python","last_synced_at":"2025-10-03T23:17:28.993Z","repository":{"id":37247476,"uuid":"146619556","full_name":"trekhleb/learn-python","owner":"trekhleb","description":"📚 Playground and cheatsheet for learning Python. Collection of Python scripts that are split by topics and contain code examples with explanations.","archived":false,"fork":false,"pushed_at":"2024-08-06T12:42:59.000Z","size":129,"stargazers_count":16905,"open_issues_count":33,"forks_count":2778,"subscribers_count":735,"default_branch":"master","last_synced_at":"2025-05-20T18:10:04.596Z","etag":null,"topics":["learning","learning-by-doing","learning-python","programming-language","python","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trekhleb.png","metadata":{"files":{"readme":"README.es-ES.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"trekhleb","patreon":"trekhleb"}},"created_at":"2018-08-29T15:20:05.000Z","updated_at":"2025-05-20T08:29:36.000Z","dependencies_parsed_at":"2022-08-08T19:30:52.461Z","dependency_job_id":"68f801ab-1d5a-4fde-b20b-8d9b5648f830","html_url":"https://github.com/trekhleb/learn-python","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trekhleb/learn-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Flearn-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Flearn-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Flearn-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Flearn-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trekhleb","download_url":"https://codeload.github.com/trekhleb/learn-python/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trekhleb%2Flearn-python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278240232,"owners_count":25954148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-03T02:00:06.070Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["learning","learning-by-doing","learning-python","programming-language","python","python3"],"created_at":"2024-07-31T10:00:31.323Z","updated_at":"2025-10-03T23:17:28.961Z","avatar_url":"https://github.com/trekhleb.png","language":"Python","readme":"# Playground y Cheatsheet para aprender Python\n\n[![Build Status](https://travis-ci.org/trekhleb/learn-python.svg?branch=master)](https://travis-ci.org/trekhleb/learn-python)\n\n\u003e Esta es una colección de scripts de Python divididos en [categorías](#contenido) que contienen\nejemplos de código con sus explicaciones, diferentes usos y links a recursos adicionales.\n\n\u003e _Lee esto en:_ [_Inglés_](README.md), [_Portugués_](README.pt-BR.md), _Traditional Chinese_](README.zh-TW.md).\n\nEs un **playground** ya que puedes cambiar o añadir cosas al código para ver\ncómo funciona y [probarlo](#probando-el-código) usando aserciones. También puedes\n[revisar el código](#revisando-el-código) que has escrito y averiguar si está acorde con\nla guía de estilos de Python. Todo esto, en conjunto, puede hacer que tu proceso de aprendizaje\nsea más interactivo y puede ayudarte a mantener la calidad del código muy alta desde el principio.\n\nEs un **cheatsheet** porque puedes regresar y revisar los ejemplos de código para\nfortalecer tus conocimientos sobre las [sentencias y contrucciones estándar de Python](#contenido).\nAdemás, ya que el código tiene muchas aserciones, podrás ver el resultado de las funciones/sentencias en el mismo\ncódigo sin la necesidad de ejecutarlos.\n\n\u003e _También puede interesarte 🤖 [Interactive Machine Learning Experiments](https://github.com/trekhleb/machine-learning-experiments)_\n\n## Cómo usar este repositorio\n\nCada script de Python en este repositorio sigue la estructura:\n\n```python\n\"\"\"Lists  \u003c--- Nombre del tema\n\n# @see: https://www.learnpython.org/en/Lists  \u003c-- Link a recurso adicional\n\nAquí puede haber una explicación detallada del tema en concreto (ej: información general sobre listas).\n\"\"\"\n\n\ndef test_list_type():\n    \"\"\"Explicación del sub-tema.\n    \n    Cada archivo contiene funciones de prueba que muestran sub-temas (ej: tipos de listas, métodos en listas).\n    \"\"\"\n    \n    # Este es un ejemplo de cómo construir una lista. \u003c-- Estos comentarios explican el procedimiento\n    squares = [1, 4, 9, 16, 25]\n    \n    # Las listas pueden ser indexadas y cortadas. \n    # Al indexar devuelve el item.\n    assert squares[0] == 1  # \u003c-- Estas aserciones muestran el resultado.\n    # Al cortar devuelve una nueva lista.\n    assert squares[-3:] == [9, 16, 25]  # \u003c-- Estas aserciones muestran el resultado.\n```\n\nNormalmente, querrás hacer lo siguiente:\n\n- [Encontrar el tema](#contenido) que quieres aprender o revisar.\n- Leer los comentarios y/o la documentación que está escrita en cada docstring del script (toma como ejemplo el script de arriba).\n- Ver los ejemplos de código y las aserciones para conocer diferentes maneras de usar el código y entender el resultado previsto.\n- Cambiar el código o añadir nuevas aserciones para ver cómo funcionan las cosas.\n- [Probar](#probando-el-código) y [revisar](#revisando-el-código) el código para ver si funciona y si está escrito\ncorrectamente.\n\n## Contenido\n\n1. **Empezando**\n    - [¿Qué es Python?](src/getting_started/what_is_python.md)\n    - [Sintaxis de Python](src/getting_started/python_syntax.md)\n    - [Variables](src/getting_started/test_variables.py)\n2. **Operadores**\n    - [Operadores aritméticos](src/operators/test_arithmetic.py) (`+`, `-`, `*`, `/`, `//`, `%`, `**`)\n    - [Operadores Bitwise](src/operators/test_bitwise.py) (`\u0026`, `|`, `^`, `\u003e\u003e`, `\u003c\u003c`, `~`)\n    - [Operadores de atribución](src/operators/test_assigment.py) (`=`, `+=`, `-=`, `/=`, `//=` etc.)\n    - [Operadores de comparación](src/operators/test_comparison.py) (`==`, `!=`, `\u003e`, `\u003c`, `\u003e=`, `\u003c=`)\n    - [Operadores lógicos](src/operators/test_logical.py) (`and`, `or`, `not`)\n    - [Operadores de identidad](src/operators/test_identity.py) (`is`, `is not`)\n    - [Operadores de asociación](src/operators/test_membership.py) (`in`, `not in`)\n3. **Tipos de datos**\n    - [Números](src/data_types/test_numbers.py) (incluyendo booleans)\n    - [Strings](src/data_types/test_strings.py) y sus métodos\n    - [Listas](src/data_types/test_lists.py) y sus métodos (incluyendo comprensión de listas)\n    - [Tuples](src/data_types/test_tuples.py)\n    - [Sets](src/data_types/test_sets.py) y sus métodos\n    - [Diccionarios](src/data_types/test_dictionaries.py)\n    - [Tipo de casting](src/data_types/test_type_casting.py)\n4. **Control de flujo**\n    - [La sentencia `if`](src/control_flow/test_if.py)\n    - [La sentencia `for`](src/control_flow/test_for.py) (y la función `range()`)\n    - [La sentencia `while`](src/control_flow/test_while.py)\n    - [La sentencia `try`](src/control_flow/test_try.py)\n    - [La sentencia `break`](src/control_flow/test_break.py)\n    - [La sentencia `continue`](src/control_flow/test_continue.py)\n5. **Funciones**\n    - [Definición de función](src/functions/test_function_definition.py) (sentencias `def` y `return`)\n    - [Ámbito de variables dentro de funciones](src/functions/test_function_scopes.py) (sentencias `global` y `nonlocal`)\n    - [Valores de argumento predeterminados](src/functions/test_function_default_arguments.py)\n    - [Argumentos de palabras clave](src/functions/test_function_keyword_arguments.py)\n    - [Listas de argumento arbitrario](src/functions/test_function_arbitrary_arguments.py)\n    - [Listas de argumentos en funciones](src/functions/test_function_unpacking_arguments.py) (sentencias `*` y `**`)\n    - [Expresiones Lambda](src/functions/test_lambda_expressions.py) (sentencia `lambda`)\n    - [Strings de documentación](src/functions/test_function_documentation_string.py)\n    - [Anotaciones en funciones](src/functions/test_function_annotations.py)\n    - [Decoradores de funciones](src/functions/test_function_decorators.py)\n6. **Clases**\n    - [Definición de clase](src/classes/test_class_definition.py) (sentencia `class`)\n    - [Objetos de clase](src/classes/test_class_objects.py)\n    - [Objetos de instancia](src/classes/test_instance_objects.py)\n    - [Métodos de objetos](src/classes/test_method_objects.py)\n    - [Variables de clase y de instancia](src/classes/test_class_and_instance_variables.py)\n    - [Herencia](src/classes/test_inheritance.py)\n    - [Herencia múltiple](src/classes/test_multiple_inheritance.py)\n7. **Módulos**\n    - [Módulos](src/modules/test_modules.py) (sentencia `import`)\n    - [Paquetes](src/modules/test_packages.py)\n8. **Errores y excepciones**\n    - [Controlando excepciones](src/exceptions/test_handle_exceptions.py) (sentencia `try`)\n    - [Generando excepciones](src/exceptions/test_raise_exceptions.py) (sentencia `raise`) \n9. **Archivos**\n    - [Leyendo y escribiendo](src/files/test_file_reading.py) (sentencia `with`)\n    - [Métodos de objetos de archivo](src/files/test_file_methods.py)\n10. **Adicionales**\n    - [La sentencia `pass`](src/additions/test_pass.py)\n    - [Generadores](src/additions/test_generators.py) (sentencia `yield`)\n11. **Pequeño tour de las librerías estándar**\n    - [Serialización](src/standard_libraries/test_json.py) (librería `json`)\n    - [Parámetros en archivos](src/standard_libraries/test_glob.py) (librería `glob`)\n    - [Expresiones regulares](src/standard_libraries/test_re.py) (librearía `re`)\n    - [Matemática](src/standard_libraries/test_math.py) (librerías `math`, `random` y `statistics`)\n    - [Fechas y horas](src/standard_libraries/test_datetime.py) (librería `datetime`)\n    - [Compresión de datos](src/standard_libraries/test_zlib.py) (librearía `zlib`)\n\n## Pre-requisitos\n\n**Instalando Python**\n\nAsegúrate de que tienes [Python3 instalado](https://realpython.com/installing-python/) en tu sistema.\n\nPodrías utilizar la librería estándar [venv](https://docs.python.org/es/3/library/venv.html) para crear\nentornos virtuales y tener Python, pip y todos los paquetes instalados en el directorio de tu\nproyecto local para evitar cometer errores con paquetes del sistema y sus versiones.\n\nDependiendo de la instalación, tendrás acceso a Python3 ejecutando `python` o `python3`. Lo mismo\naplica para el administrador de paquetes pip - puedes tener acceso a él ejecutando `pip` o `pip3`.\n\nPuedes ver tu versión actual de Python ejecutando:\n\n```bash\npython --version\n```\n\nTen en cuenta que cuando leas `python` en este repositorio, se asume que es Python **3**.\n\n**Instalando dependencias**\n\nInstala todas las depencias requeridas para el proyecto ejecutando:\n\n```bash\npip install -r requirements.txt\n```\n\n## Probando el código\n\nLas pruebas son hechas usando el framework [pytest](https://docs.pytest.org/en/latest/).\n\nPuedes añadir más pruebas por ti mismo añadiendo archivos y funciones con el prefijo `test_`\n(ej: `test_topic.py` con la función `def test_sub_topic()` adentro).\n\nPara ejecutar todas las pruebas, por favor escribe el siguiente comando desde el directorio\nraíz del proyecto:\n\n```bash\npytest\n```\n\nPara ejecutar diferentes pruebas escribe:\n\n```bash\npytest ./path/to/the/test_file.py\n```\n\n## Revisando el código\n\nLa revisión del código está hecha usando las librerías [pylint](http://pylint.pycqa.org/) y [flake8](http://flake8.pycqa.org/en/latest/).\n\n### PyLint\n\nPara revisar si el código sigue la guía de estilos\n[PEP 8](https://www.python.org/dev/peps/pep-0008/), por favor ejecuta:\n\n```bash\npylint ./src/\n```\n\nEn caso de que linter detecte un error (ej: `missing-docstring`), te recomiendo leer más sobre\nel error concreto ejecutando:\n\n```bash\npylint --help-msg=missing-docstring\n```\n\n[Más sobre PyLint](http://pylint.pycqa.org/)\n\n### Flake8\n\nPara revisar si el código sigue la guía de estilos\n[PEP 8](https://www.python.org/dev/peps/pep-0008/), por favor ejecuta:\n\n```bash\nflake8 ./src\n```\n\nO, si quieres ver un output más detallado, ejecuta:\n\n```bash\nflake8 ./src --statistics --show-source --count\n```\n\n[Más sobre Flake8](http://flake8.pycqa.org/en/latest/)\n\n## Apoya al proyecto\n\nPuedes apoyar al proyecto a través de ❤️️ [GitHub](https://github.com/sponsors/trekhleb) o ❤️️ [Patreon](https://www.patreon.com/trekhleb).\n","funding_links":["https://github.com/sponsors/trekhleb","https://patreon.com/trekhleb","https://www.patreon.com/trekhleb"],"categories":["Python","Uncategorized","Technical","\u003e 10K ⭐️","HarmonyOS","Python 程序","😸 List of Repos","Programming languages","Languages","📋 Cheatsheets"],"sub_categories":["Uncategorized","ramanihiteshc@gmail.com","Windows Manager","网络服务_其他","Python"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrekhleb%2Flearn-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrekhleb%2Flearn-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrekhleb%2Flearn-python/lists"}