Beginner’s Python

The GeoWATCH software is primarilly implemented in Python. To understand the codebase it will help to be familiar with Python basics. This document provides a list of commonly used concepts and links to documentation.

Python datastructures like lists, sets, and dictionaries: https://docs.python.org/3/tutorial/datastructures.html and the time complexity of their associated operations: https://wiki.python.org/moin/TimeComplexity

Parameter unpacking with *args and **kwargs: https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters

List comprehensions

An understanding of the terms:

* expression
* assignment
* function
* property
* attribute
* dunder
* comprehension
* generator
* iterator
* callable
* iterable
* dictionary
* list
* module
* class
* method
* instance
* type
* namespace

Python Keywords

Official docs are here: https://docs.python.org/3/reference/lexical_analysis.html#keywords It is imporant to be familiar with most of Python’s keywords.

The majority of Python keywords are commonly used. It is imporatnt to understand

# Values
False None True

# Definitions
class def

# Errors
try except finally raise

# Conditions
if elif else

# Contextual
with

# Imports
import from as

# Operators
in is not or and

# Loops
for while continue break

# Imperative
assert return yield

Less common keywords that you should be aware of:

# Async
async await

# Definitions
lambda

# Scoping
nonlocal global

# Imperative
del pass

Dunder Methods

Duner refers to names that start with two (double) underscores: e.g. In conversation it is easier to say “duner init” instead of __init__.

Duner methods are part of Python’s data model, which has many features: https://docs.python.org/3/reference/datamodel.html but a subset of those are commonly used and you should be familar with the following dunder methods you can overload on a class:

* __init__
* __str__, * __repr__
* __len__
* __dir__
* __call__
* __iter__
* __contains__
* __getitem__, __setitem__
* __getattr__, __setattr__
* __add__, __sub__, __mul__, __truediv__
* __and__, __or__, __xor__
* __enter__, __exit__

You should also be aware of duner attributes like:

* __dict__
* __class__
* __name__
* __file__
* __path__

Standard Library Modules

Knowledge of the special duner methods:

The stdlib modules:

argparse, itertools, functools, datetime, copy, collections, math, decimal,
fractions, importlib, json, pathlib, pickle, platform, stat, re, random,
shutil, textwrap, warnings

Pypi Modules

Third party modules:

numpy, scipy, torch, pandas, ubelt, xdoctest
matplotlib, seaborn,
shapely, rich, networkx,
pytorch_lightning

Builtins

# Debug breakpoint,

# Async aiter, anext,

# Bytes bytearray, bytes,

# Strings format, hash, ascii, bin, hex, oct, ord, chr, str, repr,

# Interpreter compile, eval, exec,

# Introspection type, dir, isinstance, issubclass, callable, vars, globals, locals, id, len,

# Attributes delattr, getattr, hasattr, setattr,

# Math abs, sum, pow, divmod, round, max, min, sorted, all, any,

# Constants False, True, None, Ellipsis, NotImplemented,

# Low Level memoryview,

# Numeric Structures bool, int, complex, float,

# IO Functions input, print, open,

# Data Structures tuple, dict, set, list, frozenset,

# Iterators iter, reversed, range, enumerate, filter, map, zip, next,

# Object Oriented property, object, super, staticmethod, classmethod,

# Imperative slice,

# Common Exceptions Exception, KeyboardInterrupt, AssertionError, AttributeError, MemoryError, ImportError, NameError, TypeError, ValueError, IndexError, IOError, KeyError, NotImplementedError,

# Uncommon Exceptions BaseException, BaseExceptionGroup, GeneratorExit, SystemExit, ArithmeticError, BufferError, EOFError, LookupError, OSError, ReferenceError, RuntimeError, StopAsyncIteration, StopIteration, SyntaxError, SystemError, Warning, FloatingPointError, OverflowError, ZeroDivisionError, BytesWarning, DeprecationWarning, EncodingWarning, FutureWarning, ImportWarning, PendingDeprecationWarning, ResourceWarning, RuntimeWarning, SyntaxWarning, UnicodeWarning, UserWarning, BlockingIOError, ChildProcessError, ConnectionError, FileExistsError, FileNotFoundError, InterruptedError, IsADirectoryError, NotADirectoryError, PermissionError, ProcessLookupError, TimeoutError, IndentationError, ModuleNotFoundError, RecursionError, UnboundLocalError, UnicodeError, BrokenPipeError, ConnectionAbortedError, ConnectionRefusedError, ConnectionResetError, TabError, UnicodeDecodeError, UnicodeEncodeError, UnicodeTranslateError, ExceptionGroup, EnvironmentError,

# Misc quit, exit, copyright, credits, license, help,

# Dunder __name__, __doc__, __package__, __loader__, __spec__, __build_class__, __import__, __debug__,

Advanced Terms

Terms you may want to learn more about after getting the basics are:

* metaclass
* coroutine
* duck-typing
* docstring
* GIL
* hashable
* mapping
* immutable
* method resolution order
* virtual environment
* type annotation
* PEP

The official glossary is: https://docs.python.org/3/glossary.html