Skip to content

A collection of Jupyter notebooks covering Python concepts, software design principles, and key libraries.

License

Notifications You must be signed in to change notification settings

arkeodev/python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Notebook Repository

Introduction

This repository hosts various Jupyter notebooks dedicated to exploring and implementing Python concepts, architectures, and libraries. The goal is to provide practical, hands-on examples and explanations of key Python techniques and libraries, helping users understand and apply these concepts in their projects.

Repository Contents

Python

  • abc_vs_protocols_vs_mixins.ipynb: A notebook exploring the differences and use cases of Abstract Base Classes (ABCs), Protocols, and Mixins in Python.
  • closures.ipynb: A notebook explaining closures in Python, how they work, and their practical applications.
  • collections.ipynb: A notebook covering the collections module in Python, highlighting its specialized container datatypes.
  • decorators.ipynb: A notebook demonstrating the use of decorators in Python, including how to create and apply them.
  • functools.ipynb: A notebook detailing the functools module, which provides higher-order functions that operate on or return other functions.
  • generators.ipynb: A notebook explaining generators in Python, including how to create them and their benefits for memory-efficient iteration.
  • itertools.ipynb: A notebook exploring the itertools module, which provides functions for creating iterators for efficient looping.
  • memory_management_and_concurrency.ipynb: A notebook discussing memory management and concurrency mechanisms in Python.
  • metaclasses.ipynb: A notebook delving into metaclasses in Python and their role in customizing class creation.
  • miscellaneous.ipynb: A notebook containing a variety of Python topics and tips that don't fit into other categories.
  • regular_expressions.ipynb: A notebook providing an overview of regular expressions in Python for pattern matching and text processing.
  • unit_tests.ipynb: A notebook on unit testing in Python, demonstrating how to write and run tests to ensure code quality and correctness.

Architecture

  • cohesion-coupling.ipynb: A notebook discussing the concepts of cohesion and coupling in software design.
  • ddd.ipynb: An introduction to Domain-Driven Design (DDD) and its principles.
  • dependency_injection.ipynb: A guide on implementing dependency injection in Python.
  • hexagonal.ipynb: A notebook exploring the Hexagonal Architecture (also known as Ports and Adapters).
  • SOLID.ipynb: A detailed explanation of the SOLID principles in object-oriented design.

Coming Soon

Libraries

  • numpy.ipynb: An introduction to NumPy, a fundamental package for scientific computing in Python.
  • pandas.ipynb: A notebook on Pandas, a powerful data manipulation and analysis library.
  • pydantic.ipynb: A guide on using Pydantic for data validation and settings management using Python type annotations.
  • scikit-learn.ipynb: A comprehensive introduction to scikit-learn, a machine learning library for Python.

Design Patterns

  • Here you can see several design pattern explanations and implementations.

Getting Started

To use this repository:

  1. Clone the repository to your local machine.
  2. Ensure you have Jupyter Notebook or JupyterLab installed, or use Google Colab to open the notebooks.
  3. Navigate to the repository directory and launch the notebooks using Jupyter Notebook or JupyterLab.
  4. Follow the instructions within the notebooks to explore various Python techniques and their implementations.

Tools and Techniques

The notebooks in this repository cover a range of tools and techniques essential for Python programming, including:

  • Software Design Principles: Cohesion, Coupling, SOLID, Domain-Driven Design, Hexagonal Architecture.

Conclusion

This repository and its contents aim to provide a practical understanding of key Python concepts and libraries, helping users develop efficient, maintainable, and scalable Python applications. Through detailed explanations and hands-on demonstrations, users can gain insights into various aspects of Python programming.

References and Further Reading

Contributing

Contributions to this repository are welcome. Please read the CONTRIBUTING.md file for guidelines on how to contribute.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A collection of Jupyter notebooks covering Python concepts, software design principles, and key libraries.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published