This is a "tutorial" in a cheatsheet style for programmers who want to learn Python. Programming basics such as data types, control flow, object-oriented programming are assumed.
In recent years there has been a trend to incorporate different programming languages to solve different problems, this practice was usually referred to as Polyglot Programming. Python in particular has been the de facto language for Artificial Intelligence Applications (AI/ML/DP) for several years, with presence in other fields like QA automation, Back-End Web Development, Robotic Process Automation, Command Line Interface development and Infrastructure. Therefore, many programmers coming from different backgrounds are and will be learning Python.
However, Python has some distinct aspects that set it apart from most languages, most notably it is indentation-based and it is interpreted. Not only that but it also encourages a way to structure the code that differs substantially from traditional .Net or Java styles.
This tutorial aims to show what idiomatic Python looks like, the syntax can be learned fairly quickly, but Programming Python "á la Java/.Net/Javascript" should be avoided.
Some examples:
- Java and C# use classes explicitly and extensively, but in Python, many things are built so that the consumer of the code may not know that it is using custom classes. Iterators, Context Managers, and Decorators are examples of these patterns.
- Many design patterns are way simpler in Python due to the feature that it has, such as first-class functions and first-class Types. No need to have many classes with a single method if you can pass a user-defined function as a parameter (Strategy Pattern).
- Python has no private/internal members for classes, and most members can be treated as C# Properties, so getters and setters are rarely used.
- Python natively incorporates elements from functional programming without going to Javascript extremes (callback hell). Mixing it with Object Oriented Patterns.
- Python types are not enforced but only used by the IDE as suggestions to throw warnings.
- Many more, but you can notice them by reading the different chapters.
This tutorial is divided into chapters, each chapter consists of a file detailing syntax and examples as well as how the outputs should look like.
All the chapters are runnable Python files when code that would throws errors appears, it is always commented out.
The chapters can be read as a cookbook as there are no cross-references but the more complex topics assume previous chapter content was understood.
The following is a summary of each chapter.
This optional chapter shows IDE configuration, themes, fonts, and extensions useful for Python developers.
Topics covered:
- Arithmetic
- Logic
- Comparison Operators
- Strings
- Object None
- Non-boolean Values interpreted as Booleans
- Numeric base conversions
- String conversions to Unicode
- Bitwise Operations
Topics to add:
Topics covered:
- Lists
- Tuples, immutable collections
- Unpacking
- Dictionaries - Key-Value Collections
- Sets | Collections without duplicates
- Frozensets | Sets but immutable
- Recursive Collections
Topics covered:
- IF | Decision block
- For Loops
- While Loops
- Exceptions | Try Except Else Finally
Topics covered:
- Basic Function Definitions
- Arbitrary parameters
- Higher-order functions
- Closures
- Partial Evaluation
- Common higher-order functions (map, filter reduce)
- Comprehensions
Topics to add:
- Ellipsis Object
- Dictionary and Set Comprehensions
- Functools
Topics covered:
- Classes
- Initializer and Instance Methods
- Class Variables and Methods
- Static methods
- Dataclasses
- Operator Overloading
- Instances as Functions (
__call__
) - Properties and Deep Copy
- Inheritance
- Constructor (
__new__
) - Abstract Classes and Methods
- Interfaces (Protocols)
- Method Overloading
- Mixins (Multiple Inheritance)
- Descriptors
Topics to add:
Topics covered:
- Import Structure
- Relative Imports
- Programmatic Imports
- Import Reloading
Topics covered:
- Additional Types
- NamedTuple and namedtuple
- Counter
- Defaultdict
- Enum
- SimpleNameSpace
- Generators
- Iterators
- Semi-coroutines (Generators with send)
- Corrutinas (AsyncIO)
- Decorators
- Stateless decorators
- Stateful Decorators
- Context Managers
- Standard Library Pearls - Pathlib
- Standard Library Pearls - Itertools
- Standard Library Pearls - OS
- Standard Library Pearls - Serialization
- Standard Library Pearls - Emails
Topics to add:
This is a special no-code chapter that consists of an infography showing which are the most popular libraries depending on the field. Raging from Web Development to Data Science and QA Automation.
The image is high resolution to comfortably zooming in.
Topics to add:
- Caveats of dealing with floats (WIP)
- Type Theory (Bounds, Covariant, Contravariant, Unions)
- Metaprogramming and self-modifying code
- MultiParadigm Programming
Contact and feedback are much appreciated, please feel free to reach out through LinkedIn or by submitting a GitHub issue.
This Tutorial style was inspired by https://learnxinyminutes.com/docs/python/