[{"id":"8xwZ","level":1,"heading":"Python SpeedSheet \uD83D\uDC0D","content":"<h1><span class=\"note\">Python</span> SpeedSheet \uD83D\uDC0D</h1>\n<strong>Comprehensive Python language reference. Cheatsheet speed!</strong>\n\nThis is an interactive <strong>Python</strong> language reference. Covers the core Python programming language. Find answers instantly by using 'find'.\n\n\nSpeedsheet Repo: <a class=\"link\" href=\"https://github.com/speedsheet/sheet-python\">https://github.com/speedsheet/sheet-python</a>\n\n\n<div class=\"card\"><table><tr><td><span style=\"color: dodgerblue;\"><svg fill=\"currentColor\" width=\"2em\" height=\"2em\" viewBox=\"0 0 16 16\">\n\t<path d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2\"/>\n</svg></span></td><td><div class=\"block\"><span style=\"font-size: 1.5em;\"></span><strong>Speedsheet Help Tips</strong>\n\nCheck out our <a class=\"link\" href=\"python_tips\">tips page</a> for pro-level tricks to get the most out of this cheat sheet.</div></td></tr></table></div>\n\n<table><tr><td><strong>Basics</strong>\n\n<ul><li><a class=\"link\" href=\"?q=hello+world\">Hello World</a></li>\n<li><a class=\"link\" href=\"?q=fundamentals-only\">Language Fundamentals</a></li>\n<li><a class=\"link\" href=\"?q=conventions-only\">Naming Conventions</a></li></ul>\n\n<ul><li><a class=\"link\" href=\"?q=control-structure-only\">Control Structures</a></li>\n<li><a class=\"link\" href=\"?q=error-handling-only\">Error Handling</a></li>\n<li><a class=\"link\" href=\"?q=functions-only\">Functions</a></li>\n<li><a class=\"link\" href=\"?q=classes-only\">Classes</a></li>\n<li><a class=\"link\" href=\"?q=context manager\">Context Managers (with as)</a></li>\n<li><a class=\"link\" href=\"?q=decorators-only\">Decorators</a></li>\n<li><a class=\"link\" href=\"?q=iterators\">Iterators</a></li>\n<li><a class=\"link\" href=\"?q=generators\">Generators</a></li>\n<li><a class=\"link\" href=\"?q=modules-only\">Modules</a></li>\n<li><a class=\"link\" href=\"?q=operators-only\">Operators</a></li>\n<li><a class=\"link\" href=\"?q=distribution\">Packaging</a></li>\n<li><a class=\"link\" href=\"?q=regex-only\">Regular Expressions</a></li>\n<li><a class=\"link\" href=\"?q=unit+tests\">Unit Tests</a></li>\n<li><a class=\"link\" href=\"?q=type+hints\">Type Hints</a></li></ul>\n\n<strong>Control Structures</strong>\n\n<ul><li><a class=\"link\" href=\"?q=if-else-only\">If Else</a></li>\n<li><a class=\"link\" href=\"?q=ternary-only\">If / Inline</a></li>\n<li><a class=\"link\" href=\"?q=for-only#for_-_basics\">For Loop</a></li>\n<li><a class=\"link\" href=\"?q=match-only#match_-_basics\">Match</a></li>\n<li><a class=\"link\" href=\"?q=while-only#while_-_basics\">While</a></li></ul>\n\n<strong>Running Python</strong>\n\n<ul><li><a class=\"link\" href=\"?q=command-line-only\">Command Line</a></li>\n<li><a class=\"link\" href=\"?q=pip-only\">PIP / Libraries</a></li>\n<li><a class=\"link\" href=\"?q=venv-only\">Virtual Environments</a></li></ul>\n\n<strong>Files</strong>\n\n<ul><li><a class=\"link\" href=\"?q=file+io\">File IO</a></li>\n<li><a class=\"link\" href=\"?q=file-only+operations\">File Operations</a></li>\n<li><a class=\"link\" href=\"?q=directory+operations\">Directory Operations</a></li>\n<li><a class=\"link\" href=\"?q=path-only\">Path Operations</a></li></ul>\n\n<strong>Functions</strong>\n\n<ul><li><a class=\"link\" href=\"?q=encode+decode\">Encode / Decode</a></li>\n<li><a class=\"link\" href=\"?q=json-only\">JSON</a></li>\n<li><a class=\"link\" href=\"?q=math-only\">Math</a></li>\n<li><a class=\"link\" href=\"?q=random-only\">Random</a></li>\n<li><a class=\"link\" href=\"?q=sequence-functions-only\">Sequence</a></li></ul>\n\n<strong>Libraries</strong>\n\n<ul><li><a class=\"link\" href=\"?q=argparse-only\">Argparse</a></li>\n<li><a class=\"link\" href=\"?q=configparser-only\">Config Parser</a></li>\n<li><a class=\"link\" href=\"?q=csv-only\">CSV</a></li>\n<li><a class=\"link\" href=\"?q=http-only\">HTTP / Internet</a></li></ul>\n\n<strong>Parallelism</strong>\n\n<ul><li><a class=\"link\" href=\"?q=asyncio-only\">Async / Await</a></li>\n<li><a class=\"link\" href=\"?q=thread-only\">Threads</a></li>\n<li><a class=\"link\" href=\"?q=process-only\">Processes</a></li></ul>\n\n<ul><li><a class=\"link\" href=\"?q=event-only\">Events</a></li>\n<li><a class=\"link\" href=\"?q=futures-only\">Futures</a></li>\n<li><a class=\"link\" href=\"?q=lock-only\">Lock</a></li>\n<li><a class=\"link\" href=\"?q=process-pipes-only\">Pipes</a></li>\n<li><a class=\"link\" href=\"?q=process-pool-only\">Process Pools</a></li>\n<li><a class=\"link\" href=\"?q=multi-queue-only\">Queues</a></li>\n<li><a class=\"link\" href=\"?q=semaphore-only\">Semaphore</a></li>\n<li><a class=\"link\" href=\"?q=shared-value-only\">Shared Memory</a></li></ul>\n\n<strong>Reference</strong>\n\n<ul><li><a class=\"link\" href=\"?q=acronyms-only\">Acronyms</a></li>\n<li><a class=\"link\" href=\"?q=online-docs-only\">Online Docs</a></li>\n<li><a class=\"link\" href=\"?q=reserved-only\">Reserved Words</a></li>\n<li><a class=\"link\" href=\"?q=terms-only\">Terms</a></li>\n<li><a class=\"link\" href=\"?q=symbols-only\">Symbols</a></li></ul>\n\n</td><td><strong>Data Types</strong>\n\n<ul><li><a class=\"link\" href=\"?q=variables-only\">Variables</a></li>\n<li><a class=\"link\" href=\"?q=literals-only\">Literals</a></li>\n<li><a class=\"link\" href=\"?q=data-types-only\">Data Types</a></li>\n<li><a class=\"link\" href=\"?q=conversions-only\">Data Conversions</a></li></ul>\n\n<ul><li><a class=\"link\" href=\"?q=none-only\">None</a></li>\n<li><a class=\"link\" href=\"?q=boolean-only\">Boolean</a></li>\n<li><a class=\"link\" href=\"?q=byte-only\">Byte</a></li>\n<li><a class=\"link\" href=\"?q=complex-only\">Complex Numbers</a></li>\n<li><a class=\"link\" href=\"?q=decimal-only\">Decimal</a></li>\n<li><a class=\"link\" href=\"?q=float-only\">Float</a></li>\n<li><a class=\"link\" href=\"?q=integer-only\">Integer</a></li>\n<li><a class=\"link\" href=\"?q=strings-only\">String</a></li></ul>\n\n<ul><li><a class=\"link\" href=\"?q=date-only\">Date</a></li>\n<li><a class=\"link\" href=\"?q=datetime-only\">Datetime</a></li>\n<li><a class=\"link\" href=\"?q=timezone-only\">Time Zones</a></li>\n<li><a class=\"link\" href=\"?q=timedelta-only\">TimeDelta</a></li>\n<li><a class=\"link\" href=\"?q=timestamp-only\">Timestamp</a></li></ul>\n\n<ul><li><a class=\"link\" href=\"?q=enum-only\">Enum</a></li>\n<li><a class=\"link\" href=\"?q=dict-only\">Dict</a></li>\n<li><a class=\"link\" href=\"?q=list-only\">List</a></li>\n<li><a class=\"link\" href=\"?q=set-only\">Set</a></li>\n<li><a class=\"link\" href=\"?q=tuple-only\">Tuple</a></li></ul>\n\n<ul><li><a class=\"link\" href=\"?q=standard-queue-only\">Queue</a></li>\n<li><a class=\"link\" href=\"?q=deque-only\">Deque</a></li>\n<li><a class=\"link\" href=\"?q=ordered-dict-only\">Ordered Dict</a></li></ul>\n\n<strong>Sequences</strong>\n\n<ul><li><a class=\"link\" href=\"?q=sequence-only\">Sequences</a></li>\n<li><a class=\"link\" href=\"?q=slice-only#index_and_slicing_-_basics\">Slicing</a></li>\n<li><a class=\"link\" href=\"?q=destructure-only#sequence_destructuring_-_basics\">Destructuring</a></li></ul>\n\n<strong>Strings</strong>\n\n<ul><li><a class=\"link\" href=\"?q=strings-only\">Strings</a></li>\n<li><a class=\"link\" href=\"?q=f-string#f-string_-_basics\">F-Strings</a></li>\n<li><a class=\"link\" href=\"?q=string-format()-only\">Format() Strings</a></li>\n<li><a class=\"link\" href=\"?q=formatting-only\">Formatting</a></li>\n<li><a class=\"link\" href=\"?q=reverse+format#format_codes_-_reverse_lookup\">Formatting / Reverse Lookup</a></li>\n<li><a class=\"link\" href=\"?q=regex-only\">Regular Expressions</a></li></ul>\n\n<strong>Structures</strong>\n\n<ul><li><a class=\"link\" href=\"?q=dataclass-only\">Dataclass</a></li>\n<li><a class=\"link\" href=\"?q=namedtuple-only\">Named Tuple</a></li></ul>\n\n<strong>How To</strong>\n\n<ul><li><a class=\"link\" href=\"?q=how-to\">How Tos</a></li></ul>\n<ul><li><a class=\"link\" href=\"?q=execute-only\">Run Commands</a></li></ul>\n\n<ul><li><a class=\"link\" href=\"?q=input-only\">Input</a></li>\n<li><a class=\"link\" href=\"?q=print-only\">Print</a></li>\n<li><a class=\"link\" href=\"?q=formatting-only\">Formatting</a></li></ul>\n\n<ul><li><a class=\"link\" href=\"?q=sleep-only\">Sleep</a></li>\n<li><a class=\"link\" href=\"?q=timer-only\">Timers</a></li></ul>\n\n<strong>Related SpeedSheets</strong>\n\n<ul><li><a class=\"link\" href=\"aiogram\">aiogram</a></li>\n<li><a class=\"link\" href=\"aiohttp\">aiohttp</a></li>\n<li><a class=\"link\" href=\"beautifulsoup\">beatuiful soup</a></li>\n<li><a class=\"link\" href=\"jinja\">jinja</a></li>\n<li><a class=\"link\" href=\"matplotlib\">matplotlib</a></li>\n<li><a class=\"link\" href=\"numpy\">numpy</a></li>\n<li><a class=\"link\" href=\"pillow\">pillow</a></li>\n<li><a class=\"link\" href=\"poetry\">poetry</a></li>\n<li><a class=\"link\" href=\"pynput\">pynput</a></li>\n<li><a class=\"link\" href=\"pytest\">pytest</a></li>\n<li><a class=\"link\" href=\"requests\">requests</a></li>\n<li><a class=\"link\" href=\"tkinter\">tkinter</a></li></ul></td></tr></table>\n\n\n\n"},{"id":"TQ6v","level":1,"heading":"Online Documents","content":"<h1>Online Documents</h1>\n\n"},{"id":"BZDh","level":2,"heading":"Python Documents","content":"<h5>Python Documents</h5>\n<a class=\"link\" href=\"https://docs.python.org/3/\">https://docs.python.org/3/</a>\n\n"},{"id":"Lk3b","level":2,"heading":"Python Language Reference","content":"<h5>Python Language Reference</h5>\n<a class=\"link\" href=\"https://docs.python.org/3/reference/index.html\">https://docs.python.org/3/reference/index.html</a>\n\n"},{"id":"ewbW","level":2,"heading":"Python Standard Libraries","content":"<h5>Python Standard Libraries</h5>\n<a class=\"link\" href=\"https://docs.python.org/3/library/index.html\">https://docs.python.org/3/library/index.html</a>\n\n"},{"id":"QBkY","level":2,"heading":"Python PEPs","content":"<h5>Python PEPs</h5>\n<a class=\"link\" href=\"https://peps.python.org/pep-0000/\">https://peps.python.org/pep-0000/</a>\n\n"},{"id":"7Y26","level":2,"heading":"Amazing Python Scripts (I)","content":"<h5>Amazing Python Scripts (I)</h5>\n<a class=\"link\" href=\"https://github.com/vinta/awesome-python\">https://github.com/vinta/awesome-python</a>\n\n"},{"id":"cEqU","level":2,"heading":"Amazing Python Scripts (II)","content":"<h5>Amazing Python Scripts (II)</h5>\n<a class=\"link\" href=\"https://github.com/avinashkranjan/Amazing-Python-Scripts\">https://github.com/avinashkranjan/Amazing-Python-Scripts</a>\n\n"},{"id":"bCwH","level":2,"heading":"Python 3rd Party Libraries","content":"<h5>Python 3rd Party Libraries</h5>\n<a class=\"link\" href=\"https://pypi.org/\">pypi.org</a>\n\n\n\n"},{"id":"nGpz","level":1,"heading":"The Python Philosophy","content":"<h1>The Python Philosophy</h1>\n\nEnter from within the Python CLI:\n\n<div class=\"codebox\">import this</div>\n\n\nBeautiful is better than ugly.\nExplicit is better than implicit.\nSimple is better than complex.\nComplex is better than complicated.\nFlat is better than nested.\nSparse is better than dense.\nReadability counts.\nSpecial cases aren't special enough to break the rules.\nAlthough practicality beats purity.\nErrors should never pass silently.\nUnless explicitly silenced.\nIn the face of ambiguity, refuse the temptation to guess.\nThere should be one-- and preferably only one --obvious way to do it.\nAlthough that way may not be obvious at first unless you're Dutch.\nNow is better than never.\nAlthough never is often better than *right* now.\nIf the implementation is hard to explain, it's a bad idea.\nIf the implementation is easy to explain, it may be a good idea.\nNamespaces are one honking great idea -- let's do more of those!\n\n\n\n"},{"id":"gXDF","level":1,"heading":"Hello World","content":"<h1>Hello World</h1>\n\n\n\n"},{"id":"gXEH","level":2,"heading":"Hello World","content":"<h3>Hello World</h3>\n\nCreate and run the following Python script.\n\n\nFile Name:\n\n<div class=\"codebox\">hello.py</div>\n\nFile Contents:\n\n<div class=\"codebox\">print(&quot;<var>Hello World!</var>&quot;)</div>\n\nRun From The Command-line:\n\n<div class=\"codebox\">python3 hello.py</div>\n\n\n\n"},{"id":"wUPN","level":2,"heading":"Hello World - With Input","content":"<h3>Hello World - With Input</h3>\n\nFile Name:\n\n<div class=\"codebox\">hello2.py</div>\n\nFile Contents:\n\n<div class=\"codebox\">def main():\n\n\t<var>name</var> = input(&quot;Enter Name: &quot;)\n\n\tif not <var>name</var>:\n\t\t<var>name</var> = &quot;World&quot;\n\n\tprint(&quot;<var>hello </var>&quot; + <var>name</var> + &quot;<var>!</var>&quot;)\n\n\nif __name__ == &quot;__main__&quot;:\n\tmain()</div>\n\nRun From The Command-line:\n\n<div class=\"codebox\">python3 hello2.py</div>\n\n\n\n"},{"id":"bW8t","level":2,"heading":"Hello World - With Command-line Arguments","content":"<h3>Hello World - With Command-line Arguments</h3>\n\nThis version takes one argument and displays it as the name.\n\n\nFile Name:\n\n<div class=\"codebox\">hello2.py</div>\n\nFile Contents:\n\n<div class=\"codebox\">from sys import argv\t\t<span class=\"note\">#1</span>\n\ndef main():\n\n\tif len(argv) &gt; 1:\t\t\t<span class=\"note\">#2</span>\n\t\t<var>name</var> = argv[1]\t\t\t<span class=\"note\">#3</span>\n\telse:\n\t\t<var>name</var> = &quot;World&quot;\t\t\t<span class=\"note\">#4</span>\n\n\tprint(&quot;<var>hello </var>&quot; + <var>name</var> + &quot;<var>!</var>&quot;)\n\n\nif __name__ == &quot;__main__&quot;:\n\tmain()</div>\n\nRun From The Command-line:\n\n<div class=\"codebox\">python3 hello2.py <var>your_name_here</var></div>\n\n\n#1  <span class=\"dim\">-</span>  Importing argv allows the program to get arguments passed in from the command-line.\n\n#2  <span class=\"dim\">-</span>  Check if any arguments were passed in.\n\n#3  <span class=\"dim\">-</span>  Take the first argument as the name.\n\n#4  <span class=\"dim\">-</span>  The default value for the name when none is given.\n\n\n\n"},{"id":"4pcY","level":1,"heading":"Language Fundamentals","content":"<h1>Language Fundamentals</h1>\n\n\n"},{"id":"MJLe","level":2,"heading":"Created / 1st Release","content":"<h3>Created / 1st Release</h3>\n\n<table><tr><td>Created</td><td>Late 1980s</td></tr>\n<tr><td>1st Release</td><td>February 1991</td></tr></table>\n\n\n\n"},{"id":"Fxj2","level":2,"heading":"Created By","content":"<h3>Created By</h3>\n\nGuido van Rossum\n\n\n\n"},{"id":"wr4h","level":2,"heading":"Comments","content":"<h3>Comments</h3>\n\n<div class=\"codebox\"><span class=\"note\"># This is a comment.</span></div>\n\nStart the comment with a hash '#'.\nComments are ignored by the compiler.\n\n\n\n"},{"id":"qaRb","level":2,"heading":"Comments - Multiline","content":"<h3>Comments - Multiline</h3>\n\nThere are no multiline comments in Python.\n\n\n\n"},{"id":"dkqF","level":2,"heading":"DocString","content":"<h3>DocString</h3>\n\n<div class=\"codebox\"><span class=\"note\">&quot;&quot;&quot;Python Docstring.&quot;&quot;&quot;</span></div>\n\nThey are defined as a text between a set of 3 double quotes.\nPlace after the class or function definition.\n\nSee also: __doc__\n\n\nExamples:\n\n<div class=\"codebox\">def <var>documented_function</var>():\n\t<span class=\"note\">&quot;&quot;&quot;This docstring\n\tdocuments the function of this function\n\t&quot;&quot;&quot;</span></div>\n\n\nPython Docs: <a class=\"link\" href=\"https://peps.python.org/pep-0257/\">Docstring Conventions</a> (PEP-0257): <a class=\"link\" href=\"https://peps.python.org/pep-0257/#specification\">Specifications</a>\n \n\n\n"},{"id":"N3mK","level":2,"heading":"Escape Character","content":"<h3>Escape Character</h3>\n\n<table><tr><td>Escape Syntax</td><td><code>\\<var>x</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Backslash ( \\ )</td><td><code>\\\\</code></td></tr>\n<tr><td>Single Quote ( ' )</td><td><code>\\'</code></td></tr>\n<tr><td>Double Quote ( &quot; )</td><td><code>\\&quot;</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Backspace</td><td><code>\\b</code></td></tr>\n<tr><td>Carriage Return</td><td><code>\\r</code></td></tr>\n<tr><td>Newline</td><td><code>\\n</code></td></tr>\n<tr><td>Tab</td><td><code>\\t</code></td></tr>\n<tr><td>Vertical Tab</td><td><code>\\v</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Null</td><td><code>\\0</code></td><td>(octal value)</td></tr>\n<tr><td> </td></tr>\n<tr><td>Hex Value</td><td><code>\\x</code></td><td><code>\\x<var>ff</var></code></td></tr>\n<tr><td>Octal Value</td><td><code>\\</code></td><td><code>\\<var>777</var></code></td></tr>\n<tr><td>Unicode, 16-Bit</td><td><code>\\u</code></td><td><code>\\u<var>ff</var></code></td></tr>\n<tr><td>Unicode, 32-Bit</td><td><code>\\U</code></td><td><code>\\U<var>77</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Unicode Character / Emoji</td><td><code>\\N{}</code></td><td><code>\\N{<var>name</var>}</code></td></tr></table>\n\n\nExample:\n\n<div class=\"codebox\">= &quot;<var>\\&quot;A quoted string.\\&quot;</var>&quot;</div>\n\n<div class=\"codebox\">= &quot;<var>1st Line\\n2nd Line</var>&quot;</div>\n\n\n\n"},{"id":"m7jF","level":2,"heading":"Blocks, Indentation","content":"<h3>Blocks, Indentation</h3>\n\nBlocks are defined by indentation.\n\nCode on the same indent level are in the same block.\nPython will not allow mixed indentation\n\n\nExample:\n\n<div class=\"codebox\"><span class=\"note\"># Outer block</span>\nprint('Outer Block')\n\nif True:\n\n\t<span class=\"note\"># Inner Block</span>\n\tprint('    Inner Block')</div>\n\n\n\n"},{"id":"TkmR","level":2,"heading":"Class Inheritance","content":"<h3>Class Inheritance</h3>\n\nPython supports Multiple Inheritance.\n\n\n"},{"id":"PUzt","level":2,"heading":"Interfaces","content":"<h3>Interfaces</h3>\n\nNot supported in Python.\n\nUse abstract classes instead.\nOr simply rely on duck typing.\n\n\n\n"},{"id":"4kP1","level":2,"heading":"Indexes","content":"<h3>Indexes</h3>\n\n0 Based.\n\nIndexes are 0 based.\nTo get the first element, reference element 0.\n\n\nExample:\n\n<div class=\"codebox\"><var>first</var> = <var>some_list</var>[0]</div>\n\n\n\n"},{"id":"EpzT","level":2,"heading":"Identifiers","content":"<h3>Identifiers</h3>\n\n<div class=\"codebox\">( <var>letter</var> | _ )( <var>letter</var> | <var>digit</var> | _ )*</div>\n\nRegex Form:\n\n<div class=\"codebox\">[_a-zA-Z][_0-9a-zA-Z]*</div>\n\nCase sensitive.\nThe first character must be an alphabet letter or underscore, not a digit.\nAll other characters can be alphabet letters, underscores or digits.\n\n\nExamples:\n\n<div class=\"codebox\"><var>a1</var>\n<var>item_2</var>\n<var>three_word_name</var></div>\n\n\n\n"},{"id":"ahwv","level":2,"heading":"Python Environment Variable","content":"<h3>Python Environment Variable</h3>\n\n<div class=\"codebox\">PYTHONPATH</div>\n\nPath to modules and packages.\n\n\nPython checks <code>PYTHONPATH</code> directories for modules and packages.\nPython adds this to <code>sys.path</code>.\n\n\n\n"},{"id":"cbGR","level":2,"heading":"Passing Arguments - Pass By Assignment (Default)","content":"<h3>Passing Arguments - Pass By Assignment (Default)</h3>\n\nPass by Assignment\n\nPython passes by assignment by default (same as pass by value).\nObjects are passed by assigning the object reference.\n\n\n\n"},{"id":"ySrE","level":2,"heading":"Passing Arguments - Options","content":"<h3>Passing Arguments - Options</h3>\n\nCall Passing as list:\n\n<div class=\"codebox\">= <var>func_1</var>(*<var>list_1</var>)\t\t\t<span class=\"note\">#1</span></div>\n\nCall Passing as dict:\n\n<div class=\"codebox\">= <var>func_2</var>(**<var>dict_1</var>)\t\t\t<span class=\"note\">#2</span></div>\n\n\nReceive as list:\n\n<div class=\"codebox\">def <var>func_3</var>(*args):\t\t\t<span class=\"note\">#3</span>\n\t<var>...</var></div>\n\nReceive as dict:\n\n<div class=\"codebox\">def <var>func_4</var>(**kwargs):\t\t<span class=\"note\">#4</span>\n\t<var>...</var></div>\n\n\n#1  <span class=\"dim\">-</span>   <code>list_1</code> will be unpacked to function arguments in list order.\n\n#2  <span class=\"dim\">-</span>   <code>dict_1</code> will be converted into their named arguments inside the function.\n\n#3  <span class=\"dim\">-</span>   Converts arguments to a list.\n\n#4  <span class=\"dim\">-</span>   Converts named arguments to a dict.\n\n\n\n"},{"id":"XQEY","level":2,"heading":"Scope","content":"<h3>Scope</h3>\n\nScope Levels\n\n\tModule\n\tClass\n\tFunction\n\tClosure\n\tGenerator Expression\n\tComprehension\n\nThere is no block level scope\n\n\nExample:\n\n<div class=\"codebox\"><var>module_level_variable</var> = &quot;Module Scope&quot;\n\n\nclass <var>SomeClass</var>:\n\tdef __init__(self):\n\t\tself.<var>class_level_variable</var> = &quot;Class Level&quot;\n\n\ndef <var>SomeFunction</var>():\n\t<var>function_level_variable</var> = &quot;Function Level&quot;\n\n\n<var>generator</var> = (<var>generator_level_variable</var>\n\t\tfor <var>generator_level_variable</var> in\n\t\t[&quot;Generator Level&quot;, &quot;Generator Level&quot;])\n\n\n<var>comprehension</var> = [<var>comprehension_level_variable</var>\n\t\tfor <var>comprehension_level_variable</var> in\n\t\t[&quot;Comprehension Level&quot;, &quot;Comprehension Level&quot;]]</div>\n\n\n\n"},{"id":"8CDf","level":2,"heading":"Startup Module - __main__.py","content":"<h3>Startup Module - __main__.py</h3>\n\n<div class=\"codebox\">__main__.py</div>\n\n\nPython calls this as the starting module by default.\n\n\n\n"},{"id":"yDmw","level":2,"heading":"Statement - Multiline Statement","content":"<h3>Statement - Multiline Statement</h3>\n\n<div class=\"codebox\"><var>...</var> \\\n<var>...</var></div>\n\nThe '\\' at the line's end indicates line continues on next line.\n\n\nNote:\n\nPrefer using parenthesis '<code>( )</code>', brackets '<code>[ ]</code>', braces '<code>{ }</code>' for multiline statements for clarity.\n\n\nExample:\n\n<div class=\"codebox\">string_1 = &quot;<var>Part 1 and </var>&quot; + \\\n\t\t&quot;<var>part 2 and </var>&quot; + \\\n\t\t&quot;<var>part 3</var>&quot;</div>\n\n\n\n"},{"id":"s2CS","level":2,"heading":"Statement - Statement Separator","content":"<h3>Statement - Statement Separator</h3>\n\n<div class=\"codebox\"><var>statement</var>;</div>\n\nOptional\n\nUse a semicolon ';' to separate statements.\nAllows multiple statements in one line.\n\n\nExamples:\n\n<div class=\"codebox\">print(&quot;Optional command separator&quot;);\n\nprint(&quot;one&quot;); print(&quot;two&quot;); print(&quot;three&quot;);</div>\n\n\n\n"},{"id":"qhNs","level":1,"heading":"Naming Conventions","content":"<h1>Naming Conventions</h1>\n\n\n\n"},{"id":"4g2v","level":2,"heading":"Naming Conventions - Basics","content":"<h2>Naming Conventions - Basics</h2>\n\n<table><tr><td>Class</td><td><var>TitleCase</var></td></tr>\n<tr><td> </td></tr>\n<tr><td>Constant</td><td><var>UPPER_SNAKE_CASE</var></td></tr>\n<tr><td> </td></tr>\n<tr><td>Magic Method</td><td>__<var>snake_case</var>__\n(leading and trailing double underscore)</td></tr>\n<tr><td> </td></tr>\n<tr><td>Module</td><td><var>snake_case</var>\n(short name)</td></tr>\n<tr><td> </td></tr>\n<tr><td>Private Name</td><td>_<var>name</var>\n(use leading underscore)</td></tr>\n<tr><td> </td></tr>\n<tr><td>Variable</td><td><var>snake_case</var></td></tr>\n<tr><td> </td></tr>\n<tr><td>Variable - Constant</td><td><var>UPPER_SNAKE_CASE</var></td></tr>\n<tr><td> </td></tr></table>\n\n\n\n"},{"id":"ECwZ","level":2,"heading":"Naming Conventions - Details","content":"<h2>Naming Conventions - Details</h2>\n\n\n"},{"id":"3uus","level":3,"heading":"Convention - Class Names","content":"<h3>Convention - Class Names</h3>\n\n<div class=\"codebox\">class <var>ClassName1</var>:</div>\n\nUse TitleCase, no underscore separator.\n\n\n\n"},{"id":"Nr5q","level":3,"heading":"Convention - Function Names","content":"<h3>Convention - Function Names</h3>\n\n<div class=\"codebox\">def <var>function_name_1</var> <var>...</var></div>\n\nUse snake case, all lower case letters, underscores between words.\n\n\n\n"},{"id":"KkGY","level":3,"heading":"Convention - Magic Methods","content":"<h3>Convention - Magic Methods</h3>\n\n<div class=\"codebox\">__<var>magic_method_name</var>__</div>\n\nLead and end with a double underscore. All letters are lower case. Words are separated by underscores.\n\n\n\n"},{"id":"7fYT","level":3,"heading":"Convention - Module Names","content":"<h3>Convention - Module Names</h3>\n\n<div class=\"codebox\"><var>short_name</var></div>\n\nUse a short name for module file names. Use snake case if necessary.\n\n\n\n"},{"id":"ju3Q","level":3,"heading":"Convention - Private Names","content":"<h3>Convention - Private Names</h3>\n\n<div class=\"codebox\">_<var>private_name_1</var></div>\n\nIdentify variables and functions as private by leading with an underscore.\n\n\nExamples:\n\n<div class=\"codebox\">def _<var>private_func_1</var>():\n    <var>...</var></div>\n\n\n\n"},{"id":"Hq08","level":3,"heading":"Convention - Variables","content":"<h3>Convention - Variables</h3>\n\n<div class=\"codebox\"><var>variable_name_1</var></div>\n\nUse snake case, all lower case letters, underscore separator between words.\n\n\nExample:\n\n<div class=\"codebox\"><var>ok_status_code</var> = <var>200</var></div>\n\n\n\n"},{"id":"bXpB","level":3,"heading":"Convention - Variable Constants","content":"<h3>Convention - Variable Constants</h3>\n\n<div class=\"codebox\"><var>CONSTANT_NAME_1</var></div>\n\nUse upper snake case, all upper case letters, underscore separator between words.\n\nNote: There is no mechanism in Python to enforce constants. They are normal variables.\n\n\nExample:\n\n<div class=\"codebox\"><var>OK_STATUS</var> = <var>200</var></div>\n\n\n\n"},{"id":"EVkg","level":3,"heading":"Convention - Underscores","content":"<h3>Convention - Underscores</h3>\n\n<div class=\"card\"><table><tr><td>Single, Leading</td><td><code>_<var>name</var></code>\t</td><td>Private function, method or variable.\nFor internal use only.</td></tr>\n<tr><td> </td></tr>\n<tr><td>Single, Trailing</td><td><code><var>name</var>_</code></td><td>Use to avoid clashing with reserved words.\n(<code>class_</code>, <code>def_</code>, <code>in_</code>)</td></tr>\n<tr><td> </td></tr>\n<tr><td>Double, Leading</td><td><code>__<var>name</var></code></td><td>Used by Python for class name mangling.\nAvoid using.</td></tr>\n<tr><td> </td></tr>\n<tr><td>Double, Both Ends</td><td><code>__<var>name</var>__</code></td><td>Special methods used by Python to enable special features.\n(<code>__name__</code>, <code>__repr__</code>, <code>__next__</code>)</td></tr>\n<tr><td> </td></tr>\n<tr><td>Single</td><td><code>_</code></td><td>Used as a temporary variable or to indicate 'any' value.\n<code>(match _:), (lambda _ : <var>...</var>)</code></td></tr>\n<tr><td> </td></tr></table></div>\n\n\n\n"},{"id":"TyNJ","level":1,"heading":"Command-line","content":"<h1>Command-line</h1>\n\n\n\n"},{"id":"41vf","level":2,"heading":"Python - Version","content":"<h3>Python - Version</h3>\n\n<div class=\"codebox\">python --version</div>\n\n<div class=\"codebox\">python3 --version</div>\n\nShows the current python version from the command-line.\n\n\n\n"},{"id":"QJeY","level":2,"heading":"REPL - Start","content":"<h3>REPL - Start</h3>\n\n<div class=\"codebox\">python3</div>\n\n\nStarts the REPL.\n\n\n\n"},{"id":"YUM9","level":2,"heading":"REPL - Get Last Evaluated Expression","content":"<h3>REPL - Get Last Evaluated Expression</h3>\n\n<div class=\"codebox\">= _</div>\n\n<div class=\"codebox\">print (_)</div>\n\nUnderscore <code>'_'</code> stores the result of the last evaluated expression.\n\n\n\n"},{"id":"NYz9","level":2,"heading":"REPL - Exit","content":"<h3>REPL - Exit</h3>\n\n<div class=\"codebox\">Control + D</div>\n\n<div class=\"codebox\">exit()</div>\n\n\nPress the keys <code>Control + D</code> or type <code>exit()</code> to quit.\n\n\n\n"},{"id":"5wcE","level":2,"heading":"Application / Script - Run Program","content":"<h3>Application / Script - Run Program</h3>\n\n<div class=\"codebox\">python3 <var>python_file.py</var></div>\n\nRun from the source root directory.\n\n\n\n"},{"id":"VkJW","level":2,"heading":"Application / Script - Run Module","content":"<h3>Application / Script - Run Module</h3>\n\n<div class=\"codebox\">python3 -m <var>package</var>.<var>module_name</var></div>\n\nRun from parent directory to the <code><var>package</var></code> directory.\n<code><var>package</var></code> is the directory containing the module.\n<code><var>module_name</var></code> is the python module file without the <code>.py</code> extension.\n\nRun from source root directory.\n\n\n\n"},{"id":"WxnY","level":2,"heading":"Application - Run Directory","content":"<h3>Application - Run Directory</h3>\n\n<div class=\"codebox\">python3 <var>source_directory</var></div>\n\nThis will run a python program from it's source directory.\n\nThe source directory must contain <code>__main__.py</code>.\nPlace your startup code in that file.\nPython will call it to start the application.\n\n\nDirectory Structure:\n\n<div class=\"codebox\"><var>src</var>/\n\t__main__.py\n\t<var>...</var></div>\n\nRun:\n\n<div class=\"codebox\">python3 <var>src</var></div>\n\n\n\n"},{"id":"gfQR","level":1,"heading":"Unit Test - Command-line","content":"<h1>Unit Test - Command-line</h1>\n\n\n\n"},{"id":"xa1J","level":2,"heading":"Unit Test - Run All","content":"<h3>Unit Test - Run All</h3>\n\n<div class=\"codebox\">python3 -m unittest</div>\n\nPython will search for and run all tests in the current directory and subdirectories.\n\n\n\n"},{"id":"TMUa","level":2,"heading":"Unit Test - Run Module","content":"<h3>Unit Test - Run Module</h3>\n\n<div class=\"codebox\">python3 -m unittest <var>module_name</var></div>\n\n<div class=\"codebox\">python3 -m unittest <var>package_name</var>.<var>module_name</var></div>\n\nRun from source root directory.\n\n\n\n"},{"id":"qSvH","level":2,"heading":"Unit Test - Run Test Class","content":"<h3>Unit Test - Run Test Class</h3>\n\n<div class=\"codebox\">python3 -m unittest <var>module_name</var>.<var>TestClass</var></div>\n\n<div class=\"codebox\">python3 -m unittest <var>package_name</var>.<var>module_name</var>.<var>TestClass</var></div>\n\nRun from source root directory.\n\n\n\n"},{"id":"U2tH","level":2,"heading":"Unit Test - Run Test Method","content":"<h3>Unit Test - Run Test Method</h3>\n\n<div class=\"codebox\">python3 -m unittest <var>module_name</var>.<var>TestClass</var>.<var>test_method</var></div>\n\n<div class=\"codebox\">python3 -m unittest <var>package_name</var>.<var>module_name</var>.<var>TestClass</var>.<var>test_method</var></div>\n\nRun from source root directory.\n\n\n\n"},{"id":"A9p5","level":1,"heading":"Distribution","content":"<h1>Distribution</h1>\n\n\n\n"},{"id":"kt3Z","level":2,"heading":"Application Distribution - Egg - Create","content":"<h3>Application Distribution - Egg - Create</h3>\n\nSteps:\n\n<ul><li>Create the startup module <code>__main__.py</code>.</li>\n<li>Zip all python files into a single zip file.</li></ul>\n\n\nZip the contents of the source folder into a zip file to create a distibutable egg file.\nInclude the __main__.py file. This will be called on startup of the egg file.\n\nThe root directory of the zip file must be the root directory of the python source files.\nDo not place files into a directory in the zip file.\n\n\n\n"},{"id":"1KdM","level":2,"heading":"Application Distribution - Egg - Run","content":"<h3>Application Distribution - Egg - Run</h3>\n\n<div class=\"codebox\">python3 <var>egg_file</var>.egg</div>\n\n<div class=\"codebox\">python3 <var>egg_file</var>.zip</div>\n\n\nThis will run an egg file by calling the included __main__.py file.\n\nInstall and run an environment prior to running the egg file, if required.\n\n\n\n"},{"id":"d8xz","level":2,"heading":"Application Distribution - Egg - Starting Module","content":"<h3>Application Distribution - Egg - Starting Module</h3>\n\n<div class=\"codebox\">__main__.py</div>\n\n\nAdd a module called <var>__main__.py</var> to your code.\nPython will call this when starting your application.\n\n\n\n"},{"id":"Th7c","level":2,"heading":"Application Distribution - Wheel - Setup","content":"<h3>Application Distribution - Wheel - Setup</h3>\n\nSteps:\n\n<ul><li>Create <code>setup.py</code></li>\n<li>Create <code>/src/__init_-.py</code></li></ul>\n\n\nCreate <code>setup.py</code> in the project directory.\nCreate <code>__init__.py</code> in the source root directory.\n\n\nExample setup.py:\n\n<div class=\"codebox\">from setuptools import setup, find_packages\n\nsetup(\n\tname='<var>package_name</var>',  \t\t\t\t\t\t<span class=\"note\"># Required</span>\n\tversion='<var>2</var>.<var>0</var>.<var>1</var>',  \t\t\t\t\t\t\t<span class=\"note\"># Required</span>\n\tdescription='<var>package description here</var>.',\t<span class=\"note\"># Required</span>\n\tpackages=find_packages(exclude=['contrib', 'docs', 'tests']),\t<span class=\"note\"># Required</span>\n)</div>\n\n\n\n"},{"id":"zgWJ","level":2,"heading":"Application Distribution - Wheel - Create","content":"<h3>Application Distribution - Wheel - Create</h3>\n\n<div class=\"codebox\">python3 setup.py sdist bdist_wheel</div>\n\nRun from project root directory.\nCreates wheel distribution file in the<code>/dist</code>.\n\n\n\n"},{"id":"aTYy","level":1,"heading":"PIP - Package Manager","content":"<h1>PIP - Package Manager</h1>\nPython's Package Manager.\n\nInstalls and manages libraries and their dependencies.\n\nPIP = PIP Installs Packages\n\n\n\n"},{"id":"UmeF","level":2,"heading":"PIP - Installed Package Location","content":"<h2>PIP - Installed Package Location</h2>\n\n<div class=\"codebox\"><var>python_home_directory</var>/lib/python3.<var>x</var>/site-packages</div>\n\nThe location of packages installed by PIP.\n\n\n\n"},{"id":"R58v","level":2,"heading":"PIP - Requirements File","content":"<h2>PIP - Requirements File</h2>\n\n\n\n"},{"id":"VDdZ","level":3,"heading":"PIP - Requirements File - File Name","content":"<h3>PIP - Requirements File - File Name</h3>\n\n<div class=\"codebox\">requirements.txt</div>\n\nPlace in project root directory.\n\n\nNote: The <code><var>requrements.txt</var></code> name is by convention only.\n\n\n\n"},{"id":"TmHH","level":3,"heading":"PIP - Requirements File - Sample File","content":"<h3>PIP - Requirements File - Sample File</h3>\n\nIn <code>requirements.txt</code>:\n\n<div class=\"codebox\"><span class=\"note\"># This is a comment line.</span>\n\n<var>package_1_name</var>\t\t\t\t\t<span class=\"note\"># Latest Version</span>\n\n<var>package_2</var>==<var>1</var>.<var>2</var>.<var>3</var>\t\t\t\t<span class=\"note\"># Specific Version</span>\n\n<var>package_3</var>&gt;=<var>1</var>.<var>2</var>.<var>3</var>\t\t\t\t<span class=\"note\"># Specific Version or Higher</span>\n\n-r <var>other_requirements.txt</var>\t\t<span class=\"note\"># Include packages from this file too.</span></div>\n\n\n\n"},{"id":"xTv1","level":2,"heading":"Commands","content":"<h2>Commands</h2>\n\n\n\n"},{"id":"Hqp3","level":3,"heading":"PIP - Upgrade","content":"<h3>PIP - Upgrade</h3>\n\n<div class=\"codebox\">pip install --upgrade pip</div>\n\nUpgrades PIP to the latest version.\n\n\n\n"},{"id":"VgnC","level":3,"heading":"PIP - Version","content":"<h3>PIP - Version</h3>\n\n<div class=\"codebox\">pip -V</div>\n\nor\n\n<div class=\"codebox\">pip --version</div>\n\n\n\n"},{"id":"PcxX","level":3,"heading":"PIP - Package - Install","content":"<h3>PIP - Package - Install</h3>\n\n<div class=\"codebox\">pip install <var>package_name</var></div>\n\nor\n\n<div class=\"codebox\">pip install <var>package_name</var>==<var>1</var>.<var>2</var>.<var>3</var></div>\n\n\n\n"},{"id":"2XZL","level":3,"heading":"PIP - Package - Install From Requirements File","content":"<h3>PIP - Package - Install From Requirements File</h3>\n\n<div class=\"codebox\">pip install -r <var>requirements.txt</var></div>\n\nInstalls all the packages listed in the requirements.txt file.\n\n\n\n"},{"id":"Bujb","level":3,"heading":"PIP - Package - Install From Wheel File","content":"<h3>PIP - Package - Install From Wheel File</h3>\n\n<div class=\"codebox\">pip install <var>package_name</var>.whl</div>\n\n\n\n"},{"id":"edn2","level":3,"heading":"PIP - Package - Install Using Proxy","content":"<h3>PIP - Package - Install Using Proxy</h3>\n\n<div class=\"codebox\">pip install <var>package_name</var> --proxy=&quot;<var>proxyserver.com</var></div>\n\n<div class=\"codebox\">pip install <var>package_name</var> --proxy=&quot;https://<var>user</var>:<var>password</var>@<var>proxyserver.com</var></div>\n\n\n\n"},{"id":"UMxs","level":3,"heading":"PIP - Package - Install, Force","content":"<h3>PIP - Package - Install, Force</h3>\n\n<div class=\"codebox\">pip install --force-reinstall <var>package_name</var></div>\n\n\n\n"},{"id":"6Tz9","level":3,"heading":"PIP - Package - Upgrade","content":"<h3>PIP - Package - Upgrade</h3>\n\n<div class=\"codebox\">pip install --upgrade <var>package_name</var></div>\n\n\n\n"},{"id":"6cTv","level":3,"heading":"PIP - Package - Upgrade, Force","content":"<h3>PIP - Package - Upgrade, Force</h3>\n\n<div class=\"codebox\">pip install --upgrade --force-reinstall <var>package_name</var></div>\n\n\n\n"},{"id":"G6aM","level":3,"heading":"PIP - Package - Uninstall","content":"<h3>PIP - Package - Uninstall</h3>\n\n<div class=\"codebox\">pip uninstall <var>package_name</var></div>\n\n\n\n"},{"id":"PUY2","level":3,"heading":"PIP - Package - View Details","content":"<h3>PIP - Package - View Details</h3>\n\n<div class=\"codebox\">pip show <var>package_name</var></div>\n\n\n\n"},{"id":"R3xL","level":3,"heading":"PIP - Packages - List All","content":"<h3>PIP - Packages - List All</h3>\n\n<div class=\"codebox\">pip list</div>\n\nLists all installed packages and their versions.\n\n\n\n"},{"id":"q9Qw","level":3,"heading":"PIP - Packages - Upgrade All","content":"<h3>PIP - Packages - Upgrade All</h3>\n\n<div class=\"codebox\">pip install -r requirements.txt</div>\n\n\nUpgrades any existing libraries.\n\nJust run normal install command to upgrade the libraries.\n\n\n\n"},{"id":"MZ4e","level":3,"heading":"PIP - Requirements File - Create","content":"<h3>PIP - Requirements File - Create</h3>\n\n<div class=\"codebox\">pip freeze &gt; <var>requirements.txt</var></div>\n\nCreate requirements file from installed packages.\n\nUses the packages installed in the current virtual environment.\nIf no environment, uses the global packages.\n\n\n\n"},{"id":"VbdZ","level":1,"heading":"Operators","content":"<h1>Operators</h1>\n\n\n\n"},{"id":"QXDb","level":2,"heading":"Arithmetic Operators","content":"<h3>Arithmetic Operators</h3>\n\n<div class=\"indent-2\"><table><tr><td><code><var>a</var> + <var>b</var>\t\t</code></td></tr>\n<tr><td><code><var>a</var> - <var>b</var></code></td></tr>\n<tr><td><code><var>a</var> * <var>b</var></code></td></tr>\n<tr><td><code><var>a</var> / <var>b</var></code></td><td>Always Returns a Float</td></tr>\n<tr><td><code><var>a</var> // <var>b</var></code></td><td>Floor Divide ( 9 // 4 = 2)</td></tr>\n<tr><td> </td></tr>\n<tr><td><code><var>a</var> % <var>b</var></code></td><td>Modulo ( 7 % 3 = 1)</td></tr>\n<tr><td><code><var>a</var> ** <var>b</var></code></td><td>To The Power of</td></tr></table></div>\n\n\n\n"},{"id":"1zu9","level":2,"heading":"Arithmetic Assignment Operators","content":"<h3>Arithmetic Assignment Operators</h3>\n\nAssign:\n\n<div class=\"indent-2\"><table><tr><td><code><var>a</var> = <var>value</var></code></td></tr></table></div>\n\nCalculate and update variable:\n\n<div class=\"indent-2\"><table><tr><td><code><var>a</var> += <var>value</var>\t</code></td></tr>\n<tr><td><code><var>a</var> -= <var>value</var></code></td></tr>\n<tr><td><code><var>a</var> *= <var>value</var></code></td></tr>\n<tr><td><code><var>a</var> /= <var>value</var></code></td></tr>\n<tr><td><code><var>a</var> //= <var>value</var></code></td><td>Floor Divide</td></tr>\n<tr><td><code><var>a</var> %= <var>value</var></code></td><td>Modulo</td></tr>\n<tr><td><code><var>a</var> **= <var>value</var></code></td><td>To The Power of</td></tr></table></div>\n\n\n\n"},{"id":"cgJz","level":2,"heading":"Assignment Operator - Conditional Operator","content":"<h3>Assignment Operator - Conditional Operator</h3>\n\n<div class=\"codebox\">= <var>true_expression</var> if <var>test_condition</var> else <var>false_expression</var></div>\n\n\nTernary conditional operator.\n\n\n\n"},{"id":"yBjB","level":2,"heading":"Assignment Expression (Walrus Operator)","content":"<h3>Assignment Expression (Walrus Operator)</h3>\n\n<div class=\"codebox\"><var>value_1</var> := <var>value_2</var></div>\n\nUsage:\n\n<div class=\"codebox\">if <var>value_1</var> := <var>value_2</var>:\n\t<var>...</var></div>\n\n<div class=\"codebox\">while (<var>item</var> := <var>next_item</var>()):\n\t<var>...</var></div>\n\nAssigns the value to the variable, then returns the value to the outer expression\n\n<ul><li>Assign the value to the variable</li>\n<li>Returns the value to the expression</li></ul>\n\nThis is usually used when the right hand side of the assignment is a function.\n\n\nExample:\n\n<div class=\"codebox\"><var>count</var> = 0\n\nwhile (<var>count</var> := count + 1) &lt; 5:\n\tprint(<var>count</var>)\n\n<span class=\"note\"># Prints 1 to 4, Then Exits</span></div>\n\n\n\n"},{"id":"KYLe","level":2,"heading":"Comparison Operators","content":"<h3>Comparison Operators</h3>\n\n<div class=\"indent-2\"><table><tr><td><code><var>a</var> == <var>b</var>\t</code></td><td>Equal In Value</td></tr>\n<tr><td><code><var>a</var> != <var>b</var></code></td></tr>\n<tr><td><code><var>a</var> &gt; <var>b</var></code></td></tr>\n<tr><td><code><var>a</var> &lt; <var>b</var></code></td></tr>\n<tr><td><code><var>a</var> &gt;= <var>b</var></code></td></tr>\n<tr><td><code><var>a</var> &lt;= <var>b</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td><code><var>a</var> is <var>b</var></code></td><td>Identity / Same Item</td></tr>\n<tr><td><code><var>a</var> is not <var>b</var></code></td></tr></table></div>\n\n\n\n"},{"id":"X5Px","level":2,"heading":"Logical Operators","content":"<h3>Logical Operators</h3>\n\n<div class=\"indent-2\"><code><var>a</var> and <var>b</var></code>\n<code><var>a</var> or <var>b</var></code>\n<code>not <var>b</var></code></div>\n\nVersus <code>&amp;&amp;</code>, <code>||</code>, <code>!</code> used in other languages.\n\n\n\n"},{"id":"1jGA","level":2,"heading":"Bitwise Operators","content":"<h3>Bitwise Operators</h3>\n\n\n\n"},{"id":"9TsG","level":3,"heading":"Bitwise Operators - Basics","content":"<h4>Bitwise Operators - Basics</h4>\n\n<div class=\"indent-2\"><table><tr><td><code>~<var>a</var></code></td><td>Complement / Inverse</td></tr>\n<tr><td> </td></tr>\n<tr><td><code><var>a</var> &amp; <var>b</var></code></td><td>Bitwise AND</td></tr>\n<tr><td><code><var>a</var> | <var>b</var></code></td><td>Bitwise OR</td></tr>\n<tr><td><code><var>a</var> ^ <var>b</var></code></td><td>Bitwise XOR</td></tr>\n<tr><td> </td></tr>\n<tr><td><code><var>a</var> &lt;&lt; <var>shift_count</var></code></td><td>Bitwise Shift Left</td></tr>\n<tr><td><code><var>a</var> &gt;&gt; <var>shift_count</var></code></td><td>Bitwise Shift Right</td></tr></table>\n\n\n\n</div>#### Bitwise Complement\n\n<div class=\"codebox\">= ~<var>a</var></div>\n\nSame As:\n\n<div class=\"codebox\">= -<var>a</var> - 1</div>\n\n\nPerforms a bitwise complement on the value.\nBecause Python's integers are signed, this is not a straight inversion of the bits.\n\n\nExample:\n\n<div class=\"codebox\"><var>a</var> = 0b<var>110</var>\n\n<var>complement</var> = ~<var>a</var>\n\nprint(f'{<var>complement</var>:b}')\n\n<span class=\"note\"># Prints: -111</span></div>\n\n\n\n"},{"id":"S0pM","level":3,"heading":"Bitwise AND","content":"<h4>Bitwise AND</h4>\n\n<div class=\"codebox\">= <var>a</var> &amp; <var>b</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>a</var> = 0b<var>1100</var>\n<var>b</var> = 0b<var>1010</var>\n\n<var>value</var> = <var>a</var> &amp; <var>b</var>\n\nprint(f'{<var>value</var>:04b}')\n\n<span class=\"note\"># Prints: 1000</span></div>\n\n\n\n"},{"id":"g3uv","level":3,"heading":"Bitwise OR","content":"<h4>Bitwise OR</h4>\n\n<div class=\"codebox\">= <var>a</var> | <var>b</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>a</var> = 0b<var>1100</var>\n<var>b</var> = 0b<var>1010</var>\n\n<var>value</var> = <var>a</var> | <var>b</var>\n\nprint(f'{<var>value</var>:04b}')\n\n<span class=\"note\"># Prints: 1110</span></div>\n\n\n\n"},{"id":"Rtzp","level":3,"heading":"Bitwise XOR","content":"<h4>Bitwise XOR</h4>\n\n<div class=\"codebox\">= <var>a</var> ^ <var>b</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>a</var> = 0b<var>1100</var>\n<var>b</var> = 0b<var>1010</var>\n\n<var>value</var> = <var>a</var> ^ <var>b</var>\n\nprint(f'{<var>value</var>:04b}')\n\n<span class=\"note\"># Prints: 0110</span></div>\n\n\n\n"},{"id":"scnv","level":3,"heading":"Bitwise Shift Left","content":"<h4>Bitwise Shift Left</h4>\n\n<div class=\"codebox\">= <var>a</var> &lt;&lt; <var>shift_count</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>a</var> = 0b<var>1100</var>\n\n<var>value</var> = <var>a</var> &lt;&lt; <var>2</var>\n\nprint(f'{<var>value</var>:b}')\n\n<span class=\"note\"># Prints: 110000</span></div>\n\n\n\n"},{"id":"mu36","level":3,"heading":"Bitwise Shift Right","content":"<h4>Bitwise Shift Right</h4>\n\n<div class=\"codebox\">= <var>a</var> &gt;&gt; <var>shift_count</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>a</var> = 0b<var>1100</var>\n\n<var>value</var> = <var>a</var> &gt;&gt; <var>2</var>\n\nprint(f'{<var>value</var>:04b}')\n\n<span class=\"note\"># Prints: 0011</span></div>\n\n\n\n\n"},{"id":"K7J9","level":2,"heading":"Identity Operators","content":"<h3>Identity Operators</h3>\n\nIs The Same?:\n\n<div class=\"codebox\">= <var>x</var> is <var>y</var></div>\n\n<div class=\"codebox\">= <var>x</var> is not <var>y</var></div>\n\n\nSame Memory Location?:\n\n<div class=\"codebox\">= id(<var>x</var>) is id(<var>y</var>)</div>\n\n<div class=\"codebox\">= id(<var>x</var>) is not id(<var>y</var>)</div>\n\n\n<code>is</code> and <code>is not</code> compare items' identities to see if they are the same.\n<code>id</code> compares memory locations.\n\n\n\n"},{"id":"pvjS","level":2,"heading":"Operators - Is Empty?","content":"<h3>Operators - Is Empty?</h3>\n\n<div class=\"codebox\">= not <var>var_1</var></div>\n\n<div class=\"codebox\">if not <var>var_1</var>:\n\t<var>...</var></div>\n\nUse on sequences, strings, lists, sets, dicts, tuples.\n\n\nExample:\n\n<div class=\"codebox\">if not <var>dict_1</var>:\n\tprint(&quot;<var>dict_1</var> is empty.&quot;)\nelse:\n\tprint(&quot;<var>dict_1</var> not empty.&quot;)</div>\n\n\n\n"},{"id":"wW10","level":2,"heading":"Operators - Not Empty?","content":"<h3>Operators - Not Empty?</h3>\n\n<div class=\"codebox\">if <var>var_1</var>:\n\t<var>...</var></div>\n\nUse on sequences, strings, lists, sets, dicts, tuples.\n\n\nExample:\n\n<div class=\"codebox\">if <var>dict_1</var>:\n\tprint(&quot;<var>dict_1</var> not empty.&quot;)\nelse:\n\tprint(&quot;<var>dict_1</var> is empty.&quot;)</div>\n\n\n\n"},{"id":"nKzP","level":2,"heading":"Operators - Is Between","content":"<h3>Operators - Is Between</h3>\n\n<div class=\"codebox\">= <var>min</var> &lt; <var>value</var> &lt; <var>max</var>\n\n= <var>min</var> &lt;= <var>value</var> &lt;= <var>max</var></div>\n\n<div class=\"codebox\">if <var>min</var> &lt; <var>value</var> &lt; <var>max</var>:\n\t<var>...</var>\n\nif <var>min</var> &lt;= <var>value</var> &lt;= <var>max</var>:\n\t<var>...</var></div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>value</var> = <var>1</var>\n\n<span class=\"note\"># True:</span>\n\nprint (0 &lt; <var>value</var> &lt; 2)\n\n<span class=\"note\">`alse:</span>\n\nprint (1 &lt; <var>value</var> &lt; 2)\n\n<span class=\"note\"># True:</span>\n\nprint (1 &lt;= <var>value</var> &lt; 2)</div>\n\n\n\n"},{"id":"JhvK","level":2,"heading":"Operator Precedence","content":"<h3>Operator Precedence</h3>\n\nFrom Highest To Lowest:\n\n\n<table><tr><td><code>(<var>...</var>)</code>, <code>[<var>...</var>]</code>, <code>{<var>key</var>: <var>value</var>}</code>, <code>{<var>...</var>}</code></td><td>Parenthesis, List, Dictionary or Set</td></tr>\n<tr><td> </td></tr>\n<tr><td><code><var>x</var>[<var>index</var>]</code>, <code><var>func_1</var>()</code>, <code><var>x</var>.<var>attrib</var></code></td><td>Subscripts, Slicing, Calls, Attributes</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>await <var>x</var></code></td><td>Await Expression</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>**</code></td><td>Exponent</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>+<var>x</var></code>, <code>-<var>x</var></code>, <code>~<var>x</var></code></td><td>Positive, Negative, Bitwise NOT</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>*</code>, <code>/</code>, <code>//</code>, <code>%</code>, <code>@</code></td><td>Multiply, Divide, Floor Divide, Remainder (Modulo), Matrix Multiply</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>+</code>, <code>-</code></td><td>Add, Subtract</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>&lt;&lt;</code>, <code>&gt;&gt;</code></td><td>Bitwise Shift</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>&amp;</code></td><td>Bitwise AND</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>^</code></td><td>Bitwise XOR</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>|</code></td><td>Bitwise OR</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>in</code>, <code>not in</code>, <code>is</code>, <code>is not</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>!=</code>, <code>==</code></td><td>Comparators</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>not</code></td><td>Boolean NOT</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>and</code></td><td>Boolean AND</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>or </code></td><td>Boolean OR</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>if else</code></td><td>Conditional Operator</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>lambda</code></td><td>Lambda Expression</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>:=</code></td><td>Assignment Operator</td></tr></table>\n\n\nPython Docs: <a class=\"link\" href=\"https://docs.python.org/3/reference/expressions.html\">Expressions</a>: <a class=\"link\" href=\"https://docs.python.org/3/reference/expressions.html#operator-precedence\">Operator Precedence</a>\n\n\n\n"},{"id":"dk0R","level":2,"heading":"== vs is vs id()","content":"<h3>== vs is vs id()</h3>\n\n==:\n\n<ul><li>Value Operator</li>\n<li>Compares the Value of the Operands</li>\n<li>True If Same Value</li></ul>\n\nis:\n\n<ul><li>Identity Operator</li>\n<li>Compares the Operands Identity</li>\n<li>True If Same Item</li></ul>\n\nid():\n\n<ul><li>Memery Operator</li>\n<li>Compares Memory Locations</li>\n<li>True If Same Location</li></ul>\n\n\n\n"},{"id":"45aB","level":1,"heading":"Control Structures","content":"<h1>Control Structures</h1>\n\n\n"},{"id":"eLC3","level":2,"heading":"Control Structures - Basics","content":"<h3>Control Structures - Basics</h3>\n\n<table><tr><td>If Else\t\t</td><td><code>if <var>condition_1</var>:\n\t<var>...</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td> </td></tr>\n<tr><td> </td><td><code>if <var>condition_1</var>:\n\t<var>...</var>\nelif <var>condition_2</var>:\n\t<var>...</var>\nelse:\n\t<var>...</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td> </td></tr>\n<tr><td>For</td><td><code>for <var>i</var> in range(<var>max_plus_1</var>):\n\t<var>...</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td> </td></tr>\n<tr><td> </td><td><code>for <var>item</var> in <var>sequence_1</var>:\n\t<var>...</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td> </td></tr>\n<tr><td> </td><td><code>for <var>item</var> in <var>sequence_1</var>:\n\t<var>...</var>\n\tbreak\n\t<var>...</var>\n\tcontinue\nelse:\n\t<var>...</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td> </td></tr>\n<tr><td>Match</td><td><code>match <var>variable_1</var>:\n\n    case <var>value_1</var>:\n        <var>...</var>\n\n    case <var>value_2</var> | <var>value_3</var>:\n        <var>...</var>\n\n    case (<var>value_4_1</var>, <var>value_4_2</var>):\n        <var>...</var>\n\n    case <var>Class1</var>(<var>param_1</var>, <var>param_2</var>):\n        <var>...</var>\n\n    case <var>Enum1</var>.<var>ENUM_1</var>:\n        <var>...</var>\n\n    case (<var>value_8</var>, <var>x</var>):\n        <var>...</var>\n\n    case (<var>value_8</var>, <var>x</var>) if <var>condition</var>:\n        <var>...</var>   \n\n    case _:\n        <var>...</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td> </td></tr>\n<tr><td>While</td><td><code>while <var>condition</var>:\n\t<var>...</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td> </td></tr>\n<tr><td> </td><td><code>while <var>condition</var>:\n\t<var>...</var>\n\tbreak\n\t<var>...</var>\n\tcontinue\n\t<var>...</var>\nelse:\n\t<var>...</var></code></td></tr></table>\n\n\n\n"},{"id":"pnWX","level":2,"heading":"If Else","content":"<h3>If Else</h3>\n\n<div class=\"codebox\">if <var>condition_1</var>:\n\t<var>...</var>\nelif <var>condition_2</var>:\n\t<var>...</var>\nelse:\n\t<var>...</var></div>\n\n\n"},{"id":"0MnX","level":2,"heading":"For","content":"<h3>For</h3>\n\n\n\n"},{"id":"zWhR","level":3,"heading":"For - Basics","content":"<h4>For - Basics</h4>\n\n<div class=\"codebox\">for <var>item</var> in <var>sequence_1</var>:\n\t<var>...</var></div>\n\n<div class=\"codebox\">for <var>i</var> in range(<var>max_plus_1</var>):\n\t<var>...</var></div>\n\n<div class=\"codebox\">for <var>item_1</var>, <var>item_2</var>, <var>...</var> in <var>sequence_1</var>:      <span class=\"note\"># Unpack</span>\n\t<var>...</var></div>\n\n<div class=\"codebox\">for <var>item</var> in <var>sequence_1</var>:\n\t<var>...</var>\n\tbreak\n\t<var>...</var>\n\tcontinue\nelse:\n\t<var>...</var></div>\n\n\n\n"},{"id":"Emx8","level":3,"heading":"For - Else","content":"<h4>For - Else</h4>\n\n<div class=\"codebox\">for <var>i</var> in range(<var>range_options</var>):\n\t<var>...</var>\nelse:\n\t<var>...</var></div>\n\n\nThe <code>else</code> block executes after the <code>for</code> block completes.\n\n<code>break</code> skips the <code>else</code> block. \n\n\nExamples:\n\n<div class=\"codebox\">for <var>i</var> in range(3):\n\tprint(i)\nelse:\n\tprint(&quot;done&quot;)</div>\n\n\n\n"},{"id":"XUJe","level":3,"heading":"For - In Dict","content":"<h4>For - In Dict</h4>\n\n<div class=\"codebox\">for <var>key</var>, <var>element</var> in <var>dict_1</var>.items():\n\t<var>...</var></div>\n\n\n\n"},{"id":"KDDr","level":3,"heading":"For - In Range","content":"<h4>For - In Range</h4>\n\n<div class=\"codebox\">for <var>i</var> in range(<var>end_plus_1</var>):\n\t<var>...</var></div>\n\n<div class=\"codebox\">for <var>i</var> in range(<var>start</var>, <var>end_plus_1</var>):\n\t<var>...</var></div>\n\n\nLoops through a sequence of values from 0 (or <code>start</code> if given) to one value before the end value.\n\n\nExamples:\n\n<div class=\"codebox\">for <var>i</var> in range(5):                        <span class=\"note\"># Loops through 0, 1, 2, 3, 4.</span>\n\t<var>...</var></div>\n\n<div class=\"codebox\">for <var>i</var> in range(1,5):                  <span class=\"note\"># Loops through 1, 2, 3, 4.</span>\n\t<var>...</var></div>\n\n\n\n"},{"id":"0fkB","level":3,"heading":"For - In Range With Step","content":"<h4>For - In Range With Step</h4>\n\n<div class=\"codebox\">for <var>i</var> in range(<var>start</var>, <var>end_plus_one</var>, <var>step</var>):\n\t<var>...</var></div>\n\n\nExample:\n\n<div class=\"codebox\">for <var>i</var> in range(2, 9, 2):                  <span class=\"note\"># Loops through 2, 4, 6, 8.</span>\n\tprint(<var>i</var>)</div>\n\n\n\n"},{"id":"zhMZ","level":3,"heading":"For - In Sequence","content":"<h4>For - In Sequence</h4>\n\n<div class=\"codebox\">for <var>element</var> in <var>sequence</var>:\n\t<var>...</var></div>\n\n<div class=\"codebox\">for <var>element</var> in <var>sequence</var>:\n\t<var>...</var>\n\tbreak                               <span class=\"note\"># Exit for loop.</span>\n\t<var>...</var>\n\tcontinue                            <span class=\"note\"># Jump to next iteration.</span></div>\n\nA sequence can be a list, array, etc.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>'a'</var>, <var>'b'</var>, <var>'c'</var>]\n\nfor <var>item</var> in <var>list_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"yQ7J","level":3,"heading":"For - In Sequence of Tuples, Unpacked","content":"<h4>For - In Sequence of Tuples, Unpacked</h4>\n\n<div class=\"codebox\">for <var>item_1</var>, <var>item_2</var>, <var>...</var> in <var>tuple_sequence</var>:\n\t<var>...</var></div>\n\nSeparates inside each element inside <code><var>tuple_sequence</var></code>.\nWorks for lists too.\n\n\nExample:\n\n<div class=\"codebox\"><var>tuples</var> = [(<var>&quot;tuple 1&quot;</var>, <var>1</var>), (<var>&quot;tuple 2&quot;</var>, <var>2</var>), (<var>&quot;tuple 3&quot;</var>, <var>3</var>)]\n\nfor <var>name</var>, <var>value</var> in <var>tuples</var>:\n\tprint(<var>name</var>, &quot;:&quot;, <var>value</var>)\n\n<span class=\"note\"># Prints:\n#\n# tuple 1 : 1\n# tuple 2 : 2\n# tuple 3 : 3</span></div>\n\n\n\n"},{"id":"UE6a","level":3,"heading":"For - Nested For","content":"<h4>For - Nested For</h4>\n\n<div class=\"codebox\">for <var>i</var> in range(<var>count_1</var>):\n\tfor <var>j</var> in range(<var>count_2</var>):\n\t\t<var>...</var></div>\n\nExample:\n\n<div class=\"codebox\">for <var>tens</var> in range(2):\n    for <var>units</var> in range(5):\n    \tprint(str(<var>tens</var>) + str(<var>units</var>))</div>\n\n\n\n"},{"id":"kSEh","level":3,"heading":"For - Break Continue","content":"<h4>For - Break Continue</h4>\n\n<div class=\"codebox\">for <var>item</var> in <var>sequence_1</var>:\n\t<var>...</var>\n\tbreak\n\t<var>...</var>\n\tcontinue</div>\n\n\n\n"},{"id":"1Bmp","level":2,"heading":"Match","content":"<h3>Match</h3>\n\nPython Version: 3.10+\n\n\n"},{"id":"QK8k","level":3,"heading":"Match - Basics","content":"<h4>Match - Basics</h4>\n\n<div class=\"codebox\">match <var>expression</var>:\n\n    case <var>value_1</var>:\n        <var>...</var>\n\n    case <var>value_2</var> | <var>value_3</var>:\t\t\t<span class=\"note\">Matches Either Value</span>\n        <var>...</var>\n\n    case (<var>value_4_1</var>, <var>value_4_2</var>):\t<span class=\"note\">Tuple</span>\n        <var>...</var>\n\n    case [<var>value_5_1</var>, <var>value_5_2</var>]:\t<span class=\"note\">List</span>\n        <var>...</var>\n\n    case {<var>key_6</var>: <var>value_6</var>}:\t\t\t<span class=\"note\">Dict (Contains)</span>\n        <var>...</var>\n\n    case <var>Class1</var>(<var>field_1</var>, <var>field_2</var>):\t<span class=\"note\">Class</span>\n        <var>...</var>\n\n    case <var>Enum1</var>.<var>ENUM_1</var>:\t\t\t\t<span class=\"note\">Enum</span>\n        <var>...</var>\n\n    case (<var>value_8</var>, <var>x</var>):\t\t\t\t<span class=\"note\">Bind To Variable</span>\n        <var>...</var>\n\n    case (<var>value_8</var>, <var>x</var>) if <var>condition</var>:\n        <var>...</var>   \n\n    case _:\t\t\t\t\t\t\t<span class=\"note\">Unmatched</span>\n        <var>...</var></div>\n\n\n\n"},{"id":"w1fh","level":3,"heading":"Match - Bind To Variable","content":"<h4>Match - Bind To Variable</h4>\n\n<div class=\"codebox\">match <var>expression</var>:\n    case <var>variable_1</var>:\n        <var>...</var>\n    case (<var>value</var>, <var>variable_1</var>):\n        <var>...</var>\n    case (<var>variable_1</var>, <var>variable_2</var>, <var>variable_3</var>):\n        <var>...</var>\n    case _:\n        <var>...</var></div>\n\n\nCaptures one or more values and binds them to variables.\n\n\nExample:\n\n<div class=\"codebox\"><var>item_1</var> = (<var>1</var>, <var>2</var>)\n\nmatch <var>item_1</var>:\n    case (1, <var>a</var>):\n        print (f'(1, a = {<var>a</var>})')\n    case (2, <var>b</var>):\n        print (f'(2, b = {<var>b</var>})')\n    case _:\n        print('Unmatched Value')\n\n<span class=\"note\"># Prints: (1, a = 2)</span></div>\n\n\n\n"},{"id":"H9yk","level":3,"heading":"Match - Match Specific Values","content":"<h4>Match - Match Specific Values</h4>\n\n<div class=\"codebox\">match <var>expression</var>:\n    case <var>value_1</var>:\n        <var>...</var>\n    case <var>value_2</var> | <var>value_3</var>:\n        <var>...</var>\n    case _:\n        <var>...</var></div>\n\n\nMatches the value of the variable with the value of the case statements.\nIf matched, the case statement will execute.\n\n\nExamples:\n\n<div class=\"codebox\"><var>int_1</var> = 2\n\nmatch <var>int_1</var>:\n    case <var>1</var>:\n        print ('Value 1')\n    case <var>2</var> | <var>3</var>:\n        print ('Value 2 or 3')\n    case _:\n        print ('Unmatched Value')\n\n<span class=\"note\"># Prints: 'Value 2 or 3'</span></div>\n\n\n<div class=\"codebox\"><var>month</var> = '<var>feb</var>'\n\nmatch <var>int_1</var>:\n    case '<var>jan</var>':\n        print ('January')\n    case '<var>feb</var>':\n        print ('February')\n    case _:\n        print ('Unmatched Month')\n\n<span class=\"note\"># Prints: 'It's February'</span></div>\n\n\n\n"},{"id":"pmxN","level":3,"heading":"Match - Match 'Constants'","content":"<h4>Match - Match 'Constants'</h4>\n\n<div class=\"codebox\">class <var>Constants</var>:\n    <var>CONSTANT_1</var> = <var>value_1</var>\n    <var>CONSTANT_2</var> = <var>value_2</var>\n\nmatch <var>value_1</var>:\n    case <var>Constants</var>.<var>CONSTANT_1</var>:\n        <var>...</var>\n    case <var>Constants</var>.<var>CONSTANT_2</var>:\n        <var>...</var>\n    case _:\n        <var>...</var></div>\n\n\nDefine constants in a class and reference them statically.\n\nNote: If you do not include the class name, <code>match</code> will think these are structural pattern variables and will assign values to them.\n\n\n<div class=\"codebox\">class <var>Status</var>:\n\t<var>OK</var> = '<var>ok</var>'\n\t<var>ERROR</var> = '<var>error</var>'\n\n<var>status</var> = '<var>ok</var>'\n\nmatch <var>status</var>:\n    case <var>Status</var>.<var>OK</var>:\n        print (&quot;Status OK&quot;)\n    case <var>Status</var>.<var>ERROR</var>:\n        print (&quot;Status Error&quot;)\n    case _:\n        print (&quot;Status Unknown&quot;)\n\n<span class=\"note\"># Prints: &quot;Status OK&quot;</span></div>\n\n\n\n"},{"id":"1MYF","level":3,"heading":"Match - Match Classes","content":"<h4>Match - Match Classes</h4>\n\n<div class=\"codebox\">match <var>value</var>:\n    case <var>Class1</var>():\n        <var>...</var>\n    case <var>Class2</var>(<var>field_1</var>, <var>field_2</var>:\n        <var>...</var>\n    case _:\n        <var>...</var></div>\n\n\nMatches on class type and class field values.\n\n\n\n"},{"id":"UAfp","level":3,"heading":"Match - Match Dict","content":"<h4>Match - Match Dict</h4>\n\n<div class=\"codebox\">match <var>dict_1</var>:\n    case {<var>key_1</var>: <var>value_1</var>}:\n        <var>...</var>\n    case {<var>key_2</var>: <var>value_2</var>, <var>key_3</var>: <var>value_3</var>}:\n        <var>...</var>\n    case _:\n        <var>...</var></div>\n\n\nMatches key, value pairs in a dictionary.\nIf the pair exists, the case block will execute.\nThis is independent of any other values in the dict.\n\n\nExamples:\n\n<div class=\"codebox\"><var>dict_1</var> = {'<var>b</var>': '<var>b1</var>', '<var>z</var>': '<var>z1</var>'}\n\nmatch <var>dict_1</var>:\n    case {'<var>a</var>': '<var>a1</var>'}:\n        print('Value a:a1')\n    case {'<var>b</var>': '<var>b0</var>'}:\n        print('Value b:b0')\n    case {'<var>b</var>': '<var>b1</var>'}:\n        print('Value b:b1')\n    case _:\n        print('Unmatched value.')\n\n<span class=\"note\"># Prints: 'Value b:b1'</span></div>\n\n\n\n"},{"id":"f0jB","level":3,"heading":"Match - Match Enums","content":"<h4>Match - Match Enums</h4>\n\n<div class=\"codebox\">class <var>Enum1</var>(Enum):\n    <var>ENUM_1</var> = <var>value_1</var>\n    <var>ENUM_2</var> = <var>value_2</var>\n\nmatch <var>value_1</var>:\n    case <var>Enum1</var>.<var>ENUM_1</var>:\n        <var>...</var>\n    case <var>Enum1</var>.<var>ENUM_2</var>:\n        <var>...</var>\n    case _:\n        <var>...</var></div>\n\n\nMatches the values of an enumerated type.\n\n\n<div class=\"codebox\">from enum import Enum, auto\n\nclass <var>Status</var>(Enum):\n    <var>OK</var> = '<var>ok</var>'\n    <var>ERROR</var> = '<var>error</var>'\n\n<var>status</var> = <var>Status</var>.<var>OK</var>\n\nmatch <var>status</var>:\n    case <var>Status</var>.<var>OK</var>:\n        print (&quot;Status OK&quot;)\n    case <var>Status</var>.<var>ERROR</var>:\n        print (&quot;Status Error&quot;)\n    case _:\n        print (&quot;Status Unknown&quot;)\n\n<span class=\"note\"># Prints: &quot;Status OK&quot;</span></div>\n\n\n\n"},{"id":"G65u","level":3,"heading":"Match - Match Lists","content":"<h4>Match - Match Lists</h4>\n\n<div class=\"codebox\">match <var>list_1</var>:\n    case [<var>value_1</var>]:\n        <var>...</var>\n    case [<var>value_2</var>]:\n        <var>...</var>\n    case [<var>value_3_1</var>, <var>value_3_2</var>]:\n        <var>...</var>\n    case _:\n        <var>...</var></div>\n\n\nMatches the internal values of the variable with the value of the case statements.\nIf matched, the case statement will execute.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> =[<var>1</var>, <var>3</var>]\n\nmatch <var>list_1</var>:\n    case [<var>1</var>]:\n        print ('Value [1]')\n    case [<var>1</var>, <var>2</var>]:\n        print ('Value [1, 2]')\n    case [<var>1</var>, <var>3</var>]:\n        print ('Value [1, 3]')\n    case _:\n        print ('Unmatched Value')\n\n<span class=\"note\"># Prints: Value (1, 3)'</span></div>\n\n\n\n"},{"id":"77v3","level":3,"heading":"Match - Match Tuples","content":"<h4>Match - Match Tuples</h4>\n\n<div class=\"codebox\">match <var>tuple_1</var>:\n    case (<var>value_1</var>):\n        <var>...</var>\n    case (<var>value_2</var>):\n        <var>...</var>\n    case (<var>value_3_1</var>, <var>value_3_2</var>):\n        <var>...</var>\n    case _:\n        <var>...</var></div>\n\n\nMatches the internal values of the variable with the value of the case statements.\nIf matched, the case statement will execute.\n\n\nExample:\n\n<div class=\"codebox\"><var>tuple_1</var> =(<var>1</var>, <var>3</var>)\n\nmatch <var>tuple_1</var>:\n    case (<var>1</var>):\n        print ('Value (1)')\n    case (<var>1</var>, <var>2</var>):\n        print ('Value (1, 2)')\n    case (<var>1</var>, <var>3</var>):\n        print ('Value (1, 3)')\n    case _:\n        print ('Unmatched Value')\n\n<span class=\"note\"># Prints: Value (1, 3)'</span></div>\n\n\n\n"},{"id":"yTZB","level":3,"heading":"Match - Match If / Conditionally","content":"<h4>Match - Match If / Conditionally</h4>\n\n<div class=\"codebox\">match <var>item_1</var>:\n    case <var>...</var> if <var>condition</var>:\n        <var>...</var></div>\n\n\nWill match the case only when <var>condition</var> is met.\n\n\nExamples:\n\n<div class=\"codebox\"><var>value</var> = 2\n\nmatch <var>value</var>:\n    case <var>x</var> if <var>x</var> % 2 == 0:\n        print(f'Value {value} is even.')\n    case <var>x</var> if <var>x</var> % 2 == 1:\n        print(f'Value {x} is odd.')\n    case _:\n        print('Unmatched value')\n\n<span class=\"note\">Prints: 'Value 2 is even.'</span></div>\n\n<div class=\"codebox\"><var>item_1</var> = (<var>1</var>, <var>2</var>)\n\nmatch <var>item_1</var>:\n    case (<var>1</var>, <var>x</var>) if <var>x</var> % 2 == 0:\n        print('Value (1,x) x is even.')\n    case (<var>1</var>, <var>x</var>):\n        print('Value (1,x) x is odd.')\n    case _:\n        print('Unmatched value')\n\n<span class=\"note\">Prints: 'Value (1,x) x is even.'</span></div>\n\n\n\n"},{"id":"GDqy","level":3,"heading":"Match - Fall Through","content":"<h4>Match - Fall Through</h4>\n\nNot Supported.\n\nUnlike other languages, <code>match</code> does not fall through from one case block into the next. There is no need for a <code>break</code> statement within a case block to exit the block.\n\n\n\n"},{"id":"teQD","level":3,"heading":"Match - Unmatched / Wildcard","content":"<h4>Match - Unmatched / Wildcard</h4>\n\n<div class=\"codebox\">match <var>item_1</var>:\n\n    case _:\n        <var>...</var></div>\n\n\n<code>_</code> catches all values that were not matched in any other case statements.\n\n\n<div class=\"codebox\"><var>item_1</var> = <var>-1</var>\n\nmatch <var>item_1</var>:\n    case <var>1</var>:\n        print('Value 1')\n    case <var>2</var>:\n        print('Value 2')\n    case _:\n        print('Unmatched Value')\n\n<span class=\"note\">Prints: 'Unmatched Value'</span></div>\n\n\n\n"},{"id":"v8Fy","level":2,"heading":"While","content":"<h3>While</h3>\n\n\n"},{"id":"QYqx","level":3,"heading":"While - Basics","content":"<h4>While - Basics</h4>\n\n<div class=\"codebox\">while <var>condition</var>:\n\t<var>...</var></div>\n\n<div class=\"codebox\">while <var>condition</var>:\n\t<var>...</var>\nelse:\n\t<var>...</var>                     <span class=\"note\"># When <code>condition</code> = <code>False</code></span></div>\n\n<div class=\"codebox\">while <var>condition</var>:\n\t<var>...</var>\n\tbreak                   <span class=\"note\"># Exit for loop.</span>\n\t<var>...</var>\n\tcontinue                <span class=\"note\"># Jump to next iteration.</span>\n\t<var>...</var>\nelse:\n\t<var>...</var>                     <span class=\"note\"># When <code>condition</code> = <code>False</code></span></div>\n\n<code>else</code> block reached when <code>condition</code> = false only. Not called for break, exception, etc.\n\n\n\n"},{"id":"v8H0","level":3,"heading":"While","content":"<h4>While</h4>\n\n<div class=\"codebox\">while <var>condition</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"32w5","level":3,"heading":"While - While Else","content":"<h4>While - While Else</h4>\n\n<div class=\"codebox\">while <var>condition</var>:\n\t<var>...</var>\nelse:\n\t<var>...</var></div>\n\nExecutes else clause when <code>condition</code> is <code>False</code>.\n\n<code>break</code> skips the <code>else</code> block. \n\n\n\n"},{"id":"6syd","level":3,"heading":"While - Break Continue","content":"<h4>While - Break Continue</h4>\n<div class=\"codebox\">while <var>condition</var>:\n\t<var>...</var>\n\tbreak             <span class=\"note\"># Exit for loop.</span>\n\t<var>...</var>\n\tcontinue          <span class=\"note\"># Jump to next iteration.</span>\n\t<var>...</var></div>\n\n\n<code>break</code> will skip the <code>else</code> block if one is included.\n\n\n\n"},{"id":"ZkWp","level":2,"heading":"While - \"Do-While\" Form","content":"<h3>While - &quot;Do-While&quot; Form</h3>\n\n<div class=\"codebox\">while True:\n\n\t<var>...</var>\n\n\tif <var>exit_condition</var>:\n\t\tbreak</div>\n\n\nExecutes the while loop at least one time.\n\n\n\n"},{"id":"60TY","level":2,"heading":"Break","content":"<h3>Break</h3>\n\nExit Loop:\n\n<div class=\"codebox\">break</div>\n\nApplies to <code>for</code> and <code>while</code> loops.\n\n<code>break</code> will skip the <code>else</code> block if one is included.\n\n\n\n"},{"id":"afz9","level":2,"heading":"Continue","content":"<h3>Continue</h3>\n\nContinue on Next Iteration:\n\n<div class=\"codebox\">continue</div>\n\nApplies to <code>for</code> and <code>while</code> loops.\n\n\n\n"},{"id":"DNLt","level":2,"heading":"Pass","content":"<h3>Pass</h3>\n\n<div class=\"codebox\">pass</div>\n\nUse as a placeholder in places where a code block should exist but you don't have any code yet.\n\n\nExamples:\n\n<div class=\"codebox\">for <var>i</var> in range(<var>5</var>):\n\tpass</div>\n\n<div class=\"codebox\">def <var>new_function</var>():\n\tpass</div>\n\n\n\n"},{"id":"1ajU","level":1,"heading":"Variables","content":"<h1>Variables</h1>\n\n\n\n"},{"id":"vTPS","level":2,"heading":"Variable - Assign","content":"<h3>Variable - Assign</h3>\n\n<div class=\"codebox\"><var>name</var> = <var>value</var></div>\n\n\nCreates a new variable called <code><var>name</var></code> with value <code><var>value</var></code>.\n\n\nExamples:\n\n<div class=\"codebox\">int_1 = 11</div>\n\n<div class=\"codebox\">float_1 = 9.75</div>\n\n<div class=\"codebox\">string_1 = 1Life, the universe, and everything1</div>\n\n\n\n"},{"id":"WcH5","level":2,"heading":"Variable - Global - Create or Update","content":"<h3>Variable - Global - Create or Update</h3>\n\n<div class=\"codebox\">global <var>name</var></div>\n\n\nUpdates an existing global variable from inside a function.\nWithout the keyword <code>global</code>, Python will create a local variable.\n\nCreates a new global variabel if it doesn't exist.\n\n\nUsage:\n\n<div class=\"codebox\">def <var>some_function</var>():\n\n\tglobal <var>name</var>\n\t<var>name</var> = <var>value</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>global_1</var> = 'Global Value'\n\n\ndef <var>update_global</var>():\n\n\tglobal <var>global_1</var>\n\t<var>global_1</var> = <var>global_1</var> + ' + Update'\n\n\n<var>update_global</var>()\n\n<span class=\"note\"># Sets global_1 to 'Global Value + Update'</span></div>\n\n\n\n"},{"id":"2cax","level":2,"heading":"Variable - NonLocal - Update Parent Variable","content":"<h3>Variable - NonLocal - Update Parent Variable</h3>\n\n<div class=\"codebox\">nonlocal <var>value_1</var></div>\n\n\nUse <code>nonlocal</code> to update a variable outside the scope of a inner (nested) function.\n\nUsage:\n\n<div class=\"codebox\">def <var>parent_function</var>():\n\n\t<var>value_1</var> = <var>...</var>\n\n\tdef <var>inner_function</var>():\n\n\t\tnonlocal <var>value_1</var>\n\t\t<var>value_1</var> = <var>new_value</var></div>\n\nWithout the keyword <code>nonlocal</code>, Python will create a local variable.\nThe non-local variable must be in scope of the nested function declaration.\nWorks with multi-level nesting.\nYou can not create a non-existing variable.\n\n\nNote:\n\nThe function already has read access to the parent variables through closure.\nConsider avoiding updating the values.\n\n\nExample:\n\n<div class=\"codebox\">def <var>parent_function</var>:\n\n\t<var>count</var> = 0\n\n\tdef <var>update_count</var>():\n\n\t\tnonlocal <var>count</var>\n\t\t<var>count</var> += 1\n\n\t<var>update_count</var>()\n\n\t<span class=\"note\"># count is now 1</span></div>\n\n\n\n"},{"id":"z1kk","level":2,"heading":"Variable - Equals?","content":"<h3>Variable - Equals?</h3>\n\n<div class=\"codebox\">= <var>item_1</var> == <var>item_2</var></div>\n\n\nReturns true if <code><var>item_1</var></code> is equal to <code><var>item_2</var></code>.\n\n\n\n\n\n"},{"id":"4Ljx","level":2,"heading":"Variable - Cast","content":"<h3>Variable - Cast</h3>\n\n<div class=\"codebox\">= <var>new_type</var>(<var>item_1</var>)</div>\n\n\nConverts <code><var>item_1</var></code> into a variable of type <code><var>new_type</var></code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>float_1</var> = <var>10.5</var>\n\n<var>int_1</var> = int(<var>float_1</var>)                       <span class=\"note\"># Converts float 10.5 into integer 10.</span></div>\n\n\n\n"},{"id":"1e4q","level":2,"heading":"Variable - Delete","content":"<h3>Variable - Delete</h3>\n\n<div class=\"codebox\">del <var>variable_1</var></div>\n\n\nRemoves a variable from memory.\n\n\nExample:\n\n<div class=\"codebox\"><var>a</var> = 10\nprint(<var>a</var>)\n\ndel <var>a</var>\nprint(<var>a</var>)\n\n<span class=\"note\"># Returns Error:\n# ...\n# NameError: name 'a' is not defined</span></div>\n\n\n\n"},{"id":"yEyU","level":2,"heading":"Variable - Exists?","content":"<h3>Variable - Exists?</h3>\n\nExists In Local Scope?\n\n<div class=\"codebox\">= '<var>variable_name</var>' in locals()</div>\n\nExists In Global Scope?\n\n<div class=\"codebox\">= '<var>variable_name</var>' in globals()</div>\n\n\nReturns <code>True</code> if in the checked scope.\n\n\nExample:\n\n<div class=\"codebox\"><var>a</var> = 10\n\nif '<var>a</var>' in locals():\n\tprint('a exists')\n\n<span class=\"note\"># Prints: a exists</span></div>\n\n\n\n"},{"id":"8URg","level":2,"heading":"Variable Type - Get Type","content":"<h3>Variable Type - Get Type</h3>\n\n<div class=\"codebox\">= type(<var>item_1</var>)</div>\n\nReturns the item type.\n\n\nExample:\n\n<div class=\"codebox\"><var>item_1</var> = <var>1.0</var>\n<var>item_1_type</var> = type(<var>item_1</var>)                  <span class=\"note\"># Returns <code>class 'float'</code>.</span></div>\n\n\n\n"},{"id":"GpF0","level":2,"heading":"Variable Type - Get Type Name","content":"<h3>Variable Type - Get Type Name</h3>\n\n<div class=\"codebox\">= type(<var>item_1</var>).__name__</div>\n\nReturns the type name of the item.\n\n\nExample:\n\n<div class=\"codebox\"><var>float_1</var> = <var>1.0</var>\nprint(type(<var>float_1</var>).__name__)         <span class=\"note\"># Prints <code>'float'</code>.</span></div>\n\n\n\n"},{"id":"EGgk","level":2,"heading":"Variable Type - Is Type?","content":"<h3>Variable Type - Is Type?</h3>\n\n<div class=\"codebox\">= type(<var>item_1</var>) is <var>type_1</var></div>\n\n\nReturns true if <code><var>item_1</var></code> is the same type as <code><var>type_1</var></code>.\n\n\nExample:\n\n<div class=\"codebox\">item_1 = [1, 2, 3]\n\nif type(<var>item_1</var>) is list:\n\t<var>...</var>                                   <span class=\"note\"># Executes if arg_1 is of type <code>list</code>.</span></div>\n\n\n\n"},{"id":"qUma","level":2,"heading":"Variable Type - Is Type or Subtype?","content":"<h3>Variable Type - Is Type or Subtype?</h3>\n\n<div class=\"codebox\">= isinstance(<var>item_1</var>, <var>type_1</var>)</div>\n\nIs One of These:\n\n<div class=\"codebox\">= isinstance(<var>item_1</var>, (<var>type_1</var>, <var>type_2</var>, <var>...</var>))</div>\n\n\nReturns true if <code><var>item_1</var></code> is a type or a subtype of <code><var>type_1</var></code>.\n\n\nExamples:\n\n<div class=\"codebox\">item_1 = []\n\nif isinstance(<var>item_1</var>, list):\n\t<var>...</var></div>\n\n<div class=\"codebox\">item_2 = 10\n\nif isinstance(<var>item_1</var>, (int, complex, float)):\n\t<var>...</var></div>\n\n\n\n"},{"id":"ZkB1","level":2,"heading":"Variable Type - Is Subtype?","content":"<h3>Variable Type - Is Subtype?</h3>\n\n<div class=\"codebox\">= issubclass(<var>item_1</var>, <var>type_1</var>)</div>\n\n\nReturns true if <code><var>item_1</var></code> is a subtype of <code><var>type_1</var></code>.@\n\n\n\n"},{"id":"2TNT","level":2,"heading":"Variables - Memory Address","content":"<h3>Variables - Memory Address</h3>\n\n<div class=\"codebox\">= id(<var>a</var>)</div>\n\nReturns: <code>int</code>\n\n\nReturns the memory address of the variable.\n\n\n\n"},{"id":"CadG","level":2,"heading":"Variables - Swap","content":"<h3>Variables - Swap</h3>\n\n<div class=\"codebox\"><var>a</var>, <var>b</var> = <var>b</var>, <var>a</var></div>\n\n\nThis is an easy way to swap the values of <code><var>a</var></code> and <code><var>b</var></code>.\n\n\n\n"},{"id":"VB6y","level":1,"heading":"Data Types - Built In","content":"<h1>Data Types - Built In</h1>\n\n\n\n"},{"id":"FF38","level":2,"heading":"Standard Types","content":"<h3>Standard Types</h3>\n\n\t<code>bool</code>\t\t\t(Boolean)\n\t<code>int</code>\t\t\t\t(Integer)\n\t<code>complex</code>\t\t\t(Complex Number)\n\t<code>float</code>\t\t\t(Floating Point)   \n\t<code>str</code>\t\t\t\t(String)\n\n\n\n"},{"id":"4H3J","level":2,"heading":"Sequence Types","content":"<h3>Sequence Types</h3>\n\n\t<code>list</code>\t\t\t(List / Mutable Array)\n\t<code>tuple</code>\t\t\t(Immutable Array)\n\t<code>range</code>\t\t\t(Immutable Integers)\n\n\n\n"},{"id":"E7yE","level":2,"heading":"Collections","content":"<h3>Collections</h3>\n\n\t<code>dict</code>\t\t\t(Dictionary of Key Value Pairs)\n\t<code>set</code>\t\t\t\t(Mutable Set)\n\t<code>frozenset</code>\t\t(Immutable Set)\n\n\n\n"},{"id":"sMQY","level":2,"heading":"Mutable Types","content":"<h3>Mutable Types</h3>\n\n\t<code>bytearray</code>\n\t<code>classes</code>\n\t<code>class instances</code>\n\t<code>dict</code>\n\t<code>list</code>\n\t<code>set</code>\n\n\n\n"},{"id":"myNZ","level":2,"heading":"Immutable Types","content":"<h3>Immutable Types</h3>\n\n\t<code>boolean</code>\n\t<code>byte</code>\n\t<code>float</code>\n\t<code>frozenset</code>\n\t<code>int</code>\n\t<code>long</code>\n\t<code>complex</code>\n\t<code>str</code>\n\t<code>tuple</code>\n\n\n\n"},{"id":"T5aC","level":1,"heading":"Data Types - From Library","content":"<h1>Data Types - From Library</h1>\n\n\n\n"},{"id":"hEdW","level":2,"heading":"Date And Time","content":"<h4>Date And Time</h4>\n\n\t<code>date</code>\t\t\t\t(Date Only)\n\t<code>datetime</code>\t\t\t(Date And Time)\n\t<code>timedelta</code>\t\t\t(Time Difference)\n\n\t<code>float</code> (<code>timestamp</code>)\t\t(Epoch Time, Seconds Since 1970) (Use <code>float</code>)\n\n\n\n"},{"id":"E7zG","level":2,"heading":"Collections","content":"<h4>Collections</h4>\n\n\t<code>chainmap</code>\n\t<code>counter</code>\n\t<code>deque</code>\n\t<code>defaultdict</code>\n\t<code>namedtuple</code>\n\t<code>ordereddict</code>\n\t<code>userdict</code>\n\t<code>userlist</code>\n\t<code>userstring</code>\n\n\t<code>array</code>\t\t\t(List Constrained To A Single Basic Type)\n\n\n\n"},{"id":"NnXJ","level":2,"heading":"Enumerations","content":"<h4>Enumerations</h4>\n\n\t<code>enum</code>\n\n\n\n"},{"id":"4qV5","level":1,"heading":"Literals","content":"<h1>Literals</h1>\n\n\n"},{"id":"Vp3E","level":2,"heading":"Literals - Basics","content":"<h2>Literals - Basics</h2>\n\n<table><tr><td>Boolean Literal\t</td><td><code>= True | False</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Integer Literal</td><td><code>= 11</code></td></tr>\n<tr><td> </td><td><code>= -11</code></td></tr>\n<tr><td> </td><td><code>= 12_345</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Binary Literal</td><td><code>= 0b<var>1011</var></code></td></tr>\n<tr><td>Octal Literal</td><td><code>= 0o<var>13</var></code></td></tr>\n<tr><td>Hex Literal</td><td><code>= 0x<var>0B</var></code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Float Literal</td><td><code>= 11.23</code></td></tr>\n<tr><td> </td><td><code>= -1.23</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Complex Literal</td><td><code>= <var>1</var> + <var>2</var>j</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>String Literal</td><td><code>= '<var>A String</var>'</code></td></tr>\n<tr><td> </td><td><code>= &quot;<var>A String</var>&quot;</code></td></tr>\n<tr><td> </td><td><code>= '''<var>A String</var>'''</code></td></tr>\n<tr><td> </td><td><code>= &quot;&quot;&quot;<var>A String</var>&quot;&quot;&quot;</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Raw String Literal</td><td><code>= r'<var>A\\String</var>'</code></td></tr>\n<tr><td> </td><td><code>= r&quot;<var>A\\String</var>&quot;</code></td></tr>\n<tr><td> </td><td><code>= r'''<var>A\\String</var>'''</code></td></tr>\n<tr><td> </td><td><code>= r&quot;&quot;&quot;<var>A\\String</var>&quot;&quot;&quot;</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>F-String Literal</td><td><code>= f'<var>...</var> {<var>var1</var>} <var>...</var>'</code></td></tr>\n<tr><td> </td><td><code>= f&quot;<var>...</var> {<var>var1</var>} <var>...</var>&quot;</code></td></tr>\n<tr><td> </td><td><code>= f'''<var>...</var> {<var>var1</var>} <var>...</var>'''</code></td></tr>\n<tr><td> </td><td><code>= f&quot;&quot;&quot;<var>...</var> {<var>var1</var>} <var>...</var>&quot;&quot;&quot;</code></td></tr></table>\n\n\n\n"},{"id":"cwaH","level":2,"heading":"Literals - Details","content":"<h2>Literals - Details</h2>\n\n\n"},{"id":"AfSE","level":3,"heading":"Boolean Literal","content":"<h3>Boolean Literal</h3>\n\n<div class=\"codebox\">= True</div>\n\n<div class=\"codebox\">= False</div>\n\n\n\n"},{"id":"GuEk","level":3,"heading":"Complex Literal","content":"<h3>Complex Literal</h3>\n\n<div class=\"codebox\">= <var>1</var> + <var>2</var>J</div>\n\n<div class=\"codebox\">= <var>3</var>J</div>\n\n\n\n"},{"id":"yk0p","level":3,"heading":"Integer Literal - Decimal","content":"<h3>Integer Literal - Decimal</h3>\n\n<div class=\"codebox\">= <var>11</var></div>\n\n<div class=\"codebox\">= -<var>11</var></div>\n\n<div class=\"codebox\">= <var>12_345</var></div>\n\n\nUnderscores are for readability and are ignored by Python.\n\n\n\n"},{"id":"GgCk","level":3,"heading":"Integer Literal - Binary","content":"<h3>Integer Literal - Binary</h3>\n\n<div class=\"codebox\">= 0b<var>1011</var></div>\n\n<div class=\"codebox\">= 0b<var>1011_1010</var></div>\n\n\nUnderscores are for readability and are ignored by Python.\n\n\n\n"},{"id":"sAdU","level":3,"heading":"Integer Literal - Hex","content":"<h3>Integer Literal - Hex</h3>\n\n<div class=\"codebox\">= 0x<var>0B</var></div>\n\n\n\n"},{"id":"y0MT","level":3,"heading":"Integer Literal - Octal","content":"<h3>Integer Literal - Octal</h3>\n\n<div class=\"codebox\">= 0o<var>13</var></div>\n\n\n\n"},{"id":"h7Sq","level":3,"heading":"Float Literal","content":"<h3>Float Literal</h3>\n\n<div class=\"codebox\">= <var>42</var>.<var>42</var></div>\n\n<div class=\"codebox\">= -<var>42</var>.<var>42</var></div>\n\n<div class=\"codebox\">= <var>12_345</var>.<var>67_89</var></div>\n\n\nUnderscores are for readability and are ignored by Python.\n\n\n\n"},{"id":"BPyT","level":3,"heading":"String Literals","content":"<h3>String Literals</h3>\n\n<div class=\"codebox\">= '<var>A String</var>'</div>\n\n<div class=\"codebox\">= &quot;<var>A String</var>&quot;</div>\n\n<div class=\"codebox\">= '''<var>A Multiline\nString</var>'''</div>\n\n<div class=\"codebox\">= &quot;&quot;&quot;<var>A Multiline\nString</var>&quot;&quot;&quot;</div>\n\n\n\n"},{"id":"d2zE","level":3,"heading":"String Literals - F-String","content":"<h3>String Literals - F-String</h3>\n\n<div class=\"codebox\">= f'<var>F-String with Value</var> {<var>item1</var>}'</div>\n\n<div class=\"codebox\">= f&quot;<var>F-String with Value</var> {<var>item1</var>}&quot;</div>\n\n<div class=\"codebox\">= f'''<var>Multiline F-String\nWith Value</var> {<var>item1</var>}'''</div>\n\n<div class=\"codebox\">= f&quot;&quot;&quot;<var>Multiline F-String\nWith Value</var> {<var>item1</var>}&quot;&quot;&quot;</div>\n\n\n\n"},{"id":"snuW","level":3,"heading":"String Literals - Raw String","content":"<h3>String Literals - Raw String</h3>\n\n<div class=\"codebox\">= r'<var>A\\Raw\\String</var>'</div>\n\n<div class=\"codebox\">= r&quot;<var>A\\Raw\\String</var>&quot;</div>\n\n<div class=\"codebox\">= r'''<var>A\\Raw\nMultiline\\String</var>'''</div>\n\n<div class=\"codebox\">= r&quot;&quot;&quot;<var>A\\Raw\nMultiline\\String</var>&quot;&quot;&quot;</div>\n\n\n\n"},{"id":"ck9c","level":3,"heading":"String Literals - Raw F-String","content":"<h3>String Literals - Raw F-String</h3>\n\n<div class=\"codebox\">= rf'<var>Raw\\F-String\\with\\Value\\</var>{<var>item1</var>}'</div>\n\n<div class=\"codebox\">= rf&quot;<var>Raw\\F-String\\with\\Value\\</var>{<var>item1</var>}&quot;</div>\n\n<div class=\"codebox\">= rf'''<var>Multiline\\Raw\\F-String\nWith\\Value</var> {<var>item1</var>}'''</div>\n\n<div class=\"codebox\">= rf&quot;&quot;&quot;<var>Multiline\\Raw\\F-String\nWith\\Value</var> {<var>item1</var>}&quot;&quot;&quot;</div>\n\n\n\n"},{"id":"64rB","level":3,"heading":"String Literals - Escape Hex Value","content":"<h3>String Literals - Escape Hex Value</h3>\n\n<div class=\"codebox\">\\x<var>ff</var></div>\n\nBase:\n\n<div class=\"codebox\">\\x</div>\n\nEscapes a hex value into a string character.\n\n\nEquivalent:\n\n<div class=\"codebox\">= &quot;\\x61&quot;\n\n= &quot;a&quot;</div>\n\n\n\n"},{"id":"Y5PJ","level":3,"heading":"String Literals - Escape Octal Value","content":"<h3>String Literals - Escape Octal Value</h3>\n\n<div class=\"codebox\">\\<var>777</var></div>\n\nBase:\n\n<div class=\"codebox\">\\</div>\n\nEscapes an _ value into a string character.\n\nWatch for any trailing digit characters that are not part of the octal value. They will be incorporated.\n\n\nEquivalent:\n\n<div class=\"codebox\">= &quot;\\141&quot;\n\n= &quot;a&quot;</div>\n\n\n\n"},{"id":"hq1z","level":3,"heading":"String Literals - Escape Unicode, 16-Bit","content":"<h3>String Literals - Escape Unicode, 16-Bit</h3>\n\n<div class=\"codebox\">\\u<var>ffff</var></div>\n\nBase:\n\n<div class=\"codebox\">\\u</div>\n\nEscapes a 16 bit Unicode hex value into a string character.\n\nRequires 4 hex digits.\n\n\nEquivalent:\n\n<div class=\"codebox\">= &quot;\\u0061&quot;\n\n= &quot;a&quot;</div>\n\n\n\n"},{"id":"dZds","level":3,"heading":"String Literals - Escape Unicode, 32-Bit","content":"<h3>String Literals - Escape Unicode, 32-Bit</h3>\n\n<div class=\"codebox\">\\U<var>ffffffff</var></div>\n\nBase:\n\n<div class=\"codebox\">\\U</div>\n\nEscapes a 32 bit Unicode hex value into a string character.\n\nRequires 8 hex digits.\n\n\nEquivalent:\n\n<div class=\"codebox\">= &quot;\\U00000061&quot;\n\n= &quot;a&quot;</div>\n\n<div class=\"codebox\">= &quot;\\U0001f44d&quot;\n\n= &quot;\uD83D\uDC4D&quot;</div>\n\n\n\n"},{"id":"NMvg","level":3,"heading":"String Literals - Escape Unicode Character / Emoji","content":"<h3>String Literals - Escape Unicode Character / Emoji</h3>\n\n<div class=\"codebox\">\\N{<var>name</var>}</div>\n\nBase:\n\n<div class=\"codebox\">\\N{}</div>\n\nEscapes an unicode character name into a string character.\n\n\nEquivalent:\n\n<div class=\"codebox\">= &quot;\\N{thumbs up sign}&quot;\n\n= &quot;\uD83D\uDC4D&quot;</div>\n\n\n\n"},{"id":"UHpm","level":1,"heading":"None Type","content":"<h1>None Type</h1>\n\n<div class=\"codebox\">= None</div>\n\n\nAssigns 'no value' to a variable.\n\n<code>None</code> is a singleton in Python.\n\n\nExamples:\n\n<div class=\"codebox\"><var>var_1</var> = None</div>\n\n<div class=\"codebox\">if <var>var_1</var> is None:\n\t<var>...</var></div>\n\n\n\n"},{"id":"5AYf","level":2,"heading":"None - Is None","content":"<h3>None - Is None</h3>\n\n<div class=\"codebox\">= <var>item_1</var> is None</div>\n\n<div class=\"codebox\">if not <var>item_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"BhMa","level":2,"heading":"None - Not None","content":"<h3>None - Not None</h3>\n\n<div class=\"codebox\">= <var>item_1</var> is not None</div>\n\n<div class=\"codebox\">if <var>item_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"qA4r","level":1,"heading":"Boolean","content":"<h1>Boolean</h1>\n\n<div class=\"codebox\">= True\n= False</div>\n\nType: <code>bool</code>\n\n\nImmutable.\nSubset of Integer\n\n\n\n\n"},{"id":"BF5h","level":1,"heading":"Byte","content":"<h1>Byte</h1>\n\n<div class=\"codebox\">= b&quot;<var>String to bytes.</var>&quot;\n\n= bytes([<var>66, 121, 116, 101, 115</var>])     <span class=\"note\">#1</span></div>\n\n\nType: <code>bytes</code>\n\n\n#1  <span class=\"dim\">-</span>  Same as b'Bytes'.\n\n\nCreates a byte array.\n\n\n\n"},{"id":"HwdU","level":1,"heading":"Byte Operations","content":"<h1>Byte Operations</h1>\n\n\n\n"},{"id":"hx9w","level":2,"heading":"Bytes - Length","content":"<h3>Bytes - Length</h3>\n\n<div class=\"codebox\">= len(<var>bytes_1</var>)</div>\n\n\n\n"},{"id":"0C9U","level":1,"heading":"Complex Number","content":"<h1>Complex Number</h1>\n\n<div class=\"codebox\">= <var>real</var> + <var>imaginary</var>j</div>\n\n<div class=\"codebox\">= <var>imaginary</var>j</div>\n\n<div class=\"codebox\">= complex(<var>real</var>, <var>imaginary</var>)</div>\n\nType: <code>complex</code>\n\n\nWhy J:\nBecaues i looks too much like a 1.\nBecause j is used in engineering.\n\n\nExample:\n\n<div class=\"codebox\"><var>complex_1</var> = <var>1</var> + <var>2</var>j</div>\n\n<div class=\"codebox\"><var>complex_2</var> = <var>3</var>j</div>\n\n\n\n"},{"id":"x0Hz","level":1,"heading":"Complex Number Operations","content":"<h1>Complex Number Operations</h1>\n\n\n\n"},{"id":"3Zxe","level":2,"heading":"Complex Number - Real Part","content":"<h3>Complex Number - Real Part</h3>\n\n<div class=\"codebox\">= <var>complex_1</var>.real</div>\n\n\n\n"},{"id":"ZVG1","level":2,"heading":"Complex Number - Imaginary Part","content":"<h3>Complex Number - Imaginary Part</h3>\n\n<div class=\"codebox\">= <var>complex_1</var>.imag</div>\n\n\n\n"},{"id":"4CmC","level":1,"heading":"Decimal","content":"<h1>Decimal</h1>\n\nFrom String (Preferred):\n\n<div class=\"codebox\">from decimal import Decimal\n\n= Decimal('<var>10.99</var>')</div>\n\n<div class=\"codebox\">= Decimal('<var>NaN</var>')</div>\n\nFrom Float:\n\n<div class=\"codebox\"> = Decimal(<var>10.99</var>)</div>\n\n\nCreates an immutable decimal value.\nKeeps the precision the decimal was created to.\nUse for currency values where accuracy is important.\n\n\n<ul><li>Prefer creating from strings over floats.</li>\n<li>Floats are stored at binary level precision.</li></ul>\n\n\nExample:\n\nFrom String:\n\n<div class=\"codebox\">from decimal import Decimal\n\n<var>decimal_1</var> = Decimal('<var>12.34</var>')\n\nprint(<var>decimal_1</var>)\n\n<span class=\"note\"># Prints 12.34</span></div>\n\nFrom Float:\n\n<div class=\"codebox\">from decimal import Decimal\n\n<var>decimal_1</var> = Decimal(<var>12.34</var>)\n\nprint(<var>decimal_1</var>)\n\n<span class=\"note\"># Prints 12.339999999999999857891452847979962825775146484375</span></div>\n\n\n\n"},{"id":"PYwe","level":1,"heading":"Decimal Operations","content":"<h1>Decimal Operations</h1>\n\n\n"},{"id":"pvg2","level":2,"heading":"Decimal - Arithmetic Operators","content":"<h3>Decimal - Arithmetic Operators</h3>\n\nSupports:\n\n<div class=\"codebox\"><table><tr><td>decimal</td><td><var>operator</var></td><td>decimal</td></tr>\n<tr><td>decimal</td><td><var>operator</var></td><td>int</td></tr></table></div>\n\n<div class=\"codebox\"><table><tr><td><var>operators </var></td><td><code>+ - * ** / // % &lt; &lt;= == != &gt;= &gt;</code></td></tr></table></div>\n\nNot Supported:\n\n<div class=\"codebox\"><table><tr><td>decimal</td><td><var>operator</var></td><td>float</td></tr></table></div>\n\n\nExamples:\n\nDecimal To Decimal:\n\n<div class=\"codebox\">from decimal import Decimal\n\n<var>decimal_1</var> = Decimal('<var>42</var>')\n<var>decimal_2</var> = Decimal('<var>0.42</var>')\n\n<var>result</var> = <var>decimal_1</var> + <var>decimal_2</var>\n\n<span class=\"note\"># Returns Decimal('42.42')</span></div>\n\nInteger To Decimal:\n\n<div class=\"codebox\">from decimal import Decimal\n\n<var>decimal_1</var> = Decimal('<var>0.42</var>')\n<var>int_2</var> = 42\n\n<var>result</var> = <var>decimal_1</var> + <var>int_2</var>\n\n<span class=\"note\"># Returns Decimal('42.42')</span></div>\n\n\n\n"},{"id":"bsMk","level":2,"heading":"Decimal - Rounding - Get","content":"<h3>Decimal - Rounding - Get</h3>\n\n<div class=\"codebox\">from decimal import getcontext\n\n= getcontext().rounding</div>\n\n\nGets the rounding performed on decimal operations (*, /, etc.).\nThe default rounding is <code>ROUND_HALF_EVEN</code>.\n\n\n\n"},{"id":"bvw4","level":2,"heading":"Decimal - Rounding - Set","content":"<h3>Decimal - Rounding - Set</h3>\n\n<div class=\"codebox\">from decimal import getcontext\n\ngetcontext().rounding = <var>rounding</var></div>\n\n\nSets the rounding performed on decimal operations (*, /, etc.).\nThe default rounding is <code>ROUND_HALF_EVEN</code>.\n\n\nRounding Values:\n\n<div class=\"card\"><table><tr><td><code>decimal.ROUND_CEILING</code></td><td>Round Up To + Infinity</td><td><code> 0.5 -&gt;  1\n-0.5 -&gt;  0\n </code></td></tr>\n<tr><td><code>decimal.ROUND_DOWN</code></td><td>Round To 0</td><td><code> 0.5 -&gt;  0\n-0.5 -&gt;  0\n </code></td></tr>\n<tr><td><code>decimal.ROUND_FLOOR</code></td><td>Round Down To - Infinitiy</td><td><code> 0.5 -&gt;  0\n-0.5 -&gt; -1\n </code></td></tr>\n<tr><td><code>decimal.ROUND_HALF_DOWN</code></td><td>Round To Nearest Integer\nTies Round to 0</td><td><code> 0.6 -&gt;  1\n 0.5 -&gt;  0\n-0.5 -&gt;  0\n-0.6 -&gt; -1\n </code></td></tr>\n<tr><td><code>decimal.ROUND_HALF_EVEN</code></td><td>Round To Nearest Integer\nTies To Nearest Even Integer</td><td><code>\n\n </code></td></tr>\n<tr><td><code>decimal.ROUND_HALF_UP</code></td><td>Round To Nearest Integer\nTies Round to </td><td><code> 0.5 -&gt;  2\n 0.4 -&gt;  0\n-0.4 -&gt;  0\n-0.5 -&gt;  2\n </code></td></tr>\n<tr><td><code>decimal.ROUND_UP</code></td><td>Round To &plusmn; Infinity</td><td><code> 0.5 -&gt;  1\n-0.5 -&gt; -1\n </code></td></tr>\n<tr><td><code>decimal.ROUND_05UP</code></td><td>Round To 0\nExcept When Last Rounded Digit = 0 or 5\n- Then Round To &plusmn; Infinity</td></tr></table></div>\n\n\n\n"},{"id":"1e5J","level":2,"heading":"Decimal - Precision - Get","content":"<h3>Decimal - Precision - Get</h3>\n\n<div class=\"codebox\">from decimal import getcontext\n\n= getcontext().prec</div>\n\n\nGets the precision for decimal operations (*, /, etc.).\nThe default precision is 28 digits including digits before and after the decimal place.\n\n\n\n"},{"id":"1aX0","level":2,"heading":"Decimal - Precision - Set","content":"<h3>Decimal - Precision - Set</h3>\n\n<div class=\"codebox\">from decimal import getcontext\n\ngetcontext().prec = <var>digits</var></div>\n\n\nSets the precision for decimal operations (*, /, etc.).\nThe default precision is 28 digits including digits before and after the decimal place.\n\n\nExample:\n\n<div class=\"codebox\">from decimal import Decimal\nfrom decimal import getcontext\n\n<var>a</var> = Decimal('1')\n<var>b</var> = Decimal('0.3')\n\nprint(<var>a</var> / <var>b</var>)\n\n<span class=\"note\"># Prints 3.333333333333333333333333333</span>\n\ngetcontext().prec = <var>4</var>\n\nprint(<var>a</var> / <var>b</var>)\n\n<span class=\"note\"># Prints 3.333</span></div>\n\n\n\n"},{"id":"R2Pv","level":1,"heading":"Float","content":"<h1>Float</h1>\n\n<div class=\"codebox\">= <var>1.0</var>\n= <var>123.345</var>\n= <var>123_345.67_89</var>\n= <var>1.9484E9</var>\n= <var>0.4388E-16</var></div>\n\nType: float\n\n\nImmutable.\nUnderscores between digits are ignored. Use them to make numbers more readable.\n\n\n\n"},{"id":"fqtK","level":2,"heading":"Decimal - To Float","content":"<h3>Decimal - To Float</h3>\n\n<div class=\"codebox\">= float(<var>decimal_1</var>)</div>\n\nConverts a decimal to a float.\n\n\n\n"},{"id":"GfMN","level":2,"heading":"Decimal - To Integer","content":"<h3>Decimal - To Integer</h3>\n\n<div class=\"codebox\">= int(<var>decimal_1</var>)</div>\n\nConverts a decimal to a int.\n\n\n\n"},{"id":"b25U","level":1,"heading":"Float Operations","content":"<h1>Float Operations</h1>\n\n\n\n"},{"id":"MdkS","level":2,"heading":"Float - NAN","content":"<h3>Float - NAN</h3>\n\n<div class=\"codebox\">= float('nan')</div>\n\n\n\n"},{"id":"f3Sf","level":1,"heading":"Integer","content":"<h1>Integer</h1>\n\n<div class=\"codebox\">= <var>123</var></div>\n\n<div class=\"codebox\">= <var>123_456</var></div>\n\nType: <code>int</code>\n\n\nImmutable.\nLength 32 or 64 bits. Depends on the machine.\nUnderscores between numbers are ignored. Use them to make the number more readable.\n\n\n\n"},{"id":"u0H4","level":1,"heading":"Integer Operations","content":"<h1>Integer Operations</h1>\n\n\n\n"},{"id":"CPVx","level":2,"heading":"Integer - Is Zero","content":"<h3>Integer - Is Zero</h3>\n\n<div class=\"codebox\">= not <var>int_1</var></div>\n\n<div class=\"codebox\">if not <var>int_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"nbRK","level":2,"heading":"Integer - Not Zero","content":"<h3>Integer - Not Zero</h3>\n\n<div class=\"codebox\">= bool(<var>int_1</var>)</div>\n\n<div class=\"codebox\">if <var>int_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"f7v2","level":2,"heading":"Integer - Length","content":"<h3>Integer - Length</h3>\n\n<div class=\"codebox\">from math import floor\nfrom math import log10\n\n<var>length</var> = (1 + floor(log10(abs(<var>int_1</var>)))) if <var>int_1</var> else 0</div>\n\nReturns number of digits.\n\n\nExample:\n\n<div class=\"codebox\"><var>int_1</var> = 256\n<var>length</var> = (1 + floor(log10(abs(<var>int_1</var>)))) if <var>int_1</var> else 0\n\n<span class=\"note\"># Returns 3</span></div>\n\n\n\n"},{"id":"kHyR","level":2,"heading":"Integer - Maximum Value","content":"<h3>Integer - Maximum Value</h3>\n\n<div class=\"codebox\">import sys\n\n<var>max_size</var> = sys.maxsize</div>\n\nThe maximum value of an integer is system dependent.\nUse this function to find the value in your current environment.\n\n\n32 bits = 2,147,483,647\n64 bits = 9,223,372,036,854,775,807\n\n\n\n"},{"id":"GQSJ","level":1,"heading":"String","content":"<h1>String</h1>\n\n<div class=\"codebox\">= &quot;<var>A String</var>&quot;\n= '<var>A String</var>'\n= str(<var>34</var>)                         <span class=\"note\"># Returns '34'</span></div>\n\nConcatenated:\n\n<div class=\"codebox\">= '<var>123</var>' + <var>string3</var> + &quot;<var>more text</var>&quot; + '<var>more text again</var>'\n\n= '123' '456'                     <span class=\"note\"># Returns '123456'</span></div>\n\nEscaped:\n\n<div class=\"codebox\">= ' &quot;&quot; ' + &quot; '' &quot;                <span class=\"note\"># Returns ' &quot;&quot;  '' '</span></div>\n\n\nType: <code>str</code>\n\n\nImmutable.\nStored as variable byte unicode.\n\n\n\n"},{"id":"k4Fb","level":2,"heading":"String - Multiline String","content":"<h3>String - Multiline String</h3>\n\n<div class=\"codebox\">= '''<var>This is\na multiline\nstring.</var>'''</div>\n\n<div class=\"codebox\">= &quot;&quot;&quot;<var>This is\na multiline\nstring.</var>&quot;&quot;&quot;</div>\n\n\nEnclose multiline string in <code>'''</code> or <code>&quot;&quot;&quot;</code>.\n\n\n\n"},{"id":"EyhJ","level":2,"heading":"String - Raw String","content":"<h3>String - Raw String</h3>\n\n<div class=\"codebox\">= r&quot;<var>A\\String\\With\\Slashes</var>&quot;\n= r'<var>A\\String\\With\\Slashes</var>'</div>\n\n\nReturns text exactly as it is represented between the quotes.\n\nNo escaped character processing is done.\nUseful for regular expressions.\n\n\nExample:\n\n<div class=\"codebox\"><var>normal_string</var> = 'a\\tb\\tc'\n<var>raw_string</var> = r'a\\tb\\tc'\n\nprint(&quot;Normal&quot;, <var>normal_string</var>)\nprint(&quot;Raw   &quot;, <var>raw_string</var>)\n\n<span class=\"note\"># Prints:\n#\n# Normal a    b    c\n# Raw    a\\tb\\tc</span></div>\n\n\n\n"},{"id":"N7SB","level":1,"heading":"String Format - Format()","content":"<h1>String Format - Format()</h1>\n\n\n\n"},{"id":"X2ZS","level":2,"heading":"String Format() - Basics","content":"<h3>String Format() - Basics</h3>\n\n<div class=\"codebox\">string_1 = &quot;value 1&quot;\nstring_2 = &quot;value 2&quot;\nfloat_3 = 12345.67</div>\n\n<div class=\"codebox\"><var>formatted_string</var> = &quot;{}&quot;.format(<var>string_1</var>)</div>\n\n<div class=\"codebox\"><var>string_1_and_2</var> = &quot;{} {}&quot;.format(<var>string_1</var>, <var>string_2</var>)</div>\n\n<div class=\"codebox\"><var>pad_right</var> = &quot;{:<var>&lt;20</var>}&quot;.format(<var>string_1</var>)</div>\n\n<div class=\"codebox\"><var>formatted_number</var> = &quot;{:<var>,.1f</var>}&quot;.format(<var>float_3</var>)</div>\n\n\n\n"},{"id":"arhU","level":2,"heading":"String Format() - Single Variable","content":"<h3>String Format() - Single Variable</h3>\n\n<div class=\"codebox\">= &quot;{}&quot;.format(<var>item_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;<var>norminal</var>&quot;\n<var>formatted</var> = &quot;Everything is {}.&quot;.format(<var>string_1</var>)\n\n<span class=\"note\"># Returns &quot;Everything is norminal.&quot;</span></div>\n\n\n\n"},{"id":"qusG","level":2,"heading":"String Format() - Multiplale Variables","content":"<h3>String Format() - Multiplale Variables</h3>\n\n<div class=\"codebox\">= &quot;{} {} <var>...</var>&quot;.format(<var>item_1</var>, <var>item_2</var>, <var>...</var>)</div>\n\n\nExample:\n\n\n<div class=\"codebox\"><var>string_1</var> = &quot;<var>The cake</var>&quot;\n<var>string_2</var> = &quot;<var>a lie</var>&quot;\n\n<var>the_truth</var> = &quot;{} is {}.&quot;.format(<var>string_1</var>, <var>string_2</var>)\n\n<span class=\"note\"># Returns &quot;The cake is a lie.&quot;</span></div>\n\n\n\n"},{"id":"JDZq","level":2,"heading":"String Format() - With Formatting","content":"<h3>String Format() - With Formatting</h3>\n\n<div class=\"codebox\">= &quot;{:<var>format</var>}&quot;.format(<var>string_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;On the left!&quot;\n<var>padded</var> = &quot;{:<var>&lt;20</var>}&quot;.format(<var>string_1</var>)\n\n<span class=\"note\"># Returns &quot;On the left!        &quot;</span></div>\n\n<div class=\"codebox\"><var>int_1</var> = 12345\n<var>comma_separated</var> = &quot;{:<var>,d</var>}&quot;.format(<var>int_1</var>)\n\n<span class=\"note\"># Returns &quot;12,345&quot;</span></div>\n\n\n\n"},{"id":"By7d","level":2,"heading":"String Format() - Escape","content":"<h3>String Format() - Escape</h3>\n\nEscape {            <code>'{{'</code>\nEscape }            <code>'}}'</code>\n\n<div class=\"codebox\">= &quot;{{<var>...</var>}}&quot;.format(<var>...</var>)</div>\n\n\n\n"},{"id":"dYcf","level":1,"heading":"String Format - F-String","content":"<h1>String Format - F-String</h1>\n\n\nFormatted String literal or f-string.\n\nCreates a formatted string using a string literal.\n\n\n\n"},{"id":"Nqj2","level":2,"heading":"F-String - Basics","content":"<h3>F-String - Basics</h3>\n\n<div class=\"card\"><table><tr><td>Variable</td><td><code>= f'{<var>var_1</var>}'</code></td><td><code>'value-1'</code></td></tr>\n<tr><td> </td><td><code>= f&quot;{<var>var_1</var>}&quot;</code></td><td><code>'value-1'</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Text and Variable</td><td><code>= f'<var>text</var> {<var>var_1</var>}'</code></td><td><code>'text value-1'</code></td></tr>\n<tr><td> </td><td><code>= f&quot;<var>text</var> {<var>var_1</var>}&quot;</code></td><td><code>'text value-1'</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Concatenate</td><td><code>= f'{<var>string_1</var>}{<var>string_2</var>}'</code></td><td><code>'value-1value-2'</code></td></tr>\n<tr><td> </td><td><code>= f'{<var>string_1</var>}' f'{<var>string_2</var>}'</code></td><td><code>'value-1value-2'</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Align Right</td><td><code>= f'{<var>string_1</var>:<var>&gt;10</var>}'</code></td><td><code>'   value-1'</code></td></tr>\n<tr><td>Align Center</td><td><code>= f'{<var>string_1</var>:<var>^10</var>}'</code></td><td><code>' value-1  '</code></td></tr>\n<tr><td>Align Left</td><td><code>= f'{<var>string_1</var>:<var>&lt;10</var>}'</code></td><td><code>'value-1   '</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Comma</td><td><code>= f'{<var>float_1</var>:<var>,</var>}'</code></td><td><code>'12,345'</code></td></tr>\n<tr><td>Decimals</td><td><code>= f'{<var>float_1</var>:<var>.2f</var>}'</code></td><td><code>'12345.12'</code></td></tr>\n<tr><td>Comma, Decimals</td><td><code>= f'{<var>float_1</var>:<var>,.2f</var>}'</code></td><td><code>'12,345.12'</code></td></tr></table></div>\n\n\n\n"},{"id":"7Qze","level":2,"heading":"F-String - Single Variable","content":"<h3>F-String - Single Variable</h3>\n\n<div class=\"codebox\">= f'{<var>item_1</var>}'\n\n= f&quot;{<var>item_1</var>}&quot;</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;<var>norminal</var>&quot;\n\n<var>formatted</var> = f&quot;Everything is {<var>string_1</var>}.&quot;\n\n<span class=\"note\"># Returns &quot;Everything is norminal.&quot;</span></div>\n\n\n\n"},{"id":"WHxQ","level":2,"heading":"F-String - Multiplale Variables","content":"<h3>F-String - Multiplale Variables</h3>\n\n<div class=\"codebox\">= f&quot;{<var>item_1</var>} {<var>item_2</var>} <var>...</var>&quot;</div>\n\n\nExample:\n\n\n<div class=\"codebox\"><var>string_1</var> = &quot;<var>The cake</var>&quot;\n<var>string_2</var> = &quot;<var>a lie</var>&quot;\n\n<var>the_truth</var> = f&quot;{<var>string_1</var>} is {<var>string_2</var>}.&quot;\n\n<span class=\"note\"># Returns &quot;The cake is a lie.&quot;</span></div>\n\n\n"},{"id":"HHXw","level":2,"heading":"F-String - From Expression","content":"<h3>F-String - From Expression</h3>\n\n<div class=\"codebox\">= f'{<var>expression</var>}'</div>\n\n\nYou can embed an expression in an f-string and it will evaluate it.\n\n\nExample:\n\n<div class=\"codebox\">print(f'{<var>10 + 20</var>}')\n\n<span class=\"note\"># Prints 30</span></div>\n\n\n\n"},{"id":"27YE","level":2,"heading":"F-String - Repr Variable","content":"<h3>F-String - Repr Variable</h3>\n\n<div class=\"codebox\">= f'{<var>item_1</var>!r}'</div>\n\nEquvialent to:\n\n<div class=\"codebox\">= repr(<var>item_1</var>)</div>\n\n\nPrints the repr() form of the value.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = '<var>norminal</var>'\n\n<var>formatted</var> = f'{<var>string_1</var>!r}.'\n\n<span class=\"note\"># Returns: &quot;'norminal'.&quot;</span></div>\n\n\n\n"},{"id":"Trcy","level":2,"heading":"F-String - Show Variable Name With Output / Debug Mode","content":"<h3>F-String - Show Variable Name With Output / Debug Mode</h3>\n\n<div class=\"codebox\">= f&quot;{<var>item_1</var> =}&quot;</div>\n\n\nPrints the expression between <code>{</code> and <code>}</code> and it's value.\n<code>=</code> denotes debug mode.\nUseful for debugging.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;<var>norminal</var>&quot;\n\n<var>formatted</var> = f&quot;{<var>string_1</var> =}&quot;\n\n<span class=\"note\"># Returns &quot;string_1 = 'norminal'&quot;</span></div>\n\n\n\n"},{"id":"ndJd","level":2,"heading":"F-String - With Formatting","content":"<h3>F-String - With Formatting</h3>\n\n<div class=\"codebox\">= f&quot;{<var>item_1</var>:<var>format</var>}&quot;</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;On the left!&quot;\n<var>padded</var> = f&quot;{<var>string_1</var>:<var>&lt;20</var>}&quot;\n\n<span class=\"note\"># Returns &quot;On the left!        &quot;</span></div>\n\n<div class=\"codebox\"><var>int_1</var> = 12345\n<var>comma_separated</var> = f&quot;{<var>int_1</var>:<var>,d</var>}&quot;\n\n<span class=\"note\"># Returns &quot;12,345&quot;</span></div>\n\n\n\n"},{"id":"hvAr","level":2,"heading":"F-String - Escape","content":"<h3>F-String - Escape</h3>\n\nEscape:\n\n<div class=\"codebox\">= f'{{<var>...</var>}}''</div>\n\nUgly Way:\n\n<div class=\"codebox\">= f&quot;{'{'}&quot;              <span class=\"note\">#1</span></div>\n\n<div class=\"codebox\">= f&quot;{'}'}&quot;              <span class=\"note\">#2</span></div>\n\n\n#1  -  Returns '{'\n\n#2  -  Returns '}'\n\n\n\n"},{"id":"T7xJ","level":1,"heading":"String Operations","content":"<h1>String Operations</h1>\n\n\n\n"},{"id":"jeZa","level":2,"heading":"String - Append","content":"<h3>String - Append</h3>\n\n<div class=\"codebox\"><var>string_1</var> += <var>string_2</var></div>\n\nAppends <code><var>string_2</var></code> to the end of <code><var>string_1</var></code>.\n\n\n\n"},{"id":"sWmR","level":2,"heading":"String - Concatenate","content":"<h3>String - Concatenate</h3>\n\n<div class=\"codebox\">= <var>string_1</var> + <var>string_2</var> + <var>...</var></div>\n\nConcatenate Raw Strings:\n\n<div class=\"codebox\">= &quot;String 1&quot; &quot;String 2&quot; <var>...</var></div>\n\nCombines 2 or more strings into one string.\n\n\n"},{"id":"zQRH","level":2,"heading":"String - Contains?","content":"<h3>String - Contains?</h3>\n\n<div class=\"codebox\">= <var>string_1</var> in <var>string_2</var></div>\n\n<div class=\"codebox\">if <var>string_1</var> in <var>string_2</var>:\n\t<var>...</var></div>\n\nReturns <code>True</code> when <code><var>string_1</var></code> is a substring of <code><var>string_2</var></code>.\n\n\n\n"},{"id":"rckU","level":2,"heading":"String - Not Contains?","content":"<h3>String - Not Contains?</h3>\n\n<div class=\"codebox\">= <var>string_1</var> not in <var>string_2</var></div>\n\n<div class=\"codebox\">if <var>string_1</var> not in <var>string_2</var>:\n\t<var>...</var></div>\n\nReturns <code>True</code> when <code><var>string_1</var></code> is not a substring of <code><var>string_2</var></code>.\n\n\n\n"},{"id":"X5wj","level":2,"heading":"String - Ends With?","content":"<h3>String - Ends With?</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.endswith(<var>test_value</var>)</div>\n\nReturns: <code>bool</code>\n\n\nReturns <code>True</code> if <code><var>string_1</var></code> ends with or equals <code><var>test_value</var></code>.\n\n\n\n"},{"id":"r3vd","level":2,"heading":"String - Find","content":"<h3>String - Find</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.find(<var>search_value</var>)</div>\n\n<div class=\"codebox\">= <var>string_1</var>.find(<var>search_value</var>, <var>start</var>)</div>\n\n<div class=\"codebox\">= <var>string_1</var>.find(<var>search_value</var>, <var>start</var>, <var>end</var>)</div>\n\nReturns: <code>integer</code>\n\nIf -1 is returned then no match was found.\n\n\n\n"},{"id":"wYvE","level":2,"heading":"String - Find Last","content":"<h3>String - Find Last</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.rfind(<var>search_value</var>)</div>\n\nReturns: <code>integer</code>\n\nIf -1 is returned then no match was found.\n\n\n\n"},{"id":"bqeq","level":2,"heading":"String - Get Character","content":"<h3>String - Get Character</h3>\n\n<div class=\"codebox\">= <var>string_1</var>[<var>position</var>]</div>\n\nExample:\n\n<div class=\"codebox\"><var>character_2</var> = &quot;<var>012345</var>&quot;[2]\n\n<span class=\"note\"># Returns &quot;2&quot;</span></div>\n\n\n\n"},{"id":"D4hp","level":2,"heading":"String - Is Blank?","content":"<h3>String - Is Blank?</h3>\n\n<div class=\"codebox\">= not <var>string_1</var> or <var>string_1</var>.isspace()</div>\n\n<div class=\"codebox\">if not <var>string_1</var> or <var>string_1</var>.isspace():\n\t<var>...</var></div>\n\n\nReturns <code>True</code> for <code>None</code> or <code>&quot;&quot;</code> or is all whitespace.\n\n\n\n"},{"id":"UGSs","level":2,"heading":"String - Is Empty?","content":"<h3>String - Is Empty?</h3>\n\n<div class=\"codebox\">= not <var>string_1</var></div>\n\n<div class=\"codebox\">if not <var>string_1</var>:\n\t<var>...</var></div>\n\n\nReturns <code>True</code> for <code>None</code> or <code>&quot;&quot;</code>.\n\n\n\n"},{"id":"nqSR","level":2,"heading":"String - Not Empty?","content":"<h3>String - Not Empty?</h3>\n\n<div class=\"codebox\">= (<var>string_1</var> != None and <var>string_1</var> != &quot;&quot;)</div>\n\n<div class=\"codebox\">if <var>string_1</var> != None and <var>string_1</var> != &quot;&quot;:\n\t<var>...</var></div>\n\n\nReturns <code>False</code> for <code>None</code> or <code>&quot;&quot;</code>.\n\n\nA bit messy.\nThere isn't a clean Pythonic way to do this.\nI recommend making a function like this:\n\n<div class=\"codebox\">def not_empty(<var>value</var>):\n\treturn <var>value</var> != None and <var>value</var> != &quot;&quot;</div>\n\nThen call like this:\n\n<div class=\"codebox\">if not_empty(<var>string_1</var>):\n\t<var>...</var></div>\n\n\n\n"},{"id":"rwYB","level":2,"heading":"String - Is Equal?","content":"<h3>String - Is Equal?</h3>\n\n<div class=\"codebox\">= <var>string_1</var> == <var>string_2</var></div>\n\n<div class=\"codebox\">if <var>string_1</var> == <var>string_2</var>:\n\t<var>...</var></div>\n\n\nExample:\n\n<div class=\"codebox\">if <var>&quot;a&quot;</var> == <var>&quot;b&quot;</var>:\n\tprint(&quot;Equal&quot;)\nelse:\n\tprint(&quot;Not Equal&quot;)</div>\n\n\n\n"},{"id":"9TXm","level":2,"heading":"String - Not Equal?","content":"<h3>String - Not Equal?</h3>\n\n<div class=\"codebox\">= <var>string_1</var> != <var>string_2</var></div>\n\n<div class=\"codebox\">if <var>string_1</var> != <var>string_2</var>:\n\t<var>...</var></div>\n\n\nExample:\n\n<div class=\"codebox\">if <var>&quot;a&quot;</var> != <var>&quot;b&quot;</var>:\n\tprint(&quot;Not Equal&quot;)\nelse:\n\tprint(&quot;Equal&quot;)</div>\n\n\n\n"},{"id":"6TEG","level":2,"heading":"String - Is Equal, Ignore Case?","content":"<h3>String - Is Equal, Ignore Case?</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.casefold() == <var>string_2</var>.casefold()</div>\n\n<div class=\"codebox\">if <var>string_1</var>.casefold() == <var>string_2</var>.casefold():\n\t<var>...</var></div>\n\n\n<code>casefold()</code> is the correct way to compare strings caselessly.\nThis is especially true for unicode strings.\n<code>casefold()</code> convents the string to a safe case agnostic form.\n\n\nExample:\n\n<div class=\"codebox\">if <var>&quot;sto&szlig;&quot;</var>.casefold() == <var>&quot;STOSS&quot;</var>.casefold():\n\tprint(&quot;Equal&quot;)\nelse:\n\tprint(&quot;Not Equal&quot;)\n\n<span class=\"note\"># These Are Equal</span></div>\n\n\n\n"},{"id":"b3tQ","level":2,"heading":"String - Not Equal, Ignore Case?","content":"<h3>String - Not Equal, Ignore Case?</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.casefold() != <var>string_2</var>.casefold()</div>\n\n<div class=\"codebox\">if <var>string_1</var>.casefold() != <var>string_2</var>.casefold():\n\t<var>...</var></div>\n\n\n<code>casefold()</code> is the correct way to compare strings caselessly.\nThis is especially true for unicode strings.\n<code>casefold()</code> convents the string to a safe case agnostic form.\n\nExample:\n\n<div class=\"codebox\">if <var>&quot;sto&szlig;&quot;</var>.casefold() != <var>&quot;STOSS&quot;</var>.casefold():\n\tprint(&quot;Not Equal&quot;)\nelse:\n\tprint(&quot;Equal&quot;)\n\n<span class=\"note\"># These Are Equal</span></div>\n\n\n\n"},{"id":"Aqbs","level":2,"heading":"String - is Alpha Only","content":"<h3>String - is Alpha Only</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.isalpha()</div>\n\nReturns <code>True</code> if consisting entirely of alphabet characters.\n\nIncludes international characters.\nReturns <code>False</code> for numbers, symbols, emojis, or whitespace characters.\n\n\n\n"},{"id":"LTAf","level":2,"heading":"String - is Alphanumerics Only","content":"<h3>String - is Alphanumerics Only</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.isalnum()</div>\n\nReturns <code>True</code> if consisting entirely of alphabet characters or numbers..\n\nIncludes international characters.\nReturns <code>False</code> for symbols, emojis, or whitespace characters.\n\n\n\n"},{"id":"afRz","level":2,"heading":"String - Is Digits Only","content":"<h3>String - Is Digits Only</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.isdigit()</div>\n\n\nChecks if a string consists of digits only.\n\n\nReturns <code>True</code> when all characters are from 0 to 9.\nReturns <code>False</code> for <code>+</code> or <code>-</code>\n\n\n\n"},{"id":"v1NL","level":2,"heading":"String - Is Integer","content":"<h3>String - Is Integer</h3>\n\n<div class=\"codebox\">from re import match\n\ndef is_int(<var>value</var>):\n\treturn match(r&quot;^[+-]?\\d+$&quot;, <var>value</var>) is not None</div>\n\n<div class=\"codebox\">= is_int(<var>string_1</var>)</div>\n\n\nWorks for any integer including those with plus or minus.\n\n\n\n"},{"id":"j97W","level":2,"heading":"String - Is Lower Case Only","content":"<h3>String - Is Lower Case Only</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.islower()</div>\n\n\nChecks if a string consists of all lower case letters.\n\n\n\n"},{"id":"h9Wh","level":2,"heading":"String - Is Title Case Only","content":"<h3>String - Is Title Case Only</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.istitle()</div>\n\n\nChecks if a string consists of all title case words.\n\nTo be <code>True</code> every word must start with a capitalized letter and the remaining letters must be lower case.\n\n\n\n"},{"id":"k1aP","level":2,"heading":"String - Is Upper Case Only","content":"<h3>String - Is Upper Case Only</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.isupper()</div>\n\n\nChecks if a string consists of all upper case letters.\n\n\n\n"},{"id":"9aB2","level":2,"heading":"String - Is Valid Python Identifier","content":"<h3>String - Is Valid Python Identifier</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.isidentifier()</div>\n\n\nChecks if a string is a valid Python identifier.\n\nChecks to see that the string meets the identifier name rules (starts with [a-zA-Z_] followed by [a-zA-Z0-9_])\n\n\n\n"},{"id":"2S3c","level":2,"heading":"String - Iterate Over Characters","content":"<h3>String - Iterate Over Characters</h3>\n\n<div class=\"codebox\">for <var>character</var> in <var>string_1</var>:\n\t<var>...</var></div>\n\nIterates over <code><var>string_1</var></code> one character at a time.\n\n\n\n"},{"id":"LfuC","level":2,"heading":"String - Compare?","content":"<h3>String - Compare?</h3>\n\nIs Less Than?:\n\n<div class=\"codebox\">= <var>string_1</var> &lt; <var>string_2</var></div>\n\nIs Greater Than?:\n\n<div class=\"codebox\">= <var>string_1</var> &gt; <var>string_2</var></div>\n\n\nCompare strings using ==, !=, &lt;, &gt;, &lt;=, &gt;=.\n\n\nExample:\n\n<div class=\"codebox\">if <var>&quot;a&quot;</var> &lt; <var>&quot;b&quot;</var>:\n\tprint(&quot;Less Than&quot;)\nelse:\n\tprint(&quot;Not Less Than&quot;)</div>\n\n\n\n"},{"id":"6ECr","level":2,"heading":"String - Count Occurences","content":"<h3>String - Count Occurences</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.count(<var>value</var>)</div>\n\nReturns: <code>int</code>\n\n\nReturns the number of times <code>value</code> exists in the string.\n\n\nExamples:\n\n<div class=\"codebox\"><var>count</var> = '<var>abc abc a</var>'.count('<var>a</var>')\n\n<span class=\"note\"># Returns 3</span></div>\n\n<div class=\"codebox\"><var>count</var> = '<var>abc abc a</var>'.count('<var>abc</var>')\n\n<span class=\"note\"># Returns 2</span></div>\n\n\n\n"},{"id":"6dTf","level":2,"heading":"String - Length","content":"<h3>String - Length</h3>\n\n<div class=\"codebox\">= len(<var>string_1</var>)</div>\n\n\n\n"},{"id":"EedD","level":2,"heading":"String - Pad on Left","content":"<h3>String - Pad on Left</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.rjust(<var>width</var>)                 <span class=\"note\"># Pad With Spaces</span></div>\n\n<div class=\"codebox\">= <var>string_1</var>.rjust(<var>width</var>, <var>fill_char</var>)</div>\n\nPads <code><var>string_1</var></code> on the left side to the given width.\nPads with <code><var>fill_char</var></code>, or spaces if not given.\n\n\n\n"},{"id":"eS9g","level":2,"heading":"String - Pad on Right","content":"<h3>String - Pad on Right</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.ljust(<var>width</var>)                 <span class=\"note\"># Pad With Spaces</span></div>\n\n<div class=\"codebox\">= <var>string_1</var>.ljust(<var>width</var>, <var>fill_char</var>)</div>\n\nPads <code><var>string_1</var></code> to the given width on the right side.\nPads with <code><var>fill_char</var></code>, or spaces if not given.\n\n\n\n"},{"id":"NV7z","level":2,"heading":"String - Repeat","content":"<h3>String - Repeat</h3>\n\n<div class=\"codebox\">= <var>string_1</var> * <var>count</var></div>\n\nReturns <var>string_1</var> repeated <var>count</var> times.\n\n\nExample:\n\n<div class=\"codebox\"><var>ten_asterisks</var> = &quot;*&quot; * 10              <span class=\"note\"># Returns &quot;**********&quot;</span></div>\n\n\n\n"},{"id":"LY2n","level":2,"heading":"String - Replace","content":"<h3>String - Replace</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.replace(<var>original</var>, <var>replacement</var>)</div>\n\n\nReplaces all occurrenceses of a substring with another.\n\nReplace is case sensitive.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = '<var>Replace this and this and this.</var>'\n<var>replaced</var> = <var>string_1</var>.replace('<var>this</var>', '<var>that</var>')\n\nprint(<var>replaced</var>)\n\n<span class=\"note\"># Prints 'Replace that and that and that.'</span></div>\n\n\n\n"},{"id":"h5uK","level":2,"heading":"String - Replace First Occurence","content":"<h3>String - Replace First Occurence</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.replace(<var>original</var>, <var>replacement</var>, 1)</div>\n\n\nReplaces the first occurrencese of a substring with another.\n\nReplace is case sensitive.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = '<var>Replace this and this and this.</var>'\n<var>replaced</var> = <var>string_1</var>.replace('<var>this</var>', '<var>that</var>', 1)\n\nprint(<var>replaced</var>)\n\n<span class=\"note\"># Prints 'Replace that and this and this.'</span></div>\n\n\n\n"},{"id":"GC02","level":2,"heading":"String - Replace Ignore Case","content":"<h3>String - Replace Ignore Case</h3>\n\n<div class=\"codebox\">import re\n\n<var>pattern</var> = re.compile(<var>original</var>, re.IGNORECASE)\n<var>replacement</var> = <var>pattern</var>.sub(<var>replacement</var>, <var>original</var>)</div>\n\n\nReplaces the occurrences of one string with another\n\nReplace is not case sensitive.\n\n\nExample:\n\n<div class=\"codebox\">import re\n\n<var>string_1</var> = '<var>Replace this and THIS and ThIs.</var>'\n\n<var>pattern</var> = re.compile('<var>this</var>', re.IGNORECASE)\n<var>replaced</var> = <var>pattern</var>.sub('<var>that</var>', <var>string_1</var>)\n\nprint(<var>replaced</var>)\n\n<span class=\"note\"># Prints 'Replace that and this and this.'</span></div>\n\n\n\n"},{"id":"e79V","level":2,"heading":"String - Replace Ignore Case, First Occurrence","content":"<h3>String - Replace Ignore Case, First Occurrence</h3>\n\n<div class=\"codebox\">import re\n\n<var>pattern</var> = re.compile(<var>original</var>, re.IGNORECASE)\n<var>replacement</var> = <var>pattern</var>.sub(<var>replacement</var>, <var>original</var>, 1)</div>\n\n\nReplaces the occurrences of one string with another\n\nReplace is not case sensitive.\n\n\nExample:\n\n<div class=\"codebox\">import re\n\n<var>string_1</var> = '<var>Replace this and THIS and ThIs.</var>'\n\n<var>pattern</var> = re.compile('<var>this</var>', re.IGNORECASE)\n<var>replaced</var> = <var>pattern</var>.sub('<var>that</var>', <var>string_1</var>, 1)\n\nprint(<var>replaced</var>)\n\n<span class=\"note\"># Prints 'Replace that and this and this.'</span></div>\n\n\n\n"},{"id":"reYG","level":2,"heading":"String - Reverse","content":"<h3>String - Reverse</h3>\n\n<div class=\"codebox\">= <var>string_1</var>[::-1]</div>\n\n\nReverses a string.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = '<var>12345</var>'\n<var>reversed</var> = <var>string_1</var>[::-1]\n\nprint(<var>reversed</var>)\n\n<span class=\"note\"># Prints '54321'</span></div>\n\n\n\n"},{"id":"zQXR","level":2,"heading":"String - Split","content":"<h3>String - Split</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.split(<var>split_string</var>)\n\n= <var>string_1</var>.split(<var>split_string</var>, <var>split_count</var>)</div>\n\nReturns a list of strings split on <code><var>split_string</var></code>.\n\n<code><var>split_string</var></code> is not returned in the results.\nStops after splitting <code><var>split_count</var></code> times if given.\n\n\nExamples:\n\n<div class=\"codebox\"><var>string_1</var> = '<var>ab/cd/ef</var>'\n\n<var>split</var> = <var>string_1</var>.split('<var>/</var>')\n<span class=\"note\"># Returns ['ab', 'cd', 'ef']</span></div>\n\n<div class=\"codebox\"><var>string_1</var> = '<var>ab/cd/ef</var>'\n\n<var>split</var> = <var>string_1</var>.split('<var>/</var>', 1)\n<span class=\"note\"># Returns ['ab', 'cd/ef']</span></div>\n\n<div class=\"codebox\"><var>string_1</var> = '<var>abcd</var>'\n\n<var>split</var> = <var>string_1</var>.split('<var>/</var>')\n<span class=\"note\"># Returns ['abcd']</span></div>\n\n<div class=\"codebox\"><var>string_1</var> = '<var>abcd/</var>'\n\n<var>split</var> = <var>string_1</var>.split('<var>/</var>')\n<span class=\"note\"># Returns ['abcd', '']</span></div>\n\n<div class=\"codebox\"><var>string_1</var> = '<var>/abcd</var>'\n\n<var>split</var> = <var>string_1</var>.split('<var>/</var>')\n<span class=\"note\"># Returns ['', 'abcd']</span></div>\n\n<div class=\"codebox\"><var>string_1</var> = '<var>ab//cd</var>'\n\n<var>split</var> = <var>string_1</var>.split('<var>/</var>')\n<span class=\"note\"># Returns ['ab', '', 'cd']</span></div>\n\n\n\n"},{"id":"gHcV","level":2,"heading":"String - Split From End","content":"<h3>String - Split From End</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.rsplit(<var>split_string</var>)</div>\n\n<div class=\"codebox\">= <var>string_1</var>.rsplit(<var>split_string</var>, <var>split_count</var>)</div>\n\nReturns a list of strings split on <code><var>split_string</var></code> starting from the end.\n<code><var>split_string</var></code> is not returned in the results.\nStops after splitting <code><var>split_count</var></code> times if given.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;<var>ab/cd/ef</var>&quot;\n<var>split_1</var> = <var>string_1</var>.rsplit(&quot;<var>/</var>&quot;, 1)            <span class=\"note\"># Returns ['ab-cd', 'ef']</span></div>\n\n\n\n"},{"id":"gCYC","level":2,"heading":"String - Split / Partition","content":"<h3>String - Split / Partition</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.partition(&quot;<var>partition_string</var>&quot;)</div>\n\n\nReturns: <code>tuple</code>\n\n\nSplits the string into 3 parts: before partition, partition and after partition.\nIf the partition can't be found, returns the string followed by two empty strings.\nSplits at the first match only.\n\n\nExamples:\n\n<div class=\"codebox\"><var>partition1</var> = &quot;<var>aaa/bbb</var>&quot;.partition(&quot;<var>/</var>&quot;)\n\n<span class=\"note\"># Returns ('aaa', '/', 'bbb')</span></div>\n\n<div class=\"codebox\"><var>partition1</var> = &quot;<var>aaa bbb</var>&quot;.partition(&quot;<var>/</var>&quot;)\n\n<span class=\"note\"># Returns ('aaa bbb', '', '')</span></div>\n\n\n\n"},{"id":"2fHN","level":2,"heading":"String - Split On Newline","content":"<h3>String - Split On Newline</h3>\n\n<div class=\"codebox\">= <var>string_2</var>.splitlines()</div>\n\nReturs: <code>list</code>\n\n\nReturns a list of strings split by newline.\n\n\nExample:\n\n<div class=\"codebox\">lines = 'one\\ntwo\\nthree'.splitlines()\n\n<span class=\"note\"># Returns ['one', 'two', 'three']</span></div>\n\n\n\n"},{"id":"jqZg","level":2,"heading":"String - Split on White Space","content":"<h3>String - Split on White Space</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.split()\n\n= <var>string_1</var>.split(maxsplit = <var>count</var>)</div>\n\nReturns a list of strings split on white space characters.\nEmpty splits are not returned.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = '1\\t2\\t\\t3\\t\\t\\t4'\n\n<var>split</var> = <var>string_1</var>.split()\n<span class=\"note\"># Returns ['1', '2', '3', '4']</span></div>\n\n<div class=\"codebox\"><var>string_1</var> = '1\\t2\\t\\t3\\t\\t\\t4'\n\n<var>split</var> = <var>string_1</var>.split(maxsplit = 2)\n<span class=\"note\"># Returns ['1', '2', '3\\t\\t\\t4']</span></div>\n\n\n\n"},{"id":"mqDq","level":2,"heading":"String - Starts With?","content":"<h3>String - Starts With?</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.startswith(<var>test_value</var>)</div>\n\nReturns: <code>bool</code>\n\n\nReturns <code>True</code> if <code><var>string_1</var></code> begins with or equals <code><var>test_value</var></code>.\n\n\n\n"},{"id":"yk5k","level":2,"heading":"String - Strip","content":"<h3>String - Strip</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.strip()</div>\n\nRemoves all whitespace characters from the beginning and end of the string.\n\n\n\n"},{"id":"dpZ5","level":2,"heading":"String - Strip Left","content":"<h3>String - Strip Left</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.lstrip()</div>\n\nRemoves all whitespace characters at the start of the string.\n\n\n\n"},{"id":"C3S7","level":2,"heading":"String - Strip Right","content":"<h3>String - Strip Right</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.rstrip()</div>\n\nRemoves all whitespace characters at the end of the string.\n\n\n\n"},{"id":"3gfd","level":2,"heading":"String - Substitute / Translate - With Dict","content":"<h3>String - Substitute / Translate - With Dict</h3>\n\n<div class=\"codebox\"><var>translation</var> = str.maketrans(<var>mapping_dict</var>)\n<var>translated</var> = <var>string_1</var>.translate(<var>translation</var>)</div>\n\nReturns: str\n\n\nFinds all matches for the <code>mapping_dict</code> keys in <code>string_1</code> and replaces them with their values.\n\n\nExample:\n\n<div class=\"codebox\"><var>mappings</var> = {\n\t'1': 'one',\n\t'2': 'two',\n\t'3': 'three'}\n\n<var>translation</var> = str.maketrans(<var>mappings</var>)\n\n<var>string_1</var> = 'Items 1, 2, 3'\n<var>translated</var> = <var>string_1</var>.translate(<var>translation</var>)\n\n<span class=\"note\"># Returns: 'Items one, two, three'</span></div>\n\n\n\n"},{"id":"yGS5","level":2,"heading":"String - Substitute / Translate - With String","content":"<h3>String - Substitute / Translate - With String</h3>\n\n<div class=\"codebox\"><var>translation</var> = str.maketrans('<var>originals</var>', '<var>replacements</var>')\n<var>translated</var> = string.translate(<var>translation</var>)</div>\n\nReturns: str\n\n\nFinds characters from <code>originals</code> in <code>string_1</code> and replaces them with the matching characters from <code>replacements</code>.\n\n<code>originals</code> and <code>replacements</code> must be the same size.\n\n\nExample:\n\n<div class=\"codebox\"><var>originals</var> = '123'\n<var>replacements</var> = 'ABC'\n<var>translation</var> = str.maketrans(<var>originals</var>, <var>replacements</var>)\n\n<var>string_1</var> = 'Items 1, 2, 3'\n<var>translated</var> = <var>string_1</var>.translate(<var>translation</var>)\n\n<span class=\"note\"># Returns: 'Items A, B, C'</span></div>\n\n\n\n"},{"id":"nXRd","level":2,"heading":"String - Substring","content":"<h3>String - Substring</h3>\n\n<div class=\"codebox\">= <var>string_1</var>[<var>index</var>]\n\n= <var>string_1</var>[<var>start</var>:<var>end_plus_1</var>]\n\n= <var>string_1</var>[:<var>end_plus_1</var>]</div>\n\n\nSee Also: <a class=\"link\" href=\"?q=slicing-only\">Slicing Sequences</a>\n\n\nExamples:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;<var>12345</var>&quot;\n\n<var>first</var> = <var>string_1</var>[0]                     <span class=\"note\"># Returns '1'</span>\n\n<var>last</var> = <var>string_1</var>[-1]                     <span class=\"note\"># Returns '5'</span>\n\n<var>index_1</var> = <var>string_1</var>[1]                   <span class=\"note\"># Returns '2'</span>\n\n<var>index_1_to_3</var> = <var>string_1</var>[1:4]            <span class=\"note\"># Returns '234'</span>\n\n<var>index_1_to_end</var> = <var>string_1</var>[1:]           <span class=\"note\"># Returns '2345'</span>\n\n<var>start_to_index_3</var> = <var>string_1</var>[:4]         <span class=\"note\"># Returns '1234'</span></div>\n\n\n\n"},{"id":"KqBV","level":2,"heading":"String - Substring - Left","content":"<h3>String - Substring - Left</h3>\n\n<div class=\"codebox\">= <var>string_1</var>[:<var>length_plus_1</var>]</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;12345&quot;\n\n<var>substring</var> = <var>string_1</var>[:3]\n\n<span class=\"note\"># Returns &quot;123&quot;</span></div>\n\n\n \n"},{"id":"vZQe","level":2,"heading":"String - Substring - Right","content":"<h3>String - Substring - Right</h3>\n\n<div class=\"codebox\">= <var>string_1</var>[<var>start</var>:]</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;12345&quot;\n\n<var>substring</var> = <var>string_1</var>[2:]\n\n<span class=\"note\"># Returns &quot;345&quot;</span></div>\n\n\n\n"},{"id":"5PLH","level":2,"heading":"String - Substring - Remove Prefix","content":"<h3>String - Substring - Remove Prefix</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.removeprefix(<var>prefix_1</var>)</div>\n\n\nRemoves the prefix but only if it is present.\nNo prefix returns the original string.\n\nPython Version: 3.9+\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = 'https://speedsheet.io'\n\n<var>substring</var> = <var>string_1</var>.removeprefix(&quot;https://&quot;)\n\n<span class=\"note\"># Returns 'speedsheet.io'</span></div>\n\n\n\n"},{"id":"fVNs","level":2,"heading":"String - Substring - Remove Suffix","content":"<h3>String - Substring - Remove Suffix</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.removesuffix(<var>suffix_1</var>)</div>\n\n\nRemoves the suffix but only if it is present.\nNo suffix returns the original string.\n\nPython Version: 3.9+\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = 'file_name.txt'\n\n<var>substring</var> = <var>string_1</var>.removesuffix(&quot;.txt&quot;)\n\n<span class=\"note\"># Returns 'file_name'</span></div>\n\n\n\n"},{"id":"AhKv","level":2,"heading":"String - Word Count","content":"<h3>String - Word Count</h3>\n\n<div class=\"codebox\">= len(<var>string_1</var>.split())</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>words</var> = '<var>one two three</var>'\n\n<var>count</var> = len(<var>words</var>.split())\n\n<span class=\"note\"># Returns 3</span></div>\n\n\n\n"},{"id":"jSRD","level":2,"heading":"String - To Capitalized Case","content":"<h3>String - To Capitalized Case</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.capitalize()</div>\n\n\nChanges the first letter to upper case.\n\n\nExample:\n\n<div class=\"codebox\"><var>text</var> = '<var>one two three</var>'\n\n<var>capitalized</var> = <var>text</var>.capitalize()\n\n<span class=\"note\"># Returns 'One two three'</span></div>\n\n\n \n"},{"id":"epVK","level":2,"heading":"String - To Lower Case","content":"<h3>String - To Lower Case</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.lower()</div>\n\n\nConverts every letter to lower case.\n\n\nExample:\n\n<div class=\"codebox\"><var>text</var> = '<var>One TWO three</var>'\n\n<var>lower_case</var> = <var>text</var>.lower()\n\n<span class=\"note\"># Returns 'one two three'</span></div>\n\n\n\n"},{"id":"xhWP","level":2,"heading":"String - To Title Case","content":"<h3>String - To Title Case</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.title()</div>\n\n\nCapitalizes the first letter in every word.\n\nWords are separated by spaces or underscores.\n\n\nExample:\n\n<div class=\"codebox\"><var>text</var> = '<var>one two three</var>'\n\n<var>title_case</var> = <var>text</var>.title()\n\n<span class=\"note\"># Returns 'One Two Three'</span></div>\n\n<div class=\"codebox\"><var>text</var> = '<var>one_two_three</var>'\n\n<var>title_case</var> = <var>text</var>.title()\n\n<span class=\"note\"># Returns 'One_Two_Three'</span></div>\n\n\n\n"},{"id":"K6cS","level":2,"heading":"String - To Upper Case","content":"<h3>String - To Upper Case</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.upper()</div>\n\n\nConverts every letter to upper case.\n\n\nExample:\n\n<div class=\"codebox\"><var>text</var> = '<var>one two three</var>'\n\n<var>upper_case</var> = <var>text</var>.upper()\n\n<span class=\"note\"># Returns 'ONE TWO THREE'</span></div>\n\n\n\n"},{"id":"Eecn","level":2,"heading":"String - Fold Case","content":"<h3>String - Fold Case</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.casefold()</div>\n\n\nUse this when you need to compare two strings but ignore the case (caseless).\n\nConverts the string into a safe case agnostic form.\nThis is very important for unicode characters.\n\nWhy?\nBecause case rules (uppercase, lowercase) can get complicated, especially in foreign languages.\nSome languages have more than one case or special rules for when a particular form of letter should be used.\n\n\nExample:\n\n<div class=\"codebox\"><var>case_folded</var> = '<var>Ὀ&delta;&upsilon;&sigma;&sigma;&epsilon;ύ<mark>&sigmaf;</mark></var>'.casefold()\n\n<span class=\"note\"># Returns 'ὀ&delta;&upsilon;&sigma;&sigma;&epsilon;ύ<mark>&sigma;</mark>'</span></div>\n\n\nIn Depth:\n\n<div class=\"codebox\"><span class=\"note\"># Helper Function:</span>\n\ndef print_cases(text):\n\tprint(&quot;Original:   &quot;, text)\n\tprint(&quot;Upper:      &quot;, text.upper())\n\tprint(&quot;Lower:      &quot;, text.lower())\n\tprint(&quot;Folded:     &quot;, text.casefold())</div>\n\n\n<div class=\"codebox\"><span class=\"note\"># German Letter SS/&szlig;</span>\n\nprint_cases(&quot;<var>Hegelstra&szlig;e</var>&quot;)\n\n<span class=\"note\">#  Original:   Hegelstra<mark>&szlig;</mark>e\n#  Upper:      HEGELSTRA<mark>SS</mark>E\n#  Lower:      hegelstra<mark>&szlig;</mark>e\n#  Folded:     hegelstra<mark>ss</mark>e</span></div>\n\n\n<div class=\"codebox\"><span class=\"note\"># Greek Letter &Sigma;/&sigma;/&sigmaf;</span>\n\nprint_cases(&quot;<var>Ὀ&delta;&upsilon;&sigma;&sigma;&epsilon;ύ&sigmaf;</var>&quot;)\n\n<span class=\"note\">#  Original: Ὀ&delta;&upsilon;&sigma;&sigma;&epsilon;ύ<mark>&sigmaf;</mark>\n#  Upper:    Ὀ&Delta;&Upsilon;&Sigma;&Sigma;&Epsilon;Ύ<mark>&Sigma;</mark>\n#  Lower:    ὀ&delta;&upsilon;&sigma;&sigma;&epsilon;ύ<mark>&sigmaf;</mark>\n#  Folded:   ὀ&delta;&upsilon;&sigma;&sigma;&epsilon;ύ<mark>&sigma;</mark></span></div>\n\n\n<div class=\"codebox\"><span class=\"note\"># English</span>\n\nprint_cases(&quot;<var>English</var>&quot;)\n\n<span class=\"note\">#  Original: English\n#  Upper:    ENGLISH\n#  Lower:    english\n#  Folded:   english</span></div>\n\n\n\n"},{"id":"sRU5","level":2,"heading":"String - To Words","content":"<h3>String - To Words</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.split()</div>\n\n\nReturns: <code>list</code>\n\n\nSplits the string along whitespaces.\n\n\n\n"},{"id":"43BJ","level":2,"heading":"String List - Join","content":"<h3>String List - Join</h3>\n\n<div class=\"codebox\">= ''.join(<var>strings</var>)\n\n= ''.join([<var>string1</var>, <var>string2</var>, <var>string3</var>])\n\n= ''.join(<var>iterable</var>)</div>\n\n\nJoins all elements of <code><var>iterable</var></code> into 1 string with <code><var>separator</var></code> between each element.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = ['<var>a</var>', '<var>b</var>', '<var>c</var>']\n<var>string_1</var> = ''.join(<var>list_1</var>)          <span class=\"note\"># Returns 'abc'</span></div>\n\n\n\n"},{"id":"qPG7","level":2,"heading":"String List - Join With Separator","content":"<h3>String List - Join With Separator</h3>\n\n<div class=\"codebox\">= <var>separator</var>.join(<var>strings</var>)\n\n= <var>separator</var>.join([<var>string1</var>, <var>string2</var>, <var>string3</var>])\n\n= <var>separator</var>.join(<var>iterable</var>)</div>\n\n\nJoins all elements of <code><var>iterable</var></code> into 1 string with <code><var>separator</var></code> between each element.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = ['<var>a</var>', '<var>b</var>', '<var>c</var>']\n<var>string_1</var> = '<var>, </var>'.join(<var>list_1</var>)          <span class=\"note\"># Returns 'a, b, c'</span></div>\n\n\n\n"},{"id":"5NzR","level":2,"heading":"String List - Longest String","content":"<h3>String List - Longest String</h3>\n\n<div class=\"codebox\">= max(<var>string_list</var>, key = len)</div>\n\n\nReturns the longest string in the list.\n\n\n\n"},{"id":"gGT0","level":2,"heading":"String List - Max Length","content":"<h3>String List - Max Length</h3>\n\n<div class=\"codebox\">= max(len(<var>string</var>) for <var>string</var> in <var>string_list</var>)</div>\n\n\nReturns the length of the longest string.\n\n\n\n"},{"id":"DJYz","level":1,"heading":"Dates","content":"<h1>Dates</h1>\n\n\n"},{"id":"UgG9","level":2,"heading":"Date - Create","content":"<h3>Date - Create</h3>\n\n<div class=\"codebox\">= date(<var>year</var>, <var>month</var>, <var>day</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import date\n\n= date(<var>year</var>, <var>month</var>, <var>day</var>)\n= date(year = <var>year</var>, month = <var>month</var>, day = <var>day</var>)</div>\n\nReturns: <code>date</code>\n\n\nReturns an instance of <code>date</code> representing the year, month and day.\n\n\nUnit Ranges:\n\n<div class=\"indent\"><table><tr><td>Year</td><td>1 - 9999</td></tr>\n<tr><td>Month</td><td>1 - 12</td></tr>\n<tr><td>Day</td><td>1 - Last-Day-Of-Month</td></tr></table></div>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import date\n\n<var>date_1</var> = date(<var>2000</var>, <var>1</var>, <var>2</var>)\n\nprint(&quot;Date 1&quot;, <var>date_1</var>)\n\n<span class=\"note\"># Prints: Date-1 2000-01-02</span></div>\n\n\n\n"},{"id":"sGSN","level":2,"heading":"Date - Create Today's Date","content":"<h3>Date - Create Today's Date</h3>\n\n<div class=\"codebox\">date.today()</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import date\n\n= date.today()</div>\n\nReturns: <code>date</code>\n\n\nReturns a <code>date</code> for today.\n\n\nUnit Ranges:\n\n<table><tr><td>Year</td><td>1 - 9999</td></tr>\n<tr><td>Month</td><td>1 - 12</td></tr>\n<tr><td>Day</td><td>1 - Last-Day-Of-Month</td></tr></table>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import date\n\n<var>date_1</var> = date.today()\n\nprint(&quot;Today&quot;, <var>date_1</var>)</div>\n\n\n\n"},{"id":"6w75","level":1,"heading":"Date Operations","content":"<h1>Date Operations</h1>\n\n\n\n"},{"id":"0Sm5","level":2,"heading":"Date - Compare","content":"<h3>Date - Compare</h3>\n\n<div class=\"codebox\">if <var>date_1</var> == <var>date_2</var>:\n\t<var>...</var></div>\n\n<div class=\"codebox\">if <var>date_1</var> &lt; <var>date_2</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"tDWe","level":2,"heading":"Date - Difference, Get TimeDelta","content":"<h3>Date - Difference, Get TimeDelta</h3>\n\n<div class=\"codebox\">= <var>date_2</var> - <var>date_1</var></div>\n\nReturns: <code>timedelta</code>\n\nReturns the difference in days.\n\n\n\n"},{"id":"jY2X","level":2,"heading":"Date - Add TimeDelta","content":"<h3>Date - Add TimeDelta</h3>\n\n<div class=\"codebox\">= <var>date_1</var> + <var>timedelta_2</var></div>\n\nReturns: <code>date</code>\n\nAdds the day portion of <code><var>timedelta_2</var></code> to <code><var>date_1</var></code>.\n\n\n\n"},{"id":"qAqk","level":2,"heading":"Date - Subtract TimeDelta","content":"<h3>Date - Subtract TimeDelta</h3>\n\n<div class=\"codebox\">= <var>date_1</var> - <var>timedelta_2</var></div>\n\nReturns: <code>date</code>\n\nSubtracts the day portion of <code><var>timedelta_2</var></code> to <code><var>date_1</var></code>.\n\n\n\n"},{"id":"J0kE","level":2,"heading":"Date - Get Now","content":"<h3>Date - Get Now</h3>\n\n<div class=\"codebox\">from datetime import date\n\n= date.today()</div>\n\n\n\n"},{"id":"tRrF","level":2,"heading":"Date - Get Last Day of Month","content":"<h3>Date - Get Last Day of Month</h3>\n\n<div class=\"codebox\">= calendar.monthrange(<var>date_1</var>.year, <var>date_1</var>.month)[1]</div>\n\nUsage:\n\n<div class=\"codebox\">import calendar\n\n= calendar.monthrange(<var>date_1</var>.year, <var>date_1</var>.month)[1]</div>\n\nReturns: <code>int</code>\n\n\nReturns the last day of the month.\n\n\nExample:\n\n<div class=\"codebox\">import calendar\nfrom datetime import date\n\n<var>date_1</var> = date(<var>2000</var>, <var>2</var>, <var>1</var>)\n\n<var>last_day</var> = calendar.monthrange(<var>date_1</var>.year, <var>date_1</var>.month)[1]\n\n<span class=\"note\"># Returns: 29</span></div>\n\n\n\n"},{"id":"0NKU","level":2,"heading":"Date - Get Next Month, First Day","content":"<h3>Date - Get Next Month, First Day</h3>\n\n<div class=\"codebox\">= <var>date_1</var> + relativedelta(months=1, day=1)</div>\n\nUsage:\n\n<div class=\"codebox\">from dateutil.relativedelta import relativedelta\n\n= <var>date_1</var> + relativedelta(months=1, day=1)</div>\n\n\nReturns a date for the first day of the next month.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import date\nfrom dateutil.relativedelta import relativedelta\n\n<var>date_1</var> = date(<var>2000</var>, <var>2</var>, <var>1</var>)\n\n<var>next_month</var> = <var>date_1</var> + relativedelta(months=1, day=1)\n\n<span class=\"note\"># Returns: datetime(2000, 3, 1)</span></div>\n\n\n\n"},{"id":"HZtJ","level":2,"heading":"Date - Get Previous Month, Last Day","content":"<h3>Date - Get Previous Month, Last Day</h3>\n\n<div class=\"codebox\">= <var>date_1</var>.replace(day = 1) - timedelta(days=1)</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import timedelta\n\n= <var>date_1</var>.replace(day = 1) - timedelta(days=1)</div>\n\n\nReturns the last day of the previous month:\n\n\nExample:\n\n<div class=\"codebox\">from datetime import date\nfrom datetime import timedelta\n\n<var>today</var> = date.today()\n<var>last_month</var> = <var>today</var>.replace(day = 1) - timedelta(days=1)\n\nprint('last month', <var>last_month</var>)</div>\n\n\n\n"},{"id":"AA1t","level":2,"heading":"Date - Replace Unit","content":"<h3>Date - Replace Unit</h3>\n\n<div class=\"codebox\">= <var>date_1</var>.replace(<var>unit</var> = <var>value</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">= <var>date_1</var>.replace(year = <var>year</var>)\n= <var>date_1</var>.replace(month = <var>month</var>)\n= <var>date_1</var>.replace(day = <var>day</var>)</div>\n\n\nReplaces one or more of the date units with a new value.\n\n\nUnit Ranges:\n\n<table><tr><td>Year</td><td>1 - 9999</td></tr>\n<tr><td>Month</td><td>1 - 12</td></tr>\n<tr><td>Day</td><td>1 - <var>Last-Day-Of-Month</var></td></tr></table>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import date\n\n<var>today</var> = date.today()\n\n<var>start_of_month</var> = <var>today</var>.replace(day = 1)\n\nprint(&quot;Start of Month:&quot;, <var>start_of_month</var>)</div>\n\n\n\n"},{"id":"rhbw","level":2,"heading":"Date - To Year","content":"<h3>Date - To Year</h3>\n\n<div class=\"codebox\">= <var>date_1</var>.year</div>\n\n\n\n"},{"id":"N7A1","level":2,"heading":"Date - To Month","content":"<h3>Date - To Month</h3>\n\n<div class=\"codebox\">= <var>date_1</var>.month</div>\n\n\n\n"},{"id":"876U","level":2,"heading":"Date - To Day","content":"<h3>Date - To Day</h3>\n\n<div class=\"codebox\">= <var>date_1</var>.day</div>\n\n\n\n"},{"id":"9RM3","level":2,"heading":"Date - To Day of Week","content":"<h3>Date - To Day of Week</h3>\n\n<div class=\"codebox\">= <var>date_1</var>.weekday()</div>\n\n\nReturns: <code>int</code>\n\nThat is <code>.weekday()</code> with a ().\n\n0 is Monday.\n6 is Sunday.\n\n\n\n"},{"id":"RctT","level":2,"heading":"Date - From Timestamp","content":"<h3>Date - From Timestamp</h3>\n\n<div class=\"codebox\">from datetime import date\n\n<var>date_1</var> = date.fromtimestamp(<var>timestamp_1</var>)</div>\n\n\n\n"},{"id":"VVKu","level":2,"heading":"Date - From String","content":"<h3>Date - From String</h3>\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>date_1</var> = datetime.strptime(<var>date_string</var>, <var>date_format</var>).date()</div>\n\n\nYou must convert to a datetime first, then to a date.\n\n\nExamples:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>date_2</var> = datetime.strptime(<var>&quot;2000-01-02&quot;</var>, &quot;<var>%Y-%m-%d</var>&quot;).date()\n\n<span class=\"note\"># Returns: datetime.date(2000, 1, 2)</span></div>\n\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>date_2</var> = datetime.strptime(<var>&quot;2000-1-2&quot;</var>, &quot;<var>%Y-%m-%d</var>&quot;).date()\n\n<span class=\"note\"># Returns: datetime.date(2000, 1, 2)</span></div>\n\n\n\n"},{"id":"fH9Y","level":2,"heading":"Date - To String","content":"<h3>Date - To String</h3>\n\n<div class=\"codebox\">= '{:<var>format</var>}'.format(<var>date_1</var>)</div>\n\nAll Formatting Options:\n\n<div class=\"codebox\">= f'{<var>date_1</var>:<var>format</var>}'\n= '{:<var>format</var>}'.format(<var>date_1</var>)\n= <var>date_1</var>.strftime(<var>format</var>)\n= <var>date_1</var>.isoformat()</div>\n\n\nConverts a date into a string.\n\nA typical format would be <code>'%Y-%m-%d'</code> or <code>'%m/%d/%Y'</code>.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import date\n\n<var>date_1</var> = date(2001, 1, 1)\n\n<span class=\"note\"># These are equivalent:</span>\n\n<var>string_1</var> = f'{<var>date_1</var>:%Y-%m-%d}'\n<var>string_2</var> = '{:%Y-%m-%d}'.format(<var>date_1</var>)\n<var>string_3</var> = <var>date_1</var>.isoformat()\n<var>string_4</var> = <var>date_1</var>.strftime(<var>'%Y-%m-%d'</var>)\n\n<span class=\"note\"># Returns '2001-01-01'</span></div>\n\n\n\n"},{"id":"A850","level":2,"heading":"Date - From ISO-8601 String","content":"<h3>Date - From ISO-8601 String</h3>\n\n<div class=\"codebox\">from datetime import date\n\n<var>date_1</var> = date.fromisoformat(<var>iso_date_string</var>)</div>\n\n\nAccepted Format:\n\n<div class=\"codebox\">'<var>YYYY</var>-<var>MM</var>-<var>DD</var>'</div>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import date\n\n<var>date_1</var> = date.fromisoformat(<var>&quot;2000-01-02&quot;</var>)</div>\n\n<div class=\"codebox\">from datetime import date\nfrom datetime import datetime\n\n<span class=\"note\"># These are equivalent:</span>\n\n<var>date_1</var> = date.fromisoformat(<var>&quot;2000-01-02&quot;</var>)\n<var>date_2</var> = datetime.strptime(<var>&quot;2000-01-02&quot;</var>, &quot;<var>%Y-%m-%d</var>&quot;).date()</div>\n\n\n\n"},{"id":"VUH5","level":2,"heading":"Date - To ISO-8601 String","content":"<h3>Date - To ISO-8601 String</h3>\n\n<div class=\"codebox\">= <var>date_1</var>.isoformat()</div>\n\n\nReturned Format:\n\n<div class=\"codebox\">'<var>YYYY</var>-<var>MM</var>-<var>DD</var>'</div>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import date\n\n<var>date_1</var> = date(2001, 1, 1)\n\n<var>string_1</var> = <var>date_1</var>.isoformat()\n\n<span class=\"note\">Returns '2001-01-01'</span></div>\n\n<div class=\"codebox\">from datetime import date\n\n<var>date_1</var> = date.today()\n\n<span class=\"note\"># These are equivalent:</span>\n\n<var>string_1</var> = <var>date_1</var>.isoformat()\n<var>string_2</var> = <var>date_1</var>.strftime(<var>'%Y-%m-%d'</var>)\n<var>string_3</var> = ':%Y-%m-%d'.format(<var>date_1</var>)</div>\n\n\n\n"},{"id":"FZRA","level":1,"heading":"DateTimes","content":"<h1>DateTimes</h1>\n\n\n"},{"id":"Y3tQ","level":2,"heading":"Datetime - Create","content":"<h3>Datetime - Create</h3>\n\n<div class=\"codebox\">= datetime(<var>year</var>, <var>month</var>, <var>day</var>, <var>hour</var>, <var>minute</var>, <var>second</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\n\n= datetime(<var>year</var>, <var>month</var>, <var>day</var>, <var>hour</var>, <var>minute</var>, <var>second</var>)\n= datetime(<var>year</var>, <var>month</var>, <var>day</var>, <var>hour</var>, <var>minute</var>, <var>second</var>, <var>microsecond</var>)\n\n= datetime(\n        year = <var>year</var>,\n        month = <var>month</var>,\n        day = <var>day</var>,\n        hour = <var>hour</var>,\n        minute = <var>minute</var>,\n        second = <var>second</var>,\n        microsecond = <var>microsecond</var>)</div>\n\nReturns: <code>datetime</code>\n\n\nReturns an instance of datetime representing the date and time.\n\n\nUnit Ranges:\n\n<table><tr><td>Year</td><td>1 - 9999</td></tr>\n<tr><td>Month</td><td>1 - 12</td></tr>\n<tr><td>Day</td><td>1 - Last-Day-Of-Month</td></tr>\n<tr><td>Hour</td><td>0 - 23</td></tr>\n<tr><td>Minute</td><td>0 - 59</td></tr>\n<tr><td>Second</td><td>0 - 59</td></tr>\n<tr><td>Microseconds</td><td>0 - 999,999</td></tr></table>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>date_1</var> = datetime(<var>2000</var>, <var>11</var>, <var>28</var>, <var>23</var>, <var>59</var>, <var>59</var>)</div>\n\n\n\n"},{"id":"jfDG","level":2,"heading":"Datetime - Create UTC Time (Deprecated)","content":"<h3>Datetime - Create UTC Time (Deprecated)</h3>\n\n<mark>This is deprecated and will be removed from future Python releases</mark>\n\n<div class=\"codebox\">= datetime.utcnow()</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\n\n= datetime.utcnow()</div>\n\n\nUse this instead:\n\n<div class=\"codebox\">= datetime.now(tz = timezone.utc)</div>\n\n\nReturns the current UTC time.\n\n\nDoes not include time zone information.\n\n\n\n"},{"id":"FYEQ","level":2,"heading":"Datetime - Create Now","content":"<h3>Datetime - Create Now</h3>\n\n<div class=\"codebox\">= datetime.now()</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\n\n= datetime.now()</div>\n\nReturns: <code>datetime</code>\n\n\nReturns an instance of the current date time.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>date_1</var> = datetime.now()</div>\n\n\n\n"},{"id":"kuxZ","level":2,"heading":"Datetime - now() vs today()","content":"<h3>Datetime - now() vs today()</h3>\n\n<code>now()</code>:\n\n<ul><li>Preferred</li>\n<li>Allows for Time Zone</li></ul>\n\n<code>today()</code>\n\n<ul><li>No Time Zone Allowed</li></ul>\n\n\nPrefer <code>now()</code> to <code>today()</code>.\n\n<code>now()</code> allows for time zone information to be included.\nBut in reality for non time zone datetimes, they are equivalent.\n\n\n\n"},{"id":"fK6t","level":1,"heading":"DateTime - Operations","content":"<h1>DateTime - Operations</h1>\n\n\n\n"},{"id":"F46m","level":2,"heading":"DateTime - Compare","content":"<h3>DateTime - Compare</h3>\n\n<div class=\"codebox\">if <var>datetime_1</var> == <var>datetime_2</var>:\n\t<var>...</var></div>\n\n<div class=\"codebox\">if <var>datetime_1</var> &lt; <var>datetime_2</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"N5Ge","level":2,"heading":"DateTime - Difference, Get TimeDelta","content":"<h3>DateTime - Difference, Get TimeDelta</h3>\n\n<div class=\"codebox\">= <var>datetime_2</var> - <var>datetime_1</var></div>\n\nReturns: <code>timedelta</code>\n\n\n\n"},{"id":"8MBY","level":2,"heading":"DateTime - Add TimeDelta","content":"<h3>DateTime - Add TimeDelta</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var> + <var>time_delta_1</var></div>\n\nReturns: <code>datetime</code>\n\n\n\n"},{"id":"vWQG","level":2,"heading":"DateTime - Subtract TimeDelta","content":"<h3>DateTime - Subtract TimeDelta</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var> - <var>time_delta_1</var></div>\n\nReturns: <code>datetime</code>\n\n\n\n"},{"id":"HD2V","level":2,"heading":"DateTime - Get Now","content":"<h3>DateTime - Get Now</h3>\n\n<div class=\"codebox\">from datetime import datetime\n\n= datetime.today()</div>\n\n\n\n"},{"id":"2Bps","level":2,"heading":"DateTime - Get Last Day of Month","content":"<h3>DateTime - Get Last Day of Month</h3>\n\n<div class=\"codebox\">= calendar.monthrange(<var>datetime_1</var>.year, <var>datetime_1</var>.month)[1]</div>\n\nUsage:\n\n<div class=\"codebox\">import calendar\n\n= calendar.monthrange(<var>datetime_1</var>.year, <var>datetime_1</var>.month)[1]</div>\n\nReturns: <code>int</code>\n\n\nReturns the last day of the month.\n\n\nExample:\n\n<div class=\"codebox\">import calendar\nfrom datetime import datetime\n\n<var>datetime_1</var> = datetime(<var>2000</var>, <var>2</var>, <var>1</var>, <var>0</var>, <var>0</var>, <var>0</var>)\n\n<var>last_day</var> = calendar.monthrange(<var>datetime_1</var>.year, <var>datetime_1</var>.month)[1]\n\n<span class=\"note\"># Returns: 29</span></div>\n\n\n\n"},{"id":"Fh9q","level":2,"heading":"DateTime - Get Next Month, First Day","content":"<h3>DateTime - Get Next Month, First Day</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var> + relativedelta(months=1, day=1)</div>\n\nUsage:\n\n<div class=\"codebox\">from dateutil.relativedelta import relativedelta\n\n= <var>datetime_1</var> + relativedelta(months=1, day=1)</div>\n\n\nReturns a datetime for the first day of the next month.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom dateutil.relativedelta import relativedelta\n\n<var>datetime_1</var> = datetime(<var>2000</var>, <var>2</var>, <var>1</var>, <var>0</var>, <var>0</var>, <var>0</var>)\n\n<var>next_month</var> = <var>datetime_1</var> + relativedelta(months=1, day=1)\n\n<span class=\"note\"># Returns: datetime(2000, 3, 1, 0, 0)</span></div>\n\n\n\n"},{"id":"ZeFR","level":2,"heading":"DateTime - Replace Unit","content":"<h3>DateTime - Replace Unit</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.replace(<var>unit</var> = <var>value</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">= <var>datetime_1</var>.replace(year = <var>year</var>)\n= <var>datetime_1</var>.replace(month = <var>month</var>)\n= <var>datetime_1</var>.replace(day = <var>day</var>)\n= <var>datetime_1</var>.replace(hour = <var>hour</var>)\n= <var>datetime_1</var>.replace(minute = <var>minute</var>)\n= <var>datetime_1</var>.replace(second = <var>second</var>)\n= <var>datetime_1</var>.replace(microsecond = <var>microsecond</var>)</div>\n\n\nReplaces one or more of the datetime units with a new value.\n\n\nUnit Ranges:\n\n<table><tr><td>Year</td><td>1 - 9999</td></tr>\n<tr><td>Month</td><td>1 - 12</td></tr>\n<tr><td>Day</td><td>1 - Last-Day-Of-Month</td></tr>\n<tr><td>Hour</td><td>0 - 23</td></tr>\n<tr><td>Minute</td><td>0 - 59</td></tr>\n<tr><td>Second</td><td>0 - 59</td></tr>\n<tr><td>Microseconds</td><td>0 - 999,999</td></tr></table>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>now</var> = datetime.now()\n\n<var>start_of_day</var> = <var>now</var>.replace(\n        hour = 0,\n        minute = 0,\n        second = 0,\n        microsecond = 0)\n\nprint(&quot;Start of Day:&quot;, <var>start_of_day</var>)</div>\n\n\n\n"},{"id":"a7GE","level":2,"heading":"DateTime - To Year","content":"<h3>DateTime - To Year</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.year</div>\n\n\n\n"},{"id":"4hza","level":2,"heading":"DateTime - To Month","content":"<h3>DateTime - To Month</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.month</div>\n\n\n\n"},{"id":"D1T2","level":2,"heading":"DateTime - To Day","content":"<h3>DateTime - To Day</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.day</div>\n\n\n\n"},{"id":"Pr4c","level":2,"heading":"DateTime - To Day of Week","content":"<h3>DateTime - To Day of Week</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.weekday()</div>\n\n\nReturns: <code>int</code>\n\nYes, this is <code>.weekday()</code> with a <code>()</code>.\n\n0 is Monday.\n6 is Sunday.\n\n\n\n"},{"id":"XRXf","level":2,"heading":"DateTime - To Hour","content":"<h3>DateTime - To Hour</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.hour</div>\n\n\n\n"},{"id":"krUt","level":2,"heading":"DateTime - To Minute","content":"<h3>DateTime - To Minute</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.minute</div>\n\n\n\n"},{"id":"dcud","level":2,"heading":"DateTime - To Second","content":"<h3>DateTime - To Second</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.second</div>\n\n\n\n"},{"id":"WhhG","level":2,"heading":"DateTime - To Date","content":"<h3>DateTime - To Date</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.date()</div>\n\n\n\n"},{"id":"ZKhj","level":2,"heading":"DateTime - To Time","content":"<h3>DateTime - To Time</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.time()</div>\n\n\n\n"},{"id":"qupG","level":2,"heading":"DateTime - From Timestamp","content":"<h3>DateTime - From Timestamp</h3>\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime.fromtimestamp(<var>timestamp_1</var>)</div>\n\n\nGet the datetime for the given timestamp or epoch time (the number of seconds since 1969-12-31 19:00:00).\n\n\n\nExample:\n\n<div class=\"codebox\"><var>datetime_1</var> = datetime.fromtimestamp(<var>0</var>)\n\n<span class=\"note\"># Returns 1969-12-31 19:00:00</span></div>\n\n<div class=\"codebox\"><var>datetime_1</var> = datetime.fromtimestamp(<var>978325200</var>)\n\n<span class=\"note\"># Returns 2001-01-01 00:00:00</span></div>\n\n<div class=\"codebox\"><var>datetime_1</var> = datetime.fromtimestamp(<var>978325200.5</var>)\n\n<span class=\"note\"># Returns 2001-01-01 00:00:00:500000</span></div>\n\n\n\n"},{"id":"Rssd","level":2,"heading":"DateTime - To TimeStamp","content":"<h3>DateTime - To TimeStamp</h3>\n\n<div class=\"codebox\"><var>timestamp_1</var> = <var>datetime_1</var>.timestamp()</div>\n\nOr\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>timestamp_1</var> = datetime.timestamp(<var>datetime_1</var>)</div>\n\n\nReturns: <code>float</code>\n\n\nReturns the timestamp or epoch time in seconds.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime(2001, 1, 1)\n\n<var>timestamp_1</var> = <var>datetime_1</var>.timestamp()\n\n<span class=\"note\"># Returns 978325200.0.</span></div>\n\n\n\n"},{"id":"kqQs","level":2,"heading":"DateTime - From String","content":"<h3>DateTime - From String</h3>\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime.fromisoformat(<var>iso_date_time_string</var>)</div>\n\nor\n\n<div class=\"codebox\"><var>datetime_2</var> = datetime.strptime(<var>date_time_string</var>, <var>date_time_format</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<span class=\"note\"># These are equivalent:</span>\n\n<var>date_1</var> = datetime.fromisoformat(&quot;<var>2020-11-30 23:59:59</var>&quot;)\n<var>date_2</var> = datetime.strptime(&quot;<var>2020-11-30 23:59:59</var>&quot;, '<var>%Y-%m-%d %H:%M:%S</var>')</div>\n\n\n\n"},{"id":"0qN7","level":2,"heading":"DateTime - To String","content":"<h3>DateTime - To String</h3>\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:<var>format</var>}</div>\n\nAll Formatting Options:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:<var>format</var>}\n= '{:<var>format</var>}'.format(<var>datetime_1</var>)\n= <var>datetime_1</var>.strftime(<var>format</var>)</div>\n\n\nConverts a datetime into a string.\n\nA typical format would be <code>'%Y-%m-%d %H:%M:%S'</code> or <code>'%m/%d/%Y %H:%M:%S'</code>.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime(2001, 1, 1, 1, 1, 1)\n\n<var>string_1</var> = f'{<var>datetime_1</var>:<var>%Y-%m-%d %H:%M:%S</var>}'\n<var>string_2</var> = '{:<var>%Y-%m-%d %H:%M:%S</var>}'.format(<var>datetime_1</var>)\n<var>string_3</var> = <var>datetime_1</var>.strftime('<var>%Y-%m-%d %H:%M:%S</var>')\n\n<span class=\"note\"># All Return: '2001-01-01 01-01-01'</span></div>\n\n\n\n"},{"id":"55xw","level":2,"heading":"DateTime - From ISO-8601 String","content":"<h3>DateTime - From ISO-8601 String</h3>\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime.fromisoformat(<var>iso_date_time_string</var>)</div>\n\n\nAccepted Formats:\n\n<div class=\"codebox\">'<var>YYYY</var>-<var>MM</var>-<var>DD</var> <var>hh</var>:<var>mm</var>:<var>ss</var>'\n'<var>YYYY</var>-<var>MM</var>-<var>DD</var>T<var>hh</var>:<var>mm</var>:<var>ss</var>'</div>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>date_1</var> = datetime.fromisoformat(&quot;<var>2020-11-30 23:59:59</var>&quot;)</div>\n\n<div class=\"codebox\">from datetime import datetime\n\n<span class=\"note\"># These are equivalent:</span>\n\n<var>date_1</var> = datetime.fromisoformat(&quot;<var>2020-11-30 23:59:59</var>&quot;)\n<var>date_2</var> = datetime.strptime(&quot;<var>2020-11-30 23:59:59</var>&quot;, '<var>%Y-%m-%d %H:%M:%S</var>')</div>\n\n\n\n"},{"id":"Q8gY","level":2,"heading":"DateTime - To ISO-8601 String","content":"<h3>DateTime - To ISO-8601 String</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.isoformat()</div>\n\n\nReturns Format:\n\n<div class=\"codebox\">'<var>YYYY</var>-<var>MM</var>-<var>DD</var>T<var>HH</var>:<var>MM</var>:<var>SS</var>'</div>\n\n<div class=\"codebox\">'<var>YYYY</var>-<var>MM</var>-<var>DD</var>T<var>HH</var>:<var>MM</var>:<var>SS</var>.<var>ssssss</var>'</div>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime(2001, 1, 1, 1, 1, 1)\n\n<var>formatted_datetime</var> = <var>datetime_1</var>.isoformat()\n\n<span class=\"note\"># Returns '2001-01-01T01:01:01'</span></div>\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime(2001, 1, 1, 1, 1, 1, 500)\n\n<var>formatted_datetime</var> = <var>datetime_1</var>.isoformat()\n\n<span class=\"note\"># Returns '2001-01-01T01:01:01.000500'</span></div>\n\n\n\n"},{"id":"r2rJ","level":1,"heading":"DateTime - Time Zones","content":"<h1>DateTime - Time Zones</h1>\n\n\n"},{"id":"DABJ","level":2,"heading":"Datetime - Create With Time Zone","content":"<h3>Datetime - Create With Time Zone</h3>\n\n<div class=\"codebox\">= datetime(<var>...</var>, tzinfo = <var>time_zone</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\n= datetime(<var>...</var>, tzinfo = ZoneInfo('<var>time_zone</var>'))</div>\n\nReturn: <code>datetime</code>\n\n\nCreates a date time with the given time zone.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\n<var>datetime_1</var> = datetime(2001, 1, 1, 0, 0, 0,\n        tzinfo = ZoneInfo('<var>America/New_York</var>'))\n\nprint(<var>datetime_1</var>)\n\n<span class=\"note\"># Prints: 2001-01-01 00:00:00-05:00</span></div>\n\n\n\n"},{"id":"tmrP","level":2,"heading":"Datetime - Create With Local Time Zone","content":"<h3>Datetime - Create With Local Time Zone</h3>\n\n<div class=\"codebox\">= datetime(<var>...</var>).astimezone()</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\n\n= datetime(<var>...</var>).astimezone()</div>\n\nReturn: <code>datetime</code>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime(2001, 1, 1, 0, 0, 0).astimezone()\n\nprint(<var>datetime_1</var>)</div>\n\n\n\n"},{"id":"xHym","level":2,"heading":"Datetime - Create With UTC Time Zone","content":"<h3>Datetime - Create With UTC Time Zone</h3>\n\n<div class=\"codebox\">= datetime(<var>...</var>, tzinfo = timezone.utc)</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\nfrom datetime import timezone\n\n= datetime(<var>...</var>, tzinfo = timezone.utc)</div>\n\nReturn: <code>datetime</code>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom datetime import timezone\n\n<var>datetime_1</var> = datetime(2001, 1, 1, 0, 0, 0, tzinfo = timezone.utc)\n\nprint(<var>datetime_1</var>)\n\n<span class=\"note\"># Prints: 2001-01-01 00:00:00+00:00</span></div>\n\n\n\n"},{"id":"SgZT","level":2,"heading":"Datetime - Create With Fold","content":"<h3>Datetime - Create With Fold</h3>\n\n<div class=\"codebox\">= datetime(<var>...</var>, fold = <var>fold_number</var>)</div>\n\n\nAllows you to set the time unambiguously during a transition from daylight savings.\n\n\nDaylight Savings Clock Change:\n\n<div class=\"indent\"><table><tr><td>Before\t</td><td>fold = 0</td></tr>\n<tr><td>After</td><td>fold = 1</td></tr></table></div>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom datetime import timezone\nfrom zoneinfo import ZoneInfo\n\n<var>before_clock_change</var> = datetime(2000, 10, 29, 1, 30, 0,\n\ttzinfo = ZoneInfo('America/New_York'), fold = 0)\n\n<var>after_clock_change</var> = datetime(2000, 10, 29, 1, 30, 0,\n\ttzinfo = ZoneInfo('America/New_York'), fold = 1)\n\nprint(<var>before_clock_change</var>)\nprint(<var>after_clock_change</var>)\n\n<span class=\"note\"># Prints:\n/#\n/#   2000-10-29 01:30:00-04:00\n/#   2000-10-29 01:30:00-05:00</span></div>\n\nIn UTC:\n\n<div class=\"codebox\">print(<var>before_clock_change</var>.astimezone(timezone.utc))\nprint(<var>after_clock_change</var>.astimezone(timezone.utc))\n\n<span class=\"note\"># Prints:\n/#\n/#   2000-10-29 05:30:00+00:00\n/#   2000-10-29 06:30:00+00:00</span></div>\n\n\n\n"},{"id":"7jeh","level":2,"heading":"Datetime - Create Now With Time Zone","content":"<h3>Datetime - Create Now With Time Zone</h3>\n\n<div class=\"codebox\">= now(tz = <var>time_zone</var>)</div>\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\n= datetime.now(tz = ZoneInfo('<var>time_zone</var>'))</div>\n\nReturn: <code>datetime</code>\n\n\nReturns the current date time with the given time zone.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\n<var>datetime_1</var> = datetime.now(tz = ZoneInfo('<var>America/New_York</var>'))\n\nprint(<var>datetime_1</var>)</div>\n\n\n\n"},{"id":"fsxS","level":2,"heading":"Datetime - Create Now With Local Time Zone","content":"<h3>Datetime - Create Now With Local Time Zone</h3>\n\n<div class=\"codebox\">= datetime.now().astimezone()</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\n\n= datetime.now().astimezone()</div>\n\nReturn: <code>datetime</code>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\n\n<var>datetime_1</var> = datetime.now().astimezone()\n\nprint(<var>datetime_1</var>)</div>\n\n\n\n"},{"id":"Fxpp","level":2,"heading":"Datetime - Create Now With UTC Time Zone","content":"<h3>Datetime - Create Now With UTC Time Zone</h3>\n\n<div class=\"codebox\">= datetime.now(tz = timezone.utc)</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\nfrom datetime import timezone\n\n= datetime.now(tz = timezone.utc)</div>\n\nReturn: <code>datetime</code>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom datetime import timezone\n\n<var>datetime_1</var> = datetime.now(tz = timezone.utc)\n\nprint(<var>datetime_1</var>)</div>\n\n\n\n"},{"id":"EhHt","level":1,"heading":"DateTime - Time Zone Operations","content":"<h1>DateTime - Time Zone Operations</h1>\n\n\n"},{"id":"r9Lt","level":2,"heading":"Datetime - Change Time Zone","content":"<h3>Datetime - Change Time Zone</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.astimezone(<var>time_zone</var>)</div>\n\n\nChanges the datetime to datetime in the provided time zone.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\n<var>ny_datetime</var> = datetime(2001, 1, 1, 0, 0, 0,\n        tzinfo = ZoneInfo('America/New_York'))\n\n<var>la_datetime</var> = <var>ny_date</var>.astimezone(ZoneInfo('America/Los_Angeles'))\n\nprint(&quot;NY:&quot;, <var>ny_datetime</var>)\nprint(&quot;LA:&quot;, <var>la_datetime</var>)\n\n<span class=\"note\"># Prints:\n#    NY: 2001-01-01 00:00:00-05:00\n#    LA: 2000-12-31 21:00:00-08:00</span></div>\n\n\n\n"},{"id":"8Wqh","level":2,"heading":"Datetime - Change To Local Time Zone","content":"<h3>Datetime - Change To Local Time Zone</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.astimezone()</div>\n\n\nChanges the datetime to the local time zone.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\n<var>ny_datetime</var> = datetime(2001, 1, 1, 0, 0, 0,\n        tzinfo = ZoneInfo('America/New_York'))\n\n<var>local_datetime</var> = <var>ny_datetime</var>.astimezone()</div>\n\n\n\n"},{"id":"7wFg","level":2,"heading":"Datetime - Get Time Zone","content":"<h3>Datetime - Get Time Zone</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.tzname()</div>\n\nReturns: <code>str</code>\n\n\nReturns the name of the time zone.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\n<var>datetime_1</var> = datetime(2001, 1, 1, 0, 0, 0,\n        tzinfo = ZoneInfo('<var>America/New_York</var>'))\n\nprint(<var>datetime_1</var>.tzname())\n\n<span class=\"note\"># Prints: EST</span></div>\n\n\n\n"},{"id":"y62n","level":2,"heading":"Datetime - Is In Daylight Savings?","content":"<h3>Datetime - Is In Daylight Savings?</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.dst() == timedelta(seconds=3600)</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import timedelta\n\n= <var>datetime_1</var>.dst() == timedelta(seconds=3600)</div>\n\n\nReturns: <code>str</code>\n\n\nReturns <code>True</code> if in daylight savings.\n\n<div class=\"codebox\">.dst()</div> returns the difference in time from the non DST time.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\nfrom datetime import timedelta\n\n<var>datetime_1</var> = datetime(2001, 7, 1, 0, 0, 0,\n        tzinfo = ZoneInfo('<var>America/New_York</var>'))\n\nprint(<var>datetime_1</var>.dst() == timedelta(seconds=3600))\n\n<span class=\"note\"># Prints: True</span></div>\n\n\n\n"},{"id":"Ejuf","level":2,"heading":"Datetime - Is Folded?","content":"<h3>Datetime - Is Folded?</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.fold</div>\n\n\nReturns if the time is after a daylight savings change.\n\n\nDaylight Savings Clock Change:\n\n<div class=\"indent\"><table><tr><td>Before\t</td><td>fold = 0</td></tr>\n<tr><td>After</td><td>fold = 1</td></tr></table></div>\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\nafter_clock_change = datetime(2000, 10, 29, 1, 30, 0,\n\ttzinfo = ZoneInfo('America/New_York'), fold = 1)\n\nprint(after_clock_change.fold)</div>\n\n\n\n"},{"id":"3gwN","level":2,"heading":"Datetime - Set / Replace Time Zone","content":"<h3>Datetime - Set / Replace Time Zone</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.replace(tzinfo = <var>time_zone</var>)</div>\n\n\nUpdates the time zone but keeps the time unchanged.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import datetime\nfrom zoneinfo import ZoneInfo\n\n<var>ny_date</var> = datetime(2001, 1, 1, 0, 0, 0,\n        tzinfo = ZoneInfo('America/New_York'))\n\n<var>la_date</var> = <var>ny_date</var>.replace(tzinfo = ZoneInfo('America/Los_Angeles'))\n\nprint(&quot;NY:&quot;, <var>ny_date</var>)\nprint(&quot;LA:&quot;, <var>la_date</var>)\n\n<span class=\"note\"># Prints:\n#    NY: 2001-01-01 00:00:00-05:00\n#    LA: 2001-01-01 00:00:00-08:00</span></div>\n\n\n\n"},{"id":"NY6V","level":1,"heading":"Time Zones","content":"<h1>Time Zones</h1>\n\n\n"},{"id":"be1n","level":2,"heading":"Time Zone - Get","content":"<h3>Time Zone - Get</h3>\n\n<div class=\"codebox\">= ZoneInfo('<var>time_zone</var>')</div>\n\nUsage:\n\n<div class=\"codebox\">from zoneinfo import ZoneInfo\n\n= ZoneInfo('America/EST')</div>\n\n\nReturns the zone info object for the given time zone.\n\n\nExample:\n\n<div class=\"codebox\">from zoneinfo import ZoneInfo\n\n<var>zone_1</var> = ZoneInfo('America/New_York')</div>\n\n\n\n"},{"id":"XAyR","level":2,"heading":"Time Zones - List","content":"<h3>Time Zones - List</h3>\n\n<div class=\"codebox\">= zoneinfo.available_timezones()</div>\n\nUsage:\n\n<div class=\"codebox\">from zoneinfo import available_timezones\n\nzones = available_timezones())</div>\n\n\nReturns all the available time zones.\n\n\nExample:\n\n<div class=\"codebox\">from zoneinfo import available_timezones\n\nzones = available_timezones())\n\nfor zone in sorted(zones):\n    print(zone)</div>\n\n\n\n"},{"id":"uuaD","level":1,"heading":"TimeDelta","content":"<h1>TimeDelta</h1>\n\n<div class=\"codebox\">from datetime import timedelta\n\n= timedelta(<var>unit</var> = <var>value</var>)</div>\n\n<div class=\"codebox\">= timedelta(<var>unit</var> = <var>value</var>, <var>unit</var>=<var>value</var> <var>...</var>)</div>\n\n<div class=\"codebox\">= timedelta(\n\t\tweeks=<var>weeks_value</var>,\n\t\tdays=<var>days_value</var>,\n\t\thours=<var>hours_value</var>,\n\t\tminutes=<var>minutes_value</var>,\n\t\tseconds=<var>seconds_value</var>,\n\t\tmicroseconds=<var>microseconds_value</var>,\n\t\tmilliseconds=<var>milliseconds_value</var>)</div>\n\n<div class=\"codebox\"><var>timedelta_3</var> = <var>datetime_1</var> - <var>datetime_2</var></div>\n\n\nStores a duration in time as days and seconds.\n\n\nExamples:\n\n<div class=\"codebox\">from datetime import timedelta\n\n<var>timedelta_1</var> = timedelta(seconds=<var>10</var>)\n<var>timedelta_2</var> = timedelta(days=<var>4</var>, hours=<var>3</var>, minutes=<var>2</var>, seconds=<var>1</var>)</div>\n\n\n\n"},{"id":"3Z6X","level":1,"heading":"TimeDelta - Operations","content":"<h1>TimeDelta - Operations</h1>\n\n\n\n"},{"id":"WULc","level":2,"heading":"TimeDelta - Get Microseconds","content":"<h3>TimeDelta - Get Microseconds</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var>.microseconds</div>\n\n\nReturns: <code>int</code>\n\n\n"},{"id":"WYmg","level":2,"heading":"TimeDelta - Get Milliseconds","content":"<h3>TimeDelta - Get Milliseconds</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var>.microseconds // 1000</div>\n\nReturns: <code>int</code>\n\n\nThere is no built in way to do this.\nDivide .microseconds by 1000 instead.\n\n\n\n"},{"id":"p7HX","level":2,"heading":"TimeDelta - Get Seconds","content":"<h3>TimeDelta - Get Seconds</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var>.seconds</div>\n\n\nReturns: <code>int</code>\n\n\nReturns the number of seconds for the portion less than a day.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import timedelta\n\n<var>timedelta_1</var> = timedelta(days = 2, hours = 1, seconds = 15)\n\n<var>seconds</var> = <var>timedelta_1</var>.seconds\n\n<span class=\"note\"># Returns 3615 Seconds (1 hour * 3600 + 15 seconds)</span></div>\n\n\n\n"},{"id":"xXR6","level":2,"heading":"TimeDelta - Get Days","content":"<h3>TimeDelta - Get Days</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var>.days</div>\n\n\nReturns: <code>int</code>\n\n\nReturns the number of days for the timedelta.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import timedelta\n\n<var>timedelta_1</var> = timedelta(days = 2, hours = 1, seconds = 15)\n\n<var>days</var> = <var>timedelta_1</var>.days\n\n<span class=\"note\"># Returns 2</span></div>\n\n\n\n"},{"id":"ucNH","level":2,"heading":"TimeDelta - Get Total Seconds","content":"<h3>TimeDelta - Get Total Seconds</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var>.total_seconds()</div>\n\n\nReturns: <code>float</code>\n\n\nReturns the timedelta in seconds.\nReturns fraction of a second too.\n\n\n\n"},{"id":"LRC8","level":2,"heading":"TimeDelta - Is Equal?","content":"<h3>TimeDelta - Is Equal?</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var> == <var>timedelta_2</var></div>\n\n\n\n"},{"id":"TcMx","level":2,"heading":"TimeDelta - Compares?","content":"<h3>TimeDelta - Compares?</h3>\n\nIs Less Than:\n\n<div class=\"codebox\">= <var>timedelta_1</var> &lt; <var>timedelta_2</var></div>\n\nIs Greater Than:\n\n<div class=\"codebox\">= <var>timedelta_1</var> &gt; <var>timedelta_2</var></div>\n\n\n\n"},{"id":"qhF8","level":2,"heading":"TimeDelta - Absolute Value","content":"<h3>TimeDelta - Absolute Value</h3>\n\n<div class=\"codebox\">= abs(<var>timedelta_1</var>)</div>\n\n\n\n"},{"id":"yHnv","level":2,"heading":"TimeDelta - Add","content":"<h3>TimeDelta - Add</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var> + <var>timedelta_2</var></div>\n\n<div class=\"codebox\"><var>timedelta_1</var> += <var>timedelta_2</var></div>\n\n\nReturns: <code>timedelta</code>\n\n\nAdds 2 timedeltas together.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import timedelta\n\n<var>timedelta_1</var> = timedelta(minutes = 1)\n<var>timedelta_2</var> = timedelta(seconds = 15)\n\n<var>added</var> = <var>timedelta_1</var> + <var>timedelta_2</var>\n\n<span class=\"note\"># Returns 1 Minute 15 Seconds TimeDelta</span></div>\n\n\n\n"},{"id":"2sfW","level":2,"heading":"TimeDelta - Subtract","content":"<h3>TimeDelta - Subtract</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var> - <var>timedelta_2</var></div>\n\n<div class=\"codebox\"><var>timedelta_1</var> -= <var>timedelta_2</var></div>\n\n\nReturns: <code>timedelta</code>\n\n\nSubtracts a timedelta from another.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import timedelta\n\n<var>timedelta_1</var> = timedelta(minutes = 1)\n<var>timedelta_2</var> = timedelta(seconds = 15)\n\n<var>subtracted</var> = <var>timedelta_1</var> - <var>timedelta_2</var>\n\n<span class=\"note\"># Returns a 45 Second TimeDelta</span></div>\n\n\n\n"},{"id":"27PM","level":2,"heading":"TimeDelta - Divide By TimeDelta","content":"<h3>TimeDelta - Divide By TimeDelta</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var> / <var>timedelta_2</var></div>\n\n\nReturns: <code>float</code>\n\n\nDivides a timedelta by another.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import timedelta\n\n<var>timedelta_1</var> = timedelta(minutes = 1)\n<var>timedelta_2</var> = timedelta(seconds = 15)\n\n<var>subtracted</var> = <var>timedelta_1</var> / <var>timedelta_2</var>\n\n<span class=\"note\"># Returns 4</span></div>\n\n\n\n"},{"id":"UenX","level":2,"heading":"TimeDelta - Divide By Int / Float","content":"<h3>TimeDelta - Divide By Int / Float</h3>\n\n<div class=\"codebox\">= <var>timedelta_1</var> / <var>int_2</var></div>\n\n<div class=\"codebox\">= <var>timedelta_1</var> / <var>float</var></div>\n\n\nReturns: <code>timedelta</code>\n\n\nDivides a timedelta by an integer or float.\n\n\nExample:\n\n<div class=\"codebox\">from datetime import timedelta\n\n<var>timedelta_1</var> = timedelta(minutes = 1)\n\n<var>subtracted</var> = <var>timedelta_1</var> / 4\n\n<span class=\"note\"># Returns timedelta(seconds = 15)</span></div>\n\n\n\n"},{"id":"34L7","level":2,"heading":"TimeDelta - To String","content":"<h3>TimeDelta - To String</h3>\n\n<div class=\"codebox\">= str(<var>timedelta_1</var>)</div>\n\n\nFormatting with <code>.format()</code> or f&quot;&quot; is not an option.\n\n\n\n"},{"id":"4Xzu","level":2,"heading":"TimeDelta - To String Using Function","content":"<h3>TimeDelta - To String Using Function</h3>\n\nFunction:\n\n<div class=\"codebox\">def <var>format_timedelta</var>(<var>timedelta_1</var>):\n\n\t<var>remainder</var> = <var>timedelta_1</var>.seconds\n\n\t<var>hours</var> = int(<var>remainder</var> // 3600)\n\t<var>remainder</var> = <var>remainder</var> % 3600\n\n\t<var>minutes</var> = int(<var>remainder</var> // 60)\n\t<var>seconds</var> = int(<var>remainder</var> % 60)\n\n\tif <var>timedelta_1</var>.days &gt; 0:\n\t\treturn f&quot;{<var>timedelta_1</var>.days} days {<var>hours</var>}:{<var>minutes</var>:02}:{<var>seconds</var>:02}&quot;\n\n\treturn f&quot;{<var>hours</var>}:{<var>minutes</var>:02}:{<var>seconds</var>:02}&quot;</div>\n\nCall:\n\n<div class=\"codebox\">= <var>format_timedelta</var>(<var>timedelta_1</var>)</div>\n\n\nPrints days, hours, minutes, seconds.\n\n\n\n"},{"id":"3cSj","level":1,"heading":"Timestamp","content":"<h1>Timestamp</h1>\n\n<div class=\"codebox\">= <var>seconds_since_epoch</var></div>\n\n<div class=\"codebox\">from time import time\n\n= time()</div>\n\n\nReturns: <code>float</code>\n\n\nReturns the number of seconds in Unix Time or Epoch Time.\nMeasures from the Epoch, January 1, 1970, at 00:00:00 UTC.\n\n\nExample:\n\n<div class=\"codebox\"><span class=\"note\">Set to 2001-01-01 00:00:00:</span>\n\n<var>timestamp_1</var> = <var>978325200.0</var></div>\n\n\n\n"},{"id":"cvs3","level":1,"heading":"Timestamp - Operations","content":"<h1>Timestamp - Operations</h1>\n\n\n\n"},{"id":"desF","level":2,"heading":"Timestamp - From Datetime","content":"<h3>Timestamp - From Datetime</h3>\n\n<div class=\"codebox\">= <var>datetime_1</var>.timestamp()</div>\n\n\n\n"},{"id":"47cQ","level":2,"heading":"Timestamp - To Datetime","content":"<h3>Timestamp - To Datetime</h3>\n\n<div class=\"codebox\">= datetime.fromtimestamp(<var>timestamp_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from datetime import datetime\n\n= datetime.fromtimestamp(<var>timestamp_1</var>)</div>\n\n\n\n"},{"id":"Tpzg","level":2,"heading":"Timestamp - To String","content":"<h3>Timestamp - To String</h3>\n\n<div class=\"codebox\">= strftime(&quot;<var>format</var>&quot;, localtime(<var>timestamp_1</var>))</div>\n\nUsage:\n\n<div class=\"codebox\">from time import strftime\nfrom time import localtime\n\n= strftime(&quot;<var>format</var>&quot;, localtime(<var>timestamp_1</var>))</div>\n\nor\n\n<div class=\"card\">Convert to a <code>datetime</code> and then format.</div>\n\n\nExample:\n\n<div class=\"codebox\">from time import strftime\nfrom time import localtime\n\n<var>timestamp_2001</var> = <var>978325200</var>\n<var>formatted</var> = = strftime(&quot;<var>%Y-%m-%d %H:%M:%S</var>&quot;, localtime(<var>timestamp_2001</var>))</div>\n\n\n\n"},{"id":"2rUy","level":1,"heading":"Datetime vs Timestamp","content":"<h1>Datetime vs Timestamp</h1>\n\nDateTime:\n\n<ul><li>Stores Date and Time in a Class</li>\n<li>Has Many Date Time Manipulation Methods</li></ul>\n\nTimestamp:\n\n<ul><li>Stores Number of Seconds</li>\n<li>Since January 1st, 1970</li>\n<li>Returned as a Float</li></ul>\n\n\n\n"},{"id":"BfLu","level":1,"heading":"Enum","content":"<h1>Enum</h1>\n\n<div class=\"codebox\">from enum import Enum, auto\n\nclass <var>EnumName</var>(Enum):\n\t<var>ENUM_1</var> = auto()\n\t<var>ENUM_2</var> = auto()\n\t<var>...</var></div>\n\n\n<div class=\"codebox\">from enum import Enum\n\nclass <var>EnumName</var>(Enum):\n\t<var>ENUM_1</var> = <var>value_1</var>\n\t<var>ENUM_2</var> = <var>value_2</var>\n\t<var>...</var></div>\n\n<code>auto()</code> is required if the Enum items don't have a value.\n\n\n\n"},{"id":"0Wmw","level":1,"heading":"Enum Operations","content":"<h1>Enum Operations</h1>\n\n\n\n"},{"id":"mrKd","level":2,"heading":"Enum - Assign","content":"<h3>Enum - Assign</h3>\n\n<div class=\"codebox\">= <var>EnumName</var>.<var>ENUM_1</var></div>\n\n\n\n"},{"id":"Xhez","level":2,"heading":"Enum - Get Name","content":"<h3>Enum - Get Name</h3>\n\n<div class=\"codebox\">= <var>ENUM_1</var>.name</div>\n\n\n\n"},{"id":"K1bj","level":2,"heading":"Enum - Get Value","content":"<h3>Enum - Get Value</h3>\n\n<div class=\"codebox\">= <var>ENUM_1</var>.value</div>\n\n\nReturns the numeric value of the enum (usually the enum position).\n\n\n\n"},{"id":"ncAP","level":2,"heading":"Enum - Is Equal?","content":"<h3>Enum - Is Equal?</h3>\n\n<div class=\"codebox\">= <var>item_1</var> is <var>EnumName</var>.<var>ENUM_1</var></div>\n\n\n\n"},{"id":"YUtw","level":2,"heading":"Enum - From String","content":"<h3>Enum - From String</h3>\n\nDefine:\n\n<div class=\"codebox\">from enum import Enum, auto\n\nclass <var>EnumName</var>(Enum):\n\t<var>ENUM_1</var> = auto()\n\t<var>ENUM_2</var> = auto()\n\t<var>...</var>\n\n\t@classmethod\n\tdef from_string(cls, <var>value</var>):          <span class=\"note\">#1</span>\n\t\treturn cls.<var>_lookup</var>[<var>value</var>]         <span class=\"note\">#2</span>\n\n<var>EnumName</var>.<var>_lookup</var> = {                      <span class=\"note\">#3</span>\n\t\t<var>&quot;Enum 1a&quot;</var>: <var>EnumName</var>.<var>ENUM_1</var>,\n\t\t<var>&quot;Enum 1b&quot;</var>: <var>EnumName</var>.<var>ENUM_1</var>,\n\t\t<var>&quot;Enum 2a&quot;</var>: <var>EnumName</var>.<var>ENUM_2</var>,\n\t\t<var>&quot;Enum 2b&quot;</var>: <var>EnumName</var>.<var>ENUM_2</var>}\n</div>\n\nUse:\n\n<div class=\"codebox\">= <var>EnumName</var>.from_string(<var>&quot;Enum 1a&quot;</var>)</div>\n\nThere is no built in way to do this but the example above will do it.\nImplement a static method inside the <code><var>EnumName</var></code> class that will convert strings into enums.\n\n\n#1  <span class=\"dim\">-</span>  The static method that converts strings to Enums.\n\n#2  <span class=\"dim\">-</span>  Raises <code>KeyError</code> if not found.\n\n#3  <span class=\"dim\">-</span>  Define string to enum mappings here.\n\n\n\n"},{"id":"BUXG","level":1,"heading":"Dict","content":"<h1>Dict</h1>\n\n<div class=\"codebox\"><var>dict_1</var> = {}</div>\n\n<div class=\"codebox\"><var>dict_2</var> = {<var>'key_1'</var>: <var>'value_1'</var>, <var>'key_2'</var>: <var>'value_2'...</var>}</div>\n\n<div class=\"codebox\"><var>dict_3</var> = dict([(<var>'key_1'</var>, <var>'value_1'</var>), (<var>'key_2'</var>, <var>'value_2'</var>), <var>...</var>])</div>\n\nType: <code>dict</code>\n\n\nA collection of key value pairs.\nKeys can be any immutable type.\nInternally stored as a hash table.\n\n\n\n"},{"id":"eMNz","level":1,"heading":"Dict Operations","content":"<h1>Dict Operations</h1>\n\n\n\n"},{"id":"jftw","level":2,"heading":"Dict - Add / Update","content":"<h3>Dict - Add / Update</h3>\n\n<div class=\"codebox\"><var>dict_1</var>[<var>key</var>] = <var>value</var></div>\n\nWill replace <var>key</var> value if key exists.\nWill add <var>key</var> if it does not exist.\n\n\nExamples:\n\nAdd Value:\n\n<div class=\"codebox\"><var>dict_1</var> = {<var>1</var>: &quot;<var>a</var>&quot;, <var>2</var>: &quot;<var>b</var>&quot;}\n\n<var>dict_1</var>[<var>3</var>] = &quot;<var>c</var>&quot;\n\n<span class=\"note\"># Updates To: {1: 'a', 2: 'b', 3: 'c'}</span></div>\n\nUpdate Value:\n\n<div class=\"codebox\"><var>dict_1</var> = {<var>1</var>: &quot;<var>a</var>&quot;, <var>2</var>: &quot;<var>b</var>&quot;}\n\n<var>dict_1</var>[<var>2</var>] = &quot;<var>x</var>&quot;\n\n<span class=\"note\"># Updates To: {1: 'a', 2: 'x'}</span></div>\n\n\n\n\n"},{"id":"rDf0","level":2,"heading":"Dict - Add / Update From Dict","content":"<h3>Dict - Add / Update From Dict</h3>\n\n<div class=\"codebox\"><var>dict_1</var>.update(<var>dict_2</var>)</div>\n\n\nAdds or updates items from <code>dict_2</code> into <code>dict_1</code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>dict_1</var> = {<var>1</var>: &quot;<var>a</var>&quot;, <var>2</var>: &quot;<var>b</var>&quot;}\n<var>dict_2</var> = {<var>2</var>: &quot;<var>b2</var>&quot;, <var>3</var>: &quot;<var>c</var>&quot;}\n\n<var>dict_1</var>.update(<var>dict_2</var>)\n\n<span class=\"note\"># Updates To: {1: 'a', 2: 'b2', 3: 'c'}</span></div>\n\n\n\n"},{"id":"KKV1","level":2,"heading":"Dict - Dict Comprehension","content":"<h3>Dict - Dict Comprehension</h3>\n\n<div class=\"codebox\">= {<var>key_expression</var> : <var>value_expression</var> for <var>item</var> in <var>sequence_1</var>}</div>\n\nReturns: <code>dict</code>\n\n\nIterates over a sequence, performing an operation on every item.\nReturns the result as <code>dict</code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>items</var> = [1, 2, 3, 4, 5]\n\n<var>dict_1</var> = {<var>i</var> : str(<var>i</var>) for <var>i</var> in <var>items</var>}</div>\n\n\n\n\n"},{"id":"bPY8","level":2,"heading":"Dict - Dict Comprehension - If Condition","content":"<h3>Dict - Dict Comprehension - If Condition</h3>\n\n<div class=\"codebox\">= {<var>key_expression</var> : <var>value_expression</var> for <var>item</var> in <var>sequence_1</var> if <var>condition</var>}</div>\n\nReturns: <code>dict</code>\n\n\nIterates over a sequence, performing an operation on items that matth the if condition.\nReturns the result as <code>dict</code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>items</var> = [1, 2, 3, 4, 5]\n\n<var>dict_1</var> = {<var>i</var> : str(<var>i</var>) for <var>i</var> in <var>items</var> if <var>i</var> % 2 == 0}</div>\n\n\n\n"},{"id":"WEFs","level":2,"heading":"Dict - Contains Key?","content":"<h3>Dict - Contains Key?</h3>\n\nContains Key?:\n\n<div class=\"codebox\">= <var>key_1</var> in <var>dict_1</var>               <span class=\"note\"># Preferred</span></div>\n\nor\n\n<div class=\"codebox\">= <var>dict_1</var>.has_key(<var>key_1</var>)         <span class=\"note\"># Alternative</span></div>\n\n\n\n"},{"id":"1p32","level":2,"heading":"Dict - Not Contains Key?","content":"<h3>Dict - Not Contains Key?</h3>\n\n<div class=\"codebox\"><var>key_1</var> not in <var>dict_1</var></div>\n\n\n\n"},{"id":"2KWH","level":2,"heading":"Dict - Contains Value?","content":"<h3>Dict - Contains Value?</h3>\n\n<div class=\"codebox\">= <var>value_1</var> in <var>dict_1</var>.values()</div>\n\n\n\n"},{"id":"V0CA","level":2,"heading":"Dict - Not Contains Value?","content":"<h3>Dict - Not Contains Value?</h3>\n\n<div class=\"codebox\">= <var>value_1</var> not in <var>dict_1</var>.values()</div>\n\n\n\n"},{"id":"WJG0","level":2,"heading":"Dict - Delete","content":"<h3>Dict - Delete</h3>\n\n<div class=\"codebox\">del <var>dict_1</var>[<var>key_1</var>]</div>\n\n\nWill raise an error if key is not present.\n\n\n\n"},{"id":"wB56","level":2,"heading":"Dict - Delete All","content":"<h3>Dict - Delete All</h3>\n\n<div class=\"codebox\"><var>dict_1</var>.clear()</div>\n\n\n\n"},{"id":"4RRx","level":2,"heading":"Dict - Duplicate","content":"<h3>Dict - Duplicate</h3>\n\n<div class=\"codebox\">= <var>dict_1</var>.copy()</div>\n\n\nCreates a shallow copy.\n\n\n\n"},{"id":"5J6Z","level":2,"heading":"Dict - Duplicate - Deep Copy","content":"<h3>Dict - Duplicate - Deep Copy</h3>\n\n<div class=\"codebox\">from copy import deepcopy\n\n= deepcopy(<var>dict_1</var>)</div>\n\n\nCreates a deep copy.\n\n\n\n"},{"id":"LcRe","level":2,"heading":"Dict - Is Empty?","content":"<h3>Dict - Is Empty?</h3>\n\n<div class=\"codebox\">= not <var>dict_1</var></div>\n\n<div class=\"codebox\">if not <var>dict_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"HpJb","level":2,"heading":"Dict - Not Empty?","content":"<h3>Dict - Not Empty?</h3>\n\n<div class=\"codebox\">= bool(<var>dict_1</var>)</div>\n\n<div class=\"codebox\">if <var>dict_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"cdTG","level":2,"heading":"Dict - Get Keys","content":"<h3>Dict - Get Keys</h3>\n\n<div class=\"codebox\">= <var>dict_1</var>.keys()</div>\n\nAs List:\n\n<div class=\"codebox\">= list(<var>dict_1</var>.keys())</div>\n\n\n\n"},{"id":"v3Uf","level":2,"heading":"Dict - Get Key Value Pairs","content":"<h3>Dict - Get Key Value Pairs</h3>\n\n<div class=\"codebox\">= <var>dict_1</var>.items()</div>\n\n\n\n"},{"id":"xW0K","level":2,"heading":"Dict - Get Key Value Pairs - Sorted By Key","content":"<h3>Dict - Get Key Value Pairs - Sorted By Key</h3>\n\n<div class=\"codebox\">= sorted(<var>dict_1</var>.items(), <var>key</var>=lambda item: item[0])</div>\n\nReturns list of key value tuples.\n\n\n\n"},{"id":"wbUR","level":2,"heading":"Dict - Get Key Value Pairs - Sorted By Value","content":"<h3>Dict - Get Key Value Pairs - Sorted By Value</h3>\n\n<div class=\"codebox\">= sorted(<var>dict_1</var>.items(), <var>key</var>=lambda item: item[1])</div>\n\nReturns list of key value tuples.\n\n\n\n"},{"id":"7eRp","level":2,"heading":"Dict - Get Value","content":"<h3>Dict - Get Value</h3>\n\n<div class=\"codebox\">= <var>dict_1</var>[<var>key_1</var>]                         <span class=\"note\">#1</span></div>\n\nor\n\n<div class=\"codebox\">= <var>dict_1</var>.get(<var>key_1</var>)                     <span class=\"note\">#2</span></div>\n\nor\n\n<div class=\"codebox\">= <var>dict_1</var>.get(<var>key_1</var>, <var>default_value</var>)</div>\n\n\n#1  <span class=\"dim\">-</span>  Preferred style.\n\n#1  <span class=\"dim\">-</span>  Raises <code>KeyError</code> if not found.\n\n#2  <span class=\"dim\">-</span>  Returns <code>None</code> if not found.\n\n\nReturns the value of a dict.\n\n\nExample:\n\n<div class=\"codebox\"><var>dict_1</var> = {&quot;a&quot;: &quot;value a&quot;, &quot;b&quot;: &quot;value b&quot;, &quot;c&quot;: &quot;value c&quot;}\n\n<var>value_a</var> = <var>dict_1</var>[&quot;a&quot;]\n<var>value_a</var> = <var>dict_1</var>.get(&quot;a&quot;)\n<var>value_a</var> = <var>dict_1</var>.get(&quot;z&quot;, &quot;value a&quot;)\n\nprint(<var>value_a</var>)\n\n<span class=\"note\"># Print: value a</span></div>\n\n\n\n"},{"id":"nfJr","level":2,"heading":"Dict - Get Values","content":"<h3>Dict - Get Values</h3>\n\n<div class=\"codebox\">= <var>dict_1</var>.values()</div>\n\n\nReturns: <code>dict_values</code>\n\n\nAs List:\n\n<div class=\"codebox\">= list(<var>dict_1</var>.values())</div>\n\n\n\n"},{"id":"cC4X","level":2,"heading":"Dict - Get Values Sorted By Key","content":"<h3>Dict - Get Values Sorted By Key</h3>\n\n<div class=\"codebox\">= [<var>dict_1</var>[<var>key</var>] for <var>key</var> in sorted(<var>dict_1</var>.keys())]</div>\n\n\n\n"},{"id":"eSyV","level":2,"heading":"Dict - Iterate Over Keys","content":"<h3>Dict - Iterate Over Keys</h3>\n\n<div class=\"codebox\">for <var>key</var> in <var>dict_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"5Nxm","level":2,"heading":"Dict - Iterate Over Key, Value Pairs","content":"<h3>Dict - Iterate Over Key, Value Pairs</h3>\n\n<div class=\"codebox\">for <var>key</var>, <var>value</var> in <var>dict_1</var>.items():\n\t<var>...</var></div>\n\n\n\n"},{"id":"AVQe","level":2,"heading":"Dict - Iterate Over Values","content":"<h3>Dict - Iterate Over Values</h3>\n\n<div class=\"codebox\">for <var>value</var> in <var>dict_1</var>.values():\n\t<var>...</var></div>\n\n\n\n"},{"id":"0JS4","level":2,"heading":"Dict - Intersection","content":"<h3>Dict - Intersection</h3>\n\n<div class=\"codebox\">= {<var>key</var> : <var>dict_1</var>[<var>key</var>] for <var>key</var> in <var>dict_1</var> if <var>key</var> in <var>dict_2</var>}</div>\n\nReturns: <code>dict</code>\n\n\nReturn a dict with only those items in common between <code><var>dict_1</var></code> and <code><var>dict_2</var></code>.\n\n\n\n"},{"id":"ZTVm","level":2,"heading":"Dict - Is Dict?","content":"<h3>Dict - Is Dict?</h3>\n\n<div class=\"codebox\">= type(<var>item_1</var>) is dict</div>\n\n\n\n"},{"id":"UzC9","level":2,"heading":"Dict - Merge","content":"<h3>Dict - Merge</h3>\n\n<div class=\"codebox\">= dict_1 | dict_2                       <span class=\"note\">#1</span></div>\n\nor\n\n<div class=\"codebox\">= {**<var>dict_1</var>, **<var>dict_2</var>}</div>\n\nReturns: <code>dict</code>\n\n\nReturn a new dict with all items of <code><var>dict_1</var></code> and <code><var>dict_2</var></code>.\n\n\n#1  <span class=\"dim\">-</span>  Python 3.9+\n\n\n\n"},{"id":"ANAw","level":2,"heading":"Dict - Pop Value","content":"<h3>Dict - Pop Value</h3>\n\n<div class=\"codebox\">= <var>dict_1</var>.pop(<var>key</var>)</div>\n\nRemoves and returns the value for <code><var>key</var></code>.\n\n\n\n"},{"id":"xmck","level":2,"heading":"Dict - Size","content":"<h3>Dict - Size</h3>\n\n<div class=\"codebox\">= len(<var>dict_1</var>)</div>\n\n\n\n"},{"id":"BKBY","level":2,"heading":"Dict - Sort Keys","content":"<h3>Dict - Sort Keys</h3>\n\n<div class=\"codebox\">= sorted(<var>dict_1</var>.keys())</div>\n\n<div class=\"codebox\">for <var>key</var> in sorted(<var>dict_1</var>.keys()):\n\t<var>...</var></div>\n\nReturns: <code>list</code>\n\n\n\n"},{"id":"Mg2m","level":2,"heading":"Dict - Sort Values","content":"<h3>Dict - Sort Values</h3>\n\n<div class=\"codebox\">= sorted(<var>dict_1</var>.values())</div>\n\n<div class=\"codebox\">for <var>key</var> in sorted(<var>dict_1</var>.values()):\n\t<var>...</var></div>\n\nReturns: <code>list</code>\n\n\n\n"},{"id":"dJMY","level":2,"heading":"Dict - Subtraction","content":"<h3>Dict - Subtraction</h3>\n\n<div class=\"codebox\">= {<var>key</var>: <var>dict_1</var>[<var>key</var>] for <var>key</var> in <var>dict_1</var> if <var>key</var> not in <var>dict_2</var>}</div>\n\nReturns: <code>dict</code>\n\n\nReturns a new dict containing only those items in <code><var>dict_1</var></code> but not in <code><var>dict_2</var></code>.\n\n\n\n"},{"id":"k6Hx","level":2,"heading":"Dict - To List","content":"<h3>Dict - To List</h3>\n\n<div class=\"codebox\">= list(<var>dict_1</var>.values())</div>\n\n\n\n"},{"id":"Cn3A","level":1,"heading":"List","content":"<h1>List</h1>\n\n<div class=\"codebox\">= []\n= [<var>value_1</var>, <var>value_2</var>, <var>...</var>]</div>\n\nType: list\n\n\nAn ordered list.\nImplemented as a fixed-length array of pointers.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]</div>\n\n<div class=\"codebox\"><var>list_2</var> = [<var>1</var>, <var>&quot;1&quot;</var>, <var>&quot;one&quot;</var>]</div>\n\n\n\n"},{"id":"nhKP","level":2,"heading":"List - Nested Lists","content":"<h3>List - Nested Lists</h3>\n\n<div class=\"codebox\">= [[<var>0</var>, <var>1</var>, <var>2</var>], [<var>10</var>, <var>11</var>, <var>12</var>], <var>...</var>]</div>\n\n<div class=\"codebox\">= [<var>sublist_1</var>, <var>sublist_2</var>, <var>...</var>]</div>\n\n\nExamples:\n\n2D List:\n\n<div class=\"codebox\"><var>list_1</var> = [\n\t\t[1, 2, 3, 4],\n\t\t[5, 6, 7, 8]]\n\n<var>value</var> = <var>list_1</var>[1][3]\n\n<span class=\"note\"># Returns 8</span></div>\n\n3D List:\n\n<div class=\"codebox\"><var>list_1</var> = [\n\t\t[[1, 2, 3],\n\t\t [4, 5, 6]],\n\t\t[[11, 12, 13],\n\t\t [14, 15, 16]]]\n\n<var>value</var> = <var>list_1</var>[0][1][2]\n\n<span class=\"note\"># Returns 6</span></div>\n\n\n\n"},{"id":"ZBqc","level":2,"heading":"List - Create With Initial Value","content":"<h3>List - Create With Initial Value</h3>\n\n<div class=\"codebox\">= [<var>value</var>] * <var>size</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>five_ones</var> = [1] * 5\n\n<span class=\"note\"># Returns [1, 1, 1, 1, 1]</span></div>\n\n\n\n"},{"id":"hCt6","level":1,"heading":"List Operations","content":"<h1>List Operations</h1>\n\n\n\n"},{"id":"EcVK","level":2,"heading":"List - Append","content":"<h3>List - Append</h3>\n\n<div class=\"codebox\"><var>list_1</var>.append(<var>value</var>)</div>\n\n\nAppends a value to the end of a list.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>1</var>, <var>2</var>]\n\n<var>list_1</var>.append(<var>3</var>)\n\n<span class=\"note\"># Sets list_1 to [1, 2, 3]</span></div>\n\n\n\n"},{"id":"PUFx","level":2,"heading":"List - Append List","content":"<h3>List - Append List</h3>\n\n<div class=\"codebox\"><var>list_1</var>.extend(<var>list_2</var>)</div>\n\n\nAppends a list of items to the end of another list.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>1</var>, <var>2</var>]\n<var>list_2</var> = [<var>3</var>, <var>4</var>]\n\n<var>list_1</var>.extend(<var>list_2</var>)\n\n<span class=\"note\"># Sets list_1 to [1, 2, 3, 4]</span></div>\n\n\n\n"},{"id":"kBNY","level":2,"heading":"List - Apply Function","content":"<h3>List - Apply Function</h3>\n\n<div class=\"codebox\">= list(map(<var>function_1</var>, <var>list_1</var>))</div>\n\nReturns: <code>list</code>\n\n\nApplies the function to each value in <var>list_1</var> returning the results in a new list.\n\n\nExample:\n\n<div class=\"codebox\">def <var>add_10</var>(<var>value</var>):\n\treturn <var>value + 10</var>\n\n<var>list_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>]\n\n<var>applied_list</var> = list(map(<var>add_10</var>, <var>list_1</var>))\n\n<span class=\"note\"># Returns: [11, 12, 13]</span></div>\n\n\n\n"},{"id":"gL31","level":2,"heading":"List - List Comprehension","content":"<h3>List - List Comprehension</h3>\n\n<div class=\"codebox\">= [<var>expression</var> for <var>value</var> in <var>list_1</var>]</div>\n\nReturns: <code>list</code>\n\n\nIterates over a list or sequence, performing an operation on every item.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2, 3, 4, 5]\n\n<var>list_2</var> = [ <var>i</var> * 2 for <var>i</var> in <var>list_1</var>]               <span class=\"note\"># Returns [2, 4, 6, 8, 10]</span></div>\n\n\n\n\n"},{"id":"hCe5","level":2,"heading":"List - List Comprehension - If Condition","content":"<h3>List - List Comprehension - If Condition</h3>\n\n<div class=\"codebox\">= [<var>expression</var> for <var>value</var> in <var>list_1</var> if <var>condition</var>]</div>\n\nReturns: <code>list</code>\n\n\nIterates over a list or sequence, performing an operation on those items that match the if condition.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2, 3, 4, 5]\n\n<var>list_2</var> = [ <var>i</var> * 2 for <var>i</var> in <var>list_1</var> if <var>i</var> &lt;= 3]      <span class=\"note\"># Returns [2, 4, 6]</span></div>\n\n\n\n"},{"id":"Y851","level":2,"heading":"List - List Comprehension, Nested","content":"<h3>List - List Comprehension, Nested</h3>\n\n<div class=\"codebox\">= [[<var>expression</var> for <var>value</var> in <var>sublist</var>] for <var>sublist</var> in <var>list_1</var>]</div>\n\nReturns: <code>list[list]</code>\n\n\nIterates over a list of lists or sequece of sequences, performing operations on every value in each sublist.\n\nReturns a list of lists.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [[<var>1</var>, <var>2</var>], [<var>3</var>, <var>4</var>]]\n\n<var>plus_10</var> = [[<var>value</var> + 10 for <var>value</var> in <var>sublist</var>] for <var>sublist</var> in <var>list_1</var>]\n\n<span class=\"note\"># Returns: [[11, 12], [13, 14]]</span></div>\n\n\n\n"},{"id":"fgZH","level":2,"heading":"List - List Comprehension, Nested, Flatten","content":"<h3>List - List Comprehension, Nested, Flatten</h3>\n\n<div class=\"codebox\">= [<var>expression</var> for <var>sublist</var> in <var>list_1</var> for <var>value</var> in <var>sublist</var>]</div>\n\nReturns: <code>list</code>\n\n\nIterates over a list of lists or sequece of sequences, as if it were a flat list.\n\nReturns a flat list.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [[<var>1</var>, <var>2</var>], [<var>3</var>, <var>4</var>]]\n\n<var>plus_10</var> = [<var>value</var> + 10 for <var>sublist</var> in <var>list_1</var> for <var>value</var> in <var>sublist</var>]\n\n<span class=\"note\"># Returns: [11, 12, 13, 14]</span></div>\n\n\n\n"},{"id":"RRsM","level":2,"heading":"List - Contains?","content":"<h3>List - Contains?</h3>\n\n<div class=\"codebox\">= <var>value</var> in <var>list_1</var></div>\n\n<div class=\"codebox\">if <var>value</var> in <var>list_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"xcRy","level":2,"heading":"List - Contains Any From Second List?","content":"<h3>List - Contains Any From Second List?</h3>\n\n<div class=\"codebox\">= any(<var>value</var> in <var>list_1</var> for <var>value</var> in <var>compare_list</var>)</div>\n\nReturns: <code>bool</code>\n\n\nReturns <code>True</code> if any item from <code><var>compare_list</var> is in <code><var>list_1</var></code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>]\n<var>compare_list</var> = [<var>3</var>, <var>5</var>]\n\n<var>match</var> = any(<var>value</var> in <var>list_1</var> for <var>value</var> in <var>compare_list</var>)\n\n<span class=\"note\"># Returns: True</span></div>\n\n\n\n</code>### List - Not Contains?\n\n<div class=\"codebox\">= <var>value</var> not in <var>list_1</var></div>\n\n<div class=\"codebox\">if <var>value</var> not in <var>list_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"mUxX","level":2,"heading":"List - Count Occurrences","content":"<h3>List - Count Occurrences</h3>\n\n<div class=\"codebox\">= <var>list_1</var>.count(<var>value</var>)</div>\n\n\nReturns the number of times <code><var>value</var></code> appears in <code><var>list_1</var></code>.\n\n\n\n"},{"id":"YBqs","level":2,"heading":"List - Count By Distinct Value","content":"<h3>List - Count By Distinct Value</h3>\n\n<div class=\"codebox\">from collections import Counter\n\n= Counter(<var>list_1</var>)</div>\n\n\nReturns: <code>dict</code>\n\n\nReturns a dictionary with every unique value and the number of times of that value is present.\n\n\n\n"},{"id":"nGs8","level":2,"heading":"List - Count Distinct Values","content":"<h3>List - Count Distinct Values</h3>\n\n<div class=\"codebox\">= len(set(<var>list_1</var>))</div>\n\n\nReturns the number of unique values in <code><var>list_1</var></code>.\n\n\n\n"},{"id":"PvC5","level":2,"heading":"List - Delete","content":"<h3>List - Delete</h3>\n\n<div class=\"codebox\"><var>del</var> <var>list_1</var>[<var>index</var>]</div>\n\n\n\n"},{"id":"FSDv","level":2,"heading":"List - Delete All","content":"<h3>List - Delete All</h3>\n\n<div class=\"codebox\"><var>del</var> <var>list_1</var>[:]</div>\n\n\n\n"},{"id":"AYLc","level":2,"heading":"List - Delete First","content":"<h3>List - Delete First</h3>\n\n<div class=\"codebox\"><var>del</var> <var>list_1</var>[0]</div>\n\n\n\n"},{"id":"0K6Y","level":2,"heading":"List - Delete Last","content":"<h3>List - Delete Last</h3>\n\n<div class=\"codebox\"><var>del</var> <var>list_1</var>[-1]</div>\n\n\n\n"},{"id":"Ecsh","level":2,"heading":"List - Delete In Range","content":"<h3>List - Delete In Range</h3>\n\n<div class=\"codebox\">del <var>list_1</var>[<var>start</var> : <var>end_plus_1</var>]</div>\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2, 3, 4, 5, 6, 7, 8, 9]\n\ndel <var>list_1</var>[<var>2</var>:<var>7</var>]                           <span class=\"note\"># Returns [1, 2, 8, 9]</span></div>\n\n\n\n"},{"id":"Uet0","level":2,"heading":"List - Delete Matching Value","content":"<h3>List - Delete Matching Value</h3>\n\n<div class=\"codebox\"><var>list_1</var>.remove(<var>value</var>)</div>\n\n\nDeletes the first item on the list that matches <var>value</var>.\n\nThrows <code>ValueError</code> if not found.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = ['<var>one</var>', '<var>two</var>', '<var>three</var>']\n\n<var>list_1</var>.remove('<var>two</var>')\n\nprint(<var>list_1</var>)\n\n<span class=\"note\"># Prints: ['one', 'three']</span></div>\n\n\n\n"},{"id":"dTMB","level":2,"heading":"List - Duplicate","content":"<h3>List - Duplicate</h3>\n\n<div class=\"codebox\">= <var>list_1</var>.copy()</div>\n\n\nCreates a shallow copy.\n\n\n\n"},{"id":"wqmh","level":2,"heading":"List - Duplicate - Deep Copy","content":"<h3>List - Duplicate - Deep Copy</h3>\n\n<div class=\"codebox\">from copy import deepcopy\n\n= deepcopy(<var>list_1</var>)</div>\n\n\nCreates a deep copy.\n\n\n\n"},{"id":"3Jc5","level":2,"heading":"List - Is Empty?","content":"<h3>List - Is Empty?</h3>\n\n<div class=\"codebox\">= not <var>list_1</var></div>\n\n<div class=\"codebox\">if not <var>list_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"d4TQ","level":2,"heading":"List - Not Empty?","content":"<h3>List - Not Empty?</h3>\n\n<div class=\"codebox\">= bool(<var>list_1</var>)</div>\n\n<div class=\"codebox\">if <var>list_1</var>:\n\t<var>...</var></div>\n\nUse <strong>bool()</strong> if you need to get a True/False value.\nThere is no need for <strong>bool()</strong> when using <strong>if...</strong>.\n\n\n\n"},{"id":"PyhQ","level":2,"heading":"List - Is Equal?","content":"<h3>List - Is Equal?</h3>\n\n<div class=\"codebox\">= <var>list_1</var> == <var>list_2</var></div>\n\n<div class=\"codebox\">if <var>list_1</var> == <var>list_2</var>:\n\t<var>...</var></div>\n\n\nReturns True if both lists are of same size and contain the same values.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>1, 2, 3</var>]\n<var>list_2</var> = [<var>1, 2, 3</var>]\n<var>list_3</var> = [<var>3, 2, 1</var>]\n\n<var>is_identical</var> = <var>list_1</var> == <var>list_2</var>\n\n<span class=\"note\"># Returns True</span>\n\n<var>is_identical</var> = <var>list_1</var> == <var>list_3</var>\n\n<span class=\"note\"># Returns False</span></div>\n\n\n\n"},{"id":"qdJv","level":2,"heading":"List - Is List?","content":"<h3>List - Is List?</h3>\n\n<div class=\"codebox\">= type(<var>item_1</var>) is list</div>\n\n\n\n"},{"id":"33Hu","level":2,"heading":"List - Is Sublist?","content":"<h3>List - Is Sublist?</h3>\n\nUse Function:\n\n<div class=\"codebox\">def is_sublist(<var>list_1</var>, <var>list_2</var>):\n\n\tlist_1_len = len(<var>list_1</var>)\n\n\tfor i in range(len(<var>list_2</var>) - list_1_len + 1):\n\t\tif <var>list_1</var> == <var>list_2</var>[i : i + list_1_len]:\n\t\t\treturn True\n\n\treturn False</div>\n\nCall:\n\n<div class=\"codebox\">= is_sublist(<var>list_1</var>, <var>list_2</var>)</div>\n\n\nReturns True if <code><var>list_1</var></code> is a sublist of <code><var>list_2</var></code>.\n\nCreate the function <code>is_sublist()</code> above to test if a list is a sublist of another list.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>3, 4</var>]\n<var>list_2</var> = [<var>1, 2, 3, 4, 5</var>]\n\nis_it_a_sublist = is_sublist(<var>list_1</var>, <var>list_2</var>)\n\n<span class=\"note\"># Returns True</span></div>\n\n\n\n"},{"id":"TBxu","level":2,"heading":"List - Exclude","content":"<h3>List - Exclude</h3>\n\n<div class=\"codebox\">= [ <var>item</var> for <var>item</var> in <var>list_1</var> if <var>item</var> not in <var>exclude_list</var> ]</div>\n\n\nRemoves all the items in the exclude list from <code><var>list_1</var></code>.\n\nPreserves the order of the items in <code><var>list_1</var></code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2, 3, 4, 5]\n<var>exclude</var> = [2, 3]\n\n<var>remaining</var> = [ <var>item</var> for <var>item</var> in <var>list_1</var> if <var>item</var> not in <var>exclude</var> ]\n\nprint(<var>remaining</var>)\n\n<span class=\"note\"># Prints: [1, 4, 5]</span></div>\n\n\n\n"},{"id":"KXA5","level":2,"heading":"List - Extract To Sublist","content":"<h3>List - Extract To Sublist</h3>\n\n<div class=\"codebox\">= <var>list_1</var>[<var>start</var> : <var>end_plus_1</var>]</div>\n\n<div class=\"codebox\">= <var>list_1</var>[<var>start</var>:]                        <span class=\"note\"># From <code><var>start</var></code> to the end.</span></div>\n\n<div class=\"codebox\">= <var>list_1</var>[:<var>end_plus_1</var>]                   <span class=\"note\"># From the start to before <code><var>end_plus_1</var></code>.</span></div>\n\n\nSee Also: <a class=\"link\" href=\"?q=slicing-only\">Slicing Sequences</a>\n\n\nExamples:\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2, 3, 4, 5, 6, 7, 8, 9]\n\n= <var>list_1</var>[0:5]                         <span class=\"note\"># [1, 2, 3, 4, 5]</span>\n= <var>list_1</var>[5:]                          <span class=\"note\"># [6, 7, 8, 9]</span>\n= <var>list_1</var>[0::8]                        <span class=\"note\"># [1, 9] First, last items.</span></div>\n\n\n\n"},{"id":"4JJf","level":2,"heading":"List - Find Duplicates","content":"<h3>List - Find Duplicates</h3>\n\n<div class=\"codebox\">= [item for item, count in Counter(<var>list_1</var>).items() if count &gt; 1]</div>\n\nUsage:\n\n<div class=\"codebox\">from collections import Counter\n\n<var>duplicates</var> = [item for item, count in Counter(<var>list_1</var>).items() if count &gt; 1]</div>\n\n\nExample:\n\n<div class=\"codebox\">from collections import Counter\n\n<var>items</var> = ['<var>a</var>', '<var>b</var>', '<var>b</var>', '<var>c</var>', '<var>d</var>', '<var>d</var>']\n\n<var>duplicates</var> = [item for item, count in Counter(<var>items</var>).items() if count &gt; 1]\n\nprint(<var>duplicates</var>)\n\n<span class=\"note\"># Prints: ['b', 'd']</span></div>\n\n\n\n"},{"id":"QHRG","level":2,"heading":"List - Find Index","content":"<h3>List - Find Index</h3>\n\n<div class=\"codebox\">= <var>list_1</var>.index(<var>value</var>)</div>\n\n<div class=\"codebox\">= <var>list_1</var>.index(<var>value</var>, <var>start</var>)</div>\n\n<div class=\"codebox\">= <var>list_1</var>.index(<var>value</var>, <var>start</var>, <var>end</var>)</div>\n\nReturns the index of the first match.\n\nThrows <code><a class=\"link\" href=\"?q=valueerror-only\">ValueError</a></code> if not found.\n\n\n\n"},{"id":"15eQ","level":2,"heading":"List - Flatten","content":"<h3>List - Flatten</h3>\n\nDefine:\n\n<div class=\"codebox\">def flatten(<var>value</var>):\n\n\tif type(<var>value</var>) is not list:\n\t\tyield <var>value</var>\n\t\treturn\n\n\tfor <var>subvalue</var> in <var>value</var>:\n\t\tyield from flatten(<var>subvalue</var>)</div>\n\nUse:\n\n<div class=\"codebox\">= list(flatten(<var>list_1</var>))</div>\n\n\nWill unwrap any combination of lists in lists into a flat list of values.\nPython has no built in way to do this but the <code>flatten</code> function above will do it.\n\n\nExample:\n\n<div class=\"codebox\">def flatten(<var>value</var>):\n\n\tif type(<var>value</var>) is not list:\n\t\tyield <var>value</var>\n\t\treturn\n\n\tfor <var>subvalue</var> in <var>value</var>:\n\t\tyield from flatten(<var>subvalue</var>)\n\n\n<var>list_1</var> = [1, 2, [[3, 4, [5, 6]], 7], [8, 9]]\n\n<var>flattened</var> = list(flatten(<var>list_1</var>))\n\n<span class=\"note\"># Returns: [1, 2, 3, 4, 5, 6, 7, 8, 9]</span></div>\n\n\n\n"},{"id":"dcU6","level":2,"heading":"List - Get","content":"<h3>List - Get</h3>\n\n<div class=\"codebox\">= <var>list_1</var>[<var>index</var>]</div>\n\n\n\n"},{"id":"A9f7","level":2,"heading":"List - Get First","content":"<h3>List - Get First</h3>\n\n<div class=\"codebox\">= <var>list_1</var>[0]</div>\n\n\n\n"},{"id":"GA4E","level":2,"heading":"List - Get Last","content":"<h3>List - Get Last</h3>\n\n<div class=\"codebox\">= <var>list_1</var>[-1]</div>\n\n\n\n"},{"id":"DtuR","level":2,"heading":"List - Get Sublist","content":"<h3>List - Get Sublist</h3>\n\n<div class=\"codebox\">= <var>list_1</var>[<var>index</var>][<var>sub_index</var>]</div>\n\n\n\n"},{"id":"w5M0","level":2,"heading":"List - Get Sublist - All Except First","content":"<h3>List - Get Sublist - All Except First</h3>\n\n<div class=\"codebox\">= <var>list_1</var>[1:]</div>\n\nReturn everything but the first item.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<var>value</var> = <var>list_1</var>[1:]\n\n<span class=\"note\"># Returns [1, 2, 3, 4]</span></div>\n\n\n\n"},{"id":"Rv8K","level":2,"heading":"List - Get Values Contained In Second List","content":"<h3>List - Get Values Contained In Second List</h3>\n\n<div class=\"codebox\">= [<var>value</var> for <var>value</var> in <var>list_1</var> if <var>value</var> in <var>list_2</var>]</div>\n\n\nReturns a subset of list 1 where each value exists in list 2.\n\nUse a list comprehension with if to filter list 1 based on list 2.\nMaintains the original order.\n\n\n\n"},{"id":"mt0x","level":2,"heading":"List - Insert","content":"<h3>List - Insert</h3>\n\n<div class=\"codebox\"><var>list_1</var>.insert(<var>index</var>, <var>value</var>)</div>\n\nInserts at position <code><var>index</var></code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>]\n<var>list_1</var>.insert(1, 10)\n\n<span class=\"note\"># Sets: [1, 10, 2, 3]</span></div>\n\n\n\n"},{"id":"EKTM","level":2,"heading":"List - Insert First","content":"<h3>List - Insert First</h3>\n\n<div class=\"codebox\"><var>list_1</var>.insert(0, <var>value</var>)</div>\n\nAdds to the start of the list.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>]\n<var>list_1</var>.insert(0, 10)\n\n<span class=\"note\"># Sets: [10, 1, 2, 3]</span></div>\n\n\n\n"},{"id":"E6Ex","level":2,"heading":"List - Iterate","content":"<h3>List - Iterate</h3>\n\n<div class=\"codebox\">for <var>value</var> in <var>list_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"Vvmb","level":2,"heading":"List - Merge","content":"<h3>List - Merge</h3>\n\n<div class=\"codebox\">= <var>list_1</var> + <var>list_2</var></div>\n\n\n\n"},{"id":"7txb","level":2,"heading":"List - Pop First","content":"<h3>List - Pop First</h3>\n\n<div class=\"codebox\">= <var>list_1</var>.pop(0)</div>\n\nRemoves the first item from the list and returns it.\n\n\n"},{"id":"rvym","level":2,"heading":"List - Pop Last","content":"<h3>List - Pop Last</h3>\n\n<div class=\"codebox\">= <var>list_1</var>.pop()</div>\n\nRemoves the last item from the list and returns it.\n\n\n\n"},{"id":"T0uW","level":2,"heading":"List - Repeat","content":"<h3>List - Repeat</h3>\n\n<div class=\"codebox\">= <var>list_1</var> * <var>count</var></div>\n\nReturns <var>list_1</var> repeated <var>count</var> times.\n\n\nExample:\n\n<div class=\"codebox\"><var>repeated</var> = [1, 2, 3] * 2\n\n<span class=\"note\"># Returns [1, 2, 3, 1, 2, 3]</span></div>\n\n\n\n"},{"id":"xAhr","level":2,"heading":"List - Reverse","content":"<h3>List - Reverse</h3>\n\n<div class=\"codebox\">= <var>list_1</var>[::-1]</div>\n\nReverse in Place:\n\n<div class=\"codebox\"><var>list_1</var>.reverse()</div>\n\n\nReverses a list.\n\n\nExamples:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>]\n\n<var>reversed</var> = <var>list_1</var>[::-1]\n\n<span class=\"note\"># Returns: [3, 2, 1]</span></div>\n\nReverse in Place:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>]\n\n<var>list_1</var>.reverse()\n\n<span class=\"note\"># Sets To: [3, 2, 1]</span></div>\n\n\n\n"},{"id":"jFH6","level":2,"heading":"List - Size","content":"<h3>List - Size</h3>\n\n<div class=\"codebox\">= len(<var>list_1</var>)</div>\n\n\n\n"},{"id":"jDa2","level":2,"heading":"List - Sort","content":"<h3>List - Sort</h3>\n\n<div class=\"codebox\">= sorted(<var>list_1</var>)</div>\n\n<div class=\"codebox\">= sorted(<var>list_1</var>, key = str.lower)     <span class=\"note\"># Ignores case.</span></div>\n\n<div class=\"codebox\">= sorted(<var>list_1</var>, key = \n\tlambda <var>x</var>: (<var>x</var>.<var>field_1</var>, <var>x</var>.<var>field_2</var>)) <span class=\"note\"># Multiple fields.</span></div>\n\n<div class=\"codebox\">= sorted(<var>list_1</var>, key = <var>compare</var>)       <span class=\"note\"># <code>compare</code> takes 1 argument.</span></div>\n\nReturns a new list in sorted order.\n\n<code><var>compare</var></code> is a function that takes a list element as an argument, and returns it's comparable value.\n\n\n\n"},{"id":"pU1F","level":2,"heading":"List - Sort Reversed","content":"<h3>List - Sort Reversed</h3>\n\n<div class=\"codebox\">= sorted(<var>list_1</var>, reverse = True)</div>\n\nReturns: <code>list</code>\n\nSorts the list elements in reverse order.\n\n\n\n"},{"id":"kYHK","level":2,"heading":"List - Sort In Place","content":"<h3>List - Sort In Place</h3>\n\n<div class=\"codebox\"><var>list_1</var>.sort()</div>\n\n<div class=\"codebox\"><var>list_1</var>.sort(key = str.lower)          <span class=\"note\"># Ignores case.</span></div>\n\n<div class=\"codebox\"><var>list_1</var>.sort(key = <var>compare</var>)              <span class=\"note\"># <code>compare</code> takes 1 argument.</span></div>\n\n\nSorts the list in place.\n\n<code><var>compare</var></code> is a function that takes a list element as an argument, and returns it's comparable value.\n\n\n\n"},{"id":"XMnV","level":2,"heading":"List - Unpack","content":"<h3>List - Unpack</h3>\n\n<div class=\"codebox\"><var>item_1</var>, <var>item_2</var>, <var>...</var> = <var>list_1</var></div>\n\nUnpacks the values in <code><var>list_1</var></code> into separate variables.\nThe number of variables on the left must match the number of values in the list on the right.\n\nExample:\n\n<div class=\"codebox\"><var>tuple_1</var> = (<var>1</var>, <var>2</var>, <var>3</var>)\n\n<var>int_1</var>, <var>int_2</var>, <var>int_3</var> = <var>tuple_1</var></div>\n\n\n\n"},{"id":"PK9v","level":2,"heading":"List - Update","content":"<h3>List - Update</h3>\n\n<div class=\"codebox\"><var>list_1</var>[<var>index</var>] = <var>updated_value</var></div>\n\n\n\n"},{"id":"UVnH","level":2,"heading":"List - From Dict","content":"<h3>List - From Dict</h3>\n\n<div class=\"codebox\">=list(<var>dict_1</var>.values())</div>\n\nReturns the values of <code><var>dict_1</var></code> as a list.\n\n\n\n"},{"id":"aV2n","level":2,"heading":"List - To Dict","content":"<h3>List - To Dict</h3>\n\n<div class=\"codebox\">= {value:value for value in <var>list_1</var>}</div>\n\nReturns: <code>dict</code>\n\n\nUse a dict comprehension\nReturns a dict where every value is also the key to that value.\n\n\n"},{"id":"8252","level":2,"heading":"List - To Dict - Enumerated","content":"<h3>List - To Dict - Enumerated</h3>\n\n<div class=\"codebox\">= dict(enumerate(<var>list_1</var>))</div>\n\nReturns: <code>dict</code>\n\n\nReturns a dict where the value's list position maps to the value.\n\n\n\n"},{"id":"QQnF","level":2,"heading":"List - To Dict - From 2 Lists","content":"<h3>List - To Dict - From 2 Lists</h3>\n\n<div class=\"codebox\">= dict(zip(<var>key_list</var>, <var>value_list</var>)</div>\n\nReturns: <code>dict</code>\n\n\n\n"},{"id":"P7QX","level":2,"heading":"List - From Set","content":"<h3>List - From Set</h3>\n\n<div class=\"codebox\">= list(<var>set_1</var>)</div>\n\n\n\n"},{"id":"Nvtv","level":2,"heading":"List - To Set","content":"<h3>List - To Set</h3>\n\n<div class=\"codebox\">= set(<var>list_1</var>)</div>\n\nReturns a set with all duplicates removed.\n\n\n\n"},{"id":"xjbJ","level":2,"heading":"List - From Tuple","content":"<h3>List - From Tuple</h3>\n\n<div class=\"codebox\">= list(<var>tuple_1</var>)</div>\n\n\n\n"},{"id":"4v5E","level":2,"heading":"List - To Tuple","content":"<h3>List - To Tuple</h3>\n\n<div class=\"codebox\">= tuple(<var>list_1</var>)</div>\n\n\n\n"},{"id":"Qxyv","level":2,"heading":"List - To Any Type","content":"<h3>List - To Any Type</h3>\n\n<div class=\"codebox\">= list(map(<var>conversion</var>, <var>list_1</var>))</div>\n\n\nConverts elements in <code><var>list_1</var></code> to a different type.\n\n\nExamples:\n\nConvert Strings to Integers:\n\n<div class=\"codebox\"><var>list_1</var> = ['<var>1</var>', '<var>2</var>', '<var>3</var>']\n<var>list_as_ints</var> = list(map(<var>int</var>, <var>list_1</var>))</div>\n\n\n\n"},{"id":"0RXJ","level":1,"heading":"Set","content":"<h1>Set</h1>\n\n<div class=\"codebox\">= {<var>value_1</var>, <var>value_2</var>, <var>...</var>}\n\n= set()                                 <span class=\"note\">#1</span>\n\n= set((<var>value_1</var>, <var>value_2</var>, <var>...</var>))            <span class=\"note\">#2</span></div>\n\nUnordered group of unique items.\nContains no duplicates.\n\n\n#1  <span class=\"dim\">-</span>  Empty Set\n\n#2  <span class=\"dim\">-</span>  Pass in items as a tuple.\n\n\n\n"},{"id":"HKHe","level":1,"heading":"Set Operations","content":"<h1>Set Operations</h1>\n\n\n\n"},{"id":"v3ZC","level":2,"heading":"Set - Add","content":"<h3>Set - Add</h3>\n\n<div class=\"codebox\"><var>set_1</var>.add(<var>value</var>)</div>\n\n\n\n"},{"id":"swq8","level":2,"heading":"Set - Add From Set","content":"<h3>Set - Add From Set</h3>\n\n<div class=\"codebox\"><var>set_1</var>.update(<var>set_2</var>)</div>\n\nInserts the elements from set 1 into set 2.\n\n\n\n"},{"id":"5JaB","level":2,"heading":"Set - Contains?","content":"<h3>Set - Contains?</h3>\n\nContains:\n\n<div class=\"codebox\">= <var>item_1</var> in <var>set_1</var></div>\n\nDoes Not Contain:\n\n<div class=\"codebox\">= <var>item_1</var> not in <var>set_1</var></div>\n\n\n\n"},{"id":"0acM","level":2,"heading":"Set - Duplicate","content":"<h3>Set - Duplicate</h3>\n\n<div class=\"codebox\">= <var>set_1</var>.copy()</div>\n\n\nCreates a shallow copy of <code><var>set_1</var></code>.\n\n\n\n"},{"id":"fXKg","level":2,"heading":"Set - Duplicate - Deep Copy","content":"<h3>Set - Duplicate - Deep Copy</h3>\n\n<div class=\"codebox\">from copy import deepcopy\n\n= deepcopy(<var>set_1</var>)</div>\n\n\nCreates a deep copy of <code><var>set_1</var></code>.\n\n\n\n"},{"id":"v5MB","level":2,"heading":"Set - Get","content":"<h3>Set - Get</h3>\n\n<div class=\"codebox\">= next(iter(<var>set_1</var>))</div>\n\n\nReturns an item from the set.\nRepeating this call will return the same item!\n\n\n\n"},{"id":"AGKW","level":2,"heading":"Set - Get, Pop","content":"<h3>Set - Get, Pop</h3>\n\n<div class=\"codebox\">= <var>set_1</var>.pop()</div>\n\nRemoves and returns an item from the set.\n\n\n\n"},{"id":"gBLv","level":2,"heading":"Set - Is Empty?","content":"<h3>Set - Is Empty?</h3>\n\n<div class=\"codebox\">= not <var>set_1</var></div>\n\n<div class=\"codebox\">if not <var>set_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"hAZQ","level":2,"heading":"Set - Not Empty?","content":"<h3>Set - Not Empty?</h3>\n\n<div class=\"codebox\">= bool(<var>set_1</var>)</div>\n\n<div class=\"codebox\">if <var>set_1</var>:\n\t<var>...</var></div>\n\nUse <strong>bool()</strong> if you need to get a True/False value.\nThere is no need for <strong>bool()</strong> when using <strong>if...</strong>.\n\n\n\n"},{"id":"3rSE","level":2,"heading":"Set - Is Equal?","content":"<h3>Set - Is Equal?</h3>\n\n<div class=\"codebox\">= <var>set_1</var> == <var>set_2</var></div>\n\n<div class=\"codebox\">if <var>set_1</var> == <var>set_2</var>:\n\t<var>...</var></div>\n\n\nReturns True if both sets are of same size and contain the same values.\n\n\nExample:\n\n<div class=\"codebox\"><var>set_1</var> = {<var>1, 2, 3</var>}\n<var>set_2</var> = {<var>1, 2, 3</var>}\n<var>set_3</var> = {<var>1, 2, 4</var>}\n\n<var>is_identical</var> = <var>set_1</var> == <var>set_2</var>\n\n<span class=\"note\"># Returns True</span>\n\n<var>is_identical</var> = <var>set_1</var> == <var>set_3</var>\n\n<span class=\"note\"># Returns False</span></div>\n\n\n\n"},{"id":"q4rz","level":2,"heading":"Set - Is Set?","content":"<h3>Set - Is Set?</h3>\n\n<div class=\"codebox\">= type(<var>item_1</var>) is set</div>\n\n\n\n"},{"id":"ay6x","level":2,"heading":"Set - Remove","content":"<h3>Set - Remove</h3>\n\n<div class=\"codebox\"><var>set_1</var>.remove(<var>value</var>)</div>\n\nor\n\n<div class=\"codebox\"><var>set_1</var>.discard(<var>value</var>)</div>\n\n\nRemoves an item from the set.\n\n\nremove() throws an error if <code><var>value</var></code> does not exists.\ndiscard() ignores non-existent values.\n\n\n\n"},{"id":"Qw2R","level":2,"heading":"Set - Remove All","content":"<h3>Set - Remove All</h3>\n\n<div class=\"codebox\"><var>set_1</var>.clear()</div>\n\n\n\n"},{"id":"ktcs","level":2,"heading":"Set - Set Comprehension","content":"<h3>Set - Set Comprehension</h3>\n\n<div class=\"codebox\">= {<var>expression</var> for <var>item</var> in <var>sequence_1</var>}</div>\n\nReturns: <code>set</code>\n\n\nIterates over a sequence, performing an operation on every item.\nReturns the result as <code>set</code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>items</var> = [1, 2, 3, 4, 5]\n\n<var>set_</var> = {str(<var>i</var>) for <var>i</var> in <var>items</var>}</div>\n\n\n\n\n"},{"id":"RMXB","level":2,"heading":"Set - Set Comprehension - If Condition","content":"<h3>Set - Set Comprehension - If Condition</h3>\n\n<div class=\"codebox\">= {<var>expression</var> for <var>item</var> in <var>sequence_1</var> if <var>condition</var>}</div>\n\nReturns: <code>set</code>\n\n\nIterates over a sequence, performing an operation on items that matth the if condition.\nReturns the result as <code>set</code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>items</var> = [1, 2, 3, 4, 5]\n\n<var>set_1</var> = {str(<var>i</var>) for <var>i</var> in <var>items</var> if <var>i</var> % 2 == 0}</div>\n\n\n\n"},{"id":"btLF","level":2,"heading":"Set - Size","content":"<h3>Set - Size</h3>\n\n<div class=\"codebox\">= len(<var>set_1</var>)</div>\n\n\nReturns the number of elements in the set.\n\n\n\n"},{"id":"brdB","level":2,"heading":"Set - Sort","content":"<h3>Set - Sort</h3>\n\n<div class=\"codebox\">= sorted(<var>set_1</var>)</div>\n\n\n\n"},{"id":"Vh7P","level":1,"heading":"Set on Set Operations","content":"<h1>Set on Set Operations</h1>\n\n\n\n"},{"id":"tQba","level":2,"heading":"Set - Is Disjoint?","content":"<h3>Set - Is Disjoint?</h3>\n\n<div class=\"codebox\">= <var>set_1</var>.isdisjoint(<var>set_2</var>)</div>\n\nReturns true if <code><var>set_1</var></code> and <code><var>set_2</var></code> have no elements in common.\n\n\n\n"},{"id":"65JP","level":2,"heading":"Set - Is Subset?","content":"<h3>Set - Is Subset?</h3>\n\n<div class=\"codebox\">= <var>set_2</var>.issubset(<var>set_1</var>)</div>\n\nReturns true if <code><var>set_2</var></code> is a subset of <code><var>set_1</var></code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>set_1</var> = {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;}\n<var>set_2</var> = {&quot;one&quot;, &quot;two&quot;}\n\nif <var>set_2</var>.issubset(<var>set_1</var>):\n\tprint (&quot;Is a subset.&quot;)\nelse:\n\tprint (&quot;Not a subset.&quot;)\n\n<span class=\"note\"># prints: Is a subset.</span></div>\n\n\n\n"},{"id":"nPm3","level":2,"heading":"Set - Is Superset?","content":"<h3>Set - Is Superset?</h3>\n\n<div class=\"codebox\">= <var>set_2</var>.issuperset(<var>set_1</var>)</div>\n\nReturns true if <code><var>set_2</var></code> is a superset of <code><var>set_1</var></code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>set_1</var> = {&quot;one&quot;, &quot;two&quot;}\n<var>set_2</var> = {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;}\n\nif <var>set_2</var>.issuperset(<var>set_1</var>):\n\tprint (&quot;Is a superset.&quot;)\nelse:\n\tprint (&quot;Not a superset.&quot;)\n\n<span class=\"note\"># prints: Is a superset.</span></div>\n\n\n\n"},{"id":"bb4L","level":2,"heading":"Set - Difference","content":"<h3>Set - Difference</h3>\n\n<div class=\"codebox\">= <var>set_1</var> - <var>set_2</var></div>\n\nor\n\n<div class=\"codebox\">= <var>set_1</var>.difference(<var>set_2</var>)</div>\n\nReturns a set of the elements in <code><var>set_1</var></code> not in <code><var>set_2</var></code>.\n\n\n\n"},{"id":"6Ems","level":2,"heading":"Set - Intersection","content":"<h3>Set - Intersection</h3>\n\n<div class=\"codebox\">= <var>set_1</var> &amp; <var>set_2</var></div>\n\nor\n\n<div class=\"codebox\">= <var>set_1</var>.intersection(<var>set_2</var>)</div>\n\nReturns a set containing only those values in both <code><var>set_1</var></code> and <code><var>set_2</var></code>.\n\n\n\n"},{"id":"M85b","level":2,"heading":"Set - Symmetric Difference","content":"<h3>Set - Symmetric Difference</h3>\n\n<div class=\"codebox\">= <var>set_1</var>.symmetric_difference(<var>set_2</var>)</div>\n\n<div class=\"codebox\">= <var>set_1</var>.symmetric_difference(<var>set_2</var>, <var>set_3</var>, <var>...</var>)</div>\n\nReturns a set of the elements in <code><var>set_1</var></code> not in <code><var>set_2</var></code> and the elements in <code><var>set_2</var></code> not in <code><var>set_1</var></code>.\n\n\n\n"},{"id":"PjuT","level":2,"heading":"Set - Union","content":"<h3>Set - Union</h3>\n\n<div class=\"codebox\">= <var>set_1</var> | <var>set_2</var></div>\n\nor\n\n<div class=\"codebox\">= <var>set_1</var>.union(<var>set_2</var>)</div>\n\nReturns a set with all the values of <code><var>set_1</var></code> and <code><var>set_2</var></code>.\nWill have no duplicates.\n\n\n\n"},{"id":"fHp3","level":1,"heading":"Tuple","content":"<h1>Tuple</h1>\n\n<div class=\"codebox\">= ()        <span class=\"note\"># Empty Tuple</span>\n\n= (<var>value_1</var>, <var>value_2</var>, <var>...</var>)</div>\n\n\nType: <code>tuple</code>\n\n\nTuples are immutable arrays.\n\n\n\n"},{"id":"5BQ7","level":1,"heading":"Tuple Operations","content":"<h1>Tuple Operations</h1>\n\n\n\n"},{"id":"fMFY","level":2,"heading":"Tuple - Contains?","content":"<h3>Tuple - Contains?</h3>\n\n<div class=\"codebox\">= <var>value</var> in <var>tuple_1</var></div>\n\n\n\n"},{"id":"HZ6L","level":2,"heading":"Tuple - Empty?","content":"<h3>Tuple - Empty?</h3>\n\n<div class=\"codebox\">= not <var>tuple_1</var></div>\n\n<div class=\"codebox\">if not <var>tuple_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"rNFS","level":2,"heading":"Tuple - Get","content":"<h3>Tuple - Get</h3>\n\n<div class=\"codebox\">= <var>tuple_1</var>[<var>index</var>]</div>\n\n\n\n"},{"id":"Q55J","level":2,"heading":"Tuple - Get First","content":"<h3>Tuple - Get First</h3>\n\n<div class=\"codebox\">= <var>tuple_1</var>[0]</div>\n\n\n\n"},{"id":"Sjm1","level":2,"heading":"Tuple - Get Last","content":"<h3>Tuple - Get Last</h3>\n\n<div class=\"codebox\">= <var>tuple_1</var>[-1]</div>\n\n\n\n"},{"id":"K5sN","level":2,"heading":"Tuple - Is Equal?","content":"<h3>Tuple - Is Equal?</h3>\n\n<div class=\"codebox\">= <var>tuple_1</var> == <var>tuple_2</var></div>\n\n\n<div class=\"codebox\">if <var>tuple_1</var> == <var>tuple_2</var>:\n\t<var>...</var></div>\n\n\nUse <code>==</code> to test if tuples are the same.\n\nPython does a value by value comparison.\n\n\nExample:\n\n<div class=\"codebox\"><var>tuple_1</var> = (1, 2)\n<var>tuple_2</var> = (2, 3)\n\nprint (&quot;Equal?&quot;, <var>tuple_1</var> == <var>tuple_2</var>)\n\n<span class=\"note\"># Prints: Equal? False</span></div>\n\n\n\n"},{"id":"eeQy","level":2,"heading":"Tuple - Subset","content":"<h3>Tuple - Subset</h3>\n\n<div class=\"codebox\">= <var>tuple_1</var>[<var>start</var>:<var>end_plus_1</var>]</div>\n\n\nSee Also: <a class=\"link\" href=\"?q=slicing-only\">Slicing Sequences</a>\n\n\nExample:\n\n<div class=\"codebox\"><var>tuple_1</var> = (1, 2, 3, 4, 5)\n\n<var>tuple_subset</var> = <var>tuple_1</var>[1:3]             <span class=\"note\"># Returns (2, 3).</span></div>\n\n\n\n"},{"id":"qDmr","level":2,"heading":"Tuple - Unpack","content":"<h3>Tuple - Unpack</h3>\n\n<div class=\"codebox\"><var>item_1</var>, <var>item_2</var>, <var>...</var> = <var>tuple_1</var></div>\n\nUnpacks the values in <code><var>tuple_1</var></code> into separate variables.\nThe number of variables on the left must match the number of values in the tuple on the right.\n\n\nExample:\n\n<div class=\"codebox\"><var>tuple_1</var> = (<var>1</var>, <var>2</var>, <var>3</var>)\n\n<var>int_1</var>, <var>int_2</var>, <var>int_3</var> = <var>tuple_1</var></div>\n\n\n\n"},{"id":"KJGH","level":1,"heading":"Sequences","content":"<h1>Sequences</h1>\n\nSequence operations can be performed on any sequence type including lists, and tuples.\n\n\n\n"},{"id":"JbxP","level":2,"heading":"Index and Slicing Operations","content":"<h2>Index and Slicing Operations</h2>\n\n\n\n"},{"id":"W9ZJ","level":3,"heading":"Index and Slicing - Basics","content":"<h3>Index and Slicing - Basics</h3>\n\nSyntax:\n\n<div class=\"codebox\"><table><tr><td><var>first</var></td><td>= <var>sequence_1</var>[0]</td></tr>\n<tr><td><var>nth</var></td><td>= <var>sequence_1</var>[<var>n</var>]</td><td><span class=\"note\"># Indexes are 0 based</span></td></tr>\n<tr><td><var>second_last</var></td><td>= <var>sequence_1</var>[-2]</td><td> </td></tr>\n<tr><td><var>last</var></td><td>= <var>sequence_1</var>[-1]</td></tr>\n<tr><td> </td></tr>\n<tr><td><var>all</var></td><td>= <var>sequence_1</var>[:]</td><td><span class=\"note\"># Don't Use (Not Intuitive)</span></td></tr>\n<tr><td><var>all_but_first</var></td><td>= <var>sequence_1</var>[1:]</td></tr>\n<tr><td><var>all_but_last</var></td><td>= <var>sequence_1</var>[:-1]</td></tr>\n<tr><td><var>reversed</var></td><td>= <var>sequence_1</var>[::-1]</td></tr>\n<tr><td> </td></tr>\n<tr><td><var>from</var></td><td>= <var>sequence_1</var>[<var>start</var>:]</td></tr>\n<tr><td><var>from_to</var></td><td>= <var>sequence_1</var>[<var>start</var>:<var>end_plus_1</var>]</td></tr>\n<tr><td><var>from_to_with_step</var></td><td>= <var>sequence_1</var>[<var>start</var>:<var>end_plus_1</var>:<var>step</var>]</td></tr>\n<tr><td><var>from_with_step</var></td><td>= <var>sequence_1</var>[<var>start</var>::<var>step</var>]</td></tr>\n<tr><td><var>to</var></td><td>= <var>sequence_1</var>[:<var>end_plus_1</var>]</td></tr>\n<tr><td><var>step_over</var></td><td>= <var>sequence_1</var>[::<var>step</var>]</td></tr>\n<tr><td> </td></tr>\n<tr><td><var>m_to_nth</var></td><td>= <var>sequence_1</var>[<var>m</var> : <var>n</var> + 1]</td></tr></table></div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<table><tr><td><var>first</var></td><td>= <var>list_1</var>[0]\t\t</td><td><span class=\"note\"># Returns 0</span></td></tr>\n<tr><td><var>second</var></td><td>= <var>list_1</var>[1]</td><td><span class=\"note\"># Returns 1</span></td></tr>\n<tr><td><var>...</var></td></tr>\n<tr><td><var>second_last</var></td><td>= <var>list_1</var>[-2]</td><td><span class=\"note\"># Returns 3</span></td></tr>\n<tr><td><var>last</var></td><td>= <var>list_1</var>[-1]</td><td><span class=\"note\"># Returns 4</span></td></tr>\n<tr><td> </td></tr>\n<tr><td><var>all</var></td><td>= <var>list_1</var>[:]</td><td><span class=\"note\"># Returns [0, 1, 2, 3, 4] (Not Recommended)</span></td></tr>\n<tr><td><var>all_but_first</var></td><td>= <var>list_1</var>[1:]</td><td><span class=\"note\"># Returns [1, 2, 3, 4]</span></td></tr>\n<tr><td><var>all_but_last</var></td><td>= <var>list_1</var>[:-1]</td><td><span class=\"note\"># Returns [0, 1, 2, 3]</span></td></tr>\n<tr><td><var>reversed</var></td><td>= <var>list_1</var>[::-1]</td><td><span class=\"note\"># Returns [4, 3, 2, 1, 0]</span></td></tr>\n<tr><td> </td></tr>\n<tr><td><var>from_1_to_3</var></td><td>= <var>list_1</var>[<var>1</var>:<var>4</var>]</td><td><span class=\"note\"># Returns [1, 2, 3]</span></td></tr>\n<tr><td><var>from_1_step_to_3</var></td><td>= <var>list_1</var>[<var>1</var>:<var>4</var>:<var>2</var>]</td><td><span class=\"note\"># Returns [1, 3]</span></td></tr>\n<tr><td><var>even</var></td><td>= <var>list_1</var>[::<var>2</var>]</td><td><span class=\"note\"># Returns [0, 2, 4]</span></td></tr>\n<tr><td><var>odd_from_1</var></td><td>= <var>list_1</var>[<var>1</var>::<var>2</var>]</td><td><span class=\"note\"># Returns [1, 3]</span></td></tr></table></div>\n\n\n\n"},{"id":"JKrF","level":3,"heading":"Sequence - Get Value","content":"<h3>Sequence - Get Value</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>[<var>index</var>]</div>\n\n\nReturns one value from the sequence.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<var>value</var> = <var>list_1</var>[<var>1</var>]\n\n<span class=\"note\"># Returns 1</span></div>\n\n\n\n"},{"id":"UVs9","level":3,"heading":"Sequence - Get First Value","content":"<h3>Sequence - Get First Value</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>[0]</div>\n\n\nReturns the first value from the sequence.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<var>value</var> = <var>list_1</var>[0]\n\n<span class=\"note\"># Returns 0</span></div>\n\n\n\n"},{"id":"g4j5","level":3,"heading":"Sequence - Get Last","content":"<h3>Sequence - Get Last</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>[-1]</div>\n\n\nReturns the last value from the sequence.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<var>value</var> = <var>list_1</var>[-1]\n\n<span class=\"note\"># Returns 4</span></div>\n\n\n\n"},{"id":"uSJ4","level":3,"heading":"Sequence - Get Sublist","content":"<h3>Sequence - Get Sublist</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>[<var>start</var> : <var>end_plus_1</var>]</div>\n\n\nReturn everything but the first item.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<var>value</var> = <var>list_1</var>[<var>2</var> : <var>4</var>]\n\n<span class=\"note\"># Returns [2, 3]</span></div>\n\n\n\n"},{"id":"ErnR","level":3,"heading":"Sequence - Get Sublist From Position","content":"<h3>Sequence - Get Sublist From Position</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>[<var>start</var>:]</div>\n\n\nReturn everything but the first item.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<var>value</var> = <var>list_1</var>[<var>2</var>:]\n\n<span class=\"note\"># Returns [2, 3, 4]</span></div>\n\n\n\n"},{"id":"YfsB","level":3,"heading":"Sequence - Get Sublist To Position","content":"<h3>Sequence - Get Sublist To Position</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>[<var>start</var> : <var>end_plus_1</var>]</div>\n\n\nReturn everything but the first item.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<var>value</var> = <var>list_1</var>[:<var>4</var>]\n\n<span class=\"note\"># Returns [0, 1, 2, 3]</span></div>\n\n\n\n"},{"id":"FD7h","level":3,"heading":"Sequence - Get Sublist - All Except First","content":"<h3>Sequence - Get Sublist - All Except First</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>[1:]</div>\n\n\nReturn everything but the first item.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [<var>0</var>, <var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>]\n\n<var>value</var> = <var>list_1</var>[1:]\n\n<span class=\"note\"># Returns [1, 2, 3, 4]</span></div>\n\n\n\n"},{"id":"2jr2","level":2,"heading":"Sequence Destructuring","content":"<h2>Sequence Destructuring</h2>\n\n\n\n"},{"id":"NTpc","level":3,"heading":"Sequence Destructuring - Basics","content":"<h3>Sequence Destructuring - Basics</h3>\n\n<div class=\"codebox\"><table><tr><td><var>first</var>, *<var>remainder</var></td><td>= <var>sequence_1  </var></td></tr>\n<tr><td><var>first</var>, <var>second</var>, *<var>remainder</var></td><td>= <var>sequence_1</var></td></tr>\n<tr><td><var>first</var>, <var>second</var>, *_</td><td>= <var>sequence_1</var></td><td><span class=\"note\"># Remainder is Ignored</span></td></tr>\n<tr><td><var>first</var>, _, <var>third</var>, *_</td><td>= <var>sequence_1</var></td><td><span class=\"note\"># Second, Remainder are Ignored</span></td></tr>\n<tr><td><var>first</var>, *_, <var>last</var></td><td>= <var>sequence_1</var></td><td><span class=\"note\"># Returns First, Last Only</span></td></tr></table></div>\n\n<code>*</code> is returned as a list.\n<code>_</code> is an element that is ignored.\n\n\n\n"},{"id":"VFXX","level":3,"heading":"Sequence - Destructure First Elements, Remainder","content":"<h3>Sequence - Destructure First Elements, Remainder</h3>\n\n<div class=\"codebox\"><var>first</var>, *<var>remainder</var> = <var>sequence_1</var></div>\n\n<div class=\"codebox\"><var>first</var>, <var>second</var>, <var>...</var> *<var>remainder</var> = <var>sequence_1</var></div>\n\nReturns the first element, and the remainder as a list.\n\n\nExample:\n\n<div class=\"codebox\"><var>sequence_1</var> = [1, 2, 3, 4, 5]\n\n<var>first</var>, *<var>remainder</var> = <var>sequence_1</var>                <span class=\"note\"># Returns 1, [2, 3, 4, 5]</span></div>\n\n<div class=\"codebox\"><var>sequence_1</var> = [1, 2, 3, 4, 5]\n\n<var>first</var>, <var>second</var>, *<var>remainder</var> = <var>sequence_1</var>      <span class=\"note\"># Returns 1, 2, [3, 4, 5]</span></div>\n\n\n\n"},{"id":"9tC9","level":3,"heading":"Sequence - Destructure First, Last Only","content":"<h3>Sequence - Destructure First, Last Only</h3>\n\n<div class=\"codebox\"><var>first</var>, *_, <var>last</var> = <var>sequence_1</var></div>\n\nReturns the first and last elements.\nAll others are ignored (denoted by <code>*_</code>).\n\n\nExample:\n\n<div class=\"codebox\"><var>sequence_1</var> = [1, 2, 3, 4, 5]\n\n<var>first</var>, *_, <var>last</var> = <var>sequence_1</var>          <span class=\"note\"># Returns 1, 5</span></div>\n\n\n\n"},{"id":"Wf2Z","level":3,"heading":"Sequence - Destructure Ignore Element","content":"<h3>Sequence - Destructure Ignore Element</h3>\n\n<div class=\"codebox\"><var>first</var>, _, <var>third</var>, *<var>remainder</var> = <var>sequence_1</var></div>\n\n<code>_</code> denotes the element to be ignored (second element in this case).\n\n\nExample:\n\n<div class=\"codebox\"><var>sequence_1</var> = [1, 2, 3, 4, 5]\n\n<var>first</var>, _, <var>third</var>, *<var>remainder</var> = <var>sequence_1</var>        <span class=\"note\"># Returns 1, 3, [4, 5]</span></div>\n\n\n\n"},{"id":"Q9Y7","level":3,"heading":"Sequence - Destructure Ignore Remainder","content":"<h3>Sequence - Destructure Ignore Remainder</h3>\n\n<div class=\"codebox\"><var>first</var>, <var>second</var>, <var>third</var>, *_ = <var>sequence_1</var></div>\n\nIgnores everything after the third element (denoted by <code>*_</code> ).\n\n\nExample:\n\n<div class=\"codebox\"><var>sequence_1</var> = [1, 2, 3, 4, 5]\n\n<var>first</var>, <var>second</var>, <var>third</var>, *_ = <var>sequence_1</var>       <span class=\"note\"># Returns 1, 2, 3</span></div>\n\n\n\n"},{"id":"NQdp","level":3,"heading":"Sequence - Destructure Ignore Start","content":"<h3>Sequence - Destructure Ignore Start</h3>\n\n<div class=\"codebox\">*_, <var>second_last</var>, <var>last</var> = <var>sequence_1</var></div>\n\nIgnores everything before the 2nd last element (denoted by <code>*_</code> ).\n\n\nExample:\n\n<div class=\"codebox\"><var>sequence_1</var> = [1, 2, 3, 4, 5]\n\n*_, <var>second_last</var>, <var>last</var> = <var>sequence_1</var>            <span class=\"note\"># Returns 4, 5</span></div>\n\n\n\n"},{"id":"rsS3","level":2,"heading":"Sequence Operations","content":"<h2>Sequence Operations</h2>\n\n\n\n"},{"id":"QWVS","level":3,"heading":"Sequence - Contains?","content":"<h3>Sequence - Contains?</h3>\n\n<div class=\"codebox\">= <var>value</var> in <var>sequence_1</var></div>\n\n<div class=\"codebox\">if <var>value</var> in <var>sequence_1</var>:</div>\n\n\n\n"},{"id":"usgm","level":3,"heading":"Sequence - Not Contains?","content":"<h3>Sequence - Not Contains?</h3>\n\n<div class=\"codebox\">= <var>value</var> not in <var>sequence_1</var></div>\n\n<div class=\"codebox\">if <var>value</var> not in <var>sequence_1</var>:</div>\n\n\n\n"},{"id":"DTh5","level":3,"heading":"Sequence - Count Occurrences","content":"<h3>Sequence - Count Occurrences</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>.count(<var>value</var>)</div>\n\n\nReturns the number of times <code><var>value</var></code> appears in <code><var>sequence_1</var></code>.\n\n\n\n"},{"id":"48hu","level":3,"heading":"Sequence - Count Occurences With Counter","content":"<h3>Sequence - Count Occurences With Counter</h3>\n\n<div class=\"codebox\">from collections import Counter\n\n= Counter(<var>sequence_1</var>)</div>\n\n\nReturns: <code>dict</code>\n\n\nReturns a dictionary with every unique value and the number of times of that value is present.\n\n\n\n"},{"id":"hf58","level":3,"heading":"Sequence - Count By Distinct Value","content":"<h3>Sequence - Count By Distinct Value</h3>\n\n<div class=\"codebox\">= len(set(<var>sequence_1</var>))</div>\n\n\nReturns the number of unique values in <code><var>sequence_1</var></code>.\n\n\n\n"},{"id":"KMNQ","level":3,"heading":"Sequence - Duplicate","content":"<h3>Sequence - Duplicate</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>.copy()</div>\n\nCreates a shallow copy.\n\n\n\n"},{"id":"xPdQ","level":3,"heading":"Sequence - Duplicate - Deep Copy","content":"<h3>Sequence - Duplicate - Deep Copy</h3>\n\n<div class=\"codebox\">from copy import deepcopy\n\n= deepcopy(<var>sequence_1</var>)</div>\n\nCreates a deep copy.\n\n\n\n"},{"id":"pdjj","level":3,"heading":"Sequence - Is Empty?","content":"<h3>Sequence - Is Empty?</h3>\n\n<div class=\"codebox\">= not <var>sequence_1</var></div>\n\n<div class=\"codebox\">if not <var>sequence_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"P4h9","level":3,"heading":"Sequence - Not Empty?","content":"<h3>Sequence - Not Empty?</h3>\n\n<div class=\"codebox\">= bool(<var>sequence_1</var>)</div>\n\n<div class=\"codebox\">if <var>sequence_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"qgK9","level":3,"heading":"Sequence - Find","content":"<h3>Sequence - Find</h3>\n\n<div class=\"codebox\">= <var>sequence_1</var>.index(<var>value</var>)</div>\n\n<div class=\"codebox\">= <var>sequence_1</var>.index(<var>value</var>, <var>start</var>)</div>\n\n<div class=\"codebox\">= <var>sequence_1</var>.index(<var>value</var>, <var>start</var>, <var>end</var>)</div>\n\nReturns the index of the first match.\n\n\n\n\n"},{"id":"1QQu","level":3,"heading":"Sequence - Iterate","content":"<h3>Sequence - Iterate</h3>\n\n<div class=\"codebox\">for <var>value</var> in <var>sequence_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"JyKx","level":3,"heading":"Sequence - To Dict","content":"<h3>Sequence - To Dict</h3>\n\n<div class=\"codebox\">= {value:value for value in <var>sequence_1</var>}</div>\n\nReturns: <code>dict</code>\n\n\nReturns a dict where every value is also the key to that value.\n\n\n\n"},{"id":"f12w","level":3,"heading":"Sequence - To Dict - Enumerated","content":"<h3>Sequence - To Dict - Enumerated</h3>\n\n<div class=\"codebox\">= dict(enumerate(<var>sequence_1</var>))</div>\n\nReturns: <code>dict</code>\n\n\nReturns a dict where the key to a value is the original index position of that value.\n\n\n\n"},{"id":"3Qq5","level":3,"heading":"Sequence - To Set","content":"<h3>Sequence - To Set</h3>\n\n<div class=\"codebox\">= set(<var>sequence_1</var>)</div>\n\nReturns a set with all duplicates removed.\n\n\n\n"},{"id":"Upk5","level":3,"heading":"Sequence - To Tuple","content":"<h3>Sequence - To Tuple</h3>\n\n<div class=\"codebox\">= tuple(<var>sequence_1</var>)</div>\n\n\n\n"},{"id":"1RTQ","level":3,"heading":"Sequence - To Iterator","content":"<h3>Sequence - To Iterator</h3>\n\n<div class=\"codebox\">= iter(<var>sequence_1</var>)</div>\n\nTurns any sequence type into an iterator.\n\n\n\n"},{"id":"qd4T","level":2,"heading":"Sequence Functions","content":"<h2>Sequence Functions</h2>\n\n\n\n"},{"id":"PEU2","level":3,"heading":"Sequence - All","content":"<h3>Sequence - All</h3>\n\n<div class=\"codebox\">= all(<var>boolean_sequence_1</var>)</div>\n\nor\n\n<div class=\"codebox\">= all(map(<var>test_function</var>, <var>sequence_1</var>))</div>\n\nReturns true if all elements of <code><var>boolean_sequence_1</var></code> evaluate to True.\nThis function short-circuits when a False value is reached.\n\nUse <code><var>test_function</var></code> to return the <code>True</code> / <code>False</code> value for <code><var>sequence_1</var></code> elements.\n\n\n\n"},{"id":"PEVL","level":3,"heading":"Sequence - Any","content":"<h3>Sequence - Any</h3>\n\n<div class=\"codebox\">= any(<var>boolean_sequence_1</var>)</div>\n\nor\n\n<div class=\"codebox\">= any(map(<var>test_function</var>, <var>sequence_1</var>))</div>\n\nReturns true if any element of <code><var>boolean_sequence_1</var></code> evaluates to True.\nThis function short-circuits when a True value is reached.\n\nUse <code><var>test_function</var></code> to return the <code>True</code> / <code>False</code> value for <code><var>sequence_1</var></code> elements.\n\n\n\n"},{"id":"WuEN","level":3,"heading":"Sequence - Average","content":"<h3>Sequence - Average</h3>\n\n<div class=\"codebox\">= sum(<var>sequence_1</var>) / len(<var>sequence_1</var>)</div>\n\n\nReturns the average of the values in a list.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [3, 4, 7, 10]\n\n<var>average</var> = sum(<var>list_1</var>) / len(<var>list_1</var>)\n\n<span class=\"note\"># Returns: 6.0</span></div>\n\n\n"},{"id":"wPjc","level":3,"heading":"Sequence - Enumerate","content":"<h3>Sequence - Enumerate</h3>\n\n<div class=\"codebox\">= enumerate(<var>sequence_1</var>)\n\n= enumerate(<var>sequence_1</var>, <var>starting_value</var>)</div>\n\n<div class=\"codebox\">for <var>index</var>, <var>value</var> in enumerate(<var>sequence_1</var>):\n\t<var>...</var></div>\n\nReturns:    <code>enumerate</code>\n\t\t(generator of index, value tuples)\n\n\nThe <code>enumerate</code> function returns a generator.\n\nThat generator returns an index, value tuple for each entry in the sequence.\nThe index is the position in the sequence (zero based).\nThe value is the value in the sequence at that position.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [&quot;zero&quot;, &quot;one&quot;, &quot;two&quot;]\n\nfor <var>index</var>, <var>value</var> in enumerate(<var>list_1</var>):\n\tprint (<var>index</var>, <var>value</var>)</div>\n\nPrints:\n\n<div class=\"codebox\"><span class=\"note\">0 zero\n1 one\n2 two</span></div>\n\n\n\n"},{"id":"PJ0k","level":3,"heading":"Sequence - Min","content":"<h3>Sequence - Min</h3>\n\n<div class=\"codebox\">= min(<var>sequence_1</var>)\n\n= min(<var>sequence_1</var>, key = <var>test_function</var>)</div>\n\n\n\n"},{"id":"PHwZ","level":3,"heading":"Sequence - Max","content":"<h3>Sequence - Max</h3>\n\n<div class=\"codebox\">= max(<var>sequence_1</var>)\n\n= max(<var>sequence_1</var>, key = <var>test_function</var>)</div>\n\n\n\n"},{"id":"mcQh","level":3,"heading":"Sequence - Filter","content":"<h3>Sequence - Filter</h3>\n\n<div class=\"codebox\">= filter(<var>test_function</var>, <var>sequence_1</var>)</div>\n\nReturned Type: <code>filter</code>\n\n\nReturns all values where <code><var>test_function</var>(<var>value</var>)</code> == <code>True</code>.\n\nReturns a filter that will return a subset of <code><var>sequence_1</var></code>.\nFilters are lazy iterators.\nValues are evaluated and returned one at a time, and only when requested.\n\n\nExamples:\n\nUsing a Filter Function:\n\n<div class=\"codebox\"><span class=\"note\"># Define Test:</span>\n\ndef <var>is_even</var>(<var>value</var>):\n\treturn <var>value % 2 == 0</var>\n\n<span class=\"note\"># Filter:</span>\n\n<var>sequence_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>, <var>5</var>]\n\n<var>filtered</var> = list(filter(<var>is_even</var>, <var>sequence_1</var>))\n\n<span class=\"note\"># Returns values 2, 4.</span></div>\n\nUsing a Lambda Filter:\n\n<div class=\"codebox\"><var>sequence_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>, <var>5</var>]\n\n<var>filtered</var> = list(filter(\n\t\tlambda <var>value</var> : <var>value % 2 == 0</var>,\n\t\t<var>sequence_1</var>))\n\n<span class=\"note\"># Returns values 2, 4.</span></div>\n\n\n\n"},{"id":"TC4m","level":4,"heading":"Filter - Test Function","content":"<h4>Filter - Test Function</h4>\n\n<div class=\"codebox\">def <var>test_function</var>(<var>value</var>):\n\treturn <var>true_or_false_value</var></div>\n\n\nUsed by <code>filter()</code> to determine which values to return.\nMust return <code>True</code> or <code>False</code>.\n<code>True</code> values will be returned by <code>filter()</code>\n\n\n\n"},{"id":"EVhE","level":4,"heading":"Filter - To List","content":"<h4>Filter - To List</h4>\n\n<div class=\"codebox\">= list(<var>filtered_1</var>)</div>\n\n\n\n"},{"id":"PHwR","level":3,"heading":"Sequence - Map","content":"<h3>Sequence - Map</h3>\n\n<div class=\"codebox\">= map(<var>mapping_function</var>, <var>sequence_1</var>)</div>\n\nReturns: <code>map</code>\n\n\nReturns a map of <code><var>sequence_1</var></code> values passed through <code><var>mapping_function</var></code>.\n\nMaps are lazy itorators. Wrap with <code>list()</code> to get actual values.\n\n\nExample:\n\n<div class=\"codebox\">def <var>add_10</var>(<var>value</var>):\n\treturn <var>value</var> + 10\n\n<var>list_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>]\n\n<var>mapped</var> = list(map(<var>add_10</var>, <var>list_1</var>))\n\n<span class=\"note\"># Returns: Map of 11, 12, 13.</span></div>\n\n\n\n"},{"id":"X34e","level":4,"heading":"Map - Mapping Function","content":"<h4>Map - Mapping Function</h4>\n\n<div class=\"codebox\">def <var>mapping_function</var>(<var>value</var>):\n\treturn <var>some_transformation</var></div>\n\nReturns a new value based on the original value.\n\n\n\n"},{"id":"41hs","level":4,"heading":"Map - To List","content":"<h4>Map - To List</h4>\n\n<div class=\"codebox\">= list(<var>mapped_1</var>)</div>\n\n<div class=\"codebox\">= list(map(<var>mapping_function</var>, <var>list_1</var>))</div>\n\n\n\n"},{"id":"xUWF","level":3,"heading":"Sequence - Reduce","content":"<h3>Sequence - Reduce</h3>\n\n<div class=\"codebox\">from functools import reduce\n\n<var>reduced_1</var> = reduce(<var>reducing_function</var>, <var>sequence_1</var>)</div>\n\n<div class=\"codebox\">= reduce(<var>reducing_function</var>, <var>sequence_1</var>, <var>initial_value</var>)</div>\n\nReturns a single value calculated by passing every value in <code><var>sequence_1</var></code> into <code><var>reducing_function</var></code>.\n\n\nExamples:\n\n<div class=\"codebox\">def <var>add</var>(<var>previous_result</var>, <var>value</var>):\n\treturn <var>previous_result + value</var>\n\n<var>sequence_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>, <var>5</var>]\n<var>total</var> = reduce(<var>add</var>, <var>sequence_1</var>)                       <span class=\"note\"># Returns 15.</span></div>\n\n<div class=\"codebox\"><var>sequence_1</var> = [<var>1</var>, <var>2</var>, <var>3</var>, <var>4</var>, <var>5</var>]\n<var>total</var> = reduce(\n\t\tlambda <var>previous</var>, <var>value</var> : <var>previous + value</var>,\n\t\t<var>sequence_1</var>)                                   <span class=\"note\"># Returns 15.</span></div>\n\n\n\n"},{"id":"zLfJ","level":4,"heading":"Reducing Function","content":"<h4>Reducing Function</h4>\n\n<div class=\"codebox\">def <var>reducing_function</var>(<var>previous_result</var>, <var>next_value</var>):\n\treturn <var>some_calculation</var></div>                                    \n\nCalculates a value base on <code><var>previous_result</var></code> and <code><var>next_value</var></code>.\n\nFor the first calculation, <code><var>previous_result</var></code> will either be:\n\t<code><var>initial_value</var></code> if provide, or\n\t<code><var>first_value</var></code> the first value in the sequence.\n\n\n\n"},{"id":"B8V9","level":3,"heading":"Sequence - Shuffle","content":"<h3>Sequence - Shuffle</h3>\n\n<div class=\"codebox\">from random import shuffle\n\nshuffle(<var>sequence_1</var>)</div>\n\nRandomizes a sequence in place.\n\n\n\n"},{"id":"nZJ6","level":3,"heading":"Sequence - Sort","content":"<h3>Sequence - Sort</h3>\n\n<div class=\"codebox\">= sorted(<var>sequence_1</var>)</div>\n\n<div class=\"codebox\">= sorted(<var>sequence_1</var>, key = <var>compare</var>)</div>\n\nReturns: <code>list</code>\n\nReturns a new sorted list from <code><var>sequence_1</var></code>.\n\n<code><var>compare</var></code> is a function that takes a sequence element as an argument, and returns it's comparable value.\n\n\nExample:\n\n<div class=\"codebox\"><var>values</var> = ['<var>a</var>', '<var>B</var>', '<var>c</var>']\n\n<var>sorted_1</var> = sorted(<var>values</var>)\n<span class=\"note\"># Returns 'B', 'a', 'c'</span>\n\n<var>sorted_2</var> = sorted(<var>values</var>, key = str.lower)\n<span class=\"note\"># Returns 'a', 'B', 'c'</span>\n\n<var>sorted_3</var> = sorted(<var>values</var>, key = lambda <var>value</var>: <var>value</var>.lower())\n<span class=\"note\"># Returns 'a', 'B', 'c'</span>\n\n\n<var>to_lower</var> = lambda value: value.lower()\n\n<var>sorted_4</var> = sorted(<var>values</var>, key = <var>to_lower</var>)\n<span class=\"note\"># Returns 'a', 'B', 'c'</span></div>\n\n\n\n"},{"id":"R8DZ","level":3,"heading":"Sequence - Sort Reversed","content":"<h3>Sequence - Sort Reversed</h3>\n\n<div class=\"codebox\">= sorted(<var>sequence_1</var>, reverse = True)</div>\n\nReturns: <code>list</code>\n\nSorts the elements in reverse order.\n\n\n\n"},{"id":"PKuQ","level":3,"heading":"Sequence - Sum","content":"<h3>Sequence - Sum</h3>\n\n<div class=\"codebox\">= sum(<var>sequence_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\">= sum(<var>[1, 2, 3]</var>)                      <span class=\"note\"># Returns 6</span></div>\n\n\n\n"},{"id":"PMry","level":3,"heading":"Sequence - Zip","content":"<h3>Sequence - Zip</h3>\n\n<div class=\"codebox\">= zip(<var>sequence_1</var>, <var>sequence_2</var>)</div>\n\nor\n\n<div class=\"codebox\">= zip(<var>sequence_1</var>, <var>sequence_2</var>, <var>...</var>)</div>\n\nReturns: <code>zip(*iterable)</code>\n\nZips two or more sequences or iterables together.\nThe returned zip object is iterable and returns tuples.\nEach tuple contains the element from each sequence at that position.\nIf the sequences are different sizes, returns the shortest size.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2]\n<var>list_2</var> = [&quot;one&quot;, &quot;two&quot;]\n\n<var>zipped</var> = zip(<var>list_1</var>, <var>list_2</var>)\n<var>combined</var> = list(<var>zipped</var>)\n\n<span class=\"note\"># Returns [(1, 'one'), (2, 'two')]</span></div>\n\n\n\n"},{"id":"VHdG","level":3,"heading":"Sequence - Zip Unequal Sized Lists","content":"<h3>Sequence - Zip Unequal Sized Lists</h3>\n\n<div class=\"codebox\">= zip_longest(<var>sequence_1</var>, <var>sequence_2</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from itertools import zip_longest\n\n= zip_longest(<var>sequence_1</var>, <var>sequence_2</var>)</div>\n\nReturns: <code>zip_longest</code>\n\n\nReturns an iterable that returns tuples from each list.\n\nReturns <code>None</code> where shorter lists have no value.\n\n\nExample:\n\n<div class=\"codebox\">from itertools import zip_longest\n\n<var>list_1</var> = [1, 2, 3, 4]\n<var>list_2</var> = ['one', 'two']\n\n<var>zipped</var> = zip_longest(<var>list_1</var>, <var>list_2</var>)\n<var>combinded</var> = list(<var>zipped</var>)\n\n<span class=\"note\"># Returns: [(1, 'one'), (2, 'two'), (3, None), (4, None)]</span></div>\n\n\n\n"},{"id":"E80J","level":1,"heading":"Collections","content":"<h1>Collections</h1>\n\n\n\n"},{"id":"QGu7","level":2,"heading":"Queue","content":"<h2>Queue</h2>\n\n<div class=\"codebox\">= Queue()</div>\n\nUsage:\n\n<div class=\"codebox\">from queue import Queue\n\n= Queue()\n= Queue(<var>max_size</var>)               <span class=\"note\">#1</span></div>\n\nAsynchronous first in first out queue.\n\n#1  <span class=\"dim\">-</span>  Defins the maximum number of elements in the queue.\n\n\n\n"},{"id":"Bak7","level":2,"heading":"Queue Operations","content":"<h2>Queue Operations</h2>\n\n\n\n"},{"id":"pQZk","level":3,"heading":"Queue - Add","content":"<h4>Queue - Add</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.put(<var>value_1</var>)</div>\n\n\n\n"},{"id":"Lf0T","level":3,"heading":"Queue - Get Next","content":"<h4>Queue - Get Next</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.get()                           <span class=\"note\">#1</span></div>\n\nor\n\n<div class=\"codebox\">= <var>queue_1</var>.get_nowait()                    <span class=\"note\">#2</span></div>\n\n\nGet next item.\n\n\n#1  <span class=\"dim\">-</span>  If no items, waits until one becomes available.\n\n#2  <span class=\"dim\">-</span>  If no items, raises <code>QueueEmpty</code>.\n\n\n\n"},{"id":"wgXr","level":3,"heading":"Queue - Is Empty?","content":"<h4>Queue - Is Empty?</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.empty()</div>\n\nReturns: <code>bool</code>\n\nReturns <code>True</code> if empty.\n\n\n\n"},{"id":"bJYz","level":3,"heading":"Queue - Is Full?","content":"<h4>Queue - Is Full?</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.full()</div>\n\nReturns: <code>bool</code>\n\nReturns <code>True</code> if the queue is full and can't take any more items.\n\n\n\n"},{"id":"uAHE","level":3,"heading":"Queue - Maximum Size","content":"<h4>Queue - Maximum Size</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.maxsize</div>\n\n\nReturns the maximum allowed size of the queue.\nReturns 0 if no maximum set.\n\n\n\n"},{"id":"qCrT","level":3,"heading":"Queue - Size","content":"<h4>Queue - Size</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.qsize()</div>\n\nReturns the number of items in the queue.\n\n\n\n"},{"id":"GHMg","level":1,"heading":"Conversions","content":"<h1>Conversions</h1>\n\n\n\n"},{"id":"69LC","level":2,"heading":"ASCII Code - To String Character / chr()","content":"<h3>ASCII Code - To String Character / chr()</h3>\n\n<div class=\"codebox\">= chr(<var>ascii_code</var>)</div>\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = chr(67)                        <span class=\"note\"># Returns 'C'</span></div>\n\n\n\n"},{"id":"x3BQ","level":2,"heading":"Base64 - To Bytes","content":"<h3>Base64 - To Bytes</h3>\n\n<div class=\"codebox\">from base64 import b64decode\n\n= b64decode(<var>bytes_1</var>)</div>\n\nRetuns: <code>bytes</code>\n\n\nDecodes a base64 encoded byte array.\nReturns another byte array.\n\n\nExample:\n\n<div class=\"codebox\">from base64 import b64decode\n\n<var>base64_text</var> = 'VGV4dCBpbiBCYXNlNjQ='\n<var>base64_bytes</var> = <var>base64_text</var>.encode('ascii')\n\n<var>decoded_bytes</var> = b64decode(<var>base64_bytes</var>)     <span class=\"note\">#1</span>\n<var>decoded_text</var> = <var>decoded_bytes</var>.decode(&quot;utf-8&quot;)\n\nprint (<var>decoded_text</var>)                      <span class=\"note\">#2</span></div>\n\n#1  <span class=\"dim\">-</span>  Base64 Decoding\n\n#2  <span class=\"dim\">-</span>  Prints 'This in Base64'\n\n\n\n"},{"id":"nFA1","level":2,"heading":"Binary String - To Integer","content":"<h3>Binary String - To Integer</h3>\n\n<div class=\"codebox\">= int(<var>binary_string</var>, 2)</div>\n\n<div class=\"codebox\">= int(&quot;0b<var>value</var>&quot;, 0)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>bin_1</var> = int(&quot;<var>00101010</var>&quot;, 2)\n\n<span class=\"note\"># Returns 42</span></div>\n\n<div class=\"codebox\"><var>bin_2</var> = int(&quot;0b<var>00101010</var>&quot;, 0)\n\n<span class=\"note\"># Returns 42</span></div>\n\n\n\n"},{"id":"dEb5","level":2,"heading":"Boolean - To Integer","content":"<h3>Boolean - To Integer</h3>\n\n<div class=\"codebox\">= int(<var>bool_1</var>)</div>\n\nFalse = 0\nTrue = 1\n\n\n\n"},{"id":"3g6w","level":2,"heading":"Boolean - To String","content":"<h3>Boolean - To String</h3>\n\n<div class=\"codebox\">= str(<var>value_1</var>)</div>\n\nReturns 'True' or 'False'.\n\n\n\n"},{"id":"sY6V","level":2,"heading":"Bytes - To Base64","content":"<h3>Bytes - To Base64</h3>\n\n<div class=\"codebox\">from base64 import b64encode\n\n= b64encode(<var>bytes_1</var>)</div>\n\nReturns: <code>bytes</code>\n\n\nEncodes a byte array into Base64.\nReturns as another byte array.\n\n\nExample:\n\n<div class=\"codebox\">from base64 import b64encode\n\n<var>text</var> = &quot;Text in Base64&quot;\n<var>bytes</var> = <var>text</var>.encode(&quot;utf-8&quot;)\n\n<var>base64_bytes</var> = b64encode(<var>bytes</var>)             <span class=\"note\">#1</span>\n<var>base64_text</var> = <var>base64_bytes</var>.decode(&quot;ascii&quot;)\n\nprint (<var>base64_text</var>)                           <span class=\"note\">#2</span></div>\n\n#1  <span class=\"dim\">-</span>  Base64 Conversion\n\n#2  <span class=\"dim\">-</span>  Prints 'VGV4dCBpbiBCYXNlNjQ='\n\n\n\n"},{"id":"N3kP","level":2,"heading":"Bytes - To Hex","content":"<h3>Bytes - To Hex</h3>\n\n<div class=\"codebox\">from binascii import hexlify\n\n= hexlify(<var>bytes_1</var>)</div>\n\nReturns: <code>bytes</code>\n\n\nConverts a byte array into its hex representation.\n\n\nExample:\n\n<div class=\"codebox\">from binascii import hexlify\n\n<var>value_bytes</var> = b'in bytes'\n<var>value_hex</var> = hexlify(<var>value_bytes</var>)\n\nprint (<var>value_hex</var>.decode('ascii'))     <span class=\"note\">#1</span></div>\n\n#1  <span class=\"dim\">-</span>  Prints '696e206279746573'\n\n\n\n"},{"id":"N3Mh","level":2,"heading":"Bytes - To Int","content":"<h3>Bytes - To Int</h3>\n\n<div class=\"codebox\">= int.from_bytes(<var>bytes_1</var>, &quot;big&quot;)</div>\n\nUse <code>&quot;big&quot;</code> for bytes with the most significant byte first.\nUse <code>&quot;little&quot;</code> for bytes with the most significant byte first.\n\n\n\n"},{"id":"5uFJ","level":2,"heading":"Bytes - To String","content":"<h3>Bytes - To String</h3>\n\n<div class=\"codebox\">= <var>bytes_1</var>.decode(&quot;utf-8&quot;)</div>\n\n\n\n"},{"id":"ush7","level":2,"heading":"Complex Number - To String","content":"<h3>Complex Number - To String</h3>\n\n<div class=\"codebox\">= str(<var>complex_1</var>)</div>\n\n\n\n"},{"id":"V11K","level":2,"heading":"Float - To Decimal","content":"<h3>Float - To Decimal</h3>\n\n<div class=\"codebox\">from decimal import Decimal\n\n= Decimal(<var>float_value</var>)</div>\n\n\nCreates an immutable decimal value.\n\n\nExample:\n\n<div class=\"codebox\">from decimal import Decimal\n\n<var>decimal_1</var> = Decimal(<var>12.34</var>)\n\nprint(<var>decimal_1</var>)\n\n<span class=\"note\"># Prints 12.339999999999999857891452847979962825775146484375</span></div>\n\n\n\n"},{"id":"t8GB","level":2,"heading":"Float - To Integer","content":"<h3>Float - To Integer</h3>\n\n<div class=\"codebox\">= int(<var>float_value</var>)</div>\n\nExample:\n\n<div class=\"codebox\"><var>int_1</var> = int(<var>1234.567</var>)   <span class=\"note\"># Returns 1234</span></div>\n\n\n\n"},{"id":"FayQ","level":2,"heading":"Float - To String","content":"<h3>Float - To String</h3>\n\n<div class=\"codebox\">= &quot;<var>format</var>&quot;.format(<var>float_value</var>)</div>\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = &quot;<var>{0:,.2f}</var>&quot;.format(<var>1234.567</var>)\n\n<span class=\"note\"># Returns &quot;1,234.56&quot;</span></div>\n\n\n\n"},{"id":"Grnd","level":2,"heading":"Hex String - To Integer","content":"<h3>Hex String - To Integer</h3>\n\n<div class=\"codebox\">= int(<var>hex_string</var>, 16)</div>\n\n<div class=\"codebox\">= int(&quot;0x<var>hex_value</var>&quot;, 0)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>hex_1</var> = int(&quot;<var>A9</var>&quot;, 16)\n\n<span class=\"note\"># Returns 169</span></div>\n\n<div class=\"codebox\"><var>hex_2</var> = int(&quot;0x<var>A9</var>&quot;, 0)\n\n<span class=\"note\"># Returns 169</span></div>\n\n\n\n"},{"id":"AdfW","level":2,"heading":"Integer - To Binary String","content":"<h3>Integer - To Binary String</h3>\n\n<div class=\"codebox\">= bin(<var>int_1</var>)</div>\n\nReturns: <code>str</code>\n\n\nExample:\n\n<div class=\"codebox\"><var>binary_1</var> = bin(<var>11</var>)\n\n<span class=\"note\"># Returns '0b1001'</span></div>\n\n\n\n"},{"id":"sU2Z","level":2,"heading":"Integer - To Hex String","content":"<h3>Integer - To Hex String</h3>\n\n<div class=\"codebox\">= hex(<var>int_1</var>)</div>\n\nReturns: <code>str</code>\n\n\nExample:\n\n<div class=\"codebox\"><var>hex_1</var> = hex(<var>169</var>)\n\n<span class=\"note\"># Returns '0xa9'</span></div>\n\n\n\n"},{"id":"CEde","level":2,"heading":"Integer - To Octal String","content":"<h3>Integer - To Octal String</h3>\n\n<div class=\"codebox\">= oct(<var>int_1</var>)</div>\n\nReturns: <code>str</code>\n\n\nExample:\n\n<div class=\"codebox\"><var>octal_1</var> = oct(<var>57</var>)\n\n<span class=\"note\"># Returns '0o71'</span></div>\n\n\n\n"},{"id":"mTc5","level":2,"heading":"Integer - To String","content":"<h3>Integer - To String</h3>\n\n<div class=\"codebox\">= str(<var>int_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = str(<var>123</var>)</div>\n\n\n\n"},{"id":"zWqr","level":2,"heading":"List - To String","content":"<h3>List - To String</h3>\n\n<div class=\"codebox\">= ''.join(<var>list1</var>)</div>\n\nJoins all elements of <code><var>list1</var></code> into 1 string.\n\n\nExample:\n\n<div class=\"codebox\"><var>list_1</var> = ['<var>1</var>', '<var>2</var>', '<var>3</var>', '<var>4</var>']\n\n<var>string_1</var> = ''.join(<var>list_1</var>)\n\n<span class=\"note\"># Returns: '1234'</span></div>\n\n\n\n"},{"id":"Qc0E","level":2,"heading":"String Character - To ASCII Code / ord()","content":"<h3>String Character - To ASCII Code / ord()</h3>\n\n<div class=\"codebox\">= ord('<var>character</var>')</div>\n\n<code><var>character</var></code> must be a single letter string.\n\n\nExample:\n\n<div class=\"codebox\"><var>ascii_code</var> = ord('<var>C</var>')\n\n<span class=\"note\"># Returns 67</span></div>\n\n\n\n"},{"id":"rJfY","level":2,"heading":"String - To Boolean","content":"<h3>String - To Boolean</h3>\n\n<div class=\"codebox\">= <var>string_value</var>.lower() in ['t', 'true', 'y', 'yes', 1]</div>\n\nReturns true if <code><var>string_value</var></code> is one of 't', 'true', 'y', 'yes', or 1.\nCase is ignored.\n\n\n"},{"id":"zGGn","level":2,"heading":"String (Empty / Not Empty) - To Boolean","content":"<h3>String (Empty / Not Empty) - To Boolean</h3>\n\n<div class=\"codebox\">= bool(<var>string_value</var>)</div>\n\n\nTests for empty string.\n\nEmpty String = <var>False</var>\nOtherwise = <var>True</var>\n\n\n\n"},{"id":"eXNv","level":2,"heading":"String - To Bytes","content":"<h3>String - To Bytes</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.encode()</div>\n\n<div class=\"codebox\">= <var>string_1</var>.encode('utf-8')</div>\n\n\n\n"},{"id":"tMGS","level":2,"heading":"String - To Complex Number","content":"<h3>String - To Complex Number</h3>\n\n<div class=\"codebox\">= complex(&quot;<var>1</var> + <var>2</var>j&quot;)</div>\n\n\n\n"},{"id":"349U","level":2,"heading":"String - To Decimal","content":"<h3>String - To Decimal</h3>\n\n<div class=\"codebox\">from decimal import Decimal\n\n= Decimal('<var>10.99</var>')</div>\n\n\nCreates an immutable decimal value.\nKeeps the precision the decimal was created to.\n\n\nExample:\n\n<div class=\"codebox\">from decimal import Decimal\n\n<var>decimal_1</var> = Decimal('<var>12.34</var>')\n\nprint(<var>decimal_1</var>)\n\n<span class=\"note\"># Prints 12.34</span></div>\n\n\n\n"},{"id":"Lh7J","level":2,"heading":"String - To Float","content":"<h3>String - To Float</h3>\n\n<div class=\"codebox\">= float(<var>float_string</var>)</div>\n\nExample:\n\n<div class=\"codebox\"><var>float_1</var> = float(&quot;<var>123.3</var>&quot;)</div>\n\n\n\n"},{"id":"dury","level":2,"heading":"String - To Integer","content":"<h3>String - To Integer</h3>\n\n<div class=\"codebox\">= int(<var>string_value</var>)</div>\n\nExample:\n\n<div class=\"codebox\"><var>int_1</var> = int(&quot;<var>123</var>&quot;)</div>\n\n\n\n"},{"id":"pwEY","level":2,"heading":"String - To List","content":"<h3>String - To List</h3>\n\n<div class=\"codebox\">= [<var>character</var> for <var>character</var> in <var>string_1</var>]</div>\n\n\nReturns: <code>list</code> of <code>str</code>\n\n\nConverts a string to a list of characters.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = '<var>abc</var>'\n\n<var>list_1</var> = [<var>character</var> for <var>character</var> in <var>string_1</var>]\n\n<span class=\"note\"># Returns: ['a', 'b', 'c']</span></div>\n\n\n\n"},{"id":"Sa8a","level":2,"heading":"String - To Set","content":"<h3>String - To Set</h3>\n\n<div class=\"codebox\">= set(<var>string_1</var>)</div>\n\n\nReturns: <code>set</code> of <code>str</code>\n\n\nConverts a string to a set of characters.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var> = '<var>abc</var>'\n\n<var>set_1</var> = set(<var>string_1</var>)\n\n<span class=\"note\"># Returns: ['a', 'b', 'c']</span></div>\n\n\n\n"},{"id":"Y4VN","level":1,"heading":"Context Manager","content":"<h1>Context Manager</h1>\n\nAllows a resource's lifecycle to be handled correctly.\nThe context manager will open the resource using <code>with</code>\nand will close it correctly when exiting the block.\nNo <code>close</code>() method needs to be called, even if an exception is thrown.\n\n\n"},{"id":"ykZB","level":2,"heading":"Context Manager - Define","content":"<h3>Context Manager - Define</h3>\n\n<div class=\"codebox\">class <var>ManagedResource1</var>:\n\n\tdef __enter__ (self):                           <span class=\"note\"># Called At Creation</span>\n\t\t<var>...</var>\n\n\tdef __exit__ (self, type, value, traceback):    <span class=\"note\"># Called At Completion</span>\n\t\t<var>...</var></div>\n\n\nAllows a class to be used as a managed resource.\n\n<code>type</code>, <code>value</code>, <code>traceeback</code> will be populated when an exception is raised. <code>value</code> will contain the exception.\n\n\n\n"},{"id":"XpYp","level":2,"heading":"Context Manager - Use / With","content":"<h3>Context Manager - Use / With</h3>\n\n<div class=\"codebox\">with <var>ManagedResource1</var>() as <var>resource_item_1</var>:\n\t<var>...</var></div>\n\nReference the resource using <code><var>resource_item_1</var></code>.\n<code><var>resource_item_1</var></code> is automatically closed at the end of the block.\n\n\n\n"},{"id":"Gtxq","level":1,"heading":"Error Handling","content":"<h1>Error Handling</h1>\n\n\n\n"},{"id":"KcJu","level":2,"heading":"Exceptions","content":"<h2>Exceptions</h2>\n\n\n\n"},{"id":"ZQgf","level":3,"heading":"Exceptions - Basics","content":"<h3>Exceptions - Basics</h3>\n\n<div class=\"codebox\">class <var>Exception1</var>(Exception):\n\t<var>...</var></div>\n\n<div class=\"codebox\">raise <var>Exception1</var>()</div>\n\n<div class=\"codebox\">try:\n\t<var>...</var>\nexcept <var>Exception1</var> as exception:\n\t<var>...</var>\nfinally:\n\t<var>...</var></div>\n\n\n"},{"id":"XphL","level":3,"heading":"Define","content":"<h3>Define</h3>\n\n<div class=\"codebox\">class <var>Exception1</var>(Exception):\n\t<var>...</var></div>\n\nDefines a new exception type.\nInherit from <code>Exception</code>.\n\n\n\n"},{"id":"S4vb","level":3,"heading":"Raise","content":"<h3>Raise</h3>\n\n<div class=\"codebox\">raise <var>Exception1</var>()</div>\n\n<div class=\"codebox\">raise <var>Exception1</var>() from <var>exception_1</var>\t\t<span class=\"note\">#1</span></div>\n\n<span class=\"note\">#1</span> - Chains Stack Traces From <code><var>exception_1</var></code>\n\n\n\n"},{"id":"dtKA","level":3,"heading":"Try Except","content":"<h3>Try Except</h3>\n\n<div class=\"codebox\">try:\n\t<var>...</var>\nexcept <var>Exception1</var> as exception:\n\t<var>...</var>\nelse:\n\t<var>...</var>\nfinally:\n\t<var>...</var></div>\n\n<div class=\"codebox\">try:\n\t<var>...</var>\n\nexcept <var>Exception1</var>:\n\t<span class=\"note\"># Catches <code>Exception1</code> (#1)</span>\n\t<var>...</var>\n\nexcept <var>Exception2</var> as <var>exception_2</var>\n\t<span class=\"note\"># Catches <code>Exception2</code>, Reference with <code>exception_2</code></span>\n\t<var>...</var>\n\nexcept Exception as <var>exception_3</var>\n\t<span class=\"note\"># Catches Any Exception</span>\n\t<var>...</var>\n\nelse:\n\t<span class=\"note\"># Called if no exception thrown.</span>\n\t<var>...</var>\n\nfinally:\n\t<span class=\"note\"># Always Executed (#2)</span>\n\t<var>...</var></div>\n\nCatches an exception raised in the try part of the block.\nAll subclasses of a exception are caught in the same block as the exception.\n\n#1 - No exception variable assignd so exceptions can not be referenced in this block.\n\n#2 -  Always executes even if an exception is thrown.\n\n\n\n"},{"id":"DkWS","level":3,"heading":"Try Except - Basic","content":"<h3>Try Except - Basic</h3>\n\n<div class=\"codebox\">try:\n\t<var>...</var>\nexcept <var>Exception1</var> as exception:\n\t<var>...</var>\nexcept <var>Exception2</var> as exception:\n\t<var>...</var>\nfinally:\n\t<var>...</var></div>\n\n\n\n"},{"id":"vfAp","level":3,"heading":"Try Except - Else, Finally","content":"<h3>Try Except - Else, Finally</h3>\n\n<div class=\"codebox\">try:\n\t<var>...</var>\nexcept <var>Exception1</var> as exception:\n\t<var>...</var>\nelse:\n\t<var>...</var>\nfinally:\n\t<var>...</var></div>\n\n\n\n"},{"id":"wmaS","level":3,"heading":"Try Except - Single Line Multiple Exceptions","content":"<h3>Try Except - Single Line Multiple Exceptions</h3>\n\n<div class=\"codebox\">try:\n\t<var>...</var>\n\nexcept (<var>Exception1</var>, <var>Exception2</var>):\n\t<var>...</var>\n\nexcept (<var>Exception3</var>, <var>Exception4</var>) as <var>error</var>\n\t<var>...</var></div>\n\n\nExample:\n\n<div class=\"codebox\">try:\n\t<var>value</var> = input(&quot;Enter number: &quot;)\n\n\tif not <var>value</var>:\n\t\traise ValueError(&quot;Must enter a value.&quot;)\n\n\tif not <var>value</var>.isdigit():\n\t\traise TypeError(&quot;Must be a number.&quot;)\n\nexcept (TypeError, ValueError):\n\t<var>...</var></div>\n\n\n\n"},{"id":"HUgB","level":3,"heading":"Exception - Get Message","content":"<h3>Exception - Get Message</h3>\n\n<div class=\"codebox\">= str(<var>exception_1</var>)</div>\n\nWorks in some circumstances:\n\n<div class=\"codebox\">= <var>exception_1</var>.args[0]</div>\n\nReturns the error message.\n\n\n\n"},{"id":"W17w","level":3,"heading":"Exception - Get Stack Trace","content":"<h3>Exception - Get Stack Trace</h3>\n\n<div class=\"codebox\">import traceback\n\n<var>taceback_1</var> = traceback.format_exc()</div>\n\nReturns: <code>str</code>\n\n\nExample:\n\n<div class=\"codebox\">except Exception as <var>exception_1</var>:\n\tprint(traceback.format_exc())</div>\n\n\n\n"},{"id":"cnPM","level":2,"heading":"Standard Exceptions","content":"<h2>Standard Exceptions</h2>\n\n\n"},{"id":"XuPt","level":3,"heading":"Exception - AssertionError","content":"<h4>Exception - AssertionError</h4>\n\n<div class=\"codebox\">AssertionError</div>\n\nRaised when an assertion fails.\n\n\n\n"},{"id":"pAJQ","level":3,"heading":"Exception - FileNotFoundError","content":"<h4>Exception - FileNotFoundError</h4>\n\n<div class=\"codebox\">FileNotFoundError</div>\n\n\n"},{"id":"7eCs","level":3,"heading":"Exception - IndexError","content":"<h4>Exception - IndexError</h4>\n\n<div class=\"codebox\">IndexError</div>\n\nUse to indicate index out of bounds or other index error.\n\n\n\n"},{"id":"A1f4","level":3,"heading":"Exception - NotImplementedError","content":"<h4>Exception - NotImplementedError</h4>\n\n<div class=\"codebox\">NotImplementedError</div>\n\nA runtime exception.\n\n\n\n"},{"id":"UQTX","level":3,"heading":"Exception - StopIteration","content":"<h4>Exception - StopIteration</h4>\n\n<div class=\"codebox\">StopIteration</div>\n\nUse to indicate an iterator or generator has completed.\n\n\n\n"},{"id":"UBFQ","level":3,"heading":"Exception - TypeError","content":"<h4>Exception - TypeError</h4>\n\n<div class=\"codebox\">TypeError</div>\n\nUse to indicate invalid or None type.\n\n\n\n"},{"id":"x5ZE","level":3,"heading":"Exception - ValueError","content":"<h4>Exception - ValueError</h4>\n\n<div class=\"codebox\">ValueError</div>\n\nUse when type is correct but value is outside the expected range.\nUse this for request validations.\n\n\n\n"},{"id":"Vuqm","level":1,"heading":"Functions","content":"<h1>Functions</h1>\n\n\n\n"},{"id":"KMfL","level":2,"heading":"Function - Basics","content":"<h2>Function - Basics</h2>\n\n<div class=\"codebox\">def <var>function_1</var>(<var>arg_1</var>, <var>arg_2</var> <var>...</var>):\n\t<span class=\"note\">&quot;&quot;&quot;Function docstring.&quot;&quot;&quot;</span>\n\n\t<var>...</var>\n\n\treturn <var>response</var></div>\n\n<div class=\"codebox\"><var>response_1</var> = <var>function_1</var>(<var>arg_1</var>, <var>arg_2</var>, <var>...</var>)</div>\n\n<div class=\"codebox\"><var>response_1</var> = <var>function_1</var>(<var>arg_1_name</var> = <var>arg_1</var>, <var>...</var>)\t\t<span class=\"note\"># With Named Arguments</span></div>\n\nFunctions are stored as global attributes.\nFunction definitions can be monkey patched by changing the global definition.\nFunctions are first class objects and can be passed as values.\n\n\n\n"},{"id":"VfLB","level":2,"heading":"Function - Details","content":"<h2>Function - Details</h2>\n\n\n\n"},{"id":"aKQx","level":3,"heading":"Function - Define","content":"<h3>Function - Define</h3>\n\n<div class=\"codebox\">def <var>function_1</var>(<var>arg_1</var>, <var>arg_2</var> <var>...</var>): \n\t<var>...</var></div>\n\n<div class=\"codebox\">def <var>function_1</var>(<var>arg_1</var>, <var>arg_2</var> <var>...</var>):\t\t<span class=\"note\"># With Return</span>\n\treturn <var>response</var></div>\n\n\n\n"},{"id":"zW3h","level":3,"heading":"Function - Define - Empty Function","content":"<h3>Function - Define - Empty Function</h3>\n\n<div class=\"codebox\">def <var>empty_function_1</var>():\t\t\t\t\t<span class=\"note\"># Empty Function, Does Nothing Yet</span>\n\tpass</div>\n\nUse <code>pass</code> to define an empty function.\n\n\n\n"},{"id":"6bT7","level":3,"heading":"Function - DocString - Define","content":"<h3>Function - DocString - Define</h3>\n\n<div class=\"codebox\">def <var>function_1</var>():\n\t<span class=\"note\">&quot;&quot;&quot;Place docstring here.&quot;&quot;&quot;</span>\n\t<var>...</var></div>\n\n\n\n"},{"id":"qmeH","level":3,"heading":"Function - Arguments - Default Values","content":"<h3>Function - Arguments - Default Values</h3>\n\n<div class=\"codebox\">def <var>function_1</var>(<var>optional_arg_1</var> = <var>default_value</var>, <var>...</var>):\n\t<var>...</var></div>\n\nThe arguments with default values are optional.\nOptional arguments must come after standard non-optional arguments.\n\n\nExample:\n\n<div class=\"codebox\">def <var>say_hello</var>(<var>name</var>, <var>greeting</var> = &quot;<var>Hello</var>&quot;):\n\tprint(<var>greeting</var>, <var>name</var>)\n\n<var>say_hello</var>(&quot;<var>John</var>&quot;)\n<var>say_hello</var>(&quot;<var>John</var>&quot;, &quot;<var>Hi</var>&quot;)</div>\n\n\n\n"},{"id":"knpz","level":3,"heading":"Function - Arguments - As Key Word Dict","content":"<h3>Function - Arguments - As Key Word Dict</h3>\n\n<div class=\"codebox\">def <var>function_1</var>(**<var>kwargs</var>):\n\t<var>...</var>\n\t<var>value_1</var> = <var>kwargs</var>[<var>key_1</var>]\t\t\t\t<span class=\"note\"># References Argument <var>key_1</var></span>\n\t<var>...</var></div>\n\n<code>kwargs</code> Type: dict\n\nThe caller arguments are placed in a dictionary.\nThe caller must use named arguments.\n&quot;<code>kwargs</code>&quot; is the name by convention for this argument.\n\nkwargs = key word arguments\n\n\nExample:\n\n<div class=\"codebox\">def <var>say</var>(**kwargs):\n\tprint(kwargs[<var>'greeting'</var>], kwargs[<var>'name'</var>])\n\n<var>say</var>(greeting = &quot;<var>Hi</var>&quot;, name = &quot;<var>John</var>&quot;)</div>\n\n\n\n"},{"id":"rARh","level":3,"heading":"Function - Arguments - As Tuple","content":"<h3>Function - Arguments - As Tuple</h3>\n\n<div class=\"codebox\">def function1(*args):\n\t<var>...</var>\n\t<var>value_1</var> = <var>args</var>[<var>index_1</var>]\t\t\t\t<span class=\"note\"># Reference an Argument</span>\n\t<var>...</var></div>\n\n<code>args</code> Type: tuple\n\nThe caller arguments are placed in a tuple.\n\n\nExample:\n\n<div class=\"codebox\">def <var>say</var>(*args):\n\tprint(args[<var>0</var>], args[<var>1</var>])\n\n<var>say</var>(&quot;<var>Hi</var>&quot;, &quot;<var>John</var>&quot;)</div>\n\n\n\n"},{"id":"Zjwv","level":3,"heading":"Function - Return","content":"<h3>Function - Return</h3>\n\n<div class=\"codebox\">def <var>function_1</var>():\n\treturn <var>value_1</var></div>\n\n\nReturns a value.\n\n\nExample:\n\n<div class=\"codebox\">def <var>return_a_1</var>():\n\treturn 1\n\n<var>results</var> = <var>return_a_1</var>()</div>\n\n\n\n"},{"id":"Nvev","level":3,"heading":"Function - Return - Multiple Values","content":"<h3>Function - Return - Multiple Values</h3>\n\n<div class=\"codebox\">def <var>function_1</var>():\n\treturn <var>value_1</var>, <var>value_2</var>, <var>...</var></div>\n\n\nReturns: <code>Tuple</code>\n\n\nReturns values as a tuple.\n\n\nExample:\n\n<div class=\"codebox\">def <var>return_three_values</var>():\n\treturn &quot;one&quot;, &quot;two&quot;, &quot;three&quot;\n\n<var>results</var> = <var>return_three_values</var>()</div>\n\n\n\n"},{"id":"MEgM","level":3,"heading":"Function - Call","content":"<h3>Function - Call</h3>\n\n<div class=\"codebox\"><var>function_1</var>()\t\t\t\t\t\t\t<span class=\"note\"># No Arguments, No Return Value</span></div>\n\n<div class=\"codebox\"><var>function_2</var>(<var>arg_1</var>, <var>...</var>)\t\t\t\t\t<span class=\"note\"># With Arguments</span></div>\n\n<div class=\"codebox\">= <var>function_3</var>(<var>arg_1</var>, <var>...</var>)\t\t\t\t<span class=\"note\"># When Returning a Value</span></div>\n\n\n\n"},{"id":"2ab9","level":3,"heading":"Function - Call - With Named Arguments","content":"<h3>Function - Call - With Named Arguments</h3>\n\nCall:\n\n<div class=\"codebox\"><var>function_1</var>(<var>arg_1_name</var> = <var>value</var>, <var>arg_2_name</var> = <var>value</var>, <var>...</var>)</div>\n\n\nPass arguments by name to by using the form <code><var>name</var> = <var>value</var></code>.\nOrder is not important.\n\n\nExample:\n\n<div class=\"codebox\">def <var>greet</var>(<var>greeting</var>, <var>name</var>):\n\tprint(<var>greeting</var>, <var>name</var>)\n\n<span class=\"note\"># Call:</span>\n\n<var>greet</var>(name = 'John', greeting = 'Hi')</div>\n\n\n\n"},{"id":"9Fc4","level":3,"heading":"Function - Call - With Dict","content":"<h3>Function - Call - With Dict</h3>\n\n<div class=\"codebox\"><var>function_1</var>(**<var>dict_1</var>)</div>\n\nPass as <code><var>dict_1</var></code> it's arguments.\nUnpacks the dictionary into keyword arguments inside the function.\n\n\nExample:\n\n<div class=\"codebox\">def <var>say</var>(<var>greeting</var>, <var>name</var>):\n\tprint(<var>greeting</var>, <var>name</var>)\n\n<var>dict_1</var> = {<var>'greeting'</var> : <var>'Hi'</var>, <var>'name'</var> : <var>'John'</var>}\n\n<var>say</var>(**<var>dict_1</var>)</div>\n\n\n\n"},{"id":"jgbr","level":3,"heading":"Function - Call - With Sequence","content":"<h3>Function - Call - With Sequence</h3>\n\n<div class=\"codebox\"><var>function_1</var>(*<var>sequence_1</var>)</div>\n\nPass <code><var>sequence_1</var></code> to the function as it's arguments.\nUnpacks the sequence into arguments in order they are declared in the function signature.\n\n\nExample:\n\n<div class=\"codebox\">def <var>say</var>(<var>greeting</var>, <var>name</var>):\n\tprint(<var>greeting</var>, <var>name</var>)\n\n<var>list_1</var> = [<var>'Hi'</var>, <var>'John'</var>]\n\n<var>say</var>(*<var>list_1</var>)</div>\n\n\n\n"},{"id":"CkSL","level":2,"heading":"Function - Function Passing","content":"<h2>Function - Function Passing</h2>\n\nAssign:\n\n<div class=\"codebox\"><var>function_variable_1</var> = <var>function_1</var></div>\n\nCall:\n\n<div class=\"codebox\"><var>function_variable_1</var>(<var>...</var>)</div>\n\nPass:\n\n<div class=\"codebox\"><var>function_2</var>(<var>function_variable_1</var>):</div>\n\nPass Directly:\n\n<div class=\"codebox\"><var>function_2</var>(<var>function_1</var>):</div>\n\nCan be passed as a value.\n\n\n\n"},{"id":"f1Xw","level":2,"heading":"Function - Get Name","content":"<h2>Function - Get Name</h2>\n\n<div class=\"codebox\">= <var>function_1</var>.__name__</div>\n\n\nExample:\n\n<div class=\"codebox\">def <var>function_1</var>():\n\treturn &quot;This is a function.&quot;\n\n<var>function_name</var> = <var>function_1</var>.__name__</div>\n\n\n\n"},{"id":"6xDb","level":2,"heading":"Function - Inner Functions","content":"<h2>Function - Inner Functions</h2>\n\n\n"},{"id":"N66j","level":3,"heading":"Function - Inner Function - Define","content":"<h3>Function - Inner Function - Define</h3>\n\nDefine:\n\n<div class=\"codebox\">def <var>parent_function</var>(<var>...</var>):\n\n\tdef <var>inner_function</var>(<var>...</var>):\t\t\t<span class=\"note\">#1</span>\n\t\t<var>...</var></div>\n\nCall:\n\n<div class=\"codebox\">def <var>parent_function</var>(<var>...</var>):\n\n\t<var>...</var>\n\n\t<var>response_1</var> = <var>inner_function</var>()</div>\n\n\n#1  -  Scope - <code><var>inner_function</var></code> is visible to <code><var>parent_function</var></code> only.\n\n\n\n"},{"id":"vbfK","level":3,"heading":"Inner Function - Closure","content":"<h3>Inner Function - Closure</h3>\n\nAn inner function has read access to it's parent's variables.\nThere are in scope due to the function 'closing' over the parent's environment.\n\n\nExample:\n\n<div class=\"codebox\">def <var>parent</var>():\n\n\tdef <var>inner</var>():\n\t\tprint ('value =', <var>value</var>)\n\n\t<var>value</var> = <var>10</var>\n\t<var>inner</var>()\n\n<var>parent</var>()\n\n<span class=\"note\"># Prints 'value = 10'</span></div>\n\nHere <code><var>value</var></code> is a non-local variable to <code><var>inner</var></code>.\n\n\n\n"},{"id":"YaLr","level":2,"heading":"Function Decorators","content":"<h2>Function Decorators</h2>\n\n\n\n"},{"id":"1gy7","level":3,"heading":"Decorators - Basics","content":"<h3>Decorators - Basics</h3>\n\nDefine:\n\n<div class=\"codebox\">def <var>decorator_1</var>(<var>function</var>):\n\t\n\tdef wrapper(*args, **kwargs):\n\t\t<var>...</var>                              <span class=\"note\"># Pre-function Code</span>\n\t\t<var>function</var>(*args, **kwargs)        <span class=\"note\"># Function Call</span>\n\t\t<var>...</var>                              <span class=\"note\"># Post-function Code</span>\n\t\t\n\treturn wrapper</div>\n\nUse (Decorate):\n\n<div class=\"codebox\">@<var>decorator_1</var>\ndef <var>decorated_2</var>(<var>arg_1</var>, <var>...</var>):\n\t<var>...</var></div>\n\nUses:\n\n<div class=\"codebox\">decorated_2(<var>arg_1</var>, <var>...</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><span class=\"note\"># Define Decorator:</span>\n\ndef <var>decorate_before_and_after</var>(<var>function</var>):\n\t\n\tdef wrapper(*args, **kwargs):\n\n\t\tprint(&quot;Before:  &quot; + function.__name__)\n\t\t<var>function</var>(*args, **kwargs)\n\t\tprint(&quot;After:   &quot; + function.__name__)\n\t\t\n\treturn wrapper\n\n<span class=\"note\"># Decorate Function:</span>\n\n@<var>decorate_before_and_after</var>\ndef <var>print_message</var>(message):\n\tprint(&quot;Message:&quot;, message)\n\n<span class=\"note\"># Call:</span>\n\n<var>print_message</var>(<var>&quot;This message appears after 'Before' but before 'After'.&quot;</var>)</div>\n\n\n\n"},{"id":"VNCH","level":3,"heading":"Decorator - Define - No Arguments","content":"<h3>Decorator - Define - No Arguments</h3>\n\n<div class=\"codebox\">def <var>decorator_1</var>(<var>decorated_function</var>):\n\n\tdef <var>wrapper</var>():\n\t\t<var>...</var>                           <span class=\"note\">#1</span>\n\t\t<var>decorated_function</var>()          <span class=\"note\">#2</span>\n\t\t<var>...</var>                           <span class=\"note\">#3</span>\n\n\treturn <var>wrapper</var>()</div>\n\nWhen a function is decorated and then called, <code><var>decorated_function</var></code> will be called thorugh <code><var>wrapper</var>()</code>.\n\n#1  <span class=\"dim\">-</span>  Place pre-function call code here.\n#2  <span class=\"dim\">-</span>  Calls <code><var>decorated_function</var></code>.\n#3  <span class=\"dim\">-</span>  Place post-function call code here.\n\n\n\n"},{"id":"97Y0","level":3,"heading":"Decorator - Define - Passing Arguments","content":"<h3>Decorator - Define - Passing Arguments</h3>\n\n<div class=\"codebox\">def <var>decorator_1</var>(<var>decorated_function</var>):\n\n\tdef <var>wrapper</var>(*args, **kwargs):             <span class=\"note\">#1</span>\n\t\t<var>...</var>\n\t\t<var>decorated_function</var>(*args, **kwargs)       <span class=\"note\">#2</span>\n\t\t<var>...</var>\n\n\treturn <var>wrapper</var>()</div>\n\n\nWhen a function is decorated and then called, <code><var>decorated_function</var></code> will be called thorugh <code><var>wrapper</var>()</code>.\n\n#1  <span class=\"dim\">-</span>  Captures calling statement's arguments.\n\n#2  <span class=\"dim\">-</span>  Calls <code><var>decorated_function</var></code> and passes arguments.\n\n\n\n"},{"id":"C5wH","level":3,"heading":"Decorator - Define - Return Result","content":"<h3>Decorator - Define - Return Result</h3>\n\n<div class=\"codebox\">def <var>decorator_1</var>(<var>decorated_function</var>):\n\n\tdef <var>wrapper</var>(*args, **kwargs):\n\t\t<var>...</var>\n\t\tresult = <var>decorated_function</var>(*args, **kwargs)\n\t\t<var>...</var>\n\t\treturn result\n\n\treturn <var>wrapper</var>()</div>\n\n\n\n"},{"id":"drgh","level":3,"heading":"Decorator - Define - With Decorator Arguments","content":"<h3>Decorator - Define - With Decorator Arguments</h3>\n\n<div class=\"codebox\">def <var>decorator_1</var>(<var>arg_1</var>, <var>arg_2</var>):\n\n\tdef decorator_actual(<var>decorated_function</var>)\n\n\t\tdef <var>wrapper</var>():\n\t\t\t<var>...</var>                           <span class=\"note\">#1</span>\n\t\t\t<var>decorated_function</var>()          <span class=\"note\">#2</span>\n\t\t\t<var>...</var>                           <span class=\"note\">#3</span>\n\n\t\treturn <var>wrapper</var>()\n\n\treturn <var>decorator_actual</var></div>\n\n\nPasses arguments to the decorator itself.\n\nThis uses an outer decorator factory.\nUse this decorator factory as the @decorator name.\n\n\nExample:\n\n<div class=\"codebox\">def <var>announce_from</var>(<var>name</var>):\n\n\tdef decorator(<var>function</var>):\n\n\t\tdef function_wrapper():\n\n\t\t\t<var>function</var>()\n\t\t\tprint('From', <var>name</var>)\n\n\t\treturn function_wrapper\n\n\treturn decorator\n\n\n@<var>announce_from</var>(&quot;your-name-here&quot;)\ndef <var>say_hi</var>():\n\tprint(&quot;Hi&quot;)\n\n<var>say_hi</var>()\n\n<span class=\"note\"># Prints:\n#\n#    Hi\n#    From your-name-here</span></div>\n\n\n\n"},{"id":"N2gu","level":3,"heading":"Decorator - Use","content":"<h3>Decorator - Use</h3>\n\n<div class=\"codebox\">@<var>decorator_1</var>\ndef <var>decorated_function</var>(<var>...</var>):\n\t<var>...</var></div>\n\nCalls <code><var>decorated_function</var></code> through <code><var>decorator_1</var></code>.\n\n\n\n"},{"id":"x8x6","level":2,"heading":"Lambda","content":"<h2>Lambda</h2>\n\nAn anonymous function.\nAll lambdas return a value. Returns are implied.\n\n\n\n"},{"id":"WpjW","level":3,"heading":"Lambda - Define","content":"<h3>Lambda - Define</h3>\n\n<div class=\"codebox\">= lambda <var>arg_1</var>, <var>arg_2</var>, <var>...</var> : <var>expression</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>multiply</var> = lambda <var>x</var>, <var>y</var> : <var>x</var> * <var>y</var>\n\n<var>result</var> = <var>multiply</var>(2, 3)</div>\n\n\n\n"},{"id":"FRr2","level":3,"heading":"Lambda - Define - Alternative","content":"<h3>Lambda - Define - Alternative</h3>\n\n<div class=\"codebox\">def <var>lambda_name</var>(<var>args_1</var>, <var>args_2</var>, <var>...</var>): return <var>expression</var></div>\n\nThis is using the standard function form to return a 'lambda'.\n\n\n\n"},{"id":"sTHZ","level":3,"heading":"Lambda - Closure","content":"<h3>Lambda - Closure</h3>\n\nA lambda has read access to it's parent's variables through closure.\n\n\nExample:\n\n<div class=\"codebox\">def <var>test</var>():\n\n\t<var>value</var> = <var>10</var>        <span class=\"note\"># Closed Variable</span> \n\n\t<var>multiply_by</var> = lambda <var>x</var> : <var>x</var> * <var>value</var>\n\n\tprint(<var>multiply_by</var>(<var>3</var>))\n\n<var>test</var>()\n\n<span class=\"note\"># Prints '30'</span></div>\n\n\n\n"},{"id":"SZbn","level":2,"heading":"Partial Functions","content":"<h2>Partial Functions</h2>\n\n<div class=\"codebox\">from functools import partial\n\n<var>partial_function_1</var> = partial(<var>function_1</var>, <var>arg_1_value</var>)</div>\n\nReturns the function with some arguments applied.\nArguments are applied to arguments from first to last.\nCall the returned function with additional arguments to make the actual call.\n\nAlso Called: Currying\n\n\nExample:\n\n<div class=\"codebox\">def <var>say</var>(<var>greeting</var>, <var>name</var>):\n\tprint(<var>greeting</var>, <var>name</var>)\n\n<var>say_hi</var> = partial(<var>say</var>, <var>&quot;Hi&quot;</var>)\n<var>say_hi</var>(<var>&quot;John&quot;</var>)</div>\n\n\n\n"},{"id":"Hj5t","level":1,"heading":"Classes","content":"<h1>Classes</h1>\n\n\n\n"},{"id":"nBkx","level":2,"heading":"Standard Class","content":"<h2>Standard Class</h2>\n\n\n\n"},{"id":"w4Jc","level":3,"heading":"Class - Basics","content":"<h3>Class - Basics</h3>\n\nDefine:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\t<span class=\"note\">&quot;&quot;&quot;Class docstring.&quot;&quot;&quot;</span>\n\n\t<var>class_variable</var> = <var>value</var>\t\t\t\t<span class=\"note\"># Static Variable</span>\n\n\tdef __init__(self, <var>arg_1</var>, <var>...</var>):\t\t<span class=\"note\"># Constructor</span>\n\t\tself.<var>variable_1</var> = <var>arg_1</var>\n\t\tself._<var>private_variable_2</var> = <var>arg_2</var>\n\n\tdef <var>method_1</var>(self, <var>arg_1</var>, <var>...</var>):\n\t\t<span class=\"note\">&quot;&quot;&quot;Method docstring.&quot;&quot;&quot;</span>\n\t\t<var>...</var>\n\n\tdef _<var>private_method_2</var>(self, <var>arg_1</var>, <var>...</var>):\n\t\t<var>...</var>\n\n\t@classmethod\t\t\t\t\t\t<span class=\"note\"># Class Method</span>\n\tdef <var>class_method_3</var>(cls, <var>arg_1</var>, <var>...</var>):\n\t\t<var>...</var>\n\n\t@staticmethod\t\t\t\t\t\t<span class=\"note\"># Static Method</span>\n\tdef <var>static_method_3</var>(<var>arg_1</var>, <var>...</var>):\n\t\t<var>...</var></div>\n\nCall Class Method:\n\n<div class=\"codebox\"><var>Class1</var>.<var>class_method_3</var>(<var>arg_1</var>, <var>...</var>)</div>\n\nCall Static Method:\n\n<div class=\"codebox\"><var>Class1</var>.<var>static_method_4</var>(<var>arg_1</var>, <var>...</var>)</div>\n\nRead Static Variable:\n\n<div class=\"codebox\"><var>value_1</var> = <var>Class1</var>.<var>class_variable</var></div>\n\nSet Static Variable:\n\n<div class=\"codebox\"><var>Class1</var>.<var>class_variable</var> = <var>value_2</var></div>\n\nCreate Class:\n\n<div class=\"codebox\"><var>class_1</var> = <var>Class1</var>(<var>arg_1</var>, <var>...</var>)</div>\n\nCall Instance Method:\n\n<div class=\"codebox\"><var>class_1</var>.<var>method_1</var>(<var>arg_1</var>, <var>...</var>)</div>\n\nRead Instance Variable:\n\n<div class=\"codebox\"><var>value_1</var> = <var>Class1</var>.<var>variable_1</var></div>\n\nSet Instance Variable:\n\n<div class=\"codebox\"><var>Class1</var>.<var>variable_1</var> = <var>value_2</var></div>\n\n\nAll class functions and variables are public by default.\n\nFunction overloading is NOT supported.\n- use arguments default values to solve this.\n- use type checking to catch incorrect arguments.\n\nClasses are mutable.\nClass methods are stored as attributes and can be monkey patched.\n\nInstance variables must be created in a class function and attached to self.\n\nThe <code>self</code> argument is required for all class functions.\n- <code>self</code> is called <var>self</var> by convention.\n\n\n\n"},{"id":"e6Z2","level":3,"heading":"Class - Define","content":"<h3>Class - Define</h3>\n\n<div class=\"codebox\">class <var>Class1</var>:\n\t<var>...</var></div>\n\nWith Constructor:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\t def __init__(self, <var>arg_1</var>, <var>...</var>):\n\n\t\tself.<var>property_1</var> = <var>...</var></div>\n\nAll Options:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\t<span class=\"note\">&quot;&quot;&quot;Class docstring.&quot;&quot;&quot;</span>\n\n\t<var>variable_1</var> = <var>value</var>\t\t\t\t\t<span class=\"note\"># Class Variable / Static Variable</span>\n\t<var>_private_variable_2</var> = <var>value</var>\n\n\tdef __init__(self, <var>arg_1</var>, <var>...</var>):\t\t<span class=\"note\"># Constructor</span>\n\n\t\tsuper().__init__()\n\n\t\tself.<var>variable_3</var> = <var>arg_1</var>\t\t\t<span class=\"note\"># Instance Variable</span>\n\t\tself._<var>private_variable_2</var> = <var>arg_2</var>\n\n\tdef <var>method_1</var>(self, <var>arg_1</var>, <var>...</var>):\n\t\t<span class=\"note\">&quot;&quot;&quot;Method docstring.&quot;&quot;&quot;</span>\n\t\t<var>...</var>\n\n\tdef <var>_private_method_1</var>(self, <var>arg_1</var>, <var>...</var>):\n\t\t<var>...</var></div>\n\n\n\n"},{"id":"ygvE","level":3,"heading":"Class - Define - Constructor","content":"<h3>Class - Define - Constructor</h3>\n\n<div class=\"codebox\">class <var>Class1</var>:\n\tdef __init__(self, <var>arg_1</var>, <var>...</var>):\n\t\t<var>...</var></div>\n\nDefine the constructor with the <code>__init__</code> method.\n\nDefine instance arguments in the constructor.\n\n\n\n"},{"id":"CaCf","level":3,"heading":"Class - Define - With Inheritance","content":"<h3>Class - Define - With Inheritance</h3>\n\n<div class=\"codebox\">class <var>Subclass1</var>(<var>Superclass1</var>):\n\t<var>...</var></div>\n\nInitializing Parent:\n\n<div class=\"codebox\">class <var>Subclass1</var>(<var>Superclass1</var>):\n\n\tdef __init__(self, <var>...</var>):\n\t\tsuper().__init__()\n\t\t<var>...</var></div>\n\nInitializing Parent With Arguments:\n\n<div class=\"codebox\">class <var>Subclass1</var>(<var>Superclass1</var>):\n\n\tdef __init__(self, <var>...</var>):\n\t\tsuper().__init__(<var>arg_1</var>, <var>...</var>)\n\t\t<var>...</var></div>\n\n\n"},{"id":"TCWw","level":3,"heading":"Class - Define - With Multiple Inheritance","content":"<h3>Class - Define - With Multiple Inheritance</h3>\n\n<div class=\"codebox\">class <var>Subclass1</var>(<var>Superclass1</var>, <var>Superclass2</var>, <var>...</var>):\n\t<var>...</var></div>\n\nPriority is from left to right.\n<code><var>Superclass1</var></code>'s members take precedence over other super classes.\n\n\n\n"},{"id":"r0Gu","level":3,"heading":"Class - Call Superclass","content":"<h3>Class - Call Superclass</h3>\n\n<div class=\"codebox\">super().__init__()</div>\n\n<div class=\"codebox\">class <var>class1</var>(<var>Superclass1</var>):\n\n\tdef __init__(self, <var>...</var>):\n\t\tsuper().__init__(<var>arg_1</var>, <var>...</var>)\n</div>\n\n\n\n"},{"id":"cuGG","level":3,"heading":"Class - New Instance","content":"<h3>Class - New Instance</h3>\n\n<div class=\"codebox\">= <var>Class1</var>(<var>arg_1</var>, <var>...</var>)</div>\n\n\n\n"},{"id":"ZSFq","level":3,"heading":"Class - Instance Variable","content":"<h3>Class - Instance Variable</h3>\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\tdef <var>some_method</var>(self):\n\n\t\tself.<var>variable_1</var> = <var>value</var>\t\t\t<span class=\"note\"># Create / Set</span>\n\n\t\t= self.<var>variable_1</var>\t\t\t\t<span class=\"note\"># Get</span></div>\n\nGet:\n\n<div class=\"codebox\">= <var>class_1</var>.<var>variable_1</var></div>\n\nSet:\n\n<div class=\"codebox\"><var>class_1</var>.<var>variable_1</var> = <var>new_value</var></div>\n\nDefine instance variables in the constructor so they are always available.\nReference instance variable internally in the class with '<strong>self.</strong>' .\nReference instance variable through instance name outside of class.\n\n\n\n"},{"id":"bzeZ","level":3,"heading":"Class - Instance Method","content":"<h3>Class - Instance Method</h3>\n\nDefine:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\tdef <var>method_1</var>(self, <var>arg_1</var>, <var>...</var>):\n\t\t<var>...</var></div>\n\nCall Inside Class:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\tdef <var>...</var>(self):\n\n\t\tself.<var>method_1</var>(<var>arg_1</var>, <var>...</var>)</div>\n\nCall Outside Class:\n\n<div class=\"codebox\"><var>class_1</var>.<var>method_1</var>(<var>arg_1</var>, <var>...</var>)</div>\n\nReference instance methods internally in the class with '<strong>self.</strong>' .\nReference instance methods externally through the instance name (<var>class_1</var> in this case).\n\n\n\n"},{"id":"gXt4","level":3,"heading":"Class - Class Variable","content":"<h3>Class - Class Variable</h3>\n\nDefine:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\t<var>variable_1</var> = <var>value</var></div>\n\nGet:\n\n<div class=\"codebox\">= <var>Class1</var>.<var>variable_1</var></div>\n\nSet:\n\n<div class=\"codebox\"><var>Class1</var>.<var>variable_1</var> = <var>new_value</var></div>\n\n\nDefines a class or static variable.\n\nThis variable is associated with the class and not an instance of the class.\nRefer to the variable through the class name only.\n\n\n\n"},{"id":"W6fN","level":3,"heading":"Class - Class Method","content":"<h3>Class - Class Method</h3>\n\n<div class=\"codebox\">@classmethod\n<var>method_1</var>(<var>...</var>)</div>\n\nDefine:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\t@classmethod\t\t\t\t\t<span class=\"note\">#1</span>\n\t<var>method_1</var>(cls, <var>arg_1</var>, <var>...</var>):\t\t<span class=\"note\">#2</span>\n\t\tcls.<var>class_variable</var> = <var>value</var>\n\t\t<var>...</var></div>\n\nCalling:\n\n<div class=\"codebox\"><var>Class1</var>.<var>method_1</var>(<var>arg_1</var>, <var>...</var>)</div>\n\n\nDefines a method that acts on the class and not an instance of the class.\n\n\nDefine with <code>@classmethod</code>.\nReference the method using the class name (<code><var>Class1</var></code> in this case).\n\n\nThis is useful if you need to know exactly what type of class was instantiated.\n\n\n#1  <span class=\"dim\">-</span>  <code>@classmethod</code> defines a class method.\n\n#2  <span class=\"dim\">-</span>  The class is passed in as <code>cls</code>.\n\n\n\n"},{"id":"z5zd","level":3,"heading":"Class - Static Method","content":"<h3>Class - Static Method</h3>\n\n<div class=\"codebox\">@staticmethod\n<var>method_1</var>(<var>...</var>)</div>\n\nDefine:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\t@staticmethod\n\t<var>method_1</var>(<var>arg_1</var>, <var>...</var>):\n\t\t<var>...</var></div>\n\nCalling:\n\n<div class=\"codebox\"><var>Class1</var>.<var>method_1</var>(<var>arg_1</var>, <var>...</var>)</div>\n\n\nDefines a static method, one that is called on the class and not on an instance of the class.\n\nDefine with <code>@staticmethod</code>.\nReference through the class name.\nCan not update class variables.\n\n\n\n"},{"id":"auQL","level":3,"heading":"Class - Class Method vs Static Method","content":"<h3>Class - Class Method vs Static Method</h3>\n\nClass Method:\n\nUse for class level methods than work with the class itself.\n\n\n\nStatic Method:\n\nUse for utility methods that are related to the class but do not interact with the class.\n\n\n\n"},{"id":"QG9s","level":3,"heading":"Class - Equals - Is Type or Subtype?","content":"<h3>Class - Equals - Is Type or Subtype?</h3>\n\n<div class=\"codebox\">= isinstance(<var>item_1</var>, <var>Class1</var>)</div>\n\nReturns true if <code><var>item_1</var></code> is a type or a subtype of <code><var>Class1</var></code>.\n\n\n\n"},{"id":"KqcP","level":3,"heading":"Class - Equals - Is Same Class?","content":"<h3>Class - Equals - Is Same Class?</h3>\n\n<div class=\"codebox\">= type(<var>item_1</var>) is <var>Class1</var></div>\n\nReturns true if <code><var>item_1</var></code> is the class <code><var>Class1</var></code>.\nDoes not match subtypes.\n\n\n\n"},{"id":"PDFS","level":3,"heading":"Class - Equals - Is Same","content":"<h3>Class - Equals - Is Same</h3>\n\nImplement Method:\n\n<div class=\"codebox\">def __eq__(self, <var>other</var>):</div>\n\nCompare:\n\n<div class=\"codebox\">= <var>item1</var> == <var>item2</var></div>\n\n<div class=\"codebox\">if <var>item1</var> == <var>item2</var>:</div>\n\n\nImplement <code>__eq__()</code> to allow class instances to be compared with equals (<code>==</code>).\n\n\nExample:\n\n<div class=\"codebox\"><span class=\"note\"># Define Class:</span>\n\nclass <var>SampleClass</var>:\n\n\tdef __init__(self, <var>value_1</var> = None, <var>value_2</var> = None):\n\n\t\tself.<var>value_1</var> = <var>value_1</var>\n\t\tself.<var>value_2</var> = <var>value_2</var>\n\n\tdef __eq__ (self, <var>other</var>):\n\n\t\tif not isinstance(<var>other</var>, <var>SampleClass</var>):\n\t\t\treturn False\n\n\t\treturn (self.<var>value_1</var> == <var>other</var>.<var>value_1</var> and\n\t\t\t\tself.<var>value_2</var> == <var>other</var>.<var>value_2</var>)\n\n<span class=\"note\"># Instantiate:</span>\n\n<var>item1</var> = <var>SampleClass</var>(<var>1</var>, <var>&quot;one&quot;</var>)\n<var>item2</var> = <var>SampleClass</var>(<var>2</var>, <var>&quot;two&quot;</var>)\n\n<span class=\"note\"># Compare:</span>\n\nif <var>item1</var> == <var>item2</var>:\n\tprint(&quot;The same.&quot;)\nelse:\n\tprint(&quot;Different.&quot;)</div>\n\n\n\n"},{"id":"GeUc","level":3,"heading":"Class - DocString","content":"<h3>Class - DocString</h3>\n\n<div class=\"codebox\">class <var>Class1</var>:\n\t<span class=\"note\">&quot;&quot;&quot;Class docstring.&quot;&quot;&quot;</span>\n\n\t<var>...</var></div>\n\n\n\n"},{"id":"AuJy","level":3,"heading":"Class - DocString - Read","content":"<h3>Class - DocString - Read</h3>\n\n<div class=\"codebox\">= <var>Class1</var>.__doc__\t\t\t\t\t\t<span class=\"note\"># From Class</span></div>\n\n<div class=\"codebox\">= <var>class_1</var>.__doc__\t\t\t\t\t\t<span class=\"note\"># From Instance</span></div>\n\n\n\n"},{"id":"FWnc","level":3,"heading":"Class - self","content":"<h3>Class - self</h3>\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\tdef <var>function_1</var>(self):\n\n\t\tself.<var>_variable_1</var> = <var>...</var>\n\t\t<var>...</var> = self.<var>_variable_1</var>\n\n\t\tself.<var>function_1</var>()</div>\n\n\n<code>self</code> is the current instance of the class.\n\nReference any instance variables or functions using <code>self</code>.\n<code>self</code> must be the first argument in any non static functions.\nDo not pass <code>self</code> to a non static function. It will be passed automatically.\n\n\n\n"},{"id":"ydPw","level":3,"heading":"Class - To String","content":"<h3>Class - To String</h3>\n\n<div class=\"codebox\">class <var>Class1</var>:\n\t<var>...</var>\n\tdef __repr__(self):\n\t\treturn <var>string_representing_class</var></div>\n\n<div class=\"codebox\">= <var>class_1</var>__repr__())</div>\n\n<div class=\"codebox\">= repr(<var>class_1</var>)\t\t\t\t\t\t\t<span class=\"note\"># Equivalent to <code>.__repr()</code></span></div>\n\nOverride <code>__repr__</code> to create class string.\n\n\n\n"},{"id":"sYZs","level":2,"heading":"Abstract Class","content":"<h2>Abstract Class</h2>\n\n\n\n"},{"id":"tV20","level":3,"heading":"Abstract Class - Define","content":"<h3>Abstract Class - Define</h3>\n\n<div class=\"codebox\">from abc import ABC, abstractmethod\n\nclass <var>AbstractClass1</var>(ABC):\n\n\t@abstractmethod\n\tdef <var>abstract_method_1</var>(self):\n\t\tpass</div>\n\n\n\n"},{"id":"D7th","level":3,"heading":"Abstract Class - Use","content":"<h3>Abstract Class - Use</h3>\n\n<div class=\"codebox\">class <var>Subclass1</var>(<var>AbstractClass1</var>):\n\n\tdef <var>abstract_method_1</var>(self):\t\t<span class=\"note\"># Implement Abstract Method</span>\n\t\t<var>...</var></div>\n\n\n\n"},{"id":"JWfs","level":2,"heading":"Class Properties","content":"<h2>Class Properties</h2>\n\nDefines class functions as if they were class variables.\nUse to encapsulate mutation of internal variables.\n\n\n\n"},{"id":"rjkw","level":3,"heading":"Class Property - Define","content":"<h3>Class Property - Define</h3>\n\n<div class=\"codebox\">@property\ndef <var>method_name</var>(self):</div>\n\nUsage:\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\tdef __init__(self):\n\n\t\tself.<var>_variable_1</var> = <var>value</var>\n\n\t@property\n\tdef <var>variable_1</var>(self):\n\n\t\treturn self.<var>_variable_1</var>\n\n\t@<var>variable_1</var>.setter\n\tdef <var>variable_1</var>(self, <var>arg_1</var>):\n\n\t\tself.<var>_variable_1</var> = <var>arg_1</var></div>\n\n\nDefines a method to work like a property (instance variable).\n\nThe decorator <code>@property</code> does not need to be imported.\n\n\n\n"},{"id":"GSts","level":3,"heading":"Class Property - Use","content":"<h3>Class Property - Use</h3>\n\n<div class=\"codebox\"><var>class_1</var> = <var>Class1</var>()\n\n<var>class_1</var>.<var>variable_1</var> = <var>value_1</var>\t\t<span class=\"note\">#1</span>\n<var>value_2</var> = <var>class_1</var>.<var>variable_1</var></div>\n\n#1  -  Treat like an instance variable.\n\n\n"},{"id":"4mWr","level":2,"heading":"Class Introspection","content":"<h2>Class Introspection</h2>\n\n\n\n"},{"id":"MVDY","level":3,"heading":"Class - Name","content":"<h3>Class - Name</h3>\n\n<div class=\"codebox\">= <var>Class1</var>.__name__\t\t\t\t\t\t<span class=\"note\"># From Class</span></div>\n\n<div class=\"codebox\">= type(<var>class_1</var>).__name__\t\t\t\t<span class=\"note\"># From Instance</span></div>\n\n\n\n"},{"id":"Kjcn","level":3,"heading":"Class - Attribute - Exists?","content":"<h3>Class - Attribute - Exists?</h3>\n\n<div class=\"codebox\">= hasattr(<var>class_1</var>, '<var>attribute_name</var>')</div>\n\n\n\n"},{"id":"XjTG","level":3,"heading":"Class - Attribute - Get","content":"<h3>Class - Attribute - Get</h3>\n\n<div class=\"codebox\">= getattr(<var>class_1</var>, '<var>attribute_name</var>')</div>\n\n\n\n"},{"id":"Xevy","level":3,"heading":"Class - Attribute - Set","content":"<h3>Class - Attribute - Set</h3>\n\n<div class=\"codebox\">setattr(<var>class_1</var>, '<var>attribute_name</var>', <var>value</var>)</div>\n\nCreates or updates a class attribute.\n\nAccess using <code><var>class_1</var>.<var>attribute_name</var></code>\n\n\n\n"},{"id":"tSCK","level":3,"heading":"Class - Attribute - Names","content":"<h3>Class - Attribute - Names</h3>\n\n<div class=\"codebox\">= <var>class_1</var>.__dict__.keys()</div>\n\n<div class=\"codebox\">= list(<var>class_1</var>.__dict__.keys())\t\t\t<span class=\"note\"># As List</span></div>\n\n\n\n"},{"id":"WXe9","level":3,"heading":"Class - Attributes - To Dict","content":"<h3>Class - Attributes - To Dict</h3>\n\n<div class=\"codebox\">= <var>instance_1</var>.__dict__</div>\n\n\n\n"},{"id":"fcaE","level":2,"heading":"Nested Class","content":"<h2>Nested Class</h2>\n\n\n"},{"id":"cGpc","level":3,"heading":"Nested Class - Basics","content":"<h3>Nested Class - Basics</h3>\n\n<div class=\"codebox\">class <var>Outer</var>:\n\n\tdef __init__(self):\n\t\tself.<var>name</var> = &quot;Outer Class&quot;\n\t\tself.<var>inner</var> = self.<var>Inner</var>()\n\n\tdef <var>get_name</var>(self):\n\t\treturn self.<var>name</var>\n\n\tclass <var>Inner</var>:\n\n\t\tdef __init__(self):\n\t\t\tself.<var>name</var> = &quot;Inner Class&quot;\n\n\t\tdef <var>get_name</var>(self):\n\t\t\treturn self.<var>name</var>\n\n<var>outer</var> = <var>Outer</var>()\n\nprint(&quot;outer.name             &quot;, <var>outer</var>.<var>name</var>)\nprint(&quot;outer.get_name()       &quot;, <var>outer</var>.<var>get_name</var>())\nprint(&quot;outer.inner.name       &quot;, <var>outer</var>.<var>inner</var>.<var>name</var>)\nprint(&quot;outer.inner.get_name() &quot;, <var>outer</var>.<var>inner</var>.<var>get_name</var>())\n\n<span class=\"note\"># Prints:\n#\n# outer.name              Outer Class\n# outer.get_name()        Outer Class\n# outer.inner.name        Inner Class\n# outer.inner.get_name()  Inner Class</span></div>\n\n\n\n"},{"id":"5jQm","level":3,"heading":"Nested Class - Define","content":"<h3>Nested Class - Define</h3>\n\n<div class=\"codebox\">class <var>Outer</var>:\n\n    class <var>Inner</var>:</div>\n\n<div class=\"codebox\">class <var>Outer</var>:\n\n    def __init__(self):\n        <var>...</var>\n\n    class <var>Inner</var>:\n\n        def __init__(self):\n            <var>...</var></div>\n\n\n\n"},{"id":"QGLN","level":3,"heading":"Nested Class - Instantiate From Parent","content":"<h3>Nested Class - Instantiate From Parent</h3>\n\n<div class=\"codebox\">= self.<var>Inner</var>()</div>\n\n<div class=\"codebox\">class <var>Outer</var>:\n\n    def __init__(self):\n        self.<var>inner</var> = self.<var>Inner</var>()\n\n    class <var>Inner</var>:\n\t\t<var>...</var></div>\n\n\n\n"},{"id":"J0x3","level":3,"heading":"Nested Class - Instantiate Outside Parent","content":"<h3>Nested Class - Instantiate Outside Parent</h3>\n\n<div class=\"codebox\">= <var>Outer</var>.<var>Inner</var>()</div>\n\n\n"},{"id":"XyJT","level":3,"heading":"Nested Class - Reference From Parent","content":"<h3>Nested Class - Reference From Parent</h3>\n\n<div class=\"codebox\">= <var>self</var>.<var>inner</var></div>\n\n<div class=\"codebox\">= <var>self</var>.<var>inner</var>.<var>function_1</var>()\n= <var>self</var>.<var>inner</var>.<var>property_1</var></div>\n\n\n"},{"id":"nzaJ","level":3,"heading":"Nested Class - Reference Outside Parent","content":"<h3>Nested Class - Reference Outside Parent</h3>\n\n<div class=\"codebox\">= <var>outer</var>.<var>inner</var></div>\n\n<div class=\"codebox\">= <var>outer</var>.<var>inner</var>.<var>function_1</var>()\n= <var>outer</var>.<var>inner</var>.<var>property_1</var></div>\n\n\n\n"},{"id":"TGjN","level":2,"heading":"Class Extras","content":"<h2>Class Extras</h2>\n\n\n"},{"id":"zygR","level":3,"heading":"Class - Monkey Patch","content":"<h3>Class - Monkey Patch</h3>\n\n<div class=\"codebox\"><var>Class1</var>.<var>new_method_1</var> = <var>patch_function_1</var></div>\n\nUsage:\n\n<div class=\"codebox\"><span class=\"note\"># Unaltered Class:</span>\nclass <var>Class1</var>:\n    def <var>method_to_patch</var>(self):\n        <var>...</var>\n\n<span class=\"note\"># Patch Function:</span>\ndef <var>patch_1</var>(self):\n    <var>...</var>\n\n<var>item_1</var> = <var>Class1</var>()\n\n<span class=\"note\"># Apply patch to the class:</span>\n<var>Class1</var>.<var>method_to_patch</var> = <var>patch_1</var>\n\n<var>item_1</var>.<var>method_to_patch</var>()</div>\n\n\nChanges the behaviour of a method at runtime.\n\nApplies the patch to the class, not the instance.\nThis will affect all instances of the class, current and future.\n\n\nExample:\n\n<div class=\"codebox\">class <var>Messanger</var>:\n    def <var>print_message</var>(self):\n        print(&quot;Original message.&quot;)\n\ndef <var>print_message_patch</var>(self):\n    print(&quot;Patched message.&quot;)\n\n<var>message_1</var> = <var>Messanger</var>()\n<var>message_1</var>.print_message()\n\n<var>Messanger</var>.print_message = <var>print_message_patch</var>\n<var>message_1</var>.print_message()\n\n<span class=\"note\"># Prints:\n# Original message.\n# Patched message.</span></div>\n\n\n\n"},{"id":"Pa1h","level":3,"heading":"Class Instance - Monkey Patch","content":"<h3>Class Instance - Monkey Patch</h3>\n\n<div class=\"codebox\"><var>instance_1</var>.<var>new_method</var> = MethodType(<var>patch_1</var>, <var>instance_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from types import MethodType\n\ndef <var>patch_1</var>(self):\n    <var>...</var>\n\n<var>instance_1</var>.<var>method_to_patch</var> = MethodType(<var>patch_1</var>, <var>instance_1</var>\n\n<var>instance_1</var>.<var>method_to_patch</var>()</div>\n\n\nChanges the behaviour of an instance method at runtime.\n\nThis only affects this instance. Neither the underlying class or other instances are affected.\nUsing MethodType assures the function is bound correctly to the instance and the <code>self</code> value is passed in correctly.\n\n\nExample:\n\n<div class=\"codebox\">from types import MethodType\n\nclass <var>Messanger</var>:\n    def <var>print_message</var>(self):\n        print(&quot;Original message.&quot;)\n\ndef <var>patch_1</var>(self):\n    print(&quot;Patched message.&quot;)\n\n<var>message_1</var> = <var>Messanger</var>()\n<var>message_1</var>.print_message()\n\n<var>message_1</var>.print_message = MethodType(<var>patch_1</var>, <var>message_1</var>)\n<var>message_1</var>.print_message()\n\n<span class=\"note\"># Prints:\n# Original message.\n# Patched message.</span></div>\n\n\n\n"},{"id":"4Ff8","level":3,"heading":"Class - View Help, Structure","content":"<h3>Class - View Help, Structure</h3>\n\n<div class=\"codebox\">help(<var>Class1</var>)</div>\n\nPrints docstrings, methods, everything about the class.\n\n\n\n"},{"id":"Kj1B","level":3,"heading":"Class - Operator - in","content":"<h3>Class - Operator - in</h3>\n\n<div class=\"codebox\">def <var>Class1</var>:\n\n\tdef __contains__(self, <var>key</var>)\n\t\t<var>...</var></div>\n\n<div class=\"codebox\">if <var>item_1</var> in <code>class_1</code>:\t\t\t\t\t<span class=\"note\"># Using with <code>in</code></span>\n\t<var>...</var></div>\n\nOverride <code>__contains__</code> to use class with <code>in</code> operator.\nReturn true if <code><var>key</var></code> is in the class.\n\n\n\n"},{"id":"vQUK","level":1,"heading":"Iterable, Iterator","content":"<h1>Iterable, Iterator</h1>\n\n\n"},{"id":"8MnA","level":2,"heading":"Iterable","content":"<h2>Iterable</h2>\n\n\n\n"},{"id":"jAjv","level":3,"heading":"Iterable - Define","content":"<h3>Iterable - Define</h3>\n\n<div class=\"codebox\">def <var>IterableClass1</var>:\n\n    def __iter__(self):                 <span class=\"note\">#1</span>\n        return <var>iterator</var>                    <span class=\"note\">#2</span></div>\n\n\nDefines a class as iterable.\n\n\n#1  <span class=\"dim\">-</span>  Implement <code>__iter__()</code> to make the class iterable.\n\n#2  <span class=\"dim\">-</span>  Return an iterator for the class data.\n\n\nExample:\n\n<div class=\"codebox\"><span class=\"note\"># Define:</span>\n\nclass <var>Integers</var>:\n\n    def __init__(self, <var>max</var>):\n        self.integers = range(1, <var>max</var> + 1)\n\n    def __iter__(self):\n        return iter(self.integers)\n\n\n<span class=\"note\"># Use:</span>\n\n<var>integers_1</var> = <var>Integers</var>(<var>3</var>)\n\nfor <var>integer</var> in <var>integers_1</var>:\n    print(<var>integer</var>)\n\n<span class=\"note\"># Prints:\n#\n# 1\n# 2\n# 3</span></div>\n\n\n\n"},{"id":"6cyh","level":3,"heading":"Iterable - Define - Self Iterable","content":"<h3>Iterable - Define - Self Iterable</h3>\n\n<div class=\"codebox\">def <var>IterableIteratorClass1</var>:\n\n    def __iter__(self):                 <span class=\"note\">#1</span>\n        return self\n\n    def __next__(self):                 <span class=\"note\">#2</span>\n\n        If <var>at_the_end</var>:\n            raise StopIteration         <span class=\"note\">#3</span>\n        else:\n            return <var>next_item</var>           <span class=\"note\">#4</span></div>\n\n\nThis class is both an iterator and an iterable.\n\n\n#1, #2  <span class=\"dim\">-</span>  Implement <code>__iter__()</code> and <code>__next__()</code> to make this both an iterabale and an iterator.\n\n#3  <span class=\"dim\">-</span>  Raise <code>StopIteration</code> to indicate iterating is complete.\n\n#4  <span class=\"dim\">-</span>  Return the next item in the iteration with <code>__next__()</code>.\n\n\n\n"},{"id":"eNQR","level":3,"heading":"Iterable - From Dict","content":"<h3>Iterable - From Dict</h3>\n\n<div class=\"codebox\">def __iter__(self):\n    = iter(<var>dict_1</var>.values())</div>\n\n\nReturns an iterable list.\n\n\nExample:\n\n<div class=\"codebox\">class <var>Integers</var>:\n    def __init__(self):\n        self.<var>dict_values</var> = {<var>1</var>:<var>1</var>, <var>2</var>:<var>2</var>, <var>3</var>:<var>3</var>}\n    def __iter__(self):\n        return iter(self.<var>dict_values</var>.values())\n\n<var>ints_1</var> = <var>Integers</var>()\n\nfor <var>item</var> in <var>ints_1</var>:\n    print (<var>item</var>)\n\n<span class=\"note\"># Prints:\n#\n# 1\n# 2\n# 3</span></div>\n\n\n\n"},{"id":"fewK","level":3,"heading":"Iterable - From List","content":"<h3>Iterable - From List</h3>\n\n<div class=\"codebox\">def __iter__(self):\n    = iter(<var>list_1</var>)</div>\n\n\nReturns an iterable list.\n\n\nExample:\n\n<div class=\"codebox\">class <var>Integers</var>:\n    def __init__(self):\n        self.<var>values</var> = [<var>1</var>, <var>2</var>, <var>3</var>]\n    def __iter__(self):\n        return iter(self.<var>values</var>)\n\n<var>ints_1</var> = <var>Integers</var>()\n\nfor <var>item</var> in <var>ints_1</var>:\n    print (<var>item</var>)\n\n<span class=\"note\"># Prints:\n#\n# 1\n# 2\n# 3</span></div>\n\n\n"},{"id":"8T8V","level":2,"heading":"Iterator","content":"<h2>Iterator</h2>\n\n\n"},{"id":"PkQz","level":3,"heading":"Iterator - Define","content":"<h3>Iterator - Define</h3>\n\n<div class=\"codebox\">class <var>Iterator1</var>:\n\n    def __next__(self):                 <span class=\"note\">#1</span>\n\n        If <var>at_the_end</var>:\n            raise StopIteration         <span class=\"note\">#2</span>\n        else:\n            return <var>next_item</var>           <span class=\"note\">#3</span></div>\n\n\nDefines an iterator class.\n\n\n#1  <span class=\"dim\">-</span>  Implement <code>__next__()</code> to make this an iterator.\n\n#2  <span class=\"dim\">-</span>  Raise <code>StopIteration</code> to indicate iterating is complete.\n\n#3  <span class=\"dim\">-</span>  Return the next item in the iteration with <code>__next__()</code>.\n\n\nExample:\n\n<div class=\"codebox\"><span class=\"note\"># Define:</span>\n\nclass <var>ListIterator</var>:\n\n    def __init__(self, <var>list</var>):\n\n        self.<var>list</var> = <var>list</var>\n        self.<var>index</var> = -1\n\n    def __next__(self):\n\n        self.<var>index</var> += 1\n\n        if self.<var>index</var> == len(self.<var>list</var>):\n            raise StopIteration()\n\n        return self.<var>list</var>[self.<var>index</var>]\n\n\n<span class=\"note\"># Use:</span>\n\n<var>iterator</var> = <var>ListIterator</var>([1, 2, 3])\n\ntry:\n    while (<var>value</var> := next(<var>iterator</var>)):\n        print(<var>value</var>)\nexcept StopIteration:\n    print(&quot;Done.&quot;)</div>\n\n\n\n"},{"id":"WdeA","level":3,"heading":"Iterator - Get Next","content":"<h3>Iterator - Get Next</h3>\n\n<div class=\"codebox\">= next(<var>iterator_1</var>)                     <span class=\"note\">#1</span></div>\n\nor\n\n<div class=\"codebox\">= next(<var>iterator_1</var>, <var>default_value</var>)     <span class=\"note\">#2</span></div>\n\n\nReturns the next value from an iterator.\n\n\n#1  <span class=\"dim\">-</span>  When no more elements, raises <code>StopIteration</code>.\n\n#2  <span class=\"dim\">-</span>  When no more elements, returns <code><var>default_value</var></code>.\n\n\n\nExample:\n\n<div class=\"codebox\"><var>values</var> = iter([1, 2, 3])\n\nwhile <var>value</var> := next(<var>values</var>):\n    print(<var>value</var>)</div>\n\n\n\n"},{"id":"3qFt","level":1,"heading":"Generators","content":"<h1>Generators</h1>\n\nA generator is a function wrapped in an iterable.\nThe function should act like an iterator (eg: returns results with <code>yield</code>).\n\n\n\n"},{"id":"tz59","level":2,"heading":"Generator Expression","content":"<h3>Generator Expression</h3>\n\n<div class=\"codebox\">= (<var>expression</var> for <var>item</var> in <var>sequence_1</var>)</div>\n\n<div class=\"codebox\">= (<var>expression</var> for <var>item</var> in <var>sequence_1</var> if <var>condition</var>)</div>\n\nReturns: <code>generator</code>\n\n\nSimilar to a list comprehension but are evaluated lazily.\nLazy iterators - Values are evaluated and returned one at a time, and only when requested.\n\n\nExamples:\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2, 3, 4, 5]\n\n<var>generator</var> = (<var>i</var> * 2 for <var>i</var> in <var>list_1</var>)\n\nprint(list(generator))\t\t\t\t\t\t\t<span class=\"note\"># Prints [2, 4, 6, 8, 10]</span></div>\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2, 3, 4, 5]\n\n<var>generator</var> = (<var>i</var> * 2 for <var>i</var> in <var>list_1</var> if <var>i</var> &lt;= 3)\n\nprint(list(generator))\t\t\t\t\t\t\t<span class=\"note\"># Prints [2, 4, 6]</span></div>\n\n\n\n"},{"id":"H5J1","level":2,"heading":"Generator Expression - Get Next","content":"<h3>Generator Expression - Get Next</h3>\n\n<div class=\"codebox\">= next(<var>generator_1</var>)</div>\n\n\n\n"},{"id":"t49R","level":2,"heading":"Generator Expression - To List","content":"<h3>Generator Expression - To List</h3>\n\n<div class=\"codebox\">= list(<var>generator_1</var>)</div>\n\n\n\n"},{"id":"5EkP","level":2,"heading":"Yield","content":"<h3>Yield</h3>\n\n<div class=\"codebox\">yield <var>return_value</var></div>\n\n<div class=\"codebox\">def <var>some_function</var>():\t\t\t\t\t<span class=\"note\">#1</span>\n\n\tfor <var>list_value</var> in <var>list_1</var>:\n\t\tyield <var>list_value</var>\t\t\t\t<span class=\"note\">#2</span>\n\n\nfor <var>value</var> in <var>some_function()</var>:\t\t\t<span class=\"note\">#3</span>\n\t<var>...</var></div>\n\nReturns: <code>generator</code>\n\n#1  <span class=\"dim\">-</span>  <code>yield</code> must be defined inside a function.\n\n#2  <span class=\"dim\">-</span>  <code>yield</code> temporarily suspends operation and returns <code><var>list_value</var></code>.\n\n#3  <span class=\"dim\">-</span>  The function returns a generator that can be used to iterate over the yield values.\n\n\n<code>yield</code> turns a function into a generator.\n\nThe generator returns a result every time yield is executed, suspending the function.\nExecution continues when the generator is called again.\n\n\nExample:\n\n<div class=\"codebox\"><span class=\"note\">Define:</span>\n\nfrom math import factorial\n\ndef <var>factorial_series</var>(<var>n</var>):\n\tfor <var>i</var> in range (<var>n</var> + 1):\n\t\tyield factorial(<var>i</var>)\n\n\n<span class=\"note\">Use:</span>\n\nfor <var>value</var> in <var>factorial_series</var>(4):\n\tprint(<var>value</var>)</div>\n\n\n\n"},{"id":"rsK4","level":2,"heading":"Yield From","content":"<h3>Yield From</h3>\n\n<div class=\"codebox\">yield from <var>generator_1</var></div>\n\n<div class=\"codebox\">def <var>some_function</var>():\n\tyield from <var>generator_1</var></div>\n\n\nShort For:\n\n<div class=\"codebox\">[yield <var>item</var> for <var>item</var> in <var>generator_1</var>]</div>\n\n\nAllows the function to delegate part of its generator results to a 2nd generator.\n\nMust be inside a function.\nThis is very useful when using recursion.\n\n\n"},{"id":"w9zp","level":1,"heading":"Packages, Modules","content":"<h1>Packages, Modules</h1>\n\n\n\n"},{"id":"0hJN","level":2,"heading":"Package Directory - Define","content":"<h3>Package Directory - Define</h3>\n\nCreate File Named:\n\n<div class=\"codebox\">__init__.py</div>\n\nCreate the file in the subdirectory that contains modules.\n\nPackage directories are typically defined with the presence of '<code>__init__.py</code>'.\nThis file is not required as of Python 3.3.\n<code>__init__.py</code> can be empty.\nThis file is executed when the package is imported.\n\n\n\n"},{"id":"GdP4","level":2,"heading":"Package Directory - Name","content":"<h3>Package Directory - Name</h3>\n\nThe package name is the directory name.\n\n\n\n"},{"id":"V5qQ","level":2,"heading":"Module - Name","content":"<h3>Module - Name</h3>\n\n<div class=\"codebox\">= __name__</div>\n\nReturns the name of the current module (name of the python file without the extension).\n\n<code>'__main__':</code>\nIf the module is the starting module of the application, __name__ will be '<code>__main__</code>'.\n\n\n\n"},{"id":"MTBG","level":2,"heading":"Import - Module / Package","content":"<h3>Import - Module / Package</h3>\n\nImport:\n\n<div class=\"codebox\">import <var>module_1</var></div>\n\n<div class=\"codebox\">import <var>package_1</var>.<var>subpackage_1</var>.<var>module_1</var></div>\n\n<div class=\"codebox\">from <var>package_1</var>.<var>subpackage_1</var> import <var>module_1</var></div>\n\n<div class=\"codebox\">from <var>package_1</var>.<var>subpackage_1</var> import <var>module_1</var> as <var>alias</var></div>\n\n\nUse:\n\n<div class=\"codebox\"><var>module_1</var>.<var>item_1</var><var>...</var></div>\n\n\nImports a module or package into the current namespace.\n\nThis uses absolute imports and must contain the full package path to the project root.\n\n\n\n"},{"id":"7UA1","level":2,"heading":"Import - Module / Package - Relative Import","content":"<h3>Import - Module / Package - Relative Import</h3>\n\nRelative To Parent:\n\n<div class=\"codebox\">from .<var>module</var> import <var>name</var></div>\n\nRelative To Grandparent:\n\n<div class=\"codebox\">from ..<var>module</var> import <var>name</var></div>\n\nParent of Current Package:\n\n<div class=\"codebox\">from .. import <var>module</var></div>\n\n\nImports a module relative to the current module.\n\nOnly available with <code>from <var>x</var> import <var>y</var></code> syntax.\nImports must be within <code>toplevel_package</code> only. Not other packages.\n\n\n\n"},{"id":"vv88","level":2,"heading":"Import - Package - __init__.py","content":"<h3>Import - Package - __init__.py</h3>\n\nThe file <code>__init__.py</code> is executed when a package is imported as a module.\n\n<div class=\"codebox\">import <var>package_1</var></div>\n\n\n\n"},{"id":"wNYq","level":2,"heading":"Import - Class / Function","content":"<h3>Import - Class / Function</h3>\n\n<div class=\"codebox\">from <var>package_1</var>.<var>module_1</var> import <var>Class1</var></div>\n\n<div class=\"codebox\">from <var>package_1</var>.<var>module_1</var> import <var>function_1</var></div>\n\n\n\n"},{"id":"JE1u","level":1,"heading":"Math Functions","content":"<h1>Math Functions</h1>\n\n\n\n"},{"id":"Sxa9","level":2,"heading":"Standard","content":"<h2>Standard</h2>\n\n\n\n"},{"id":"Xp6M","level":3,"heading":"Absolute Value","content":"<h3>Absolute Value</h3>\n\n<div class=\"codebox\">= abs(<var>value</var>)</div>\n\n\n\n"},{"id":"25bU","level":3,"heading":"Modulo","content":"<h3>Modulo</h3>\n\n<div class=\"codebox\">= <var>a</var> % <var>b</var></div>\n\n<div class=\"codebox\"><var>a</var> %= <var>b</var></div>\n\n\nReturns the remainder after dividing <code><var>a</var></code> by <code><var>b</var></code>.\n\n\nExample:\n\n<div class=\"codebox\"><var>modulus</var> = <var>7</var> % <var>3</var>\t\t\t\t\t\t\t<span class=\"note\"># Returns Modulus 1</span></div>\n\n\n\n"},{"id":"THfF","level":2,"heading":"Math Package","content":"<h2>Math Package</h2>\n\n\n\n"},{"id":"5pQJ","level":3,"heading":"Factorial","content":"<h3>Factorial</h3>\n\n<div class=\"codebox\">from math import factorial\n\n= factorial(<var>n</var>)</div>\n\n\n\n"},{"id":"ZL3y","level":2,"heading":"Power, Logarithm","content":"<h2>Power, Logarithm</h2>\n\n\n\n"},{"id":"mshe","level":3,"heading":"Exponent (exp)","content":"<h3>Exponent (exp)</h3>\n\n<div class=\"codebox\">from math import exp\n\n= exp(<var>x</var>)</div>\n\n\nReturns e raised to the power of <var>x</var>.\n\n\n\n"},{"id":"98zn","level":3,"heading":"Exponent Minus 1 (expm1)","content":"<h3>Exponent Minus 1 (expm1)</h3>\n\n<div class=\"codebox\">from math import expm1\n\n= expm1(<var>x</var>)</div>\n\nReturns e raised to the power of <var>x</var> minus 1.\n\n\n\n\n"},{"id":"0PYV","level":3,"heading":"Log","content":"<h3>Log</h3>\n\nNatural Log\n\n<div class=\"codebox\">from math import log\n\n= log(<var>x</var>)</div>\n\nLog For Specific Base:\n\n<div class=\"codebox\">from math import log\n\n= log(<var>x</var>, <var>base</var>)</div>\n\nUses <var>base</var> as the base if given.\nOtherwise it uses the natural log (base e).\n\n\n\n"},{"id":"jdVb","level":3,"heading":"Log 10","content":"<h3>Log 10</h3>\n\n<div class=\"codebox\">from math import log10\n\n= log10(<var>x</var>)</div>\n\n\n\n\n"},{"id":"yNPC","level":3,"heading":"Log 2","content":"<h3>Log 2</h3>\n\n<div class=\"codebox\">from math import log2\n\n= log2(<var>x</var>)</div>\n\n\n\n\n"},{"id":"SYRp","level":3,"heading":"Log 1 Plus (log1p)","content":"<h3>Log 1 Plus (log1p)</h3>\n\n<div class=\"codebox\">from math import log1p\n\n= log1p(<var>x</var>)</div>\n\nEquivalent to <code>log(1 + <var>x</var>)</code>.\n\nUses the natural log (base e).\n\n\n\n"},{"id":"JQp6","level":3,"heading":"Power","content":"<h3>Power</h3>\n\n<div class=\"codebox\">= <var>x</var> ** <var>y</var></div>\n\nOr\n\n<div class=\"codebox\">= pow(<var>x</var>, <var>y</var>)</div>\n\n\nReturns <code><var>x</var></code> to the power of <code><var>y</var></code>.\n\n<strong>pow()</strong> is a standard function.  No import required.\n\n\n\n"},{"id":"Wx1T","level":3,"heading":"Square","content":"<h3>Square</h3>\n\n<div class=\"codebox\">= <var>x</var> ** 2</div>\n\nOr\n\n<div class=\"codebox\">= pow(<var>x</var>, 2)</div>\n\n\n<strong>pow()</strong> is a standard function.  No import required.\n\n\n\n"},{"id":"36T4","level":3,"heading":"Square Root","content":"<h3>Square Root</h3>\n\n<div class=\"codebox\">from math import sqrt\n\n= sqrt(<var>x</var>)</div>\n\n\n\n"},{"id":"6GmU","level":2,"heading":"Rounding","content":"<h2>Rounding</h2>\n\n\n\n"},{"id":"UNnG","level":3,"heading":"Round","content":"<h3>Round</h3>\n\n<div class=\"codebox\">= round(<var>value</var>)</div>\n\n<div class=\"codebox\">= round(<var>value</var>, <var>decimals</var>)</div>\n\n\nRounds up or down.\n\n\nExample:\n\n<div class=\"codebox\"><var>rounded_1</var> = round(<var>1.5</var>)\t\t\t\t\t<span class=\"note\"># Returns 1.0</span></div>\t\n\n<div class=\"codebox\"><var>rounded_1</var> = round(<var>1.6</var>)\t\t\t\t\t<span class=\"note\"># Returns 2.0</span></div>\n\n<div class=\"codebox\"><var>rounded_1</var> = round(<var>1.56</var>, <var>1</var>)\t\t\t\t<span class=\"note\"># Returns 1.6</span></div>\n\n\n\n"},{"id":"aGk6","level":3,"heading":"Round To Floor","content":"<h3>Round To Floor</h3>\n\n<div class=\"codebox\">from math import floor\n\n<var>floor_1</var> = floor(<var>value_1</var>)</div>\n\nAlways rounds downwards (e.g. -1.5 rounds to -2.0).\n\n\nExamples:\n\n<div class=\"codebox\">from math import floor\n\n<var>rounded_1</var> = floor(<var>1.6</var>)\t\t\t\t\t<span class=\"note\"># Returns 1.0</span></div>\n\n<div class=\"codebox\"><var>rounded_1</var> = floor(<var>-1.6</var>)\t\t\t\t\t<span class=\"note\"># Returns -2.0</span></div>\n\n\n\n"},{"id":"PvDC","level":3,"heading":"Round To 0","content":"<h3>Round To 0</h3>\n\n<div class=\"codebox\">= int(<var>value</var>)</div>\n\n\nRounds to the integer nearest to 0.\n\n\nExamples:\n\n<div class=\"codebox\"><var>rounded_1</var> = int(<var>1.6</var>)\t\t\t\t\t<span class=\"note\"># Returns 1</span></div>\n\n<div class=\"codebox\"><var>rounded_1</var> = int(<var>-1.6</var>)\t\t\t\t\t<span class=\"note\"># Returns -1</span></div>\n\n\n\n"},{"id":"47Wg","level":3,"heading":"Round To Ceiling","content":"<h3>Round To Ceiling</h3>\n\n<div class=\"codebox\">from math import ceil\n\n= ceil(<var>value</var>)</div>\n\nAlways rounds upwards (e.g. -1.5 rounds to -1.0).\n\n\nExamples:\n\n<div class=\"codebox\">from math import ceil\n\n<var>rounded_1</var> = ceil(<var>1.6</var>)\t\t\t\t\t<span class=\"note\"># Returns 2.0</span></div>\n\n<div class=\"codebox\"><var>rounded_1</var> = ceil(<var>-1.6</var>)\t\t\t\t\t<span class=\"note\"># Returns -1.0</span></div>\n\n\n\n"},{"id":"KAA9","level":2,"heading":"Trigonometry","content":"<h2>Trigonometry</h2>\n\n\n"},{"id":"ymMs","level":3,"heading":"Arccosine","content":"<h3>Arccosine</h3>\n\n<div class=\"codebox\">from math import acos\n\n= acos(<var>value</var>)</div>\n\n\nReturns: <code>float</code> (radians)\n\n<code>-1 &lt;= <var>value</var> &lt;= 0</code>\n<code> 0 &lt;= <var>result</var> &lt;= pi</code>\n\n\n\n"},{"id":"rwWe","level":3,"heading":"Arcsine","content":"<h3>Arcsine</h3>\n\n<div class=\"codebox\">from math import asin\n\n= asin(<var>value</var>)</div>\n\n\nReturns: <code>float</code> (radians)\n\n<code>-1 &lt;= <var>value</var> &lt;= 0</code>\n<code>-pi/2 &lt;= <var>result</var> &lt;= pi/2</code>\n\n\n\n"},{"id":"XRW7","level":3,"heading":"Arctan","content":"<h3>Arctan</h3>\n\n<div class=\"codebox\">from math import atan\n\n= atan(<var>value</var>)</div>\n\n\nReturns: <code>float</code> (radians)\n\n<code>-pi/2 &lt;= <var>result</var> &lt;= pi/2</code>\n\n\n\n"},{"id":"kAhC","level":3,"heading":"Cosine","content":"<h3>Cosine</h3>\n\n<div class=\"codebox\">from math import cos\n\n= cos(<var>radians_1</var>)</div>\n\n\nReturns: <code>float</code> (radians)\n\n<code>-1 &lt;= <var>value</var> &lt;= 0</code>\n<code>0 &lt;= <var>result</var> &lt;= pi</code>\n\n\n"},{"id":"DvAj","level":3,"heading":"Sine","content":"<h3>Sine</h3>\n\n<div class=\"codebox\">from math import sin\n\n= sin(<var>radians_1</var>)</div>\n\n\nReturns: <code>float</code> (radians)\n\n<code>-1 &lt;= <var>value</var> &lt;= 0</code>\n<code>-pi/2 &lt;= <var>result</var> &lt;= pi/2</code>\n\n\n\n"},{"id":"0Rnu","level":3,"heading":"Tan","content":"<h3>Tan</h3>\n\n<div class=\"codebox\">from math import tan\n\n= tan(<var>radians_1</var>)</div>\n\n\nReturns: <code>float</code> (radians)\n\n<code>-pi/2 &lt;= <var>result</var> &lt;= pi/2</code>\n\n\n\n"},{"id":"S07z","level":3,"heading":"Degrees To Radians","content":"<h3>Degrees To Radians</h3>\n\n<div class=\"codebox\">from math import radians\n\n= radians(<var>degrees_1</var>)</div>\n\n\n\n"},{"id":"hjrz","level":3,"heading":"Radians To Degrees","content":"<h3>Radians To Degrees</h3>\n\n<div class=\"codebox\">from math import degrees\n\n= degrees(<var>radians_1</var>)</div>\n\n\n\n"},{"id":"c6BE","level":2,"heading":"Math Constants","content":"<h2>Math Constants</h2>\n\n\n\n"},{"id":"wJnb","level":3,"heading":"Constant - Exponential Constant","content":"<h3>Constant - Exponential Constant</h3>\n\n<div class=\"codebox\">from math import e\n\n= e</div>\n\nEuler's Number\n\nReturns 2.718281828459045.\n\n\n\n"},{"id":"JBWp","level":3,"heading":"Constant - Pi","content":"<h3>Constant - Pi</h3>\n\n<div class=\"codebox\">from math import pi\n\n= pi</div>\n\n&pi; or 3.141592653589793\n\n\n\n"},{"id":"CPag","level":3,"heading":"Constant - Tau","content":"<h3>Constant - Tau</h3>\n\n<div class=\"codebox\">from math import tau\n\n= tau</div>\n\nReturns 2&pi; or 6.283185.\n\n\n\n"},{"id":"Gn0q","level":3,"heading":"Constant - Infinity","content":"<h3>Constant - Infinity</h3>\n\n<div class=\"codebox\">from math import inf\n\n= inf</div>\n\n<div class=\"codebox\">= float('inf')</div>\n\nThese are equivalent.\n\nPositive infinity.\n\n\n\n"},{"id":"NaGL","level":3,"heading":"Constant - Not a Number (NAN)","content":"<h3>Constant - Not a Number (NAN)</h3>\n\n<div class=\"codebox\">from math import nan\n\n= nan</div>\n\nEquivalent To:\n\n<div class=\"codebox\">= float('nan')</div>\n\n\nReturns: <code>float</code>\n\n\n\n"},{"id":"DEVE","level":1,"heading":"Standard Functions","content":"<h1>Standard Functions</h1>\n\nBuilt in functions in Python\n\n\n"},{"id":"C60U","level":2,"heading":"Hash","content":"<h3>Hash</h3>\n\n<div class=\"codebox\">= hash(<var>value</var>)</div>\n\nReturns: <code>int</code>\n\n\nExample:\n\n<div class=\"codebox\"><var>hash_1</var> = hash(&quot;The quick brown fox jumps over the lazy dog&quot;)\n\n<span class=\"note\"># Returns -7136537410058541255</span></div>\n\n\n\n"},{"id":"2eUh","level":2,"heading":"JSON Functions","content":"<h2>JSON Functions</h2>\n\n\n\n"},{"id":"QU85","level":3,"heading":"Json String - From JSON String","content":"<h3>Json String - From JSON String</h3>\n\n<div class=\"codebox\">from json import loads\n\n<var>data_1</var> = loads(<var>json_string</var>)</div>\n\n\nConverts a json string into a python object made up of lists, dicts and strings.\n\nThe s in loads stands for string.\n\n\n\n"},{"id":"qHdp","level":3,"heading":"Json String - To JSON String","content":"<h3>Json String - To JSON String</h3>\n\n<div class=\"codebox\">from json import dumps\n\n<var>json_string</var> = dumps(<var>data_1</var>)</div>\n\n\nConverts data into a json string.\n\nThe s in dumps stands for string.\n\n\n\n"},{"id":"EYfB","level":3,"heading":"Json String - To Formatted JSON String","content":"<h3>Json String - To Formatted JSON String</h3>\n\n<div class=\"codebox\">from json import dumps\n\n<var>json_string</var> = dumps(<var>data_1</var>, indent = 4)</div>\n\n\nConverts data into a formatted json string.\n\n\nExample:\n\n<div class=\"codebox\">from json import dumps\n\n<var>json</var> = {&quot;id&quot;: 0, &quot;name&quot;: &quot;Item Name&quot;}\n<var>formatted</var> = dumps(<var>json</var>, indent = 4)\n\nprint(<var>formatted</var>)\n\n<span class=\"note\"># Prints:\n#\n# {\n#     &quot;id&quot;: 0,\n#     &quot;name&quot;: &quot;Item Name&quot;\n# }</span></div>\n\n\n\n"},{"id":"Qvg6","level":3,"heading":"Json File - From JSON File","content":"<h3>Json File - From JSON File</h3>\n\n<div class=\"codebox\">from json import load\n\nwith open(<var>file_name</var>,'r') as <var>file</var>:\n    <var>data_1</var> = load(<var>file</var>)</div>\n\nConverts a json file into a python object made up of lists, dicts and strings.\n\n\n\n"},{"id":"mc3t","level":3,"heading":"Json File - To JSON File","content":"<h3>Json File - To JSON File</h3>\n\n<div class=\"codebox\">from json import dump\n\nwith open(<var>file_name</var>, 'w') as file:\n\tdump(<var>data_1</var>, <var>file</var>)</div>\n\n\n\n"},{"id":"0rn3","level":3,"heading":"Json - Custom Encoder","content":"<h3>Json - Custom Encoder</h3>\n\n<div class=\"codebox\">from json import JSONEncoder\n\nclass <var>ItemEncoder</var>(JSONEncoder):\n\n    def default(self, <var>value</var>):\n        if type(<var>value</var>) is not <var>ItemType</var>:\n            return super().default(<var>value</var>)\n\n        return <var>...conver item to json...</var>\n\n\njson.dump(<var>data</var>, cls = <var>ItemEncoder</var>)</div>\n\n\n\nTo create a custom json encoder, create a class inheriting from <code>JSONEncoder</code> and override the <code>default()</code> method.\n\n\n"},{"id":"eQzg","level":2,"heading":"Random","content":"<h2>Random</h2>\n\nCreates pseudo-random numbers.\n\n\n\n"},{"id":"f1hn","level":3,"heading":"Random Boolean","content":"<h3>Random Boolean</h3>\n\n<div class=\"codebox\">= choice([True, False])</div>\n\nUsage:\n\n<div class=\"codebox\">from random import choice\n\n<var>random_1</var> = choice([True, False])</div>\n\n\n\n"},{"id":"nVcL","level":3,"heading":"Random Character","content":"<h3>Random Character</h3>\n\n<div class=\"codebox\">= choice(<var>letters_string</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from random import choice\n\n<var>random_1</var> = choice(<var>letters_string</var>)</div>\n\nReturns a single random character from <var>letters_string</var>.\n\n\nExample:\n\n<div class=\"codebox\">from random import choice\n\n<var>next</var> = choice(<var>'abcde'</var>)\n\nprint(<var>next</var>)\n\n<span class=\"note\"># Prints: 'd'</span></div>\n\n\n\n"},{"id":"5v29","level":3,"heading":"Random Float - Between 0 and 1","content":"<h3>Random Float - Between 0 and 1</h3>\n\n<div class=\"codebox\">= random()</div>\n\nUsage:\n\n<div class=\"codebox\">from random import random\n\n= random()</div>\n\nReturns: <code>float  (0.0 &lt;= x &lt; 1.0)</code>\n\n\nReturns a random number between 0 and 1, excluding 1 itself.\n\n\nExample:\n\n<div class=\"codebox\">from random import random\n\n<var>next</var> = random()\n\nprint(<var>next</var>)\n\n<span class=\"note\"># Prints: 0.4748924784779134</span></div>\n\n\n\n"},{"id":"VT2t","level":3,"heading":"Random Float - Between Min to Max","content":"<h3>Random Float - Between Min to Max</h3>\n\n<div class=\"codebox\">= uniform(<var>min</var>, <var>max</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from random import uniform\n\n<var>random_2</var> = uniform(<var>min</var>, <var>max</var>)</div>\n\nReturns: <code>float  (<var>min</var> &lt;= x &lt; <var>max</var>)</code>\n\n\nReturns a random number between <code>min</code> and <code>max</code>, excluding <code>max</code> itself.\n\n\nExample:\n\n<div class=\"codebox\">from random import uniform\n\n<var>random_float</var> = uniform(<var>1.0</var>, <var>5.0</var>)\t<span class=\"note\"># Returns 1.0 &lt;= x &lt; 5.0</span></div>\n\n\n\n"},{"id":"eYs7","level":3,"heading":"Random Integer","content":"<h3>Random Integer</h3>\n\n<div class=\"codebox\">= randrange(<var>max_plus_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from random import randrange\n\n= randrange(<var>max_plus_1</var>)\n= randrange(<var>min</var>, <var>max_plus_1</var>, <var>step</var>)</div>\n\nReturns: <code>int  (0 &lt;= x &lt; <var>max_plus_1</var>)</code>\n\n\nReturns a random integer value.\n\n\nExample:\n\n<div class=\"codebox\">from random import randrange\n\n<var>next</var> = randrange(<var>100</var>)\n\nprint(<var>next</var>)\n\n<span class=\"note\"># Prints: 17</span></div>\n\n\n\n"},{"id":"uBVL","level":3,"heading":"Random Integer - Between Min to Max","content":"<h3>Random Integer - Between Min to Max</h3>\n\n<div class=\"codebox\">randint(<var>min</var>, <var>max</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from random import randint\n\n= randint(<var>min</var>, <var>max</var>)</div>\n\nReturns: <code>int (<var>min</var> &lt;= x &lt; <code>max</code>)</code>\n\n\nReturns a random integer value.\n\nThe range is from <code>min</code> to <code>max</code> inclusive.\n\n\nExample:\n\n<div class=\"codebox\">from random import randint\n\n<var>next</var> = randint(<var>100</var>, <var>200</var>)\n\nprint(<var>next</var>)\n\n<span class=\"note\"># Prints: 180</span></div>\n\n\n\n"},{"id":"aVee","level":3,"heading":"Random - From Sequence","content":"<h3>Random - From Sequence</h3>\n\nChoose 1 Value:\n\n<div class=\"codebox\">= sample(<var>sequence_1</var>, 1)[0]</div>\n\nChoose n Values:\n\n<div class=\"codebox\">= sample(<var>sequence_1</var>, <var>n</var>)</div>\n\nUsage\n\n<div class=\"codebox\">from random import sample\n\n= sample(<var>sequence_1</var>, 1)[0]\n= sample(<var>sequence_1</var>, <var>n</var>)</div>\n\nReturns: List of Items\n\n\nReturn one or more items from <code><var>sequence_1</var></code>.\n\n\n\n"},{"id":"Yphg","level":3,"heading":"Random - Set Seed","content":"<h3>Random - Set Seed</h3>\n\n<div class=\"codebox\">seed(<var>seed_value</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from random import seed\n\nseed(<var>seed_value</var>)</div>\n\n\nSets the seed value for all following random numbers.\n\n\nExample:\n\n<div class=\"codebox\">from random import seed, randrange\n\nseed(<var>999</var>)\n\nprint('next', randrange(<var>100</var>))\nprint('next', randrange(<var>100</var>))\n\n<span class=\"note\"># Prints:\n#\n#    next 86\n#    next 10</span></div>\n\n\n\n"},{"id":"S6GN","level":2,"heading":"Range","content":"<h2>Range</h2>\n\n<div class=\"codebox\">= range(<var>max_plus_1</var>)</div>\n\n<div class=\"codebox\">= range(<var>min</var>, <var>max_plus_1</var>)</div>\n\n<div class=\"codebox\">= range(<var>min</var>, <var>max_plus_1</var>, <var>step</var>)</div>\n\nType: <code>range</code>\n\n\nRange is an immutable sequence of integers.\n\nThe integers start with <code><var>min</var></code> and end with the value before <code><var>max_plus_1</var></code>.\n<code><var>min</var></code> defaults to 0.\nTechnically <code>range</code> is a class of immutable iterable objects.\nRange can be used anywhere a sequence can be used.\n\n\nExamples:\n\n<div class=\"codebox\"><var>range_1</var> = range(<var>4</var>)\t\t\t\t\t\t<span class=\"note\"># Returns 0, 1, 2, 3</span>\n<var>range_2</var> = range(<var>2</var>, <var>4</var>)\t\t\t\t\t<span class=\"note\"># Returns 2, 3</span>\n<var>range_3</var> = range(<var>1</var>, <var>11</var>, <var>5</var>)\t\t\t\t<span class=\"note\"># Returns 1, 5, 10</span></div>\n\n\n\n"},{"id":"PYSQ","level":2,"heading":"Range - Float Range","content":"<h2>Range - Float Range</h2>\n\nUse Function:\n\n<div class=\"codebox\">def float_range(<var>min</var>, <var>max</var> = None, <var>step</var> = 1):\n    if <var>max</var> is None:\n        <var>min</var>, <var>max</var> = 0, min\n    <var>value</var> = <var>min</var>\n    while <var>value</var> &lt; <var>max</var>:\n        yield <var>value</var>\n        <var>value</var> += <var>step</var></div>\n\nUsage:\n\n<div class=\"codebox\">= float_range(<var>max</var>)\n= float_range(<var>min</var>, <var>max</var>)\n= float_range(<var>min</var>, <var>max</var>, <var>step</var>)</div>\n\nType: <code>range</code>\n\n\nThere is no built in range for float.\nUse the function declared here.\n\nReturns a range of float values from <code>min</code> to less than <code>max</code>.\n\n\nExamples:\n\n<div class=\"codebox\">def float_range(<var>min</var>, <var>max</var> = None, <var>step</var> = 1):\n    if <var>max</var> is None:\n        <var>min</var>, <var>max</var> = 0, min\n    <var>value</var> = <var>min</var>\n    while <var>value</var> &lt; <var>max</var>:\n        yield <var>value</var>\n        <var>value</var> += <var>step</var>\n\nfor <var>value</var> in float_range(1.0, 3.0, 0.5):\n    print(<var>value</var>)\n\n<span class=\"note\"># Prints:\n#\n# 1.0\n# 1.5\n# 2.0\n# 2.5</span></div>\n\n\n\n"},{"id":"E7E8","level":2,"heading":"UUID","content":"<h2>UUID</h2>\n\n<div class=\"codebox\">import uuid \n  \n<var>uuid_1</var> = uuid.uuid1()</div>\n\nReturns: <code>UUID</code>\n\n\nYes, there is a '1' in the function name '<code>.uuid1()</code>'. Why? I've no idea.\n\n\nExample:\n\n<div class=\"codebox\">import uuid \n  \n<var>uuid_1</var> = uuid.uuid1()\n\n<var>uuid_bytes</var> = <var>uuid_1</var>.bytes\t\t<span class=\"note\"># b'x03xeamdJxc2x11xebxa9xddxacxdeHx00x11&quot;'</span>\n<var>uuid_hex</var> = <var>uuid_1</var>.hex\t\t\t<span class=\"note\"># 03ea6d644ac211eba9ddacde48001122</span>\n<var>uuid_int</var> = <var>uuid_1</var>.int\t\t\t<span class=\"note\"># 5204900180851453705537495610857361698</span></div>\n\n\n\n"},{"id":"tP4p","level":1,"heading":"Regular Expressions","content":"<h1>Regular Expressions</h1>\n\n\n"},{"id":"6wLN","level":2,"heading":"Regular Expression - Functions","content":"<h2>Regular Expression - Functions</h2>\n\n\n"},{"id":"MNVa","level":3,"heading":"Regular Expressions - Find","content":"<h3>Regular Expressions - Find</h3>\n\n<div class=\"codebox\">= search(<var>match_pattern</var>, <var>string_to_search</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from re import search\n\n<var>match</var> = search(<var>match_pattern</var>, <var>string_to_search</var>)\n<var>match_text</var> = <var>match</var>.group()</div>\n\n<code>.search()</code>   Returns:   <code>re.Match</code> | <code>None</code>\n<code>.group() </code>   Returns:   <code>str</code>\n\n\nReturns the first match in a string.\n\nReturns <code>None</code> if no match found.\n\n\nExample:\n\n<div class=\"codebox\">from re import search\n\n<var>string_1</var> = &quot;<var>123 abc 789</var>&quot;\n<var>match</var> = search(r&quot;<var>[a-zA-Z]+</var>&quot;, <var>string_1</var>)\t\t<span class=\"note\"># Find the letters in the string.</span>\n\n<var>letters_1</var> = <var>match</var>.group()\n<span class=\"note\"># Returns &quot;abc&quot;</span>\n\n<var>letters_2</var> = <var>string_1</var>[<var>match</var>.start():<var>match</var>.end()]\n<span class=\"note\"># Returns &quot;abc&quot;</span></div>\n\n\n\n"},{"id":"9U51","level":3,"heading":"Regular Expressions - Find All","content":"<h3>Regular Expressions - Find All</h3>\n\n<div class=\"codebox\">= findall(<var>match_pattern</var>, <var>string_to_search</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from re import findall\n\n<var>matches</var> = findall(<var>match_pattern</var>, <var>string_to_search</var>)</div>\n\nReturrns: <code>list[str]</code>\n\n\nReturns a list of all the matches.\n\n\nExample:\n\n<div class=\"codebox\">from re import findall\n\n<var>string_1</var> = &quot;<var>123 abc 456 def 789</var>&quot;\n<var>matches</var> = findall(r&quot;<var>[a-zA-Z]+</var>&quot;, <var>string_1</var>)\n\n<span class=\"note\"># Returns [&quot;abc&quot;, &quot;def&quot;]</span></div>\n\n\n\n"},{"id":"7t8E","level":3,"heading":"Regular Expressions - Match All","content":"<h3>Regular Expressions - Match All</h3>\n\n<div class=\"codebox\">= fullmatch(<var>match_pattern</var>, <var>string_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from re import fullmatch\n\n= fullmatch(<var>match_pattern</var>, <var>string_1</var>)\n<var>match_text</var> = <var>match</var>.group()</div>\n\n<code>.fullmatch()</code>   Returns:   <code>re.Match</code> | <code>None</code>\n<code>.group()    </code>   Returns:   <code>str</code>\n\n\nReturns a match if the pattern matches the complete string.\n\n\nOtherwise returns None.\n\n\nExample:\n\n<div class=\"codebox\">from re import fullmatch\n\n<var>string_1</var> = &quot;1234&quot;\n\nmatch = fullmatch(r&quot;\\d{4}&quot;, <var>string_1</var>)\n\nif match:\n\tprint (&quot;got a match&quot;)\nelse:\n\tprint (&quot;not a match&quot;)\n\n<span class=\"note\">Prints: got a match</span></div>\n\n<div class=\"codebox\">from re import fullmatch\n\n<var>string_1</var> = &quot;1234&quot;\n\nmatch = fullmatch(r&quot;\\d{3}&quot;, <var>string_1</var>)\n\nif match:\n\tprint (&quot;got a match&quot;)\nelse:\n\tprint (&quot;not a match&quot;)\n\n<span class=\"note\">Prints: not a match</span></div>\n\n\n\n"},{"id":"pm3N","level":3,"heading":"Regular Expressions - Match Start","content":"<h3>Regular Expressions - Match Start</h3>\n\n<div class=\"codebox\">= match(<var>match_pattern</var>, <var>string_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from re import match\n\n= match(<var>match_pattern</var>, <var>string_1</var>)\n<var>match_text</var> = <var>match</var>.group()</div>\n\n<code>.match()</code>   Returns:   <code>re.Match</code> | <code>None</code>\n<code>.group()</code>   Returns:   <code>str</code>\n\n\nReturns a match if the string starts with the given pattern.\n\n\nReturns <code>re.Match</code> object if <code><var>string_1</var></code> starts with <code><var>match_pattern</var></code>.\nOtherwise returns None.\n\n\nExample:\n\n<div class=\"codebox\">from re import match\n\n<var>string_1</var> = &quot;123abc&quot;\n\nmatch = match(r&quot;\\d{3}&quot;, <var>string_1</var>)\n\nif match:\n\tprint (&quot;got a match&quot;)\nelse:\n\tprint (&quot;not a match&quot;)\n\n<span class=\"note\">Prints: got a match</span></div>\n\n\n\n"},{"id":"FV82","level":3,"heading":"Regular Expressions - Replace","content":"<h3>Regular Expressions - Replace</h3>\n\n<div class=\"codebox\">= sub(<var>match_pattern</var>, <var>replacement</var>, <var>string_to_update</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from re import sub\n\n<var>string_2</var> = sub(<var>match_pattern</var>, <var>replacement</var>, <var>string_to_update</var>)\n<var>string_2</var> = sub(<var>match_pattern</var>, <var>replacement</var>, <var>string_to_update</var>, <var>split_count</var>)</div>\n\nReturns: <code>str</code>\n\n\nReturns a new string with all matches replaced.\n\n<code>sub</code> is short for substitute.\n\n\nExample:\n\n<div class=\"codebox\">from re import sub\n\n<var>original</var> = &quot;<var>ab 12 cd 345</var>&quot;\n<var>updated</var> = sub(r&quot;<var>\\d+</var>&quot;, &quot;(digits)&quot;, <var>original</var>)\n\n<span class=\"note\"># Returns &quot;ab (digits) cd (digits)&quot;</span></div>\n\n\n\n"},{"id":"8DE0","level":3,"heading":"Regular Expressions - Split","content":"<h3>Regular Expressions - Split</h3>\n\n<div class=\"codebox\">from re import split\n\n<var>splits</var> = split(<var>split_pattern</var>, <var>string_to_split</var>)</div>\n\nor\n\n<div class=\"codebox\"><var>splits</var> = split(<var>split_pattern</var>, <var>string_to_split</var>, <var>split_count</var>)</div>\n\nReturns: <code>list[str]</code>\n\n\nReturns a list of strings split on <code><var>split_expression</var></code>.\n\n<code><var>split_expression</var></code> is not returned in the results.\nStops after splitting <code><var>split_count</var></code> times if given.\n\n\nExample:\n\n<div class=\"codebox\">from re import split\n\n<var>string_1</var> = &quot;<var>ab12cd34ef</var>&quot;\n<var>split_1</var> = split(r&quot;<var>\\d+</var>&quot;, <var>string_1</var>)\n\n<span class=\"note\"># Returns ['ab', 'cd', 'ef']</span></div>\n\n\n\n"},{"id":"dLYR","level":3,"heading":"Regular Expressions - Match Type","content":"<h3>Regular Expressions - Match Type</h3>\n\nReturned by:\n\n<div class=\"codebox\">= re.finditer()\n= re.fullmatch()\n= re.match()\n= re.search()</div>\n\n\n"},{"id":"asSX","level":3,"heading":"Regular Expressions - Match - To String","content":"<h3>Regular Expressions - Match - To String</h3>\n\n<div class=\"codebox\">= <var>match_1</var>.group()</div>\n\n\nReturns the matching text as a string.\n\n\n\n"},{"id":"W5vy","level":3,"heading":"Regular Expressions - Match - Start Position","content":"<h3>Regular Expressions - Match - Start Position</h3>\n\n<div class=\"codebox\">= <var>match_1</var>.start()</div>\n\n\nReturns the starting position of the matching text in the original string.\n\n\n"},{"id":"MFt5","level":3,"heading":"Regular Expressions - Match - End Position","content":"<h3>Regular Expressions - Match - End Position</h3>\n\n<div class=\"codebox\">= <var>match_1</var>.end()</div>\n\n\nReturns the starting position of the matching text in the original string.\n\n\n\n"},{"id":"ajLF","level":2,"heading":"Regular Expression Patterns","content":"<h2>Regular Expression Patterns</h2>\n\n\n"},{"id":"Ljs1","level":3,"heading":"Regular Expressions - Patterns","content":"<h3>Regular Expressions - Patterns</h3>\n\nEscape\t\t\t\t\t<code>\\</code>\n\nEscape These\t\t\t\t<code> ^ $ . * + ? - &amp; | {} [] () </code>\n\nAny Character\t\t\t<code>.</code>\n\nAlphanumeric, _\t\t\t<code>\\w</code>\t\t\t<span class=\"note\"># A-Z, a-z, 0-9, _</span>\t\t\t\nNon Alphanumeric, _\t\t<code>\\W</code>\nDigit\t\t\t\t\t<code>\\d</code>\t\t\t<span class=\"note\"># 0-9</span>\t\nNon Digit\t\t\t\t<code>\\D</code>\n\nWhitespace\t\t\t\t<code>\\s</code>\nNon Whitespace\t\t\t<code>\\S</code>\n\nStarts With\t\t\t\t<code>\\A</code>\nEnds With\t\t\t\t<code>\\Z</code>\nStarts or Ends With\t\t<code>\\b</code>\nDoesn't Start or Ends With\t<code>\\B</code>\n\nSet. Either <var>a</var>, <var>b</var> or <var>c</var>\t\t\t<code>[<var>a</var><var>b</var><var>c</var>]</code>\nNot\t\t\t\t\t\t<code>^<var>a</var></code>\nOr\t\t\t\t\t\t<code><var>a</var>|<var>b</var></code>\nFrom - To\t\t\t\t<code><var>a</var>-<var>z</var></code>\n\n0 or 1\t\t\t\t\t<code>?</code>\n0 or More\t\t\t\t<code>*</code>\n1 or More\t\t\t\t<code>+</code>\n<code><var>n</var></code> Times\t\t\t\t\t<code>{<var>n</var>}</code>\n<code><var>m</var></code> to <code><var>n</var></code> Times\t\t\t\t<code>{<var>m</var>,<var>n</var>}</code>\n\nMatch After\t\t\t\t<code>(?&lt;=<var>after_this</var>)<var>match</var></code>\nMatch Before\t\t\t\t<code><var>match</var>(?=<var>before_this</var>)</code>\n\n\n\n"},{"id":"rYsV","level":3,"heading":"Regular Expressions - Pattern Reverse Lookup","content":"<h3>Regular Expressions - Pattern Reverse Lookup</h3>\n\n<code>\\</code>\t\tEscape\n\n<code>.</code>\t\tAny Character\n<code>^</code>\t\tStarts With\n<code>$</code>\t\tEnds With\n\n<code>*</code>\t\t0 or More Times\n<code>+</code>\t\t1 or More Times\n<code>?</code>\t\t0 or 1 Times\n<code>{<var>m</var>}</code>\t\t<code><var>m</var></code> Times\n<code>{<var>m</var>,<var>n</var>}</code>\t<code><var>m</var></code> to <code><var>n</var></code> Times\n\n<code>^<var>a</var></code>\t\tNot\n<code><var>a</var>|<var>b</var></code>\t\t<code><var>a</var></code> or <code><var>b</var></code>\n<code><var>a</var>-<var>z</var></code>\t\t<code><var>a</var></code> to <code><var>z</var></code>\n\n<code>[<var>...</var>]</code>\tSet (One of These)\n<code>(<var>...</var>)</code>\tGroup\n\n<code>\\A</code>\t\tStart of String\n<code>\\b</code>\t\tBeginning or End of Word\n<code>\\B</code>\t\tNot Beginning or End of Word\n<code>\\d</code>\t\tDigit (0-9)\n<code>\\D</code>\t\tNon Digit (0-9)\n<code>\\s</code>\t\tWhitespace Character\n<code>\\S</code>\t\tNon Whitespace Character\n<code>\\w</code>\t\tWord Character (a-z, A-Z, 0-9, _)\n<code>\\W</code>\t\tNon Word Character\n<code>\\Z</code>\t\tEnd of String\n\n\n\n"},{"id":"7MTY","level":1,"heading":"Encode, Decode","content":"<h1>Encode, Decode</h1>\n\n\n\n"},{"id":"s1xk","level":2,"heading":"ASCII - Encode To ASCII","content":"<h3>ASCII - Encode To ASCII</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.encode(&quot;ascii&quot;)</div>\n\nReturns: <code>bytes</code>\n\n\nConverts a string to an ASCII encoded byte array.\nNon ASCII characters will raise an exception.\n\n\n\n"},{"id":"MJPB","level":2,"heading":"ASCII - Decode From ASCII","content":"<h3>ASCII - Decode From ASCII</h3>\n\n<div class=\"codebox\">= <var>bytes_1</var>.decode(&quot;ascii&quot;)</div>\n\nRetuns: <code>str</code>\n\n\nConverts an ASCII encoded byte array to a string.\n\n\n\n"},{"id":"41x9","level":2,"heading":"UTF-8 - Encode To UTF-8","content":"<h3>UTF-8 - Encode To UTF-8</h3>\n\n<div class=\"codebox\">= <var>string_1</var>.encode(&quot;utf-8&quot;)</div>\n\nReturns: <code>bytes</code>\n\nConverts a string to an utf-8 encoded byte array.\n\n\n\n"},{"id":"AJz3","level":2,"heading":"UTF-8 - Decode From UTF-8","content":"<h3>UTF-8 - Decode From UTF-8</h3>\n\n<div class=\"codebox\">= <var>bytes_1</var>.decode(&quot;utf-8&quot;)</div>\n\nRetuns: <code>str</code>\n\nConverts a utf-8 encoded byte array to a string.\n\n\n\n"},{"id":"KeHx","level":2,"heading":"Hash - To MD5","content":"<h3>Hash - To MD5</h3>\n\n<span class=\"important\">Do not use MD5\n(deprecated, vulnerabilities)</span>\n\n<div class=\"codebox\">from hashlib import md5\n\n= md5(<var>bytes_1</var>)</div>\n\n\nReturns: <code>_hashlib.HASH</code>\n\n\nConverts a byte array into an MD5 hash.\n\n\nNote:\n\nMD5 is deprecated. Do not use.\nIt has major vulnerabilities that can be exploited.\n\nUse <span class=\"note\">SHA2</span> instead.\n\n\n\n"},{"id":"yQUM","level":3,"heading":"Hash - To MD5 Digest","content":"<h4>Hash - To MD5 Digest</h4>\n\n<span class=\"important\">Do not use MD5\n(deprecated, vulnerabilities)</span>\n\n<div class=\"codebox\">from hashlib import md5\n\n= md5(<var>bytes_1</var>).digest()</div>\n\n\nReturns: <code>bytes</code>\n\n\nConverts a byte array into an MD5 digest.\n\n\n\n"},{"id":"Fy7V","level":3,"heading":"Hash - To MD5 Hex Digest","content":"<h4>Hash - To MD5 Hex Digest</h4>\n\n<span class=\"important\">Do not use MD5\n(deprecated, vulnerabilities)</span>\n\n<div class=\"codebox\">from hashlib import md5\n\n= md5(<var>bytes_1</var>).hexdigest()</div>\n\n\nReturns: <code>str</code>\n\n\nConverts a byte array into hex formatted MD5 digest.\n\n\n\n"},{"id":"DrFm","level":2,"heading":"Hash - To SHA256","content":"<h3>Hash - To SHA256</h3>\n\n<div class=\"codebox\">from hashlib import sha256\n\n= sha256(<var>bytes_1</var>)</div>\n\n\nReturns: <code>_hashlib.HASH</code>\n\n\nConverts a byte array into a SHA2 hash.\n\n\n\n"},{"id":"kgGG","level":3,"heading":"Hash - To SHA256 Digest","content":"<h4>Hash - To SHA256 Digest</h4>\n\n<div class=\"codebox\">from hashlib import sha256\n\n= sha256(<var>bytes_1</var>).digest()</div>\n\n\nReturns: <code>bytes</code>\n\n\nConverts a byte array into an SHA2 digest.\n\n\n\n"},{"id":"wrj3","level":3,"heading":"Hash - To SHA256 Hex Digest","content":"<h4>Hash - To SHA256 Hex Digest</h4>\n\n<div class=\"codebox\">from hashlib import sha256\n\n= sha256(<var>bytes_1</var>).hexdigest()</div>\n\n\nReturns: <code>str</code>\n\n\nConverts a byte array into an SHA2 digest in hex.\n\n\n\n"},{"id":"QX3X","level":1,"heading":"Files","content":"<h1>Files</h1>\n\n\n\n"},{"id":"MLWC","level":2,"heading":"Directory Operations","content":"<h2>Directory Operations</h2>\n\n\n\n"},{"id":"38nd","level":3,"heading":"Directory - Copy","content":"<h3>Directory - Copy</h3>\n\n<div class=\"codebox\">copytree(<var>source</var>, <var>target</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from shutil import copytree\n\ncopytree(<var>source</var>, <var>target</var>)</div>\n\n\nCreates a copy of a directory..\n\n\n\n"},{"id":"Vn9S","level":3,"heading":"Directory - Create","content":"<h3>Directory - Create</h3>\n\n<div class=\"codebox\">mkdir(<var>directory_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os import mkdir\n\nmkdir(<var>directory_path</var>)</div>\n\n\nCreates a directory\nRaises <code>FileExistsError</code> if the directory exists.\n\n\n\n"},{"id":"uYR0","level":3,"heading":"Directory - Create Full Path","content":"<h3>Directory - Create Full Path</h3>\n\n<div class=\"codebox\">makedirs(<var>directory_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os import makedirs\n\nmakedirs(<var>directory_path</var>)</div>\n\nCreate, Ignore If Full Path Exists:\n\n<div class=\"codebox\">makedirs(<var>directory_path</var>, exist_ok = True)</div>\n\n\nCreates all the directories needed to form <code><var>directory_path</var></code>.\nBy default, will throw an error if full path already exists unless <code>exist_ok = True</code>.\n\n\n\n"},{"id":"gMT9","level":3,"heading":"Directory - Delete - Empty","content":"<h3>Directory - Delete - Empty</h3>\n\n<div class=\"codebox\">rmdir(<var>directory_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os import rmdir\n\nrmdir(<var>directory_path</var>)</div>\n\n\nDeletes empty directories only.\nRaises <code>OSError</code> if the directory is not empty.\n\n\n\n"},{"id":"s4Nj","level":3,"heading":"Directory - Delete - Non Empty","content":"<h3>Directory - Delete - Non Empty</h3>\n\n<div class=\"codebox\">rmtree(<var>directory_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from shutil import rmtree\n\nrmtree(<var>directory_path</var>)</div>\n\n\nDeletes the directory and all its contents.\n\n\n\n"},{"id":"nvtf","level":3,"heading":"Directory - Delete All Files","content":"<h3>Directory - Delete All Files</h3>\n\n<div class=\"codebox\">for <var>file</var> in glob(join(<var>directory_name</var>, '<var>*</var>')):\n\tremove (<var>file</var>)</div>\n\nWith Imports:\n\n<div class=\"codebox\">from glob import glob\nfrom os import remove\nfrom os.path import join\n\n<var>files</var> = glob(join(<var>directory_path</var>, '<var>*</var>'))\nfor <var>file</var> in <var>files</var>:\n\tremove (<var>file</var>)</div>\n\n\nDeletes all the files in the directory.\n\nTo delete particular files, change <code>'*'</code> to match (e.g. <code>'*.txt'</code>).\n\n\n\n"},{"id":"HTfk","level":3,"heading":"Directory - Exists? Is Directory?","content":"<h3>Directory - Exists? Is Directory?</h3>\n\n<div class=\"codebox\">= isdir(<var>directory_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os.path import isdir\n\n<var>is_directory</var> = isdir(<var>directory_path</var>)</div>\n\nReturns: <code>bool</code>\n\n\nReturns <code>True</code> if <code><var>directory_path</var></code> exists and is a directory.\nOtherwise, returns <code>False</code>.\n\n\n\n"},{"id":"0nM2","level":3,"heading":"Directory - Read","content":"<h3>Directory - Read</h3>\n\n<div class=\"codebox\">= listdir(<var>directory_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os import listdir\n\n<var>file_names</var> = listdir(<var>directory_path</var>)</div>\n\nReturns: <code>list</code> of <code>str</code>\n\n\nReturns all files and directories for <code><var>directory_path</var></code>.\nReturns the file names only, not the full path.\n\n\n\n"},{"id":"mHaH","level":3,"heading":"Directory - Read, Directories Only","content":"<h3>Directory - Read, Directories Only</h3>\n\n<div class=\"codebox\">= filter(\n\t\tlambda file: isdir(join(<var>directory_name</var>, file)),\n\t\tlistdir(<var>directory_name</var>))</div>\n\nWith Imports:\n\n<div class=\"codebox\">from os import listdir\nfrom os.path import isdir\nfrom os.path import join\n\n<var>directories</var> = filter(\n\t\tlambda file: isdir(join(<var>directory_path</var>, file)),\n\t\tlistdir(<var>directory_path</var>))</div>\n\nReturns: <code>filter</code> of <code>str</code>\n\n\nReturns list of all directory names in <code><var>directory_path</var></code>.\nReturns the file names only, not the path.\n\n\nExamples:\n\nDirectories in Current Directory:\n\n<div class=\"codebox\">from os import listdir\nfrom os.path import isdir\nfrom os.path import join\n\n<var>path</var> = '.'\n\n<var>directories</var> = filter(\n\t\tlambda file: isdir(join(<var>path</var>, file)),\n\t\tlistdir(<var>path</var>))\n\nprint(list(directories))</div>\n\n\n\n"},{"id":"CBNC","level":3,"heading":"Directory - Read, Files Only","content":"<h3>Directory - Read, Files Only</h3>\n\n<div class=\"codebox\">= filter(\n\t\tlambda file: isfile(join(<var>directory_name</var>, file)),\n\t\tlistdir(<var>directory_name</var>))</div>\n\nWith Imports:\n\n<div class=\"codebox\">from os import listdir\nfrom os.path import isfile\nfrom os.path import join\n\n<var>file_names</var> = filter(\n\t\tlambda file: isfile(join(<var>directory_path</var>, file)),\n\t\tlistdir(<var>directory_path</var>))</div>\n\nReturns: <code>filter</code> of <code>str</code>\n\n\nReturns list of file names.\nOnly returns the name, not the path.\n\n\nExamples:\n\nDirectories in Current Directory:\n\n<div class=\"codebox\">from os import listdir\nfrom os.path import isfile\nfrom os.path import join\n\n<var>path</var> = '.'\n\n<var>files</var> = filter(\n\t\tlambda file: isfile(join(<var>path</var>, file)),\n\t\tlistdir(<var>path</var>))\n\nprint(list(files))</div>\n\n\n\n"},{"id":"XuBT","level":3,"heading":"Directory - Read, Filtered","content":"<h3>Directory - Read, Filtered</h3>\n\n<div class=\"codebox\"> = filter(listdir(<var>directory_name</var>), <var>file_filter</var>)</div>\n\nWith Imports:\n\n<div class=\"codebox\">from os import listdir\nfrom fnmatch import filter\n\n<var>file_names</var> = filter(listdir(<var>directory_path</var>), <var>file_filter</var>)</div>\n\nReturns: <code>list</code> of <code>str</code>\n\n\nReturns list of matching file names only.\nReturns the file names only, not the path.\n\n\nExample:\n\n<div class=\"codebox\">from os import listdir\nfrom fnmatch import filter\n\n<var>file_names</var> = filter(listdir(&quot;<var>.</var>&quot;), &quot;<var>*.txt</var>&quot;)</div>\n\n\n\n"},{"id":"WYe6","level":3,"heading":"Directory - Read, Full Path","content":"<h3>Directory - Read, Full Path</h3>\n\n<div class=\"codebox\">= glob(join(<var>directory_path</var>, &quot;*&quot;))</div>\n\nWith Imports:\n\n<div class=\"codebox\">from glob import glob\nfrom os.path import join\n\n<var>file_paths</var> = glob(join(<var>directory_path</var>, &quot;*&quot;))</div>\n\nReturns: <code>list</code> of <code>str</code>\n\n\nReturns all files and sbdirectories in <code><var>directory_path</var></code>.\nReturns the full path to the files.\n\n\n\n"},{"id":"tXEW","level":3,"heading":"Directory - Read, Full Path, Filtered","content":"<h3>Directory - Read, Full Path, Filtered</h3>\n\n<div class=\"codebox\">= glob(join(<var>directory_name</var>, &quot;<var>filter</var>&quot;))</div>\n\nWith Imports:\n\n<div class=\"codebox\">from glob import glob\nfrom os.path import join\n\n<var>file_paths</var> = glob(join(<var>directory_path</var>, &quot;<var>filter</var>&quot;))</div>\n\nReturns: <code>list</code> of <code>str</code>\n\n\nReturns all files and sbdirectories in <var>directory_path</var>.\nReturns the full path to the files.\n\n\nExamples:\n\n<div class=\"codebox\">from glob import glob\nfrom os.path import join\n\n<var>file_paths</var> = glob(join(<var>directory_path</var>, &quot;<var>*.txt</var>&quot;))</div>\n\n\n\n"},{"id":"pL31","level":3,"heading":"Directory - Read, Full Path, Recursive","content":"<h3>Directory - Read, Full Path, Recursive</h3>\n\n<div class=\"codebox\">= glob(join(<var>directory_path</var>, &quot;**&quot;, &quot;*&quot;), recursive=True)</div>\n\nWith Imports:\n \n<div class=\"codebox\">from glob import glob\nfrom os.path import join\n\n<var>file_paths</var> = glob(join(<var>directory_path</var>, &quot;**&quot;, &quot;*&quot;), recursive=True)</div>\n\nReturns: <code>list</code> of <code>str</code>\n\n\nRecursively\nReturns full path to all files.\n\n\n\n"},{"id":"6H2v","level":3,"heading":"Directory - Read, Full Path, Recursive, Filtered","content":"<h3>Directory - Read, Full Path, Recursive, Filtered</h3>\n\n<div class=\"codebox\">= glob(join(<var>directory_path</var>, &quot;**&quot;, <var>filter</var>), recursive=True)</div>\n\nWith Imports:\n \n<div class=\"codebox\">from glob import glob\nfrom os.path import join\n\n<var>file_paths</var> = glob(join(<var>directory_path</var>, &quot;**&quot;, <var>filter</var>), recursive=True)</div>\n\nReturns: <code>list</code> of <code>str</code>\n\n\nReturns full path to all files.\n\n\nExamples:\n\n<div class=\"codebox\">from glob import glob\nfrom os.path import join\n\n<var>filtered_files</var> = glob(join(<var>directory_path</var>, &quot;**&quot;, &quot;<var>*.txt</var>&quot;), recursive=True)</div>\n\n\n\n"},{"id":"3SSE","level":3,"heading":"Directory - Read Recursively / Walk","content":"<h3>Directory - Read Recursively / Walk</h3>\n\n<div class=\"codebox\">from os import walk\n\nfor <var>root</var>, <var>directories</var>, <var>files</var> in walk(<var>directory_path</var>):\n\t<var>...</var></div>\n\nReturns:\n\n<div class=\"indent\"><table><tr><td><code>root</code></td><td><code>str</code></td></tr>\n<tr><td><code>directories</code></td><td><code>list[str]</code></td></tr>\n<tr><td><code>files</code></td><td><code>list[str]</code></td></tr></table></div>\n\n\nReturns the list of directories and files in each directory under and including <code><var>directory_path</var></code>).\nThe current directory is returned in <code><var>root</var></code>.\nWhen no files or directories are found, returns an empty list (<code>[]</code>).\n\n\nExample:\n\nWalk The Current Directory:\n\n<div class=\"codebox\">from os import walk\n\nfor <var>root</var>, <var>directories</var>, <var>files</var> in walk(<var>'.'</var>):\n\n\tprint(&quot;Current Path:&quot;, <var>root</var>)\n\tprint(&quot;Directories:&quot;, <var>directories</var>)\n\tprint(&quot;Files:&quot;, <var>files</var>)\n\tprint()</div>\n\n\n\n"},{"id":"FnKT","level":2,"heading":"File Operations","content":"<h2>File Operations</h2>\n\n\n\n"},{"id":"LADU","level":3,"heading":"File - Get Created Datetime","content":"<h3>File - Get Created Datetime</h3>\n\n<div class=\"codebox\">= datetime.fromtimestamp(getctime(<var>file_name</var>))</div>\n\nWith Import:\n\n<div class=\"codebox\">from datetime import datetime\nfrom os.path import getctime\n\n<var>created_datetime_1</var> = datetime.fromtimestamp(getctime(<var>full_path</var>))</div>\n\nReturns: <code>datetime</code>\n\n\nReturns the file creation time as a datetime.\n\n\n\n"},{"id":"Eyf3","level":3,"heading":"File - Get Created Timestamp","content":"<h3>File - Get Created Timestamp</h3>\n\n<div class=\"codebox\">= getctime(<var>file_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os.path import getctime\n\n<var>created_timestamp_1</var> = getctime(<var>full_path</var>))</div>\n\nReturns: <code>float</code>\n\n\nReturns the file creation time as a unix timestamp (epoch).\n\n\n\n"},{"id":"Kgsj","level":3,"heading":"File - Get Modified Datetime","content":"<h3>File - Get Modified Datetime</h3>\n\n<div class=\"codebox\">= datetime.fromtimestamp(getmtime(<var>file_name</var>))</div>\n\nWith Imports:\n\n<div class=\"codebox\">from os.path import getmtime\nfrom datetime import datetime\n\n<var>modified_datetime_1</var> = datetime.fromtimestamp(getmtime(<var>full_path</var>))</div>\n\nReturns: <code>datetime</code>\n\n\nReturns the file modification time as a datetime.\n\n\n\n"},{"id":"KhEn","level":3,"heading":"File - Get Modified Timestamp","content":"<h3>File - Get Modified Timestamp</h3>\n\n<div class=\"codebox\">= getmtime(<var>file_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os.path import getmtime\n\n<var>modified_timestamp_1</var> = getmtime(<var>full_path</var>)</div>\n\nReturns: <code>float</code>\n\n\nReturns the file modified time as a unix timestamp (epoch).\n\n\n\n"},{"id":"HJSc","level":3,"heading":"File - Get Size","content":"<h3>File - Get Size</h3>\n\n<div class=\"codebox\">= getsize(<var>file_path</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os.path import getsize\n\n<var>file_size</var> = getsize(<var>file_path</var>)</div>\n\n\nReturns the size of a file.\n\n\n\n"},{"id":"W0qv","level":3,"heading":"File - Copy","content":"<h3>File - Copy</h3>\n\n<div class=\"codebox\">copyfile(<var>source_path</var>, <var>destination_path</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from shutil import copyfile\n\ncopyfile(<var>source_path</var>, <var>destination_path</var>)</div>\n\n\nCreates a copy of a file.\n\nDoes not copy metadata.\n\n\n\n"},{"id":"gWXH","level":3,"heading":"File - Copy With Metadata","content":"<h3>File - Copy With Metadata</h3>\n\n<div class=\"codebox\">copy2(<var>source_path</var>, <var>destination_path</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from shutil import copy2\n\ncopy2(<var>source_path</var>, <var>destination_path</var>)</div>\n\n\nCreates a copy of a file along with the metadata.\n\n\n\n"},{"id":"XC0h","level":3,"heading":"File - Delete","content":"<h3>File - Delete</h3>\n\n<div class=\"codebox\">remove(<var>file_path</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os import remove\n\nremove(<var>file_path</var>)</div>\n\n\nDeletes a file.\n\n\n\n"},{"id":"6X7x","level":3,"heading":"File - Exists?","content":"<h3>File - Exists?</h3>\n\n<div class=\"codebox\">= exists(<var>file_name</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os.path import exists\n\n<var>file_exists</var> = exists(<var>file_path</var>)</div>\n\nReturns: <code>bool</code>\n\n\nReturns <code>True</code> if a file exists.\n\n\n\n"},{"id":"LcEP","level":3,"heading":"File - Is File?","content":"<h3>File - Is File?</h3>\n\n<div class=\"codebox\">= isfile(<var>file_path</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os.path import isfile\n\n<var>is_file</var> = isfile(<var>file_path</var>)</div>\n\nReturns <code>bool</code>\n\n\nReturns <code>True</code> if <code><var>file_path</var></code> exists and is a file (not a directory).\nOtherwise, returns <code>False</code>.\n\n\n\n"},{"id":"gkvT","level":3,"heading":"File - Join Paths","content":"<h3>File - Join Paths</h3>\n\n<div class=\"codebox\">= join(<var>path_1</var>, <var>path_2</var><var>...</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os.path import join\n\n<var>joined_path</var> = join(<var>path_1</var>, <var>path_2</var><var>...</var>)</div>\n\n\nReturns the paths joined together with the correct OS specific file separator.\n\n\n\n"},{"id":"XbZJ","level":3,"heading":"File - Move","content":"<h3>File - Move</h3>\n\n<div class=\"codebox\">rename(<var>source_path</var>, <var>destination_path</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os import rename\n\nrename(<var>source_path</var>, <var>destination_path</var>)</div>\n\n\nMoves a file to a location within the current drive only. \n\n\n\n"},{"id":"0xu6","level":3,"heading":"File - Move - Across Drives","content":"<h3>File - Move - Across Drives</h3>\n\n<div class=\"codebox\">move(<var>source_path</var>, <var>destination_path</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from shutil import move\n\nmove(<var>source_path</var>, <var>destination_path</var>)</div>\n\n\nMoves a file within drive or copies it from one dirve to another.\nWhen copying across drives, he original is not deleted.\n\n\n\n"},{"id":"L3VM","level":3,"heading":"File - Rename","content":"<h3>File - Rename</h3>\n\n<div class=\"codebox\">rename(<var>source_path</var>, <var>destination_path</var>)</div>\n\nWith Import:\n\n<div class=\"codebox\">from os import rename\n\nrename(<var>source_path</var>, <var>destination_path</var>)</div>\n\n\nRenames a filename.\n\n\n\n"},{"id":"fafp","level":2,"heading":"File IO","content":"<h2>File IO</h2>\n\n\n\n"},{"id":"7kgs","level":3,"heading":"File - Create Empty File","content":"<h3>File - Create Empty File</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'w') as file:\n    pass</div>\n\n\nThis will create a file with 0 bytes.\n\n\n"},{"id":"JyAK","level":3,"heading":"Binary File - Read","content":"<h3>Binary File - Read</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>,'rb') as file:\n\t<var>contents</var> = file.read()</div>\n\nReturns: <code>bytes</code>\n\n\n\n"},{"id":"fXtg","level":3,"heading":"Binary File - Read By Byte","content":"<h3>Binary File - Read By Byte</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, &quot;rb&quot;) as file:\n\twhile (<var>next_byte</var> := file.read(1)):\n\t\t<var>...</var></div>\n\nReads the file one byte at a time.\n\n\n\n"},{"id":"g39W","level":3,"heading":"Binary File - Write","content":"<h3>Binary File - Write</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'wb') as file:\n\tfile.write(<var>contents</var>)</div>\n\nDeletes the file if it exists before writing to it.\n\n\n\n"},{"id":"6V0k","level":3,"heading":"Binary File - Append","content":"<h3>Binary File - Append</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'ab') as file:\n\tfile.write(<var>contents</var>)</div>\n\nCreates a new file or appends to an existing one.\n\n\n\n"},{"id":"Apm9","level":3,"heading":"Text File - Read","content":"<h3>Text File - Read</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>,'r') as file:\n\t<var>contents</var> = file.read()</div>\n\nReturns: <code>str</code>\n\n\n\n"},{"id":"77Jd","level":3,"heading":"Text File - Read By Character","content":"<h3>Text File - Read By Character</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'r') as file:\n\n\t<var>characters</var> = []\n\twhile (<var>next_character</var> := file.read(1)):\n\t\t<var>characters</var>.append(<var>next_character</var>)</div>\n\nReturns: <code>list</code> of <code>str</code>\n\nReturns the contents of the file as a list in <code><var>lines</var></code>.\n\n\n\n"},{"id":"U4fN","level":3,"heading":"Text File - Read By Line","content":"<h3>Text File - Read By Line</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'r') as file:\n\n\t<var>lines</var> = []\n\twhile (line := file.readline()):\n\t\t<var>lines</var>.append(line.rstrip('\\n'))</div>\n\nReturns: <code>list</code> of <code>str</code>\n\nReturns the contents of the file as a list in <code><var>lines</var></code>.\n\n\n\n"},{"id":"Semg","level":3,"heading":"Text File - Read All Lines","content":"<h3>Text File - Read All Lines</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'r') as file:\n\t<var>lines</var> = file.readlines()</div>\n\nReturns: <code>list</code> of <code>str</code>\n\nReturns the contents of the file as a list in <code><var>lines</var></code>.\nThe lines include the newline characters.\n\n\n\n"},{"id":"UNPF","level":3,"heading":"Text File - Read All Lines, Stripped Newlines","content":"<h3>Text File - Read All Lines, Stripped Newlines</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'r') as file:\n\t<var>lines</var> = [line.rstrip('\\n') for line in file]</div>\n\nReturns: <code>list</code> of <code>str</code>\n\nReturns the contents of the file as a list in <code><var>lines</var></code>.\nThe line's newline character is returned by default. rstrip, removes it.\n\n\n\n"},{"id":"Paqz","level":3,"heading":"Text File - Write","content":"<h3>Text File - Write</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'w') as file:\n\tfile.write(<var>contents</var>)</div>\n\nDeletes the file if it exists before writing to it.\n\n\n\n"},{"id":"Wx2r","level":3,"heading":"Text File - Write Line","content":"<h3>Text File - Write Line</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'w') as file:\n\tfile.write(<var>line</var> + '\\n')</div>\n\nWrites a single line to a file.\n\nYou have to add the newline character manually between lines.\nDeletes the file if it exists before writing to it.\n\n\n\n"},{"id":"dz0c","level":3,"heading":"Text File - Write Lines","content":"<h3>Text File - Write Lines</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'w') as file:\n\t\tfile.write('\\n'.join(<var>lines</var>))</div>\n\nWrites a sequence of lines to a file.\n\nInserts a newline character between each line.\nDeletes the file if it exists before writing to it.\n\n\n\n"},{"id":"fF08","level":3,"heading":"Text File - Write Strings","content":"<h3>Text File - Write Strings</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'w') as file:\n\t\tfile.writelines(<var>strings</var>)</div>\n\nWrites a sequence of strings to a file.\n\n<code>writeline()</code> will NOT insert a newline character between each string.\nDeletes the file if it exists before writing to it.\n\n\n\n"},{"id":"Pas1","level":3,"heading":"Text File - Write","content":"<h3>Text File - Write</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'w') as file:\n\tfile.write(<var>contents</var>)</div>\n\nDeletes the file if it exists before writing to it.\n\n\n\n"},{"id":"ByRG","level":3,"heading":"Text File - Append","content":"<h3>Text File - Append</h3>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'a') as file:\n\tfile.write(<var>contents</var>)</div>\n\nCreates a new file or appends to an existing one.\n\n\n\n"},{"id":"YWTT","level":3,"heading":"File - Seek","content":"<h3>File - Seek</h3>\n\n<div class=\"codebox\"><var>file</var>.seek(<var>offset</var>)</div>\n\n<div class=\"codebox\"><var>file</var>.seek(<var>offset</var>, <var>whence</var>)</div>\n\nPositions the read / write position within a file.\n\n\n<var>whence</var>\t= 0\t\tAbsolute Position (Default)\n\t\t= 1\t\tRelative To Current Position\n\t\t= 2\t\tRelative To End of File\n\n\nExample:\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'r+') as file:\n\tfile.seek(10)\n\t<var>content</var> = file.read(10)\n\tfile.seek(10)\n\tfile.write(&quot;**********&quot;)</div>\n\n\n\n"},{"id":"3f4R","level":3,"heading":"File - Read / Write Modes","content":"<h3>File - Read / Write Modes</h3>\n\n<div class=\"card\"><table><tr><td>\t\t\t\t</td><td><code>r</code></td><td><code>r+</code></td><td><code>w</code></td><td><code>w+</code></td><td><code>a</code></td><td><code>a+</code></td></tr>\n<tr><td> </td></tr>\n<tr><td>Read</td><td>✅</td><td>✅</td><td> </td><td>✅</td><td> </td><td>✅</td></tr>\n<tr><td> </td></tr>\n<tr><td>Write</td><td> </td><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td></tr>\n<tr><td> </td></tr>\n<tr><td>Truncate</td><td> </td><td> </td><td>✅</td><td>✅</td></tr>\n<tr><td> </td></tr>\n<tr><td>Position At Start</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td></tr>\n<tr><td> </td></tr>\n<tr><td>Position At End</td><td> </td><td> </td><td> </td><td> </td><td>✅</td><td>✅</td></tr></table></div>\n\n\n<div class=\"card\"><table><tr><td><strong>Mode</strong></td><td><strong>Operation</strong></td><td><strong>Pointer</strong></td></tr>\n<tr><td> </td></tr>\n<tr><td>r\t</td><td>Read Only\t</td><td>File Start</td></tr>\n<tr><td>r+</td><td>Read / Write</td><td>File Start</td></tr>\n<tr><td>w</td><td>Write Only</td><td>Truncated File</td></tr>\n<tr><td>w+</td><td>Read / Write</td><td>Truncated File</td></tr>\n<tr><td>a</td><td>Write Only</td><td>File End</td></tr>\n<tr><td>a+</td><td>Read / Write</td><td>File End</td></tr></table>\n\n<table><tr><td>+\t</td><td>Read / Write</td></tr>\n<tr><td>b\t</td><td>Binary Mode</td></tr>\n<tr><td>t\t</td><td>Text Mode (Default)</td></tr></table></div>\n\n\n\n"},{"id":"0dtf","level":2,"heading":"File / Path Parts","content":"<h2>File / Path Parts</h2>\n\n<div class=\"codebox\"><var>full_path</var> = /<var>root_directory</var>/<var>parent_directory</var>/<var>file_name</var>.<var>extension</var></div>\n\n<div class=\"codebox\"><var>base_name</var> = <var>file_name</var>.<var>extension</var></div>\n\n\n\n"},{"id":"dDz8","level":3,"heading":"Path - Get Absolute Path","content":"<h3>Path - Get Absolute Path</h3>\n\n<div class=\"codebox\">= abspath(<var>relative_path</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from os.path import abspath\n\n= abspath(<var>relative_path</var>)</div>\n\n\nConverts any path into its absolute form.\n\nWill return as is if already an absolute path.\n\n\nExample:\n\n<div class=\"codebox\">from os.path import abspath\n\n<var>current_directory</var> = abspath('<var>.</var>')</div>\n\n\n\n"},{"id":"e771","level":3,"heading":"Path - Get Directory Part","content":"<h3>Path - Get Directory Part</h3>\n\n<div class=\"codebox\">= dirname(<var>full_path</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from os.path import dirname\n\n= dirname(<var>full_path</var>)</div>\n\nReturns:\n\n<div class=\"codebox\">str</div>\n\nReturns the full directory portion of the path.\n\nIf the last element is a directory, that will be removed.\n\n\nExample:\n\n<div class=\"codebox\">from os.path import dirname\n\n<var>directory</var> = dirname('<var>/root/parent/file.txt</var>')\n\n<span class=\"note\"># Returns '/root/parent'</span></div>\n\n\n\n"},{"id":"rW4Z","level":3,"heading":"Path - Get Base Name Part","content":"<h3>Path - Get Base Name Part</h3>\n\n<div class=\"codebox\">= basename(<var>file_path</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from os.path import basename\n\n= basename(<var>file</var>)</div>\n\nReturns:\n\n<div class=\"codebox\">str</div>\n\n\nReturns the file name and extension, leaving out the directory.\n\n\nExample:\n\n<div class=\"codebox\">from os.path import basename\n\n<var>file_name</var> = basename('<var>/root/parent/file.txt</var>')\n\n<span class=\"note\"># Returns: 'file.txt'</span></div>\n\n\n\n"},{"id":"NxAS","level":3,"heading":"Path - Get Base Name Part / Windows Save Version","content":"<h3>Path - Get Base Name Part / Windows Save Version</h3>\n\n<div class=\"codebox\">= basename(<var>file_path</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from ntpath import basename\n\n= basename(<var>file_path</var>)</div>\n\nReturns:\n\n<div class=\"codebox\">str</div>\n\n\nReturns a file name and extension portion of a path\n\nThis works safely with both \\ and / file separators.\n\n\nExample:\n\n<div class=\"codebox\">from ntpath import basename\n\n<var>file_name</var> = basename('<var>/root/parent/file.txt</var>')\n\n<span class=\"note\"># Returns 'file.txt'</span></div>\n\n\n\n"},{"id":"3cje","level":3,"heading":"Path - Get File Extension","content":"<h3>Path - Get File Extension</h3>\n\n<div class=\"codebox\">= splitext(<var>file_name</var>)[1]</div>\n\nUsage:\n\n<div class=\"codebox\">from os.path import splitext\n\n= splitext(<var>file_name</var>)[1]</div>\n\n\nReturns the file extension in <code><var>extension</var></code>.\n\nIncludes the '.' in the extension.\n\n\nExample:\n\n<div class=\"codebox\">from os.path import splitext\n\n<var>extension</var> = splitext('<var>/root/parent/file.txt</var>')[1]\n\n<span class=\"note\"># Returns: '.txt'</span></div>\n\n\n\n"},{"id":"tGMN","level":3,"heading":"Path - Get File Name","content":"<h3>Path - Get File Name</h3>\n\n<div class=\"codebox\">= splitext(<var>file_name</var>)[0]</div>\n\nUsage:\n\n<div class=\"codebox\">from os.path import splitext\n\n= splitext(<var>file_name</var>)[0]</div>\n\nGet File Name From Path:\n\n<div class=\"codebox\">from os.path import basename\nfrom os.path import splitext\n\n= splitext(basename(<var>file_path</var>)[0]</div>\n\n\nReturns the file name, the 'file' from 'file.txt'.\n\n\nExample:\n<div class=\"codebox\">from os.path import basename\nfrom os.path import splitext\n\n<var>name</var>, = splitext(basename('<var>/root/parent/file.txt</var>'))[0]\n\n<span class=\"note\"># Returns: 'file'</span></div>\n\n\n\n"},{"id":"LSXR","level":3,"heading":"Path - Get File Name, Extension","content":"<h3>Path - Get File Name, Extension</h3>\n\n<div class=\"codebox\"><var>name</var>, <var>extension</var> = splitext(basename(<var>file_path</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from os.path import basename\nfrom os.path import splitext\n\n<var>name</var>, <var>extension</var> = splitext(basename(<var>file_path</var>)</div>\n\n\nReturns the name and extension of a file.\n<code>basename()</code> strips any directory information before splitting the parts.\n\n\nExample:\n\n<div class=\"codebox\">from os.path import basename\nfrom os.path import splitext\n\n<var>name</var>, <var>extension</var> = splitext(basename('<var>/root/parent/file.txt</var>'))\n\n<span class=\"note\"># Returns: 'file', '.txt'</span></div>\n\n\n\n"},{"id":"EUb2","level":3,"heading":"Path - Is Absolute Path?","content":"<h3>Path - Is Absolute Path?</h3>\n\n<div class=\"codebox\">= isabs(<var>path</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from os.path import isabs\n\n= isabs(<var>path</var>)</div>\n\nReturns: <code>bool</code>\n\n\nChecks if a path is absolute or not.\n\n\nExample:\n\n<div class=\"codebox\">from os.path import isabs\n\nis_absolute = isabs('/Users/user-1')\n\n<span class=\"note\"># Returns: True</span></div>\n\n\n\n"},{"id":"mhx9","level":2,"heading":"Path Separators","content":"<h2>Path Separators</h2>\n\n\n\n"},{"id":"ZYeN","level":3,"heading":"Path Separator - File Separator","content":"<h4>Path Separator - File Separator</h4>\n\n<div class=\"codebox\">import os\n\n<var>separator</var> = os.path.sep</div>\n\nReturns the OS specific form of the internal path separator...\nthe <code>/</code> or <code>\\</code> in <code><var>dir_1</var>/<var>file_1</var></code>.\n\n\n\n"},{"id":"wTLv","level":3,"heading":"Path Separator - Paths Separator","content":"<h4>Path Separator - Paths Separator</h4>\n\n<div class=\"codebox\">import os\n\n<var>separator</var> = os.pathsep</div>\n\nReturns the OS specific form of the paths separator...\nthe <code>;</code> or <code>:</code> in <code><var>dir_1</var>;<var>dir_2</var>;<var>dir_3</var></code>\n\n\n\n"},{"id":"vTmz","level":1,"heading":"Standard Libraries","content":"<h1>Standard Libraries</h1>\n\n\n"},{"id":"wdMv","level":2,"heading":"Argparse","content":"<h2>Argparse</h2>\n\n\n\n"},{"id":"msk5","level":3,"heading":"Argparse - Video Tutorial","content":"<h3>Argparse - Video Tutorial</h3>\n\nGet going faster with our argparse in a Hurry Video:\n\n<div class=\"card\"><a class=\"link\" href=\"https://youtu.be/66tRWijsm0U\">Argparse in a Hurry (2 Mins)</a></div>\n\n\n\n"},{"id":"ApuE","level":3,"heading":"Argparse Basics","content":"<h3>Argparse Basics</h3>\n\n<div class=\"codebox\">from argparse import ArgumentParser\n\n<var>parser</var> = ArgumentParser(description = '<var>description</var>')</div>\n\nFlag:\n\n<div class=\"codebox\"><var>parser</var>.add_argument('-<var>n</var>', '--<var>name</var>', action='store_true')</div>\n\nOptional Field:\n\n<div class=\"codebox\"><var>parser</var>.add_argument('-<var>n</var>', '--<var>name</var>')</div>\n\nPositional Fields:\n\n<div class=\"codebox\"><var>parser</var>.add_argument('<var>first</var>')\n<var>parser</var>.add_argument('<var>second</var>')</div>\n\nAs Int:\n\n<div class=\"codebox\"><var>parser</var>.add_argument('<var>name</var>', type = int)</div>\n\nFrom Choices:\n\n<div class=\"codebox\"><var>parser</var>.add_argument('<var>name</var>', choices = ['<var>a</var>', '<var>b</var>', '<var>c</var>'])</div>\n\nParameter Help Text:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, help = '<var>help</var>')</div>\n\n\nParse:\n\n<div class=\"codebox\"><var>arguments</var> = <var>parser</var>.parse_args()\n\nif <var>argumets</var>.<var>flag_name</var>:\n    <var>...</var>\n\n<var>value</var> = <var>arguments</var>.<var>name</var></div>\n\n\n"},{"id":"EfTN","level":3,"heading":"Argparse - Create","content":"<h3>Argparse - Create</h3>\n\n\n\n"},{"id":"EfUQ","level":4,"heading":"Argparse - Create","content":"<h4>Argparse - Create</h4>\n\n<div class=\"codebox\">= ArgumentParser()</div>\n\nUsage:\n\n<div class=\"codebox\">from argparse import ArgumentParser\n\n<var>parser</var> = ArgumentParser(\n        description = '<var>help description</var>')</div>\n\n\n\n"},{"id":"YhVy","level":4,"heading":"Argparse - Create, Override Error","content":"<h4>Argparse - Create, Override Error</h4>\n\n<div class=\"codebox\">class ArgumentParserNoExit(ArgumentParser):\n    def error(self, <var>message</var>):\n        <var>...</var></div>\n\nUsage:\n\n<div class=\"codebox\">from argparse import ArgumentParser\n\nclass ArgumentParserNoExit(ArgumentParser):\n    def error(self, <var>message</var>):\n        <var>...</var>\n\n<var>parser</var> = ArgumentParserNoExit(<var>...</var>)</div>\n\n\nOverride the error() method.\n\nSubclass ArgumentParser and implement the <code>error()</code> method to override the error behavior.\nError messages will be sent to this method instead of calling <code>sys.exit()</code>.\n\n\n\n"},{"id":"tskc","level":3,"heading":"Argparse - Parse","content":"<h3>Argparse - Parse</h3>\n\n\n\n"},{"id":"93zg","level":4,"heading":"Argparser - Parse Command-line","content":"<h4>Argparser - Parse Command-line</h4>\n\n<div class=\"codebox\">= parser.parse_args()</div>\n\n\nParses the command-line arguments.\n\nWill print help and exit if has '-h', '--help'.\nWill print errors and exit if any errors found.\n\n\n\n"},{"id":"KW64","level":4,"heading":"Argparse - Parse String","content":"<h4>Argparse - Parse String</h4>\n\n<div class=\"codebox\">= parser.parse_args(<var>argument_list</var>)</div>\n\nWill print help and exit if has '-h', '--help'.\nWill print errors and exit if any errors found.\n\n\n\n"},{"id":"qJMz","level":3,"heading":"Argparse - Flag Parameters","content":"<h3>Argparse - Flag Parameters</h3>\n\n\n\n"},{"id":"b0xn","level":4,"heading":"Argparse - Flag Parameter","content":"<h4>Argparse - Flag Parameter</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument('--<var>name</var>', '-<var>n</var>',\n        action = 'store_true')</div>\n\nFull Usage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument('--<var>name</var>', '-<var>n</var>',\n        action = 'store_true',\n        help = '<var>help text</var>')</div>\n\n<div class=\"codebox\">if <var>arguments</var>.<var>name</var>:\n    <var>...</var></div>\n\nReturns: <code>bool</code>\n\n\nDefines an argument flag.\n\nThe first <code>add_argument</code> parameter with leading '--' defines the field name.\nReturns <code>True</code> if present, <code>False</code> if not.\n\n\nExample:\n\n<div class=\"codebox\">from argparse import ArgumentParser\n\n<var>parser</var> = ArgumentParser()\n<var>parser</var>.add_argument('-d', '--debug', action = 'store_true')\n<var>parser</var>.add_argument('-v', '--verbose', action = 'store_true')\n\n<var>arguments</var> = parser.parse_args(['-d'])\n\nprint(<var>arguments</var>.debug, <var>arguments</var>.verbose)\n\n<span class=\"note\"># Prints: True False</span></div>\n\n\n\n"},{"id":"ecYf","level":4,"heading":"Argparse - Flag Parameter / As False","content":"<h4>Argparse - Flag Parameter / As False</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, action='store_false')</div>\n\nFull Usage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument('-<var>n</var>', '--<var>name</var>',\n        action = 'store_false',\n        help = <var>help text</var>)</div>\n\n<div class=\"codebox\">if not <var>arguments</var>.<var>name</var>:\n    <var>...</var></div>\n\nReturns: <code>bool</code>\n\n\nReturns <code>False</code> if present, <code>True</code> if not.\n\n\n\n"},{"id":"4QXj","level":4,"heading":"Argparse - Flag Parameter / As Value","content":"<h4>Argparse - Flag Parameter / As Value</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>,\n        action = 'store_const', const = <var>value</var>)</div>\n\nReturns: <code>str</code>\n\n\nReturns <code>value</code> if present, <code>None</code> if not.\n\n\n\n"},{"id":"eNe4","level":3,"heading":"Argparse - Optional Argument","content":"<h3>Argparse - Optional Argument</h3>\n\n\n\n"},{"id":"eNf6","level":4,"heading":"Argparse - Optional Argument","content":"<h4>Argparse - Optional Argument</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;-<var>n</var>&quot;, &quot;--<var>name</var>&quot;)</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;-<var>n</var>&quot;, &quot;--<var>name</var>&quot;\n        help = '<var>help text</var>')</div>\n\n<div class=\"codebox\">= <var>arguments</var>.<var>name</var></div>\n\nReturns: <var>str</var>\n\n\nDefines optional (named) argument.\n\nReturns the value if present, or <code>None</code> if missing.\n\n\nExample:\n\n<div class=\"codebox\">from argparse import ArgumentParser\n\n<var>parser</var> = ArgumentParser()\n<var>parser</var>.add_argument('-n', '--name')\n<var>parser</var>.add_argument('-i', '--id')\n\n<var>arguments</var> = parser.parse_args(['-i', '42'])\n\nprint(<var>arguments</var>.name, <var>arguments</var>.id)\n\n<span class=\"note\"># Prints: None 42</span></div>\n\n\n\n"},{"id":"E0tM","level":4,"heading":"Argparse - Optional Argument / As Integer","content":"<h4>Argparse - Optional Argument / As Integer</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, type = int)</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;-<var>n</var>&quot;, &quot;--<var>name</var>&quot;,\n        type = int,\n        help = '<var>help text</var>')</div>\n\n<div class=\"codebox\">= <var>arguments</var>.<var>name</var></div>\n\nReturns: <var>int</var>\n\n\nDefines optional (named) argument.\n\nReturns the value as an integer if present, or <code>None</code> if missing.\n\n\n\n"},{"id":"btZM","level":4,"heading":"Argparse - Optional Argument / Choice From List","content":"<h4>Argparse - Optional Argument / Choice From List</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;-<var>n</var>&quot;, &quot;--<var>name</var>&quot;, choices = [<var>value_1</var>, <var>value_2</var>, <var>value_3</var>])</div>\n\n\nDefines optional (named) argument of limited choices.\n\nWill report an error if an invalid value is given.\n\n\n\n"},{"id":"CwDx","level":4,"heading":"Argparse - Optional Argument / Append Value","content":"<h4>Argparse - Optional Argument / Append Value</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;-<var>n</var>&quot;, &quot;--<var>name</var>&quot;, action='append')</div>\n\nReturns: List\n\n\nAdds optional argument (named argument).\n\n\n\n"},{"id":"rEtV","level":4,"heading":"Argparse - Optional Argument / Append Constant","content":"<h4>Argparse - Optional Argument / Append Constant</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;-<var>n</var>&quot;, &quot;--<var>name</var>&quot;,\n    action='append_const', const = <var>value</var>)</div>\n\nReturns: List\n\n\nAdds optional argument (named argument).\n\n\n\n"},{"id":"6LQC","level":3,"heading":"Argparse - Positional Arguments","content":"<h3>Argparse - Positional Arguments</h3>\n\n\n\n"},{"id":"7ZxZ","level":4,"heading":"Argparse - Positional Argument","content":"<h4>Argparse - Positional Argument</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;)</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>first</var>&quot;, help=&quot;<var>first help text</var>&quot;)\n<var>parser</var>.add_argument(&quot;<var>second</var>&quot;, help=&quot;<var>second help text</var>&quot;)\n<var>...</var>\n\n<var>first_argument</var> = <var>arguments</var>.<var>first</var></div>\n\nReturns: <var>str</var>\n\n\nReturns the argument in the position it was defined.\n\n\nExample:\n\n<div class=\"codebox\">from argparse import ArgumentParser\n\n<var>parser</var> = ArgumentParser()\n<var>parser</var>.add_argument('id')\n<var>parser</var>.add_argument('name')\n\n<var>arguments</var> = parser.parse_args(['42', 'sample-name'])\n\nprint(arguments.id, arguments.name)\n\n<span class=\"note\"># Prints: 42 sample-name</span></div>\n\n\n\n"},{"id":"W74N","level":4,"heading":"Argparse - Positional Argument / As Integer","content":"<h4>Argparse - Positional Argument / As Integer</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, type = int)</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, type = int, help=&quot;<var>help text.</var>&quot;)</div>\n\nReturns: <var>int</var>\n\n\n\n"},{"id":"95gW","level":4,"heading":"Argparse - Positional Argument / Choice From List","content":"<h4>Argparse - Positional Argument / Choice From List</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, choice = ['<var>one</var>', '<var>two</var>', '<var>three</var>'])</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;,\n        choice = <var>choice_list</var>))</div>\n\nReturns: <var>str</var>\n\n\n\n"},{"id":"MbAP","level":3,"heading":"Argparse - Groups","content":"<h3>Argparse - Groups</h3>\n\n\n"},{"id":"sVaY","level":4,"heading":"Argparse - Mutually Exclusive Group","content":"<h4>Argparse - Mutually Exclusive Group</h4>\n\n<div class=\"codebox\">group = parser.add_mutually_exclusive_group()\n\ngroup.add_argument('<var>option_1</var>', <var>...</var>)\ngroup.add_argument('<var>option_2</var>', <var>...</var>)</div>\n\n\nDefines a group of mutually exclusive arguments.\n\nOnly one of the defined arguments can exist.\n\n\n\n"},{"id":"cswg","level":3,"heading":"Argparse - Arguments","content":"<h3>Argparse - Arguments</h3>\n\n\n\n"},{"id":"n7Ld","level":4,"heading":"Argparse Argument - As Integer","content":"<h4>Argparse Argument - As Integer</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, type = int)</div>\n\nReturns: <var>int</var>\n\n\nReturns the argument as an integer\n\n\n\n"},{"id":"qdA2","level":4,"heading":"Argparse Argument - As Return Type","content":"<h4>Argparse Argument - As Return Type</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, type = <var>return_type</var>)</div>\n\n\nCasts the return value to the given type before returning.\n\n\nReturn Types:\n\n<div class=\"codebox\">int\nfloat\nascii\nord\nopen</div>\n\n\n\n"},{"id":"49zA","level":4,"heading":"Argparse Argument - Choice from List","content":"<h4>Argparse Argument - Choice from List</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, choice = ['<var>one</var>', '<var>two</var>', '<var>three</var>'])</div>\n\nReturns: <var>str</var>\n\n\nReturns one of the integers in choices.\nWill report an error if an invalid value is given.\n\n\n\n"},{"id":"8V8b","level":4,"heading":"Argparse Argument - Choice from Integers","content":"<h4>Argparse Argument - Choice from Integers</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(type = int,\n        choices = [<var>value_1</var>, <var>value_2</var>, <var>value_3</var>])</div>\n\nType: <var>int</var>\n\n\nReturns the argument as a choice of integers.\n\nReturns one of the integers in <code>choices</code>.\nWill report an error if an invalid value is given.\n\n\n\n"},{"id":"EtC5","level":4,"heading":"Argparse Argument - 0 or 1 (Optional Value)","content":"<h4>Argparse Argument - 0 or 1 (Optional Value)</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, nargs='?')</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, nargs='?', help=&quot;<var>help text.</var>&quot;)</div>\n\nReturns: <var>str</var>\n\nReturns an optional value.\n\nApplies to positional and named parameters.\n\n\n\n"},{"id":"KdUr","level":4,"heading":"Argparse Argument - 0 or More Values","content":"<h4>Argparse Argument - 0 or More Values</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, nargs='*')</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, nargs='+', help=&quot;<var>help text.</var>&quot;)</div>\n\nReturns: <code>list</code>\n\n\nReturns 0 or more values.\n\nApplies to positional and named parameters.\n\n\n\n"},{"id":"ytgu","level":4,"heading":"Argparse Argument - 1 or More Values","content":"<h4>Argparse Argument - 1 or More Values</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, nargs='+')</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, nargs='+', help=&quot;<var>help text.</var>&quot;)</div>\n\nReturn: <code>list</code>\n\n\nReturns a list of values.\n\nThrows an error if none found.\nApplies to positional and named parameters.\n\n\n\n"},{"id":"PHYM","level":4,"heading":"Argparse Argument - N Values","content":"<h4>Argparse Argument - N Values</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, nargs=<var>n</var>)</div>\n\nUsage:\n\n<div class=\"codebox\"><var>parser</var>.add_argument(&quot;<var>name</var>&quot;, nargs=<var>n</var>, help=&quot;<var>help text.</var>&quot;)</div>\n\nReturns: <var>list</var>\n\n\nReturns a list of n values.\n\nApplies to positional and named parameters.\n\n\n\n"},{"id":"Pbxe","level":3,"heading":"Argparse Help","content":"<h3>Argparse Help</h3>\n\n\n\n"},{"id":"nVuH","level":4,"heading":"Argparse Help - Add Help Flag","content":"<h4>Argparse Help - Add Help Flag</h4>\n\nIncluded by default.\n\nHelp argument flags:\n\n<div class=\"codebox\"><var>app_name</var> -h\n<var>app_name</var> --help</div>\n\n\n\n"},{"id":"KRj7","level":4,"heading":"Argparse Help - Disable Default Help","content":"<h4>Argparse Help - Disable Default Help</h4>\n\n<div class=\"codebox\">parser = ArgumentParser(<var>...</var>, add_help = False)</div>\n\n\nDisables the default help options.\n\n\n\n"},{"id":"DsFW","level":4,"heading":"Argparse Help - Set Program Name","content":"<h4>Argparse Help - Set Program Name</h4>\n\n<div class=\"codebox\">parser = ArgumentParser(<var>...</var>,\n        prog = &quot;<var>program_name</var>&quot;)</div>\n\nDefaults to: sys.argv[0]\n\n\n\n"},{"id":"JrEM","level":4,"heading":"Argparse Help - Set Usage Text","content":"<h4>Argparse Help - Set Usage Text</h4>\n\n<div class=\"codebox\">parser = ArgumentParser(<var>...</var>,\n        usage = &quot;<var>Usage Text</var>&quot;)</div>\n\n\nSets the usage text that will be displayed with '-h'.\n\n\n"},{"id":"9Nbh","level":4,"heading":"Argparse Help - Show Help","content":"<h4>Argparse Help - Show Help</h4>\n\n<div class=\"codebox\"><var>parser</var>.print_help()</div>\n\n\nPrints the help text.\n\n\n\n"},{"id":"Jtkw","level":3,"heading":"Argparse Settings","content":"<h3>Argparse Settings</h3>\n\n\n\n"},{"id":"qf52","level":4,"heading":"Argparse - action","content":"<h4>Argparse - action</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, action = <var>value</var>)</div>\n\naction:\n\n<div class=\"card\"><table><tr><td><code>= 'append'</code></td><td>Appends Value</td></tr>\n<tr><td><code>= 'append_const'</code></td><td>Appends Constant</td></tr>\n<tr><td><code>= 'store'</code>\t</td><td>Stores Value</td></tr>\n<tr><td><code>= 'store_const'</code></td><td>Stores const=<var>value</var></td></tr>\n<tr><td><code>= 'store_true'</code></td><td>Sets to True</td></tr>\n<tr><td><code>= 'store_false'</code></td><td>Sets to False</td></tr></table></div>\n\n\n\n"},{"id":"VT52","level":4,"heading":"Argparse - nargs","content":"<h4>Argparse - nargs</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, nargs = '<var>value</var>')</div>\n\nnargs:\n\n<div class=\"card\"><table><tr><td><code>= '?'</code>\t\t\t</td><td>0 or 1</td></tr>\n<tr><td><code>= '*'</code></td><td>0 or More</td></tr>\n<tr><td><code>= '+'</code></td><td>1 or More</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>= '<var>3</var>'</code></td><td>3 Exactly</td></tr></table></div>\n\n\n\n"},{"id":"HszQ","level":4,"heading":"Argparse Argument - Custom Default Value","content":"<h4>Argparse Argument - Custom Default Value</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, default = <var>value</var>)</div>\n\n\nSets the default value when the argument doesn't exist.\n\nBy default, argparse returns <code>None</code>.\n\n\n"},{"id":"Gf8K","level":4,"heading":"Argparse Argument - Custom Field Name","content":"<h4>Argparse Argument - Custom Field Name</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, dest = <var>field_name</var>)</div>\n\n<div class=\"codebox\"><var>arguments</var> = <var>parser</var>.parse_args()\n= <var>arguments</var>.<var>field_name</var></div>\n\n\nExplicitly defines the field name the argument value will be stored in.\n\n\n\n"},{"id":"NPC0","level":4,"heading":"Argparse Settings - Disable Exit On Error","content":"<h4>Argparse Settings - Disable Exit On Error</h4>\n\n<div class=\"codebox\">parser = ArgumentParser(<var>...</var>, exit_on_error = False)</div>\n\nUsage:\n\n<div class=\"codebox\">from argparse import ArgumentParser, ArgumentError\n\n<var>parser</var> = ArgumentParser(<var>...</var>, exit_on_error = False)\n\ntry:\n    <var>arguments</var> = <var>parser</var>.parse_args()\n    <var>...</var>\nexcept ArgumentError as <var>error</var>:\n    <var>...</var></div>\n\nDefault: True\n\n\nThrows ArgumentError instead of exiting the application.\n\n\n\n"},{"id":"dtRv","level":4,"heading":"Argparse Argument - Make Require","content":"<h4>Argparse Argument - Make Require</h4>\n\n<div class=\"codebox\"><var>parser</var>.add_argument(<var>...</var>, required = True)</div>\n\n\nRequires the argument to be present.\n\nWill display help and exit if not found.\n\n\n\n"},{"id":"f1ty","level":2,"heading":"ConfigParser","content":"<h2>ConfigParser</h2>\n\nReads, and writes Windows style ini files.\n\n\n\n"},{"id":"Z4BP","level":3,"heading":"ConfigParser - Video Tutorial","content":"<h3>ConfigParser - Video Tutorial</h3>\n\nGet going faster with our 5 minute tutorial here:\n\n<div class=\"codebox\"><a class=\"link\" href=\"https://www.youtube.com/watch?v=JLMd7AJnzrc\">ConfigParser Tutorial</a></div>\n\n\n\n"},{"id":"fVtQ","level":3,"heading":"ConfigParser - Basics","content":"<h3>ConfigParser - Basics</h3>\n\n<div class=\"codebox\">from configparser import ConfigParser\n\n<var>config</var> = ConfigParser()\n<var>config</var>.read(&lsquo;<var>file_name.ini</var>')</div>\n\nRead Property:\n\n<div class=\"codebox\"><var>value_1</var> = <var>config</var>['<var>section_name</var>']['<var>property_name</var>']</div>\n\nRead To Type:\n\n<div class=\"codebox\"><var>boolean_1</var> = <var>config</var>.getboolean('<var>section_name</var>', '<var>boolean_property</var>')\n<var>int_1</var> = <var>config</var>.getint('<var>section_name</var>', '<var>int_property</var>')\n<var>float_1</var> = <var>config</var>.getfloat('<var>section_name</var>', '<var>float_property</var>')</div>\n\nRead From Section:\n\n<div class=\"codebox\"><var>section_1</var> = <var>config</var>['<var>section_name</var>']\n<var>value_2</var> = <var>section_1</var>['<var>property_name</var>']</div>\n\nRead Section Property To Type:\n\n<div class=\"codebox\"><var>boolean_</var> = <var>section_1</var>.getboolean(<var>boolean_property</var>')\n<var>int_</var> = <var>section_1</var>.getint(<var>int_properte</var>')\n<var>float_</var> = <var>section_1</var>.getfloat(<var>float_property</var>')</div>\n\n\nSample File:\n\n<div class=\"codebox\">[<var>section_name</var>]\n<var>property_name</var> = <var>Property Value</var>\n\n<var>int_property</var> = <var>42</var>\n<var>float_property</var> = <var>1.23</var>\n<var>boolean_property</var> = <var>True</var></div>\n\n\n\n"},{"id":"FNAq","level":3,"heading":"ConfigParser - File","content":"<h3>ConfigParser - File</h3>\n\n\n\n"},{"id":"SHBJ","level":4,"heading":"ConfigParser - Read File","content":"<h4>ConfigParser - Read File</h4>\n\n<div class=\"codebox\">from configparser import ConfigParser\n\n<var>config_parser</var> = ConfigParser()\n<var>config_parser</var>.read(&lsquo;<var>file_name.ini</var>')</div>\n\n\n\n"},{"id":"ZDVp","level":4,"heading":"ConfigParser - Read File - Sectionless Properties","content":"<h4>ConfigParser - Read File - Sectionless Properties</h4>\n\nFunction:\n\n<div class=\"codebox\">from configparser import ConfigParser\n\ndef <var>read_sectionless</var>(<var>file_name</var>):\n\n\twith open(<var>file_name</var>,'r') as file:\n\t\tcontents = file.read()\n\n\t<var>config</var> = ConfigParser()\n\t<var>config</var>.read_string(f'[default]\n{contents}')\n\treturn <var>config</var>['default']</div>\n\nRead File:\n\n<div class=\"codebox\"><var>config_1</var> = <var>read_sectionless</var>(<var>file_name</var>)</div>\n\nGet Value:\n\n<div class=\"codebox\"><var>property_1</var> = <var>config_1</var>.get('<var>property-1</var>')</div>\n\n\n\nReturns all properties defined before any <code>[<var>section</var>]</code> in the config file.\nAll sections and their properties are ignored.\n\n\n\n"},{"id":"dzUJ","level":4,"heading":"ConfigParser - Read From String","content":"<h4>ConfigParser - Read From String</h4>\n\n<div class=\"codebox\">from configparser import ConfigParser\n\n<var>config_parser</var> = ConfigParser()\n<var>config_parser</var>.read_string(<var>string_representation</var>)</div>\n\n\nReads a string as if it were an ini file.\nUseful for unit testing.\n\n\n\n"},{"id":"ZDyc","level":4,"heading":"ConfigParser - Write File","content":"<h4>ConfigParser - Write File</h4>\n\n<div class=\"codebox\">with open(<var>file_name</var>, 'w') as file:\n\t<var>config_parser</var>.write(file)</div>\n\n\n\n"},{"id":"FmRV","level":3,"heading":"ConfigParser Property","content":"<h3>ConfigParser Property</h3>\n\n\n"},{"id":"KtK0","level":4,"heading":"ConfigParser Property - Add / Update","content":"<h4>ConfigParser Property - Add / Update</h4>\n\n<div class=\"codebox\"><var>config_parser</var>.set('<var>section_name</var>', '<var>property_name</var>', <var>'value'</var>)</div>\n\nor\n\n<div class=\"codebox\"><var>config_parser</var>['<var>section_name</var>']['<var>property_name</var>'] = <var>'value'</var></div>\n\n\nSection <code><var>section_name</var></code> must exist.\n<code><var>'value'</var></code> must be a string.\n\n\n\n"},{"id":"24NL","level":4,"heading":"ConfigParser Property - Exists?","content":"<h4>ConfigParser Property - Exists?</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.has_option('<var>section_name</var>', '<var>property_name</var>')</div>\n\n\n\n"},{"id":"eeGj","level":4,"heading":"ConfigParser Property - Get","content":"<h4>ConfigParser Property - Get</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.get('<var>section_name</var>', '<var>property_name</var>')     <span class=\"note\">#1</span></div>\n\nor\n\n<div class=\"codebox\">= <var>config_parser</var>['<var>section_name</var>']['<var>property_name</var>']         <span class=\"note\">#2</span></div>\n\n\nReturns: <code>str</code>\n\n\n#1  -  Raises <code>configparser.NoSectionError</code> if section not found.\n#1  -  Raises <code>configparser.NoOptionError</code> if property not found.\n\n#2  -  Raises <code>NameError</code> if section or property not found.\n\n\n\n"},{"id":"KqYd","level":4,"heading":"ConfigParser Property - Get or Default","content":"<h4>ConfigParser Property - Get or Default</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.get('<var>section</var>', '<var>property</var>', fallback = '<var>fallback_value</var>')</div>\n\n\nReturns: <code>str</code>\n\n\nReturns <code><var>fallback_value</var></code> if property not found.\n\n\n\n"},{"id":"fC74","level":4,"heading":"ConfigParser Property - Get As Boolean","content":"<h4>ConfigParser Property - Get As Boolean</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.getboolean('<var>section_name</var>', '<var>property_name</var>')</div>\n\n\nReturns: <code>bool</code>\n\n\n\nRaises <code>InvalidValue</code> if not a boolean value.\nNot case sensitive.\n\n\n\nTrue Values:\n\n<div class=\"codebox\">true | yes | on | 1</div>\n\nFalse Values:\n\n<div class=\"codebox\">false | no | off | 0</div>\n\n\n\n"},{"id":"q1QS","level":4,"heading":"ConfigParser Property - Get As Integer","content":"<h4>ConfigParser Property - Get As Integer</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.getint('<var>section_name</var>', '<var>property_name</var>')</div>\n\n\nReturns: <code>int</code>\n\n\n\nRaises <code>InvalidValue</code> if not an integer.\n\n\n\n"},{"id":"cTxr","level":4,"heading":"ConfigParser Property - Get As Float","content":"<h4>ConfigParser Property - Get As Float</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.getfloat('<var>section_name</var>', '<var>property_name</var>')</div>\n\n\nReturns: <code>float</code>\n\n\n\nRaises <code>InvalidValue</code> if not a float.\n\n\n\n"},{"id":"1zN7","level":3,"heading":"ConfigParser Section","content":"<h3>ConfigParser Section</h3>\n\nThe ConfigParser section is a subclass of <code>MutableMapping</code> (<code>collections.abc.MutableMap</code>).\n\n\n\n"},{"id":"7K6j","level":4,"heading":"ConfigParser Section - Add","content":"<h4>ConfigParser Section - Add</h4>\n\n<div class=\"codebox\"><var>config_parser</var>.add_section('<var>section_name</var>')</div>\n\nor\n\n<div class=\"codebox\"><var>config_parser</var>['<var>section_name</var>'] = {}</div>\n\nor\n\n<div class=\"codebox\"><var>config_parser</var>['<var>section_name</var>'] = {\n\t'<var>property-1</var>': '<var>value-1</var>',\n\t'<var>property-2</var>': '<var>value-2</var>',\n\t<var>...</var>\n}</div>\n\n\n\n"},{"id":"kGdk","level":4,"heading":"ConfigParser Section - Remove","content":"<h4>ConfigParser Section - Remove</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.remove_section('<var>section_name</var>')</div>\n\n\n\n"},{"id":"7Xgm","level":4,"heading":"ConfigParser Section - Exists?","content":"<h4>ConfigParser Section - Exists?</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.has_section('<var>section_name</var>')</div>\n\n\n\n"},{"id":"7HJk","level":4,"heading":"ConfigParser Section - Get","content":"<h4>ConfigParser Section - Get</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>['<var>section_name</var>']</div>\n\n\nRaises <code>NameError</code> if section not found.\n\n\n\n"},{"id":"dfT4","level":4,"heading":"ConfigParser Sections - Get All Section Names","content":"<h4>ConfigParser Sections - Get All Section Names</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.sections()</div>\n\n\nReturns: <code>list</code> of <code>str</code>\n\n\nReturns a list of section names.\n\n\n\n"},{"id":"Kvz1","level":3,"heading":"ConfigParser Section Properties","content":"<h3>ConfigParser Section Properties</h3>\n\n\n\n"},{"id":"1UDH","level":4,"heading":"ConfigParser Section Property - Add / Update","content":"<h4>ConfigParser Section Property - Add / Update</h4>\n\n<div class=\"codebox\">= <var>section_1</var>['<var>property_name</var>'] = <var>'value'</var></div>\n\n\n\n"},{"id":"sftG","level":4,"heading":"ConfigParser Section Property - Exists?","content":"<h4>ConfigParser Section Property - Exists?</h4>\n\n<div class=\"codebox\">= '<var>property_name</var>' in <var>section_1</var></div>\n\n\n\n"},{"id":"nT8g","level":4,"heading":"ConfigParser Section Property - Get","content":"<h4>ConfigParser Section Property - Get</h4>\n\n<div class=\"codebox\">= <var>section_1</var>.get('<var>property_name</var>')\t<span class=\"note\">#1</span></div>\n\nor\n\n<div class=\"codebox\">= <var>section_1</var>['<var>property_name</var>']\t\t<span class=\"note\">#2</span></div>\n\n\n#1  -  Returns <code>None</code> if not found.\n\n#2  -  Raises <code>KeyError</code> if not found.\n\n\n\n"},{"id":"4H1s","level":4,"heading":"ConfigParser Section Property - Get As Boolean","content":"<h4>ConfigParser Section Property - Get As Boolean</h4>\n\n<div class=\"codebox\">= <var>section_1</var>.getbool('<var>property_name</var>')</div>\n\n\nReturns: <code>bool</code>\n\n\n\nRaises <code>InvalidValue</code> if not a boolean value.\nNot case sensitive.\n\n\nTrue Values:\n\n<div class=\"codebox\">true | yes | on | 1</div>\n\nFalse Values:\n\n<div class=\"codebox\">false | no | off | 0</div>\n\n\n\n"},{"id":"GHY3","level":4,"heading":"ConfigParser Section Property - Get As Integer","content":"<h4>ConfigParser Section Property - Get As Integer</h4>\n\n<div class=\"codebox\">= <var>section_1</var>.getint('<var>property_name</var>')</div>\n\n\nReturns: <code>int</code>\n\n\n\nRaises <code>InvalidValue</code> if not an integer.\n\n\n\n"},{"id":"81Mg","level":4,"heading":"ConfigParser Section Property - Get As Float","content":"<h4>ConfigParser Section Property - Get As Float</h4>\n\n<div class=\"codebox\">= <var>section_1</var>.getfloat('<var>property_name</var>')</div>\n\n\nReturns: <code>float</code>\n\n\n\nRaises <code>InvalidValue</code> if not a float.\n\n\n\n"},{"id":"7Z2T","level":4,"heading":"ConfigParser Section Properties - Get All Names","content":"<h4>ConfigParser Section Properties - Get All Names</h4>\n\n<div class=\"codebox\">= <var>config_parser</var>.options(<var>section_name</var>)</div>\n\nor\n\n<div class=\"codebox\">= list(<var>section_1</var>.keys())</div>\n\n\nReturns: <code>list</code> of <code>str</code>\n\n\nReturns a list of all the property names for that section.\n\n\n\n"},{"id":"ztTt","level":3,"heading":"ConfigParser - Iterate Over Values","content":"<h3>ConfigParser - Iterate Over Values</h3>\n\n<div class=\"codebox\">for <var>section_name</var> in <var>config_1</var>.sections():\n\n\t<var>section</var> = <var>config_1</var>[<var>section_name</var>]\n\n\tfor <var>property_name</var>, <var>value</var> in <var>section</var>.items():\n\t\tprint(<var>section_name</var>, <var>property_name</var>, &quot;:&quot;, <var>value</var>)</div>\n\n\nIterates over each section and displays all the properties and their values.\n\n\n\n"},{"id":"N1Gu","level":3,"heading":"Ini File - Sample File","content":"<h3>Ini File - Sample File</h3>\n\n<div class=\"codebox\"><span class=\"note\"># Comment line</span>\n\n[<var>section-1</var>]\n<var>property-1</var> = <var>value 1</var>\n<var>property-2</var> = <var>value 2</var>\n\n[<var>section-2</var>]\n<var>property-3</var> = <var>value 3</var>\n\n[<var>types</var>]\n<var>bool-true-1</var> = yes\n<var>bool-true-2</var> = true\n<var>bool-true-3</var> = 1\n<var>bool-false</var> = no\n\n<var>int-1</var> = <var>42</var>\n<var>float-1</var> = <var>12.001</var></div>\n\n\n\n"},{"id":"bVvH","level":2,"heading":"Internet / urllib","content":"<h2>Internet / urllib</h2>\n\n\n\n"},{"id":"aXmF","level":3,"heading":"HTTP - Get","content":"<h3>HTTP - Get</h3>\n\n<div class=\"codebox\">= urlopen(<var>url</var>)</div>\n\nUsages:\n\n<div class=\"codebox\">from urllib.request import urlopen\n\nwith urlopen(<var>url</var>) as response:\n\t<var>content</var> = response.read()</div>\n\n\nReturns: <code>bytes</code>\n\n\nMakes a HTTP GET call to the url.\n\n\nExample:\n\n<div class=\"codebox\">from urllib.request import urlopen\n\n<var>url</var> = &quot;https://httpbin.org/get&quot;\n\nwith urlopen(<var>url</var>) as response:\n\t<var>content</var> = response.read()\n\n<var>text</var> = <var>content</var>.decode(&quot;utf-8&quot;, &quot;ignore&quot;)\n\nprint(&quot;Response:&quot;, text)</div>\n\n\n\n"},{"id":"YgfS","level":3,"heading":"HTTP - Post","content":"<h3>HTTP - Post</h3>\n\n<div class=\"codebox\">= urlopen(<var>url</var>, data = <var>post_data</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from urllib.request import urlopen\n\nwith urlopen(<var>url</var>, data = <var>post_data</var>) as response:\n\t<var>content</var> = response.read()</div>\n\n\nReturns: <code>bytes</code>\n\n\nMakes a HTTP POST call when <code>data != None</code>.\n\n\nExample:\n\n<div class=\"codebox\">from urllib.request import urlopen\nfrom urllib.parse import urlencode\n\n<var>url</var> = &quot;https://httpbin.org/post&quot;\n\n<var>params</var> = {\n        &quot;<var>param_1</var>&quot;: &quot;value 1&quot;,\n        &quot;<var>param_2</var>&quot;: &quot;value 2&quot;}\n\n<var>post_data</var> = urlencode(<var>params</var>).encode()\n\nwith urlopen(<var>url</var>, data = <var>post_data</var>) as response:\n\t<var>content</var> = response.read()\n\n<var>text</var> = <var>content</var>.decode(&quot;utf-8&quot;, &quot;ignore&quot;)\n\nprint(&quot;Response:&quot;, text)</div>\n\n\n\n"},{"id":"P2B5","level":3,"heading":"HTTP - Handle Error","content":"<h3>HTTP - Handle Error</h3>\n\n<div class=\"codebox\">from urllib.request import urlopen\nfrom urllib.error import HTTPError\nfrom urllib.error import URLError\n\ntry:\n\n\twith urlopen(<var>url</var>) as response:\n\t\t<var>content</var> = response.read()\n\t<var>...</var>\n\nexcept URLError as <var>error</var>:\n\n\t<span class=\"note\"># Unable to make request...</span>\n\n\t<var>message</var> = <var>error</var>.reason\n\nexcept HTTPError as <var>error</var>:\n\n\t<span class=\"note\"># Server returned error...</span>\n\n\t<var>status_code</var> = <var>error</var>.code\n\t<var>message</var> = <var>error</var>.reason\n\t<var>headers</var> = <var>error</var>.headers</div>\n\n\n\n"},{"id":"Qh0j","level":3,"heading":"HTTP - URL - Escape","content":"<h3>HTTP - URL - Escape</h3>\n\n<div class=\"codebox\">= quote(<var>url_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from urllib.parse import quote\n\n= quote(<var>url_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>escaped</var> = quote(&quot;<var>somewebsite.com/p/page numbered - 1</var>&quot;)\n\n<span class=\"note\"># Returns 'somewebsite.com/p/page%20numbered%20-%201'</span></div>\n\n\n\n"},{"id":"H10K","level":3,"heading":"HTTP - URL - Unescape","content":"<h3>HTTP - URL - Unescape</h3>\n\n<div class=\"codebox\">= unquote(<var>encoded_url_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from urllib.parse import unquote\n\n= unquote(<var>encoded_url_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>url</var> = unquote(&quot;<var>somewebsite.com/p/page%20numbered%20-%201</var>&quot;)\n\n<span class=\"note\"># Returns 'somewebsite.com/p/page numbered - 1'</span></div>\n\n\n\n"},{"id":"7Eec","level":3,"heading":"HTTP - URL Parameter - Escape","content":"<h3>HTTP - URL Parameter - Escape</h3>\n\n<div class=\"codebox\">= quote_plus(<var>parameters_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from urllib.parse import quote_plus\n\n= quote_plus(<var>parameters_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>escaped</var> = quote_plus(&quot;<var>param1=param 1 value&amp;param2= param 2 value</var>&quot;)\n\n<span class=\"note\"># Returns 'param1%3Dparam+1+value%26param2%3D+param+2+value'</span></div>\n\n\n\n"},{"id":"nTeZ","level":3,"heading":"HTTP - URL Parameter - Unescape","content":"<h3>HTTP - URL Parameter - Unescape</h3>\n\n<div class=\"codebox\">= unquote_plus(<var>encoded_parameter</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from urllib.parse import unquote_plus\n\n= unquote_plus(<var>encoded_parameter</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>parameters</var> = unquote_plus(&quot;<var>param1%3Dparam+1+value%26param2%3D+param+2+value</var>&quot;)\n\n<span class=\"note\"># Returns 'param1=param 1 value&amp;param2= param 2 value'</span></div>\n\n\n\n"},{"id":"QSBD","level":2,"heading":"Pickle","content":"<h2>Pickle</h2>\n\nConverts an object hierarchy into a byte stream so it can be saved and then restored later.\n\nUnpickling is the inverse operation converting a byte stream back into the object hierarchy.\n\n\n\n"},{"id":"zJMy","level":3,"heading":"Pickle - Pickle","content":"<h3>Pickle - Pickle</h3>\n\n<div class=\"codebox\">import pickle\n\npickle.dump(<var>data</var>, open(<var>file_name</var>, &quot;wb&quot;))</div>\n\n\nSaves an object hierarchy as a binary file.\n\n\n\n"},{"id":"HWwL","level":3,"heading":"Pickle - Unpickle","content":"<h3>Pickle - Unpickle</h3>\n\n<div class=\"codebox\">import pickle\n\n= pickle.load(open(<var>file_name</var>, &quot;rb&quot;))</div>\n\n\nConverts a file back into the original object hierarchy.\n\n\n\n"},{"id":"fPwL","level":1,"heading":"Execute External Commands","content":"<h1>Execute External Commands</h1>\n\n\n\n"},{"id":"BMAe","level":2,"heading":"Execute Command - Run","content":"<h3>Execute Command - Run</h3>\n\n<div class=\"codebox\">from subprocess import run\n\nrun(<var>command</var>)</div>\n\n<div class=\"codebox\">run([<var>command</var>, <var>args_1</var>, <var>args_2</var>, <var>...</var>])\t\t<span class=\"note\">#1</span></div>\n\n\n#1  <span class=\"dim\">-</span>  Pass arguments with the command in a single list.\n\n\nExample:\n\n<div class=\"codebox\">from subprocess import run\n\nrun(['ls', '-1'])</div>\n\n\n\n"},{"id":"zQYS","level":2,"heading":"Execute Command - Run Shell Command","content":"<h3>Execute Command - Run Shell Command</h3>\n\n<div class=\"codebox\">from subprocess import run\n\nrun(<var>command</var>, shell = True)</div>\n\n\nStarts the shell and executes <code><var>command</var></code> on it.\nAllows the script to run shell only commands (e.g. <code>echo</code>).\n<code><var>command</var></code> is a string with the complete command, arguments included.\n\n\nExample:\n\n<div class=\"codebox\">from subprocess import run\n\nrun('echo &quot;This is how to run a shell command.&quot;', shell=True)</div>\n\n\n\n"},{"id":"pHEs","level":2,"heading":"Execute Command - Get Exit Code","content":"<h3>Execute Command - Get Exit Code</h3>\n\n<div class=\"codebox\">from subprocess import run\n\n<var>results</var> = run(<var>command</var>)\n<var>exit_code</var> = <var>results</var>.returncode</div>\n\nReturns: <code>int</code>\n\n\nGets the exit code returned by the process after it completed.\n\n\n\n\n"},{"id":"CZVQ","level":2,"heading":"Execute Command - Get Standard Output","content":"<h3>Execute Command - Get Standard Output</h3>\n\n<div class=\"codebox\">from subprocess import run\nfrom subprocess import PIPE\n\n<var>results</var> = run(<var>command</var>, stdout = PIPE)\n<var>output</var> = <var>results</var>.stdout</div>\n\nReturns: <code>bytes</code>\n\n\nCaptures the output sent to standard out.\n\n\nExample:\n\n<div class=\"codebox\">from subprocess import run\nfrom subprocess import PIPE\n\n<var>results</var> = run(['ls', '-1'], stdout = PIPE)\n<var>output</var> = <var>results</var>.stdout\nprint(<var>output</var>.decode(&quot;utf-8&quot;))\n</div>\n\n\n\n"},{"id":"wsDP","level":1,"heading":"Testing","content":"<h1>Testing</h1>\n\n\n\n"},{"id":"aaws","level":2,"heading":"Test - Basics","content":"<h3>Test - Basics</h3>\n\n<div class=\"codebox\">from unittest import TestCase\n\nclass <var>TestMyStuff</var>(TestCase):\n\n\tdef setUp(self):\t\t\t\t\t<span class=\"note\"># Run Before Every Test</span>\n\t\t<var>...</var>\n\n\tdef tearDown(self):\t\t\t\t\t<span class=\"note\"># Run After Every Test</span>\n\t\t<var>...</var>\n\n\tdef test<var>_this_function</var>(self)\t\t<span class=\"note\"># Name Must Start With <code>test</code></span>\n\t\t<var>...</var></div>\n\n\n\n"},{"id":"daER","level":2,"heading":"Test - Example","content":"<h3>Test - Example</h3>\n\n<div class=\"codebox\">from unittest import TestCase\n\nclass <var>BasicTest</var>(TestCase):\n\n\tdef setUp(self):\n\t\tself.<var>field1</var> = True\n\n\tdef tearDown(self):\n\t\tself.<var>field1</var> = None\n\n\tdef test<var>_IsTrue</var>(self):\n\t\tself.assertTrue(self.<var>field1</var>, &quot;<var>failed_assertion_message</var>&quot;)\n\n\tdef test<var>_IsFalse</var>(self):\n\t\tself.assertFalse(self.<var>field1</var>, &quot;<var>failed_assertion_message</var>&quot;)</div>\n\n\n\n"},{"id":"x02L","level":2,"heading":"Test - Definition","content":"<h2>Test - Definition</h2>\n\n\n\n"},{"id":"hHGa","level":3,"heading":"Test - Define - Class","content":"<h3>Test - Define - Class</h3>\n\n<div class=\"codebox\">class <var>TestClass1</var>(TestCase):</div>\n\nUsage:\n\n<div class=\"codebox\">from unittest import TestCase\n\nclass <var>TestClass1</var>(TestCase):\n\n\tdef test<var>_function_1</var>(self):\n\t\t<var>...</var></div>\n\n\nDefines a test class.\n\nAll test functions must start with <code>test_</code>.\n\n\n\n"},{"id":"BY94","level":3,"heading":"Test - Define - Function","content":"<h3>Test - Define - Function</h3>\n\n<div class=\"codebox\">def test<var>_function_1</var>(self):</div>\n\nUsage:\n\n<div class=\"codebox\">from unittest import TestCase\n\nclass <var>TestClass1</var>(TestCase):\n\n\tdef test<var>_function_1</var>(self):\n\t\t<var>...</var></div>\n\n\nDefines a test function.\n\nTest functions must start with <code>test_</code>.\n\n\n\n"},{"id":"63gN","level":3,"heading":"Test - Define - Setup","content":"<h3>Test - Define - Setup</h3>\n\n<div class=\"codebox\">class <var>TestClass1</var>(TestCase):\n\n\tdef setUp(self):\n\t\t<var>...</var></div>\n\nSets up the test environment before each test.\n\nAdd whatever data is needed to the class instance.\nRuns before every test.\n\n\n\n"},{"id":"hrjz","level":3,"heading":"Test - Define - Teardown","content":"<h3>Test - Define - Teardown</h3>\n\n<div class=\"codebox\">class <var>TestClass1</var>(TestCase):\n\n\tdef tearDown(self):\n\t\t<var>...</var></div>\n\nTears down the test environment after each test is run.\n\nRuns after every test.\nRuns even if test fails.\n\n\n\n"},{"id":"2zT3","level":3,"heading":"Test - Define - Unit Test","content":"<h3>Test - Define - Unit Test</h3>\n\n<div class=\"codebox\">class <var>TestClass1</var>(TestCase):\n\n\tdef test_<var>unit_test_name</var>(self):\n\t\t<var>...</var></div>\n\nMethod names must start with '<code>test</code>'.\n\n\n\n"},{"id":"wdjY","level":2,"heading":"Test Assertions","content":"<h2>Test Assertions</h2>\n\n\n\n"},{"id":"JaXq","level":3,"heading":"Test Assertion - Equals","content":"<h3>Test Assertion - Equals</h3>\n\n<div class=\"codebox\">self.assertEqual(<var>actual</var>, <var>expected</var>, <var>comment</var>)</div>\n\n\nUse <code>.assertEqual().\n<span class=\"important\">.assertEquals()</span> is deprecated.\n\n\n\n</code>### Test Assertion - Not Equals\n\n<div class=\"codebox\">self.assertNotEqual(<var>actual</var>, <var>expected</var>, <var>comment</var>)</div>\n\n\n\n"},{"id":"Pv24","level":3,"heading":"Test Assertion - Contains","content":"<h3>Test Assertion - Contains</h3>\n\n<div class=\"codebox\">self.assertIn(<var>substring</var>, <var>full_string</var>, <var>comment</var>)</div>\n\nReturns true if <code><var>substring</var></code> is in <code><var>full_string</var></code>.\n\n\n\n"},{"id":"UVgL","level":3,"heading":"Test Assertion - Not Contains","content":"<h3>Test Assertion - Not Contains</h3>\n\n<div class=\"codebox\">self.assertNotIn(<var>substring</var>, <var>full_string</var>, <var>comment</var>)</div>\n\n\nReturns true if <code><var>substring</var></code> is not in <code><var>full_string</var></code>.\n\n\n\n"},{"id":"7rjk","level":3,"heading":"Test Assertion - Is False","content":"<h3>Test Assertion - Is False</h3>\n\n<div class=\"codebox\">self.assertFalse(<var>actual</var>, <var>comment</var>)</div>\n\n\n\n"},{"id":"7Yc8","level":3,"heading":"Test Assertion - Is None","content":"<h3>Test Assertion - Is None</h3>\n\n<div class=\"codebox\">self.assertIsNone(<var>actual</var>, <var>comment</var>)</div>\n\n\n\n"},{"id":"y6cz","level":3,"heading":"Test Assertion - Not None","content":"<h3>Test Assertion - Not None</h3>\n\n<div class=\"codebox\">self.assertIsNotNone(<var>actual</var>, <var>comment</var>)</div>\n\n\n\n"},{"id":"6Zds","level":3,"heading":"Test Assertion - Is True","content":"<h3>Test Assertion - Is True</h3>\n\n<div class=\"codebox\">self.assertTrue(<var>actual</var>, <var>comment</var>)</div>\n\n\n\n"},{"id":"9AhX","level":3,"heading":"Test Assertion - Exception Raised?","content":"<h3>Test Assertion - Exception Raised?</h3>\n\n<div class=\"codebox\">self.assertRaises(<var>ExceptionType</var>, <var>function_1</var>)</div>\n\nCalls the method to be tested (<code><var>function_1</var></code>).\nFails if the exception <code><var>ExceptionType</var></code> is not raised.\n\n\n\n"},{"id":"Nxhr","level":3,"heading":"Test Assertion - Fail","content":"<h3>Test Assertion - Fail</h3>\n\n<div class=\"codebox\">self.fail()</div>\n\nFails test immediately.\n\n\n\n"},{"id":"mYPg","level":3,"heading":"Test Assertion - Attribute Exists","content":"<h3>Test Assertion - Attribute Exists</h3>\n\n<div class=\"codebox\">self.assertTrue(\n\thasattr(obj, intendedAttr),\n\tmsg=f'obj lacking an attribute. {obj=}, {intendedAttr=}')</div>\n\n\n\n"},{"id":"Zsd7","level":2,"heading":"Test Setup","content":"<h2>Test Setup</h2>\n\n\n"},{"id":"eBPQ","level":3,"heading":"Test Setup - Define Source Folder","content":"<h3>Test Setup - Define Source Folder</h3>\n\nGiven:\n\n<div class=\"codebox\"><var>project_dir</var>/\n├─ src/\n└─ tests/</div>\n\nCreate:\n\n<div class=\"codebox\"><var>tests</var>/__init__.py</div>\n\nContents:\n\n<div class=\"codebox\">from os import getcwd\nfrom os.path import join\nfrom sys import path\n\nPROJECT_PATH = getcwd()\npath.append (join (PROJECT_PATH, &quot;<var>src</var>&quot;))</div>\n\n\nDefines the project source directory for tests to use.\n\nCreate __init__.py in tests folder and add the code.\nIf the source folder is other than <var><code>src</code></var>, change <var><code>src</code></var> (above) to match.\nRun tests from the project root directory.\n\n\n\n"},{"id":"EVAz","level":1,"heading":"doctest","content":"<h1>doctest</h1>\n\nA doctest is one or more tests written into the docstring.\nThey follow the format of python cli commands followed by their output.\n\n\nOfficial Docs: \n<a class=\"link\" href=\"https://docs.python.org/3/library/doctest.html\">https://docs.python.org/3/library/doctest.html</a>\n\n\n\n"},{"id":"q7MX","level":2,"heading":"doctest - Basics","content":"<h3>doctest - Basics</h3>\n\nDefine:\n\n<div class=\"codebox\">def <var>square</var>(<var>x</var>):\n    <span class=\"note\">&quot;&quot;&quot; squares a number</span>\n\n    &gt;&gt;&gt; square(<var>2</var>)\n    <var>4</var>\n    \n    <span class=\"note\">&quot;&quot;&quot;</span>\n\n    return <var>x</var> ** 2</div>\n\nEnable:\n\n<div class=\"codebox\">if __name__ == &quot;__main__&quot;:\n    import doctest\n    doctest.testmod()</div>\n\nRun:\n\n<div class=\"codebox\">python3 <var>script</var>.py</div>\n\n\n\n"},{"id":"5578","level":2,"heading":"doctest - Define","content":"<h3>doctest - Define</h3>\n\n<div class=\"codebox\">def <var>function_1</var>():\n    <span class=\"note\">&quot;&quot;&quot; Function Description</span>\n\n    &gt;&gt;&gt; function_1(<var>param_a</var>)\n    <var>result a</var>\n    \n    &gt;&gt;&gt; function_1(<var>param_b</var>)\n    <var>result b</var>\n    \n    <span class=\"note\">&quot;&quot;&quot;</span>\n\n    <var>...</var></div>\n\n\nExample:\n\n<div class=\"codebox\">def <var>square</var>(<var>x</var>):\n    <span class=\"note\">&quot;&quot;&quot; squares a number</span>\n\n    &gt;&gt;&gt; square(<var>2</var>)\n    <var>4</var>\n    \n    <span class=\"note\">&quot;&quot;&quot;</span>\n\n    return <var>x</var> ** 2</div>\n\n\n"},{"id":"MMXz","level":2,"heading":"doctest - Define Exception","content":"<h3>doctest - Define Exception</h3>\n\n\n<div class=\"codebox\">def <var>function_1</var>():\n    <span class=\"note\">&quot;&quot;&quot; Function Description\n\n    &gt;&gt;&gt; function_1()\n\tTraceback (most recent call last):\n\t...\n\t<var>Stack Trace, Last Line</var>\n    \n    &quot;&quot;&quot;</span>\n\n    <var>...</var></div>\n\n\nExample:\n\n<div class=\"codebox\">def <var>square</var>(<var>x</var>):\n    <span class=\"note\">&quot;&quot;&quot; squares a number</span>\n\n    &gt;&gt;&gt; square(<var>'a'</var>)\n\tTraceback (most recent call last):\n\t...\n\tTypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'\n    \n    <span class=\"note\">&quot;&quot;&quot;</span>\n\n    return <var>x</var> ** 2</div>\n\n\n\n"},{"id":"JFdF","level":2,"heading":"doctest - Run","content":"<h3>doctest - Run</h3>\n\nIn Script File:\n\n<div class=\"codebox\">if __name__ == &quot;__main__&quot;:\n    import doctest\n    doctest.testmod()</div>\n\nCommand Line:\n\n<div class=\"codebox\">python3 <var>script</var>.py</div>\n\n\n\nVerbose:\n\n<div class=\"codebox\">python3 <var>script</var>.py -v</div>\n\n\n\n\n"},{"id":"74RE","level":1,"heading":"Type Hints","content":"<h1>Type Hints</h1>\n\nOfficial Docs: <a class=\"link\" href=\"https://docs.python.org/3/library/typing.html\">Typing</a>\n\n\n\n"},{"id":"kdkZ","level":2,"heading":"Type Hints - Any Type","content":"<h3>Type Hints - Any Type</h3>\n\n<div class=\"codebox\"><var>item_1</var>: Any</div>\n\nUsage:\n\n<div class=\"codebox\">from typing import Any\n\n<var>item_1</var>: Any\n<var>list_1</var>: list[Any]</div>\n\n\nTells the type checker to ignore this type.\n\n\n\n"},{"id":"XvsM","level":2,"heading":"Type Hints - Dict Type","content":"<h3>Type Hints - Dict Type</h3>\n\n<div class=\"codebox\"><var>dict_1</var>: Dict[str, str]</div>\n\nUsage:\n\n<div class=\"codebox\">from typing import Dict\n\n<var>dict_1</var>: Dict[<var>key_type</var>, <var>value_type</var>]</div>\n\n\n\n"},{"id":"BhqK","level":2,"heading":"Type Hints - Function Definition","content":"<h3>Type Hints - Function Definition</h3>\n\n<div class=\"codebox\">def <var>function_1</var>(<var>param_1</var>: <var>type</var>) -&gt; <var>return_type</var>:\n\t<var>...</var></div>\n\n\nDefines the function parameter types and the return type.\n\n\nExample:\n\n<div class=\"codebox\">def <var>area</var>(<var>height</var>: <var>float</var>, <var>width</var>: <var>float</var>) -&gt; float:\n\treturn <var>height</var> * <var>width</var></div>\n\n\n\n"},{"id":"XgFF","level":2,"heading":"Type Hints - Function With Default Values","content":"<h3>Type Hints - Function With Default Values</h3>\n\n<div class=\"codebox\">def <var>function_1</var>(<var>param_1</var>: <var>type</var> = <var>default_value</var>):\n\t<var>...</var></div>\n\n\nDefine the parameter type before the equals (<code>=</code>).\n\n\n\n"},{"id":"3ZJV","level":2,"heading":"Type Hints - Function Type","content":"<h3>Type Hints - Function Type</h3>\n\n<div class=\"codebox\"><var>function_1</var>: Callable</div>\n\nUsage:\n\n<div class=\"codebox\">from typing import Callable\n\ndef <var>main_function</var>(<var>function_1</var>: Callable):\n\t<var>...</var></div>\n\n\nIdentifies a parameter as a function.\n\n\nExample:\n\n<div class=\"codebox\">from typing import Callable\n\ndef <var>print_message</var>():\n\tprint('the message.')\n\ndef call_message_function(<var>message_function</var>: Callable):\n\t<var>message_function</var>\n\ncall_message_function(<var>print_message</var>)\n\n<span class=\"note\"># Prints: 'the message'</span></div>\n\n\n\n"},{"id":"yFUG","level":2,"heading":"Type Hints - List Type","content":"<h3>Type Hints - List Type</h3>\n\n<div class=\"codebox\"><var>list_1</var>: List[str]</div>\n\nUsage:\n\n<div class=\"codebox\">from typing import List\n\n<var>list_1</var>: List[<var>type</var>]</div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>names</var>: List[str]</div>\n\n<div class=\"codebox\">from typing import Any\n\n<var>items</var>: List[Any]</div>\n\n\n\n"},{"id":"p25h","level":2,"heading":"Type Hints - None Type","content":"<h3>Type Hints - None Type</h3>\n\n<div class=\"codebox\"><var>item_1</var>: None</div>\n\n\nDefines a type as <code>None</code>.\n\nThis is normally done when None is one of the types a value can have.\n\n\nExample:\n\n<div class=\"codebox\"><var>string_1</var>: str | None</div>\n\n\n\n"},{"id":"77KH","level":2,"heading":"Type Hints - Tuple Type","content":"<h3>Type Hints - Tuple Type</h3>\n\n<div class=\"codebox\"><var>tuple_1</var>: Tuple[str, float]</div>\n\nUsage:\n\n<div class=\"codebox\">from typing import Tuple\n\n<var>tuple_1</var>: Tuple[<var>type_1</var>, <var>type_2</var>, <var>...</var>]</div>\n\n\n\n"},{"id":"s7Hb","level":2,"heading":"Type Hints - Union Type","content":"<h3>Type Hints - Union Type</h3>\n\n<div class=\"codebox\"><var>union_1</var>: str | float</div>\n\n\nDefines the type hint for a value that may be one of two or more types.\n\n\n\n"},{"id":"PR5z","level":2,"heading":"Type Hints - Union Type (Alternative)","content":"<h3>Type Hints - Union Type (Alternative)</h3>\n\n<div class=\"codebox\"><var>union_1</var>: Union[str, float]</div>\n\nUsage:\n\n<div class=\"codebox\">from typing import Union\n\n<var>tuple_1</var>: Union[<var>type_1</var>, <var>type_2</var>, <var>...</var>]</div>\n\n\nDefines the type hint for a value that may be one of two or more types.\n\n\n\n"},{"id":"y6s1","level":2,"heading":"Type Hints - Variable Type","content":"<h3>Type Hints - Variable Type</h3>\n\n<div class=\"codebox\"><var>name</var>: <var>type</var></div>\n\n\nDefines the type of a variable.\nThe type is not compiler enforced.\n\n\nBasic Types:\n\n<div class=\"codebox\">bool, int, complex, float, str</div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>id</var>: int</div>\n\n<div class=\"codebox\"><var>descrption</var>: str</div>\n\n<div class=\"codebox\"><var>home_address</var>: Address</div>\n\n\n\n"},{"id":"NF81","level":2,"heading":"Type Hints - Variable Type, Subtype /  Generics","content":"<h3>Type Hints - Variable Type, Subtype /  Generics</h3>\n\n<div class=\"codebox\"><var>name</var>: <var>type</var>[<var>subtype</var>]</div>\n\n<div class=\"codebox\"><var>name</var>: <var>type</var>[<var>subtype_1</var>, <var>subtype_2</var>]</div>\n\n\nDefines the type and subtype of a variable.\nThe type is not compiler enforced.\n\n\nBasic Types:\n\n<div class=\"codebox\">tuple, list, dict</div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>names</var>: list[str]</div>\n\n<div class=\"codebox\"><var>name_and_id</var>: tuple[str, int]</div>\n\n<div class=\"codebox\"><var>addresses</var>: dict[int, Address]</div>\n\n\n\n"},{"id":"Wdd9","level":2,"heading":"Type Hints - Variable Type, Multiple Types","content":"<h3>Type Hints - Variable Type, Multiple Types</h3>\n\n<div class=\"codebox\"><var>name</var>: <var>type1</var> | <var>type2</var> | <var>type3</var></div>\n\n\nDefine a variable that may have one of many types by separating the types with the pipe symbol (<code>|</code>).\n\n\n\nExamples:\n\n<div class=\"codebox\"><var>id</var>: int | str | None</div>\n\n\n\n"},{"id":"yGLN","level":1,"heading":"Virtual Environments","content":"<h1>Virtual Environments</h1>\n\nUse the <code>venv</code> package to create a local python environment separate from the system environmnent.\n\nThis will allow your application to load and run it's own libraries in it's own version of python.\n\n\n\n"},{"id":"2mGX","level":2,"heading":"Virtual Environment - Create","content":"<h3>Virtual Environment - Create</h3>\n\n<div class=\"codebox\">python3 -m venv <var>venv_directory</var></div>\n\nCreates a virtual environment in the directory <code><var>venv_directory</var></code>.\n\n\nTypical Example:\n\n<div class=\"codebox\">python3 -m venv <var>venv</var></div>\n\n\n\n"},{"id":"T5WX","level":2,"heading":"Virtual Environment - Upgrade","content":"<h3>Virtual Environment - Upgrade</h3>\n\n<div class=\"codebox\">python3 -m venv --upgrade <var>venv_directory</var></div>\n\n\nTypical Example:\n\n<div class=\"codebox\">python3 -m venv --upgrade <var>venv</var></div>\n\n\n\n"},{"id":"ZFsR","level":2,"heading":"Virtual Environment - Start / Use","content":"<h3>Virtual Environment - Start / Use</h3>\n\nBash:\n\n<div class=\"codebox\">. <var>venv_directory</var>/bin/activate</div>\n\nDOS:\n\n<div class=\"codebox\"><var>venv_directory</var>\\Scripts\\activate</div>\n\nRun from the project root directory.\nRun this bash script from the command-line.\n\n\nTypical Example:\n\nBash:\n\n<div class=\"codebox\">. <var>venv</var>/bin/activate</div>\n\nDOS:\n\n<div class=\"codebox\"><var>venv</var>\\Scripts\\activate</div>\n\n\n\n"},{"id":"Vf8d","level":2,"heading":"Virtual Environment - Start Venv and Run Program","content":"<h3>Virtual Environment - Start Venv and Run Program</h3>\n\nBash:\n\n<div class=\"codebox\">. <var>venv_directory</var>/bin/python <var>python_path/module.py</var></div>\n\nDOS:\n\n<div class=\"codebox\"><var>venv_directory</var>\\Scripts\\python <var>python_path/module.py</var></div>\n\nStarts the venv and then runs the module in that environment.\n\nRun from the project root directory.\nRun this bash script from the command-line.\n\n\nTypical Example:\n\nBash:\n\n<div class=\"codebox\">. <var>venv</var>/bin/python <var>src/__main__.py</var></div>\n\nDOS:\n\n<div class=\"codebox\"><var>venv</var>\\Scripts\\python <var>src/__main__.py</var></div>\n\n\n\n"},{"id":"PJ86","level":2,"heading":"Virtual Environment - Exit","content":"<h3>Virtual Environment - Exit</h3>\n\n<div class=\"codebox\">deactivate</div>\n\nRun <code>deactivate</code> to exit the venv environment.\n\n\n\n"},{"id":"SgBZ","level":2,"heading":"Virtual Environment Variable","content":"<h3>Virtual Environment Variable</h3>\n\n<div class=\"codebox\">VIRTUAL_ENV</div>\n\nContains the path to the parent of the virtual environment bin directory.\n\n\n\n"},{"id":"RJeQ","level":1,"heading":"Environment Variables","content":"<h1>Environment Variables</h1>\n\n\n"},{"id":"A9du","level":2,"heading":"Environment Variable - Exists?","content":"<h3>Environment Variable - Exists?</h3>\n\n<div class=\"codebox\">from os import environ\n\n= '<var>name</var>' in environ</div>\n\n\nReturns true if the environment variable <var>name</var> is set.\n\n\nExample:\n\n<div class=\"codebox\">from os import environ\n\nif 'PYTHONPATH' in environ:\n\tprint ('PYTHONPATH exists.')\nelse:\n\tprint ('PYTHONPATH does not exist.')</div>\n\n\n\n"},{"id":"Pp4H","level":2,"heading":"Environment Variable - Get","content":"<h3>Environment Variable - Get</h3>\n\n<div class=\"codebox\">= environ['<var>name</var>']</div>\n\nUsage:\n\n<div class=\"codebox\">from os import environ\n\n= environ['<var>name</var>']          <span class=\"note\">#1</span></div>\n\n<div class=\"codebox\">= environ.get('<var>name</var>')      <span class=\"note\">#2</span></div>\n\n<div class=\"codebox\">= environ.get('<var>name</var>', <var>default_value</var>)</div>\n\n#1  <span class=\"dim\">-</span>  Raises <code>KeyError</code> if not found.\n\n#2  <span class=\"dim\">-</span>  Returns <code>None</code> if not found.\n\n\nReads the value of the environment variable.\n\n\nEquivalent To:\n\n<div class=\"codebox\">= os.getenv(<var>name</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\">from os import environ\n\nprint (environ['PYTHONPATH'])</div>\n\n\n\n"},{"id":"VpTC","level":2,"heading":"Environment Variable - Get All","content":"<h3>Environment Variable - Get All</h3>\n\n<div class=\"codebox\">from os import environ\n\n= environ.keys()</div>\n\n\nExample:\n\n<div class=\"codebox\">from os import environ\n\nfor <var>key</var> in sorted(environ.keys(), key = str.lower):\n\tprint(f'{<var>key</var>:&lt;24}  {environ[<var>key</var>]}')\n\nprint(f'{&quot;Count&quot;:&lt;24}  {len(environ.keys())}')</div>\n\n\n\n"},{"id":"PjVz","level":2,"heading":"Environment Variable - Set","content":"<h3>Environment Variable - Set</h3>\n\n<div class=\"codebox\">from os import environ\n\nenviron['<var>name</var>'] = <var>value</var></div>\n\n\n<code><var>value</var></code> must be a string.\n\n\n\n"},{"id":"vBVK","level":2,"heading":"Environment String - Expand","content":"<h3>Environment String - Expand</h3>\n\n<div class=\"codebox\">from os.path import expandvars\n\n= expandvars('<var>...</var> ${<var>VARIABLE_NAME</var>} <var>...</var>')</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>python_path</var> = expandvars('The python path is ${PYTHONPATH}')</div>\n\n\n\n"},{"id":"fzJF","level":1,"heading":"Parallelism","content":"<h1>Parallelism</h1>\n\n\n\n"},{"id":"bg3X","level":2,"heading":"Thread","content":"<h2>Thread</h2>\n\nThe smallest sequence of instructions that can be managed by the OS.\n\nGreat for IO bound operations.\nDo not use for CPU bound operations.\n\n\nEach Thread Has:\n\n\tRegisters\n\tStack\n\nThreads Share:\n\n\tCommon Memory\n\tResources\n\nLocal Variables\n\n\tStored on thread's stack\n\nThread Synchronization\n\n\tUse Lock\n\tUse Semaphore\n\tUse Queue\n\n\n\n"},{"id":"zw3N","level":3,"heading":"Thread - Basics","content":"<h3>Thread - Basics</h3>\n\n\n"},{"id":"uwmS","level":4,"heading":"Thread - Basic Thread","content":"<h4>Thread - Basic Thread</h4>\n\n<div class=\"codebox\">from threading import Thread</div>\n\nCreate:\n\n<div class=\"codebox\"><var>thread_1</var> = Thread(\n\t\ttarget = <var>worker_function</var>,\n\t\targs = (<var>worker_argument_1</var>,)</div>\n\nStart:\n\n<div class=\"codebox\"><var>thread_1</var>.start()</div>\n\nWait for Completion:\n\n<div class=\"codebox\"><var>thread_1</var>.join()</div>\n\n\n\n"},{"id":"uX8r","level":4,"heading":"Thread - Basic Thread Class","content":"<h4>Thread - Basic Thread Class</h4>\n\n<div class=\"codebox\">from threading import Thread</div>\n\nDefine:\n\n<div class=\"codebox\">class <var>ThreadClass</var>(Thread):\n\n\tdef run(self):\n\t\t<var>...</var></div>\n\nCreate:\n\n<div class=\"codebox\"><var>thread_1</var> = ThreadClass()</div>\n\nStart:\n\n<div class=\"codebox\"><var>thread_1</var>.start()</div>\n\nWait for Completion:\n\n<div class=\"codebox\"><var>thread_1</var>.join()</div>\n\n\n\n"},{"id":"90MJ","level":3,"heading":"Thread - Create","content":"<h3>Thread - Create</h3>\n\n\n\n"},{"id":"8SzR","level":4,"heading":"Thread - Create Thread","content":"<h4>Thread - Create Thread</h4>\n\n<div class=\"codebox\">from threading import Thread</div>\n\nCreate:\n\n<div class=\"codebox\"><var>thread_1</var> = Thread(\n\t\ttarget = <var>worker_function</var>,\n\t\targs = (<var>worker_argument_1</var>,)</div>\n\nCreate With Name:\n\n<div class=\"codebox\"><var>thread_1</var> = Thread(\n\t\tname = &quot;<var>thread name</var>&quot;,\n\t\t<var>...</var>)</div>\n\n\n\n"},{"id":"JTmV","level":4,"heading":"Thread - Create Thread Class","content":"<h4>Thread - Create Thread Class</h4>\n\n<div class=\"codebox\">from threading import Thread</div>\n\nDefine:\n\n<div class=\"codebox\">class <var>ThreadClass</var>(Thread):\t\t<span class=\"note\">#1</span>\n\n\tdef __init__(self):\n\t\tThread.__init__()\n\n\tdef run(self):\t\t\t\t<span class=\"note\">#2</span>\n\t\t<var>...</var></div>\n\nCreate:\n\n<div class=\"codebox\"><var>thread_1</var> = ThreadClass()</div>\n\n\n#1  -  Inherit from <code>Thread</code>\n\n#2  -  Override <code>run()</code>\n\n\n\n"},{"id":"tNWj","level":4,"heading":"Thread - Create Thread Class - With Arguments","content":"<h4>Thread - Create Thread Class - With Arguments</h4>\n\n<div class=\"codebox\">from threading import Thread</div>\n\nDefine:\n\n<div class=\"codebox\">class <var>WorkerClass</var>(Thread):\n\n\tdef __init__(self, <var>argument_1</var>, <var>...</var>):\n\t\tThread.__init__(self)\t\t<span class=\"note\">#1</span>\n\t\t<var>...</var></div>\n\nStart:\n\n<div class=\"codebox\"><var>worker_1</var> = WorkerClass(<var>argument_1</var>, <var>...</var>)</div>\n\n\n#1  -  Must call <code>Thread.__init__()</code>\n#1  -  Must Be First Line In <code>__init__</code> Method\n\n\n\n"},{"id":"XBnR","level":3,"heading":"Thread - Operations","content":"<h3>Thread - Operations</h3>\n\n\n\n"},{"id":"mGhy","level":4,"heading":"Thread - Start","content":"<h4>Thread - Start</h4>\n\n<div class=\"codebox\"><var>thread_1</var>.start()</div>\n\n\nStarts the execution of the thread.\nThe thread is initially stopped.\n\n\n\n"},{"id":"rZaQ","level":4,"heading":"Thread - Stop On Application Exit","content":"<h4>Thread - Stop On Application Exit</h4>\n\n<div class=\"codebox\"><var>thread_1</var>.daemon = True</div>\n\n\nStops execution when the parent or main thread terminate.\nMust be called before calling <code>.start()</code>.\n\n\n\n"},{"id":"eAVL","level":4,"heading":"Thread - Wait For Completion","content":"<h4>Thread - Wait For Completion</h4>\n\n<div class=\"codebox\"><var>thread_1</var>.join()</div>\n\nBlocks the current thread until <code><var>thread_1</var></code> completes.\n\n\n\n"},{"id":"zT9V","level":4,"heading":"Thread - Is Alive?","content":"<h4>Thread - Is Alive?</h4>\n\n<div class=\"codebox\">= <var>thread_1</var>.is_alive()</div>\n\nIs alive means it is actively running.\n<code>False</code> when either not started or is terminated.\n\n\n\n"},{"id":"UkHV","level":4,"heading":"Thread - Is Terminated?","content":"<h4>Thread - Is Terminated?</h4>\n\n<div class=\"codebox\">= not <var>thread_1</var>.is_alive()</div>\n\nWill be <code>True</code> after the thread terminates.\nMust call <code>.start()</code> first.\n\n\n\n"},{"id":"MPpD","level":2,"heading":"Process","content":"<h2>Process</h2>\n\nA running instance of a program.\n\nIt has:\n\n\tSystem Resources\n\tAssigned Memory Space\n\tSecurity Attributes\n\tProcess State\n\nEach Process Has:\n\n\tIt's Own GIL\n\tSelf Contained Memory\n\nProcesses can be paused or terminated.\n\nProcesses have a big memory footprint.\nContext switch between processes is expensive.\n\n\n"},{"id":"fZ5j","level":3,"heading":"Process - Basics","content":"<h3>Process - Basics</h3>\n\n\n"},{"id":"yNC8","level":4,"heading":"Process - Basic Process","content":"<h4>Process - Basic Process</h4>\n\n<div class=\"codebox\">from processing import Process</div>\n\nCreate:\n\n<div class=\"codebox\"><var>process_1</var> = Process(\n\t\ttarget = <var>worker_function</var>,\n\t\targs = (<var>worker_argument_1</var>,)</div>\n\nStart:\n\n<div class=\"codebox\"><var>process_1</var>.start()</div>\n\nWait for Completion:\n\n<div class=\"codebox\"><var>process_1</var>.join()</div>\n\n\n\n"},{"id":"cZu3","level":4,"heading":"Process - Basic Process Class","content":"<h4>Process - Basic Process Class</h4>\n\n<div class=\"codebox\">from processing import Process</div>\n\nDefine:\n\n<div class=\"codebox\">class <var>ProcessClass</var>(Process):\n\n\tdef run(self):\n\t\t<var>...</var></div>\n\nCreate:\n\n<div class=\"codebox\"><var>process_1</var> = ProcessClass()</div>\n\nStart:\n\n<div class=\"codebox\"><var>process_1</var>.start()</div>\n\nWait for Completion:\n\n<div class=\"codebox\"><var>process_1</var>.join()</div>\n\n\n\n"},{"id":"rdPe","level":3,"heading":"Process - Create","content":"<h3>Process - Create</h3>\n\n\n"},{"id":"nfBx","level":4,"heading":"Process - Create Process","content":"<h4>Process - Create Process</h4>\n\n<div class=\"codebox\">from processing import Process</div>\n\nCreate:\n\n<div class=\"codebox\"><var>process_1</var> = Process(\n\t\ttarget = <var>worker_function</var>,\n\t\targs = (<var>worker_argument_1</var>,)</div>\n\nCreate With Name:\n\n<div class=\"codebox\"><var>process_1</var> = Process(\n\t\tname = &quot;<var>process name</var>&quot;,\n\t\t<var>...</var>)</div>\n\n\n\n"},{"id":"vw5V","level":4,"heading":"Process - Create Process Class","content":"<h4>Process - Create Process Class</h4>\n\n<div class=\"codebox\">from processing import Process</div>\n\nDefine: \n\n<div class=\"codebox\">class <var>ProcessClass</var>(Process):\t<span class=\"note\">#1</span>\n\n\tdef run(self):\t\t\t\t<span class=\"note\">#2</span>\n\t\t<var>...</var></div>\n\nCreate:\n\n<div class=\"codebox\"><var>process_1</var> = ProcessClass()</div>\n\n\n#1  -  Inherit from <code>Process</code>\n\n#2  -  Override <code>run()</code>\n\n\n\n"},{"id":"Pqua","level":4,"heading":"Process - Create Process Class - With Arguments","content":"<h4>Process - Create Process Class - With Arguments</h4>\n\n<div class=\"codebox\">from processing import Process</div>\n\nDefine:\n\n<div class=\"codebox\">class <var>WorkerClass</var>(Process):\n\n\tdef __init__(self, <var>argument_1</var>, <var>...</var>):\n\t\tProcess.__init__(self)\t\t\t<span class=\"note\">#1</span>\n\t\t<var>...</var></div>\n\nStart:\n\n<div class=\"codebox\"><var>worker_1</var> = WorkerClass(<var>argument_1</var>, <var>...</var>)</div>\n\n\n#1  -  Must call <code>Process.__init__()</code>\n#1  -  Must Be First Line In <code>__init__</code> Method\n\n\n\n"},{"id":"A8hH","level":3,"heading":"Process - Operations","content":"<h3>Process - Operations</h3>\n\n\n\n"},{"id":"9Ydg","level":4,"heading":"Process - Start","content":"<h4>Process - Start</h4>\n\n<div class=\"codebox\"><var>process_1</var>.start()</div>\n\n\nStarts the execution of the process.\nThe process is initially stopped.\n\n\n\n"},{"id":"9Gne","level":4,"heading":"Process - Stop on Application Exit","content":"<h4>Process - Stop on Application Exit</h4>\n\n<div class=\"codebox\"><var>process_1</var>.daemon = True</div>\n\n\nStops execution when the parent or main process terminate.\nMust be called before calling <code>.start()</code>.\n\n\n"},{"id":"Awen","level":4,"heading":"Process - Terminate","content":"<h4>Process - Terminate</h4>\n\n<div class=\"codebox\"><var>process_1</var>.terminate()</div>\n\nMay cause issues such as putting the system into an inconsistent state.\nWill not run any finally clauses or exit handlers. Its Dead!\n\nPrefer something like a poison pill.\n\n\n\n"},{"id":"EZhy","level":4,"heading":"Process - Wait For Completion","content":"<h4>Process - Wait For Completion</h4>\n\n<div class=\"codebox\"><var>process_1</var>.join()</div>\n\nBlocks the current process until <code><var>process_1</var></code> completes.\n\n\n\n"},{"id":"ffTz","level":4,"heading":"Process - Get Exit Code","content":"<h4>Process - Get Exit Code</h4>\n\n<div class=\"codebox\">= <var>process_1</var>.exitcode</div>\n\nValues:\n\n\t0 -     No Error\n\t1 -     Error\n\t&lt; 0 -       Terminated.\n\t\t\tTerminating Signal code = .exitcode * -1\n\n\n\n"},{"id":"Scqv","level":4,"heading":"Process - Is Alive?","content":"<h4>Process - Is Alive?</h4>\n\n<div class=\"codebox\">= <var>process_1</var>.is_alive()</div>\n\nIs alive means it is actively running.\n<code>False</code> when either not started or is terminated.\n\n\n\n"},{"id":"88KQ","level":4,"heading":"Process - Is Terminated?","content":"<h4>Process - Is Terminated?</h4>\n\n<div class=\"codebox\">= not <var>process_1</var>.is_alive()</div>\n\nWill be <code>True</code> after the process terminates.\nMust call <code>.start()</code> first.\n\n\n\n"},{"id":"nA08","level":2,"heading":"Process Pool","content":"<h2>Process Pool</h2>\n\n\n\n"},{"id":"xchZ","level":3,"heading":"Pool - Basics","content":"<h3>Pool - Basics</h3>\n\n<div class=\"codebox\">from multiprocessing import Pool</div>\n\nCreate:\n\n<div class=\"codebox\"><var>pool_1</var> = Pool(<var>process_count</var>)</div>\n\n\nRun Single Task:\n\n<div class=\"codebox\"><var>result</var> = <var>pool_1</var>.apply(<var>worker_function</var>, <var>arguments</var>)</div>\n\nRun Single Task Asynchronously:\n\n<div class=\"codebox\"><var>async_result</var> = <var>pool_1</var>.apply_async(<var>worker_function</var>, <var>arguments</var>)</div>\n\nRun Series of Task:\n\n<div class=\"codebox\"><var>results</var> = <var>pool_1</var>.map(<var>worker_function</var>, <var>list_of_inputs</var>)</div>\n\nRun Series of Tasks Asynchronously:\n\n<div class=\"codebox\"><var>async_result</var> = <var>pool_1</var>.map_async(<var>worker_function</var>, <var>list_of_inputs</var>)</div>\n\n\nClose:\n\n<div class=\"codebox\"><var>pool_1</var>.close()</div>\n\nWait Until All Complete:\n\n<div class=\"codebox\"><var>pool_1</var>.join()</div>\n\n\n\n"},{"id":"6h2V","level":3,"heading":"Pool - Create","content":"<h3>Pool - Create</h3>\n\n<div class=\"codebox\">from multiprocessing import Pool</div>\n\nCreate (Processes = Number of CPUs):\n\n<div class=\"codebox\"><var>pool_1</var> = Pool()</div>\n\nCreate:\n\n<div class=\"codebox\"><var>pool_1</var> = Pool(<var>process_count</var>)</div>\n\nCreate All Options:\n\n<div class=\"codebox\"><var>pool_1</var> = Pool(\n\t\tprocesses = <var>process_count</var>,\n\t\tinitializen = <var>initializing_function</var>,\n\t\tinitargs = <var>initial_arguments</var>,\n\t\tmaxtasksperchild = <var>number_of_tasks</var>)</div>\n\n\nBy default processes live as long as the pool is alive.\nNote the initial arguments do not need to be picklable!\n\n\n\n"},{"id":"MY3m","level":3,"heading":"Pool - Operations","content":"<h3>Pool - Operations</h3>\n\n\n\n"},{"id":"RyVD","level":4,"heading":"Pool - Close","content":"<h4>Pool - Close</h4>\n\n<div class=\"codebox\"><var>pool_1</var>.close()</div>\n\n\nPrevents any new tasks being added to the pool.\n\n\n\n"},{"id":"quCp","level":4,"heading":"Pool - Perform Single Operation","content":"<h4>Pool - Perform Single Operation</h4>\n\n<div class=\"codebox\">= <var>pool_1</var>.apply(<var>worker_function</var>, <var>args</var>)</div>\n\n<div class=\"codebox\">= <var>pool_1</var>.apply(\n\t\tfunc = <var>worker_function</var>,\n\t\targs = <var>args</var>,\n\t\tkwargs = <var>kwargs</var>)</div>\n\n\nReturns: Result\n\n\nPerforms <var>worker_function</var> on <var>args</var>.\n<code>apply()</code> blocks until the worker function is done.\n\n\n\n"},{"id":"uQfU","level":4,"heading":"Pool - Perform Single Operation Asynchronously","content":"<h4>Pool - Perform Single Operation Asynchronously</h4>\n\n<div class=\"codebox\">= <var>pool_1</var>.apply_async(\n\t\t<var>worker_function</var>,\n\t\t<var>list_of_inputs</var>)</div>\n\n<div class=\"codebox\">= <var>pool_1</var>.apply_async(\n\t\tfunc = <var>worker_function</var>,\n\t\targs = <var>args</var>,\n\t\tkwargs = <var>kwargs</var>,\n\t\tcallback = <var>callback_function</var>\n\t\terror_callback = <var>error_handler</var>)</div>\n\n\nReturns: <code>AsyncResult</code>\n\n\n<code>apply_async()</code> does not block.\n\n\n\n"},{"id":"fs8Z","level":4,"heading":"Pool - Get Single Async Result","content":"<h4>Pool - Get Single Async Result</h4>\n\n<div class=\"codebox\">= <var>async_result</var>.get()</div>\n\n<div class=\"codebox\">= <var>async_result</var>.get(<var>timeout_seconds</var>)</div>\n\n\nReturns: The Actual Result\n\n\n<code>.get()</code> blocks until all processes are finished.\n\n\n\n"},{"id":"gMZa","level":4,"heading":"Pool - Perform Multiple Operations","content":"<h4>Pool - Perform Multiple Operations</h4>\n\n<div class=\"codebox\"><var>list_of_result</var> = <var>pool_1</var>.map(<var>worker_function</var>, <var>list_of_arguments</var>)</div>\n\n\nPerforms <var>worker_function</var> on all poll processes\nThis call blocks until all results are in.\n<var>worker_function</var> should take a single parameter which will be given from <code><var>list_of_arguments</var></code>.\n\n\n\n"},{"id":"H9YY","level":4,"heading":"Pool - Perform Multiple Operations Asynchronously","content":"<h4>Pool - Perform Multiple Operations Asynchronously</h4>\n\n<div class=\"codebox\">= <var>pool_1</var>.map_async(\n\t\t<var>worker_function</var>,\n\t\t<var>list_of_inputs</var>)</div>\n\n<div class=\"codebox\">= <var>pool_1</var>.map_async(\n\t\t<var>worker_function</var>,\n\t\t<var>list_of_inputs</var>,\n\t\tcallback = <var>callback_function</var>,\n\t\terror_callback = <var>error_callback_function</var>)</div>\n\n\nReturns: <code>AsyncResult</code>\n\n\n<code>map_async() does not block.\n\n\n\n</code>#### Pool - Get Map Async Results\n\n<div class=\"codebox\">= <var>async_result</var>.get()</div>\n\n<div class=\"codebox\">= <var>async_result</var>.get(<var>timeout_seconds</var>)</div>\n\n\nReturns: List of Actual Results\n\n\n<code>.get()</code> blocks until all processes are finished.\n\n\n\n"},{"id":"tKmB","level":4,"heading":"Pool - Terminate","content":"<h4>Pool - Terminate</h4>\n\n<div class=\"codebox\"><var>pool_1</var>.terminate()</div> \n\n\n\n"},{"id":"DYPv","level":4,"heading":"Pool - Wait","content":"<h4>Pool - Wait</h4>\n\n<div class=\"codebox\"><var>pool_1</var>.join()</div>\n\n\nBlocks until all pool worker processes exit.\nCan only be called after .close() or .terminate()\n\n\n\n"},{"id":"BA0x","level":2,"heading":"Pool Executor","content":"<h2>Pool Executor</h2>\n\nAbstract Class:\n\n<div class=\"codebox\">Executor</div>\n\nConcrete Classes:\n\n<div class=\"codebox\">concurrent.futures.ThreadPoolExecutor</div>\n\n<div class=\"codebox\">concurrent.futures.ProcessPoolExecutor</div>\n\n\n\n"},{"id":"DjeR","level":3,"heading":"Pool Executor - Create","content":"<h3>Pool Executor - Create</h3>\n\n\n"},{"id":"eGPX","level":4,"heading":"ProcessPoolExecutor - Create","content":"<h4>ProcessPoolExecutor - Create</h4>\n\n<div class=\"codebox\">from concurrent.futures import ProcessPoolExecutor</div>\n\n<div class=\"codebox\">= ProcessPoolExecutor()</div>\n\n<div class=\"codebox\">= ProcessPoolExecutor (\n\tmax_workers = <var>worker_count</var>)</div>\n\n\nmax_workers default = # computer cores * 5\n\n\n\n"},{"id":"TeBr","level":4,"heading":"ProcessPoolExecutor - Create Using With","content":"<h4>ProcessPoolExecutor - Create Using With</h4>\n\n<div class=\"codebox\">from concurrent.futures import ProcessPoolExecutor</div>\n\n<div class=\"codebox\">with ProcessPoolExecutor() as <var>executor_1</var>\n\t<var>...</var></div>\n\n\n\n"},{"id":"HvG2","level":4,"heading":"ThreadPoolExecutor - Create","content":"<h4>ThreadPoolExecutor - Create</h4>\n\n<div class=\"codebox\">from concurrent.futures import ThreadPoolExecutor</div>\n\n<div class=\"codebox\">= ThreadPoolExecutor()</div>\n\n<div class=\"codebox\">= ThreadPoolExecutor (\n\tmax_workers = <var>worker_count</var>,\n\tthread_name_prefix = '<var>prefix_name</var>')</div>\n\n\nmax_workers default = # computer cores * 5\n\n\n\n"},{"id":"erF7","level":4,"heading":"ThreadPoolExecutor - Create Using With","content":"<h4>ThreadPoolExecutor - Create Using With</h4>\n\n<div class=\"codebox\">from concurrent.futures import ThreadPoolExecutor</div>\n\n<div class=\"codebox\">with ThreadPoolExecutor() as <var>executor_1</var>\n\t<var>...</var></div>\n\n\n\n"},{"id":"veRq","level":3,"heading":"Pool Executor - Operations","content":"<h3>Pool Executor - Operations</h3>\n\n\n\n"},{"id":"s4t4","level":4,"heading":"Executor - Submit Task","content":"<h4>Executor - Submit Task</h4>\n\n<div class=\"codebox\"><var>future_1</var> = <var>executor_1</var>.submit(<var>worker_function</var>, *args, **kwargs)</div>\n\n\nReturns: <code>concurrent.futures.Future</code>\n\n\nSubmits a single task.\n<code>submit()</code> does not block.\n\nFor ProcessPoolExecutor, make sure the worker function and arguments are pickleable!\n\n\n\n"},{"id":"PDzf","level":4,"heading":"Executor - Submit Task Map","content":"<h4>Executor - Submit Task Map</h4>\n\n<div class=\"codebox\"><var>list_of_results</var> = <var>executor_1</var>.map(<var>worker_function</var>, <var>list_of_arguments</var>)</div>\n\n<div class=\"codebox\"><var>list_of_results</var> = <var>executor_1</var>.map (\n\t\tfunc = <var>worker_function</var>,\n\t\titerables = <var>list_of_arguments</var>,\n\t\ttimeout = <var>timeout_seconds</var>,\n\t\tchunksize = 1)</div>\n\n\nReturns: <code>result_iterator</code> (an iterator)\n\n\nSubmit multiple requests to the task.\n<code>map()</code> does not block.\n\nFor ProcessPoolExecutor, make sure the worker function and arguments are pickleable!\n\n\n\n"},{"id":"FuGU","level":4,"heading":"Executor - Shutdown","content":"<h4>Executor - Shutdown</h4>\n\n<div class=\"codebox\"><var>executor_1</var>.shutdown()</div>\n\nBlock Until Complete:\n\n<div class=\"codebox\"><var>executor_1</var>.shutdown(wait = True)</div>\n\n\n\n"},{"id":"2gHW","level":2,"heading":"Concurrent Future","content":"<h2>Concurrent Future</h2>\nAn object that is a proxy for a future result that has yet to be computed.\n\n<div class=\"codebox\">concurrent.futures.Future</div>\n\nFutures can raise exceptions.\n\n\n\n"},{"id":"PngD","level":3,"heading":"Future - Cancel","content":"<h4>Future - Cancel</h4>\n\n<div class=\"codebox\">= <var>future_1</var>.cancel()</div>\n\n\nReturns: <code>bool</code>\n\n\nAttempts to cancel a request.\nReturns <code>True</code> if successful.\n\n\n\n"},{"id":"SNu3","level":3,"heading":"Future - Is Complete?","content":"<h4>Future - Is Complete?</h4>\n\n<div class=\"codebox\">= <var>future_1</var>.done()</div>\n\n\n\n"},{"id":"pL7u","level":3,"heading":"Future - Get Value","content":"<h4>Future - Get Value</h4>\n\n<div class=\"codebox\">= <var>future_1</var>.result()</div>\n\n\n<code>result()</code> blocks until the result is available.\n\n\n\n"},{"id":"UqaB","level":3,"heading":"Future - Get With Exception Handling","content":"<h4>Future - Get With Exception Handling</h4>\n\n<div class=\"codebox\">try:\n\t<var>result</var> = <var>future_1</var>.result()\nexcept Exception as <var>exception</var>:\n\t<var>...</var></div>\n\n\nExceptions are returned through the future itself.\n\n\n\n"},{"id":"3pC0","level":3,"heading":"Future - Get Exception","content":"<h4>Future - Get Exception</h4>\n\n<div class=\"codebox\">= <var>future_1</var>.exception()</div>\n\n<div class=\"codebox\">= <var>future_1</var>.exception(timeout = <var>timeout_seconds</var>)</div>\n\n<code>exception()</code> blocks until a result is available unless a timeout is specified.\n\n\n\n"},{"id":"q5ku","level":3,"heading":"Future - Add Callback Function","content":"<h4>Future - Add Callback Function</h4>\n\n<div class=\"codebox\">= <var>future_1</var>.add_done_callback(<var>callback_function</var>)</div>\n\n\nExceptions are not returned the the callback function.\n\n\n\n"},{"id":"Z99x","level":3,"heading":"Futures - Wait Until All Complete","content":"<h4>Futures - Wait Until All Complete</h4>\n\n<div class=\"codebox\">from concurrent.futures import wait\nfrom concurrent.futures import ALL_COMPLETE</div>\n\n<div class=\"codebox\">wait(<var>futures</var>)</div>\n\n<div class=\"codebox\">wait(<var>futures</var>, timeout = <var>timeout_seconds</var>, return_when = ALL_COMPLETE)</div>\n\n<var>futures</var> is a list of futures to wait for.\nBlocks until all futures are complete.\n\n\n\n"},{"id":"BY9K","level":3,"heading":"Futures - Wait Until First Complete","content":"<h4>Futures - Wait Until First Complete</h4>\n\n<div class=\"codebox\">from concurrent.futures import wait\nfrom concurrent.futures import FIRST_COMPLETE</div>\n\n<div class=\"codebox\">wait(<var>futures</var>, timeout = <var>timeout_seconds</var>, return_when = FIRST_COMPLETE)</div>\n\n\n<var>futures</var> is a list of futures to wait for.\nBlocks until the first future completes.\n\n\n\n"},{"id":"AMuM","level":3,"heading":"Futures - Process As Completed","content":"<h4>Futures - Process As Completed</h4>\n\n<div class=\"codebox\">from concurrent.futures import as_completed</div>\n\n<div class=\"codebox\">= as_completed(<var>futures</var>)</div>\n\n<div class=\"codebox\">= as_completed(<var>futures</var>, timeout = <var>timeout_seconds</var>)</div>\n\n\nReturns: iterable\n\n\n\n"},{"id":"DQft","level":2,"heading":"Pipe","content":"<h2>Pipe</h2>\n\nPipes allow communication between processes.\nPipes are bidirectional by default.\nContains no locks and no guarantees.\nIf two processes write to the same side of the queue, data can get corrupt.\n\n\n\n"},{"id":"qMyu","level":3,"heading":"Pipe - Create","content":"<h3>Pipe - Create</h3>\n\n\n\n"},{"id":"cLqh","level":4,"heading":"Pipe - Create - Bidirectional (Default)","content":"<h4>Pipe - Create - Bidirectional (Default)</h4>\n\n<div class=\"codebox\">from multiprocessing import Pipe</div>\n\n<div class=\"codebox\"><var>connection_1</var>, <var>connection_2</var> = Pipe()</div>\n\n\nPass <code><var>connection_1</var></code>, <code><var>connection_2</var></code> to the target processes.\nEnsure each process should send on one connection and receive on the other.\n\nExample:\n\n\tProcess 1 should send on  <code><var>connection_1</var></code>, and receive on <code><var>connection_2</var></code>.\n\tProcess 2 should send on  <code><var>connection_2</var></code>, and receive on <code><var>connection_1</var></code>.\n\n\n\n"},{"id":"yE7r","level":4,"heading":"Pipe - Create - Unidirectional","content":"<h4>Pipe - Create - Unidirectional</h4>\n\n<div class=\"codebox\">from multiprocessing import Pipe</div>\n\n<div class=\"codebox\"><var>connection_receive</var>, <var>connection_send</var> = Pipe(False)</div>\n\n\nPass <code><var>connection_receive</var></code>, <code><var>connection_send</var></code> to the target processes.\n\n\n\n"},{"id":"zx1k","level":3,"heading":"Pipe - Operations","content":"<h3>Pipe - Operations</h3>\n\n\n\n"},{"id":"BnwB","level":4,"heading":"Pipe - Receive Data","content":"<h4>Pipe - Receive Data</h4>\n\n<div class=\"codebox\">= <var>connection_1</var>.recv()</div>\n\n\nBlocks until a message is received.\n\n\n\n"},{"id":"WGnT","level":4,"heading":"Pipe - Send Data","content":"<h4>Pipe - Send Data</h4>\n\n<div class=\"codebox\"><var>connection_1</var>.send(<var>data</var>)</div>\n\n\n\n"},{"id":"07rE","level":2,"heading":"Queues for Multitasking","content":"<h2>Queues for Multitasking</h2>\n\nThe preferred way to communicate between threads or processes.\n\n\n\n"},{"id":"hxRX","level":3,"heading":"Queue - Create","content":"<h3>Queue - Create</h3>\n\n"},{"id":"uwq7","level":4,"heading":"Thread Queue - Create","content":"<h4>Thread Queue - Create</h4>\n\n<div class=\"codebox\">from queue import Queue</div>\n\n<div class=\"codebox\">= Queue()</div>\n\n<div class=\"codebox\">= Queue(<var>max_size</var>)</div>\n\n\n\n"},{"id":"nPef","level":4,"heading":"Process Queue - Create","content":"<h4>Process Queue - Create</h4>\n\n<div class=\"codebox\">from multiprocessing import Queue</div>\n\n<div class=\"codebox\">= Queue()</div>\n\n<div class=\"codebox\">= Queue(<var>max_size</var>)</div>\n\n\n\n"},{"id":"VEBe","level":3,"heading":"Queue - Operations","content":"<h3>Queue - Operations</h3>\n\n\n\n"},{"id":"pQan","level":4,"heading":"Queue - Add","content":"<h4>Queue - Add</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.put(<var>value_1</var>)</div>\n\n<div class=\"codebox\"><var>queue_1</var>.put(\n\t\tobj = <var>value</var>\n\t\tblock = <var>true_or_false</var>,\n\t\ttimeout = <var>timeout_seconds</var>)</div>\n\n\n\n"},{"id":"Lf1V","level":4,"heading":"Queue - Get Next","content":"<h4>Queue - Get Next</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.get()                           <span class=\"note\">#1</span></div>\n\n<div class=\"codebox\">= <var>queue_1</var>.get(\n\t\tblock = <var>true_or_false</var>,\n\t\ttimeout = <var>timeout_seconds</var>)</div>\n\nor\n\n<div class=\"codebox\">= <var>queue_1</var>.get_nowait()                    <span class=\"note\">#2</span></div>\n\n\nGet next item.\n\n\n#1  <span class=\"dim\">-</span>  If no items, waits until one becomes available.\n\n#2  <span class=\"dim\">-</span>  If no items, raises <code>QueueEmpty</code>.\n\n\n\n"},{"id":"wgYt","level":4,"heading":"Queue - Is Empty?","content":"<h4>Queue - Is Empty?</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.empty()</div>\n\nReturns: <code>bool</code>\n\nReturns <code>True</code> if empty.\n\n\n\n"},{"id":"bJa1","level":4,"heading":"Queue - Is Full?","content":"<h4>Queue - Is Full?</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.full()</div>\n\nReturns: <code>bool</code>\n\nReturns <code>True</code> if the queue is full and can't take any more items.\n\n\n\n"},{"id":"uAJG","level":4,"heading":"Queue - Maximum Size","content":"<h4>Queue - Maximum Size</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.maxsize</div>\n\n\nReturns the maximum allowed size of the queue.\nReturns 0 if no maximum set.\n\n\n\n"},{"id":"qCsV","level":4,"heading":"Queue - Size","content":"<h4>Queue - Size</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.qsize()</div>\n\nReturns the number of items in the queue.\n\n\n\n"},{"id":"b2u4","level":4,"heading":"Queue - Wait Until Empty","content":"<h4>Queue - Wait Until Empty</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.join()</div>\n\n\nBlocks until the queue is empty.\n\n\n\n"},{"id":"Gdvh","level":4,"heading":"Queue - Wait Until Task Complete","content":"<h4>Queue - Wait Until Task Complete</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.task_done()</div>\n\n\nBlocks until the queue is empty.\nFor thread queues only.\n\n\n\n"},{"id":"Mb1k","level":2,"heading":"Event","content":"<h2>Event</h2>\n\nPrefer Queues\n\nEvent is basically a listener that notifies other classes when a single event has occurred.\nThe server sets or notifies the go condition by setting <code>.set()</code>.\n\nListeners will block while event is <code>False</code>.\nListeners will go when the event is <code>True</code>.\n\n\n\n"},{"id":"kv8Z","level":3,"heading":"Event - Basics","content":"<h3>Event - Basics</h3>\n\n\n"},{"id":"S1hB","level":4,"heading":"Thread Event - Basics","content":"<h4>Thread Event - Basics</h4>\n\n<div class=\"codebox\">from threading import Event</div>\n\n<div class=\"codebox\"><var>event_1</var> = Event()</div>\n\nServer - Notify:\n\n<div class=\"codebox\"><var>event_1</var>.set()</div>\n\nServer - Clear:\n\n<div class=\"codebox\"><var>event_1</var>.clear()</div>\n\nListener - Wait for Event / Block:\n\n<div class=\"codebox\"><var>event_1</var>.wait()</div>\n\n\n\n"},{"id":"gRvR","level":4,"heading":"Process Event - Basics","content":"<h4>Process Event - Basics</h4>\n\n<div class=\"codebox\">from multiprocessing import Event</div>\n\n<div class=\"codebox\"><var>event_1</var> = Event()</div>\n\nServer - Notify:\n\n<div class=\"codebox\"><var>event_1</var>.set()</div>\n\nServer - Clear:\n\n<div class=\"codebox\"><var>event_1</var>.clear()</div>\n\nListener - Wait for Event / Block:\n\n<div class=\"codebox\"><var>event_1</var>.wait()</div>\n\n\n\n"},{"id":"vzSV","level":3,"heading":"Event - Create","content":"<h3>Event - Create</h3>\n\n\n\n"},{"id":"dx1h","level":4,"heading":"Event - Create Thread Event","content":"<h4>Event - Create Thread Event</h4>\n\n<div class=\"codebox\">from threading import Event</div>\n\n<div class=\"codebox\">= Event()</div>\n\n\n\n"},{"id":"0v80","level":4,"heading":"Event - Create Process Event","content":"<h4>Event - Create Process Event</h4>\n\n<div class=\"codebox\">from multiprocessing import Event</div>\n\n<div class=\"codebox\">= Event()</div>\n\n\n\n"},{"id":"xcne","level":3,"heading":"Event - Operations","content":"<h3>Event - Operations</h3>\n\n\n\n"},{"id":"A9Qb","level":4,"heading":"Event - Server - Notify","content":"<h4>Event - Server - Notify</h4>\n\n<div class=\"codebox\"><var>event_1</var>.set()</div>\n\n\nNotifies listeners that the event happened.\n\n\n\n"},{"id":"FSb8","level":4,"heading":"Event - Server - Clear","content":"<h4>Event - Server - Clear</h4>\n\n<div class=\"codebox\"><var>event_1</var>.clear()</div>\n\n\n\n"},{"id":"F317","level":4,"heading":"Event - Listener - Wait for Event","content":"<h4>Event - Listener - Wait for Event</h4>\n\n<div class=\"codebox\"><var>event_1</var>.wait()</div>\n\nBlocks until the event happens.\n\n\n\n"},{"id":"CpeT","level":2,"heading":"Lock","content":"<h2>Lock</h2>\n\n\n\n"},{"id":"f4YD","level":3,"heading":"Lock - Lock States","content":"<h3>Lock - Lock States</h3>\n\n\tLocked\n\tUnlocked\n\n\n\n"},{"id":"QyQG","level":3,"heading":"Lock - When Not Needed","content":"<h3>Lock - When Not Needed</h3>\n\nFor atomic operations...\n\n\tAssigning a simple value\n\tGetting a dictionary or list item.\n\tAdding an item to a dictionary or list.\n\n\n\n"},{"id":"hVrj","level":3,"heading":"Lock - Basics","content":"<h3>Lock - Basics</h3>\n\n\n\n"},{"id":"Tw7r","level":4,"heading":"Lock - Thread Lock - Basics","content":"<h4>Lock - Thread Lock - Basics</h4>\n\n<div class=\"codebox\">from threading import Lock</div>\n\nCreate:\n\n<div class=\"codebox\"><var>lock_1</var> = Lock()</div>\n\nUse:\n\n<div class=\"codebox\"><var>lock_1</var>.acquire()\n\n<var>...</var>\n\n<var>lock_1</var>.release()</div>\n\n\n\n"},{"id":"xXnb","level":4,"heading":"Lock - Thread Lock - Basics Using With","content":"<h4>Lock - Thread Lock - Basics Using With</h4>\n\n<div class=\"codebox\">from threading import Lock</div>\n\nCreate and Use:\n\n<div class=\"codebox\">with Lock() as <var>lock_1</var>:\n\n\t<var>...</var></div>\n\nAutomatically acquires and releases the lock.\n\n\n\n"},{"id":"rzn7","level":4,"heading":"Lock - Process Lock - Basics","content":"<h4>Lock - Process Lock - Basics</h4>\n\n<div class=\"codebox\">from multiprocessing import Lock</div>\n\nCreate:\n\n<div class=\"codebox\"><var>lock_1</var> = Lock()</div>\n\nUse:\n\n<div class=\"codebox\"><var>lock_1</var>.acquire()\n\n<var>...</var>\n\n<var>lock_1</var>.release()</div>\n\n\n\n"},{"id":"66B0","level":4,"heading":"Lock - Process Lock - Basics Using With","content":"<h4>Lock - Process Lock - Basics Using With</h4>\n\n<div class=\"codebox\">from threading import Lock</div>\n\nCreate and Use:\n\n<div class=\"codebox\">with Lock() as <var>lock_1</var>:\n\n\t<var>...</var></div>\n\nAutomatically acquires and releases the lock.\n\n\n\n"},{"id":"YRWp","level":3,"heading":"Lock - Create","content":"<h3>Lock - Create</h3>\n\n\n\n"},{"id":"t4kh","level":4,"heading":"Thread Lock - Create","content":"<h4>Thread Lock - Create</h4>\n\n<div class=\"codebox\">from threading import Lock</div>\n\n<div class=\"codebox\">=Lock()</div>\n\n\n\n"},{"id":"nUET","level":4,"heading":"Thread Lock - Create Reentrant Lock / RLock","content":"<h4>Thread Lock - Create Reentrant Lock / RLock</h4>\n\n<div class=\"codebox\">from threading import RLock</div>\n\n<div class=\"codebox\">= RLock()</div>\n\n\nAllows a thread to call acquire on a lock they have already acquired.\nWith <code>Lock</code> this would block and the thread would be deadlocked.\n\n\n\n"},{"id":"sKJ5","level":4,"heading":"Process Lock - Create","content":"<h4>Process Lock - Create</h4>\n\n<div class=\"codebox\">from multiprocessing import Lock</div>\n\n<div class=\"codebox\">= Lock()</div>\n\n\n\n"},{"id":"6GBy","level":4,"heading":"Process Lock - Create Reentrant Lock / RLock","content":"<h4>Process Lock - Create Reentrant Lock / RLock</h4>\n\n<div class=\"codebox\">from multiprocessing import RLock</div>\n\n<div class=\"codebox\">= RLock()</div>\n\n\nAllows a process to call acquire on a lock they have already acquired.\nWith <code>Lock</code> this would block and the process would be deadlocked.\n\n\n\n"},{"id":"9vCe","level":3,"heading":"Lock - Operations","content":"<h3>Lock - Operations</h3>\n\n\n\n"},{"id":"M3Y4","level":4,"heading":"Lock - Acquire","content":"<h4>Lock - Acquire</h4>\n\nAcquire - Blocking:\n\n<div class=\"codebox\"><var>lock_1</var>.acquire()</div>\n\nAcquire - Non-blocking:\n\n<div class=\"codebox\"><var>lock_1</var>.acquire(False)</div>\n\n<div class=\"codebox\">if <var>lock_1</var>.acquire(False):\n\t<span class=\"note\"># Lock acquired.</span>\n\t<var>...</var>\nelse:\n\t<span class=\"note\"># Did not acquire lock</span>\n\t<var>...</var></div>\n\n\n\n"},{"id":"uGA6","level":4,"heading":"Lock - Release","content":"<h4>Lock - Release</h4>\n\n<div class=\"codebox\"><var>lock_1</var>.release()</div>\n\n\nOnly the locking thread or process can unlock a lock.\n\n\n\n"},{"id":"9MXf","level":4,"heading":"Lock - Is Locked?","content":"<h4>Lock - Is Locked?</h4>\n\n<div class=\"codebox\">= <var>lock_1</var>.locked()</div>\n\n\n\n"},{"id":"LSGb","level":4,"heading":"Lock - With","content":"<h4>Lock - With</h4>\n\n<div class=\"codebox\">with Lock() as <var>lock_1</var>:\n\n\t<var>...</var></div>\n\nAutomatically acquires and releases the lock.\n\n\n\n"},{"id":"b1m7","level":2,"heading":"Semaphore","content":"<h2>Semaphore</h2>\n\n\n\n"},{"id":"j8GX","level":3,"heading":"Semaphore - Basics","content":"<h3>Semaphore - Basics</h3>\n\n\n"},{"id":"U3E0","level":4,"heading":"Thread Semaphore - Basics","content":"<h4>Thread Semaphore - Basics</h4>\n\n<div class=\"codebox\">from threading import Semaphore</div>\n\nCreate With 1 Lock:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore()</div>\n\nCreate With <code><var>lock_count</var></code> Locks:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore(<var>lock_count</var>)</div>\n\nUse:\n\n<div class=\"codebox\"><var>semaphore_1</var>.acquire()\n\n<var>...</var>\n\n<var>semaphore_1</var>.release()</div>\n\n\nAcquire decrements the counter.\nThe semaphore will never let the counter go below 0.\nAcquiring a counter at 0 blocks the thread until the counter increases.\n\n\n\n"},{"id":"XYTy","level":4,"heading":"Thread Semaphore - Basics Using With","content":"<h4>Thread Semaphore - Basics Using With</h4>\n\n<div class=\"codebox\">from threading import Semaphore</div>\n\nCreate:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore(<var>lock_count</var>)</div>\n\nUse:\n\n<div class=\"codebox\">with <var>semarphore_1</var>:\n\t<var>...</var></div>\n\nAutomatically acquires and releases the semaphore.\n\n\n"},{"id":"12Vk","level":4,"heading":"Process Semaphore - Basics","content":"<h4>Process Semaphore - Basics</h4>\n\n<div class=\"codebox\">from multiprocessing import Semaphore</div>\n\nCreate With 1 Lock:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore()</div>\n\nCreate With <code><var>lock_count</var></code> Locks:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore(<var>lock_count</var>)</div>\n\nUse:\n\n<div class=\"codebox\"><var>semaphore_1</var>.acquire()\n\n<var>...</var>\n\n<var>semaphore_1</var>.release()</div>\n\n\nAcquire decrements the counter.\nThe semaphore will nevere let the counter go below 0.\nAcquiring a counter at 0 blocks the process until the counter increases.\n\n\n\n"},{"id":"qLrW","level":4,"heading":"Process Semaphore - Basics Using With","content":"<h4>Process Semaphore - Basics Using With</h4>\n\n<div class=\"codebox\">from multiprocessing import Semaphore</div>\n\nCreate:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore(<var>lock_count</var>)</div>\n\nUse:\n\n<div class=\"codebox\">with <var>semarphore_1</var>:\n\t<var>...</var></div>\n\nAutomatically acquires and releases the semaphore.\n\n\n\n"},{"id":"uCaT","level":3,"heading":"Semaphore - Create","content":"<h3>Semaphore - Create</h3>\n\n\n\n"},{"id":"d7Xw","level":4,"heading":"Thread Semaphore - Create","content":"<h4>Thread Semaphore - Create</h4>\n\n<div class=\"codebox\">from threading import Semaphore</div>\n\nCreate With 1 Lock:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore()</div>\n\nCreate With <code><var>lock_count</var></code> Locks:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore(<var>lock_count</var>)</div>\n\n\n\n"},{"id":"A6qf","level":4,"heading":"Process Semaphore - Create","content":"<h4>Process Semaphore - Create</h4>\n\n<div class=\"codebox\">from multiprocessing import Semaphore</div>\n\nCreate With 1 Lock:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore()</div>\n\nCreate With <code><var>lock_count</var></code> Locks:\n\n<div class=\"codebox\"><var>semaphore_1</var> = Semaphore(<var>lock_count</var>)</div>\n\n\n\n"},{"id":"wEb5","level":3,"heading":"Semaphore - Operations","content":"<h3>Semaphore - Operations</h3>\n\n\n\n"},{"id":"0RYL","level":4,"heading":"Semaphore - Acquire","content":"<h4>Semaphore - Acquire</h4>\n\nAcquire - Blocking:\n\n<div class=\"codebox\"><var>semaphore_1</var>.acquire()</div>\n\nAcquire - Non-blocking:\n\n<div class=\"codebox\"><var>semaphore_1</var>.acquire(False)</div>\n\n<div class=\"codebox\">if <var>semaphore_1</var>.acquire(False):\n\t<span class=\"note\"># Semaphore acquired.</span>\n\t<var>...</var>\nelse:\n\t<span class=\"note\"># Did not acquire semaphore</span>\n\t<var>...</var></div>\n\n\n\n"},{"id":"EuAs","level":4,"heading":"Semaphore - Release","content":"<h4>Semaphore - Release</h4>\n\n<div class=\"codebox\"><var>semaphore_1</var>.release()</div>\n\n\nOnly the acquiring thread or process can release a semaphore.\n\n\n\n"},{"id":"04gT","level":4,"heading":"Semaphore - With","content":"<h4>Semaphore - With</h4>\n\n<div class=\"codebox\">with Semaphore() as <var>semaphore_1</var>:\n\n\t<var>...</var></div>\n\nAutomatically acquires and releases the semaphore.\n\n\n\n"},{"id":"5AT4","level":2,"heading":"Shared Memory - Value","content":"<h2>Shared Memory - Value</h2>\n\nCreates a synchronized value that can be shared between different processes.\n\n\n\n"},{"id":"z7be","level":3,"heading":"Shared Value - Basics","content":"<h3>Shared Value - Basics</h3>\n\n<div class=\"codebox\">from multiprocessing import Value</div>\n\nCreate:\n\n<div class=\"codebox\"><var>shared_value_1</var> = Value(<var>type</var>, (<var>arguments</var>))</div>\n\nRetrieve:\n\n<div class=\"codebox\"><var>current_value</var> = <var>shared_value_1</var>.value</div>\n\nUpdate:\n\n<div class=\"codebox\"><var>shared_value_1</var>.value = <var>new_value</var></div>\n\n\n\n"},{"id":"q3Hj","level":3,"heading":"Shared Value - Create","content":"<h3>Shared Value - Create</h3>\n\n\n\n"},{"id":"q3Jm","level":4,"heading":"Shared Value - Create","content":"<h4>Shared Value - Create</h4>\n\n<div class=\"codebox\">from multiprocessing import Value</div>\n\n<div class=\"codebox\">= Value(<var>type</var>, (<var>arguments</var>))</div>\n\n<div class=\"codebox\">= Value(\n\t\ttypecode_or_type = <var>type</var>,\n\t\targs = (<var>arguments</var>),\n\t\tlock = <var>lock</var>)</div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>counter</var> = Value('i')          <span class=\"note\"># Creates an Integer Value</span></div>\n\n\n\n"},{"id":"3yP6","level":4,"heading":"Shared Value - Create With Synchronizing Lock","content":"<h4>Shared Value - Create With Synchronizing Lock</h4>\n\n<div class=\"codebox\">from multiprocessing import Value</div>\n\n<div class=\"codebox\">= Value(<var>...</var>, lock = <var>lock_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\">from multiprocessing import Lock\n\n<var>lock_1</var> = Lock()\n<var>lock_controlled_value</var> = Value('i', 0, lock = <var>lock_1</var>)</div>\n\n\n\n"},{"id":"bnGK","level":4,"heading":"Shared Value - Create Unsynchronized","content":"<h4>Shared Value - Create Unsynchronized</h4>\n\n<div class=\"codebox\">from multiprocessing import Value</div>\n\n<div class=\"codebox\">= Value(<var>...</var>, lock = False)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>boolean_flag</var> = Value(ctypes.c_bool, False)</div>\n\n\n\n"},{"id":"s5Df","level":4,"heading":"Shared Value - Types","content":"<h4>Shared Value - Types</h4>\n\nFor:\n\n<div class=\"codebox\">= Value(<var>type</var>, <var>...</var>)</div>\n\n<code><var>type</var></code>        <code>ctypes.c_bool</code>\n\t\t<code>ctypes.c_char</code>\n\t\t<code>ctypes.c_wthar</code>\n\t\t<code>ctypes.c_int</code>\n\t\t<code>ctypes.c_long</code>\n\t\t<code>ctypes.c_float</code>\n\t\t<code>ctypes.c_char_p</code>\n\t\t<code>ctypes.c_wchar_p</code>\n\t\t<code>ctypes.c_void_p</code>\n\n\t\t'c'             <span class=\"note\">Same as ctype.c_char, 1-character bytes object</span>\n\t\t'u'             <span class=\"note\">Same as ctype.c_wchar, 1-character string</span>\n\t\t'i'             <span class=\"note\">Same as ctypes.c_int, int</span>\n\t\t'l'             <span class=\"note\">Same as ctypes.c_long, int</span>\n\t\t'f'             <span class=\"note\">Same as ctypes.c_float, float</span>\n\n\n<code><var>type</var></code> is a C-Type value.\n\n\nExample:\n\n<div class=\"codebox\"><var>integer_1</var> = Value(ctypes.c_int)</div>\n\n<div class=\"codebox\"><var>integer_2</var> = Value('i')</div>\n\n\n\n"},{"id":"Yhza","level":3,"heading":"Shared Value - Operations","content":"<h3>Shared Value - Operations</h3>\n\n\n\n"},{"id":"NS1L","level":4,"heading":"Shared Value - Get Value","content":"<h4>Shared Value - Get Value</h4>\n\n<div class=\"codebox\">= <var>value_1</var>.value</div>\n\n\n\n"},{"id":"rsKg","level":4,"heading":"Shared Value - Update Value","content":"<h4>Shared Value - Update Value</h4>\n\n<div class=\"codebox\"><var>value_1</var>.value = <var>new_value</var></div>\n\n\n\n"},{"id":"rVhk","level":4,"heading":"Shared Value - Get Lock","content":"<h4>Shared Value - Get Lock</h4>\n\n<div class=\"codebox\">= <var>value_1</var>.get_lock()</div>\n\n\n\n"},{"id":"TCGm","level":2,"heading":"Parallel Extras","content":"<h2>Parallel Extras</h2>\n\n\n\n"},{"id":"NdKU","level":3,"heading":"Multiprocessing - Get Process Name","content":"<h3>Multiprocessing - Get Process Name</h3>\n\n<div class=\"codebox\">import multiprocessing</div>\n\n<div class=\"codebox\">= multiprocessing.current_process().name</div>\n\n\n\n"},{"id":"w2LX","level":3,"heading":"Multiprocessing - Get CPU Count","content":"<h3>Multiprocessing - Get CPU Count</h3>\n\n<div class=\"codebox\">import multiprocessing</div>\n\n<div class=\"codebox\">= multiprocessing.cpu_count()</div>\n\n\n\n"},{"id":"Krr4","level":3,"heading":"Threads - Count","content":"<h3>Threads - Count</h3>\n\n<div class=\"codebox\">from threading import active_count\n\n<var>thread_count</var> = active_count()</div>\n\n\n\n"},{"id":"TP0D","level":1,"heading":"Asyncio","content":"<h1>Asyncio</h1>\n\n\n\n"},{"id":"vQmp","level":2,"heading":"Async Def","content":"<h2>Async Def</h2>\n\n<div class=\"codebox\">async def <var>coroutine_1</var>():\n\t<var>...</var></div>\n\nDefines a coroutine that can be scheduled to run on an event loop.\n\n\n\n"},{"id":"vRTA","level":2,"heading":"Async For","content":"<h2>Async For</h2>\n\n<div class=\"codebox\">async for <var>item</var> in <var>async_iterable</var>:\n\t<var>...</var></div>\n\n\nUse with asyncronous iterables.\n\n\nExample:\n\n<div class=\"codebox\">class <var>AsyncIterable1</var>:\n\tdef __aiter__(self):\n\t\treturn self\n\n\tasync def __anext__(self):\n\t\t<var>next</var> = await <var>get_next()</var>\n\t\treturn <var>next</var>\n\n\nasync for <var>item</var> in <var>AsyncIterable1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"pscL","level":2,"heading":"Async With","content":"<h2>Async With</h2>\n\n<div class=\"codebox\">async with <var>AsyncClass1</var>() as <var>async_1</var>:\n\t<var>...</var>\n\tawait <var>async_1</var>.<var>action</var>()</div>\n\n\nUse with classes that use the asynchronous context manager.\n\n\nExample:\n\n<div class=\"codebox\">class <var>AsyncClass1</var>:\n\n\tasync def __aenter__(self):\n\t\t<var>...</var>\n\n\tasync def __aexit__(self, exc_type, exc, tb):\n\t\t<var>...</var>\n\n\nasync with <var>AsyncClass1</var>() as async_1:\n\t<var>...</var></div>\n\n\n\n"},{"id":"1nyk","level":2,"heading":"Await","content":"<h2>Await</h2>\n\n<div class=\"codebox\">await <var>future_1</var>()</div>\n\n<div class=\"codebox\">await <var>coroutine_fuction_1</var>()</div>\n\n<div class=\"codebox\">await <var>task_1</var>()</div>\n\n\nSuspends operations and returns control from a coroutine function while it waits for the future or function to complete.\n\n\n\n"},{"id":"uXHP","level":2,"heading":"Asyncio Sleep","content":"<h2>Asyncio Sleep</h2>\n\n<div class=\"codebox\">from asyncio import sleep</div>\n\n<div class=\"codebox\">await sleep(<var>time_in_seconds</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\">await sleep(<var>1.5</var>)\n<span class=\"note\"># Sleep 1&frac12; seconds.</span></div>\n\n\n\n"},{"id":"cRqS","level":2,"heading":"Asyncio Sleep - Suspend Execution","content":"<h2>Asyncio Sleep - Suspend Execution</h2>\n\n<div class=\"codebox\">from asyncio import sleep</div>\n\n<div class=\"codebox\">await sleep(0)</div>\n\nSuspends the current coroutine immediately.\nReleases control back to the event loop so it can process other coroutines.\nExecution returns to this immediately after the other tasks in the event loop have run.\n\n\n\n"},{"id":"mN6E","level":2,"heading":"Asyncio Sleep - Until Given Time","content":"<h2>Asyncio Sleep - Until Given Time</h2>\n\nFunction:\n\n<div class=\"codebox\">from datetime import datetime\nfrom asyncio import sleep\n\nasync def <var>sleep_until</var>(<var>datetime_1</var>):\n\tawait sleep ((<var>datetime_1</var> - datetime.now()).total_seconds())</div>\n\nCall:\n\n<div class=\"codebox\">await <var>sleep_until</var>(<var>datetime_1</var>)</div>\n\n\n\n"},{"id":"XrWY","level":2,"heading":"Asyncio Coroutines","content":"<h2>Asyncio Coroutines</h2>\n\n\n\n"},{"id":"HTMj","level":3,"heading":"Coroutine - Basics","content":"<h3>Coroutine - Basics</h3>\n\n\n\n"},{"id":"2fZ1","level":4,"heading":"Coroutine - Start Main Coroutine","content":"<h4>Coroutine - Start Main Coroutine</h4>\n\n<div class=\"codebox\">run(<var>main</var>())</div>\n\nUsage:\n\n<div class=\"codebox\">from asyncio import run\n\nasync def <var>main</var>():\n\t<var>...</var>\n\nrun(<var>main</var>())</div>\n\n\nThis is a typical way to start your threads running.\nIt runs <code>main()</code> on the main event loop.\n\n\n\n"},{"id":"X2SV","level":4,"heading":"Coroutine - Run with await","content":"<h4>Coroutine - Run with await</h4>\n\nDefine Coroutine Function:\n\n<div class=\"codebox\">async def <var>coroutine_function_1</var>():\n\t<var>...</var></div>\n\nCall:\n\n<div class=\"codebox\">await <var>coroutine_function_1</var>()</div>\n\n<div class=\"codebox\"><var>result</var> = await <var>coroutine_function_2</var>()</div>\n\n\nDefine the coroutine with <code>async def</code>.\n<code>await</code> calls and then blocks until the coroutine completes.\n\n\n\n"},{"id":"NcsT","level":4,"heading":"Coroutine - Run as Task","content":"<h4>Coroutine - Run as Task</h4>\n\n<div class=\"codebox\">from asyncio import create_task</div>\n\nDefine:\n\n<div class=\"codebox\">async def <var>coroutine_function</var>():\n\t<var>...</var></div>\n\nSchedule Execution:\n\n<div class=\"codebox\"><var>task_1</var> = create_task(<var>coroutine_function</var>())</div>\n\nComplete?:\n\n<div class=\"codebox\">= <var>task_1</var>.done()</div>\n\nGet Result:\n\n<div class=\"codebox\">= <var>task_1</var>.result()</div>\n\n\n\nDefine the coroutine with <code>async def</code>.\nSchedule the coroutine to run with <code>create_task()</code>.\nCheck it is complete with <code>.done()</code>.\nGet the final result with <code>.result()</code>.\n\n\n\n"},{"id":"bkuH","level":3,"heading":"Coroutine - Life Cycle","content":"<h3>Coroutine - Life Cycle</h3>\n\n<div class=\"codebox\">Coroutine Function\n\n-&gt; Coroutine\n\n-&gt; Task / Running Coroutine</div>\n\n\nCoroutines start out as coroutine functions defined with <code>async def</code>.\n\nThey become coroutines (sometimes called coroutine object) when the function is called. The coroutine is not running yet.\n\nThere are at least 2 options to run it:\n\n\tCall with <code>await</code>\n\tCreate a <code>Task</code>\n\nCall with <code>await</code> will run the coroutine immediately and wait for a result. <code>await</code> must be called inside another coroutine.\n\nCreate a <code>Task</code> with <code>create_task()</code>. This will schedule the coroutine on the current event loop and will execute it once the event loop completes it's other tasks.\n\n\n\n"},{"id":"8P3p","level":3,"heading":"Coroutine - Create","content":"<h3>Coroutine - Create</h3>\n\n\n\n"},{"id":"wVD7","level":4,"heading":"Coroutine - Define / async def","content":"<h4>Coroutine - Define / async def</h4>\n\n<div class=\"codebox\">async def <var>coroutine_function_1</var>():\n\t<var>...</var></div>\n\n\nDefines a coroutine function that can be scheduled on the event loop.\n\n\n\n"},{"id":"0bQ3","level":4,"heading":"Coroutine - Create Coroutine","content":"<h4>Coroutine - Create Coroutine</h4>\n\nTo Coroutine:\n\n<div class=\"codebox\"><var>coroutine_1</var> = <var>coroutine_function_1</var>()</div>\n\n\nThis is an intermediate  step that is usually done directly within <code>await</code> or <code>create_task()</code>.\n\n\n\n"},{"id":"Mupd","level":3,"heading":"Coroutine - Operations","content":"<h3>Coroutine - Operations</h3>\n\n\n\n"},{"id":"Lzru","level":4,"heading":"Coroutine - Call, Wait / await","content":"<h4>Coroutine - Call, Wait / await</h4>\n\n<div class=\"codebox\">await <var>coroutine_function_1</var>()</div>\n\nor\n\n<div class=\"codebox\">await <var>coroutine_1</var></div>\n\n\n<code>await</code> blocks until the coroutine completes.\nCan only be called from within another coroutine.\n\n\n\n"},{"id":"JnPF","level":4,"heading":"Coroutine - Call, Wait For Result / await","content":"<h4>Coroutine - Call, Wait For Result / await</h4>\n\n<div class=\"codebox\"><var>result</var> = await <var>coroutine_function_1</var>()</div>\n\nor\n\n<div class=\"codebox\"><var>result</var> = await <var>coroutine_1</var></div>\n\n\n<code>await</code> blocks until the coroutine completes.\nCan only be called from within another coroutine.\n\n\n\n"},{"id":"6Mnp","level":4,"heading":"Coroutine - Schedule Execution","content":"<h4>Coroutine - Schedule Execution</h4>\n\n<div class=\"codebox\">from asyncio import create_task</div>\n\n<div class=\"codebox\"><var>task_1</var> = create_task(<var>coroutine_function_1</var>())</div>\n\nor\n\n<div class=\"codebox\"><var>task_1</var> = create_task(<var>coroutine_1</var>)</div>\n\n\nOnce converted to a task, the coroutine is scheduled to run on the current event loop.\n\n\n\n"},{"id":"FJS8","level":4,"heading":"Coroutines - Chain Sequentially","content":"<h4>Coroutines - Chain Sequentially</h4>\n\n<div class=\"codebox\">await <var>subfunction_1</var>()\nawait <var>subfunction_2</var>()\n<var>...</var></div>\n\n\nUse <code>await</code> to run coroutines sequentially.\n\n\n\n"},{"id":"DR6P","level":4,"heading":"Coroutines - Chain Sequentially With Chaining Function","content":"<h4>Coroutines - Chain Sequentially With Chaining Function</h4>\n\n<div class=\"codebox\">async def <var>chaining_function</var>():\n\n\tawait <var>subfunction_1</var>()\n\tawait <var>subfunction_2</var>()\n\t<var>...</var></div>\n\n\n<code>chaining_function</code> chains subroutines together and runs them sequentially.\nGet the final result by calling <code><var>chaining_function</var>()</code> with <var>await</var>.\n\n\n\n"},{"id":"NeXD","level":4,"heading":"Coroutines - Run 'In Parallel'","content":"<h4>Coroutines - Run 'In Parallel'</h4>\n\n<div class=\"codebox\">from asyncio import create_task\nfrom asyncio import gather\n\n<var>tasks</var> = []\n<var>tasks</var>.append(create_task(<var>coroutine_1</var>()))\n<var>tasks</var>.append(create_task(<var>coroutine_2</var>()))\n<var>tasks</var>.append(create_task(<var>coroutine_3</var>()))\n\n<var>results</var> = await gather(*<var>tasks</var>)</div>\n\n\nStarts all coroutines and then waits for them to complete.\n\n\n\n"},{"id":"suR4","level":4,"heading":"Coroutine - To Task","content":"<h4>Coroutine - To Task</h4>\n\n<div class=\"codebox\">from asyncio import create_task</div>\n\n<div class=\"codebox\"><var>task_1</var> = create_task(<var>coroutine_function_1</var>())</div>\n\n\n\n"},{"id":"y119","level":2,"heading":"Asyncio Event Loop","content":"<h2>Asyncio Event Loop</h2>\n\nResponsible for getting items from an event queue and processing them.\n\n\n\n"},{"id":"adj8","level":3,"heading":"Event Loop - Life Cycle","content":"<h3>Event Loop - Life Cycle</h3>\n\nThe event loop stores tasks in a queue.\nThe event loop calls the first/next task in that queue.\n\nThe task runs until it suspends itself, releasing control back to the event loop.\n\nThe event loop resumes the task\n\tonce the io/external operation completes.\n\n\n\n"},{"id":"fwWn","level":3,"heading":"Event Loop - Create / Get","content":"<h3>Event Loop - Create / Get</h3>\n\n\n"},{"id":"LLPF","level":4,"heading":"Event Loop - Create","content":"<h4>Event Loop - Create</h4>\n\n<div class=\"codebox\">= new_event_loop()</div>\n\nUsage:\n\n<div class=\"codebox\">from asyncio import new_event_loop()\n\n<var>event_loop</var> = new_event_loop()</div>\n\n\nReturns: Subclass of <code>AbstractEventLoop</code>\n\n\nThis event loop runs in the current thread by default.\n\n\n\n"},{"id":"z10r","level":4,"heading":"Event Loop - Start on Main Loop","content":"<h4>Event Loop - Start on Main Loop</h4>\n\n<div class=\"codebox\">run(<var>main</var>())</div>\n\nUsage:\n\n<div class=\"codebox\">from asyncio import run\n\nasync def <var>main</var>():\n\t<var>...</var>\n\nrun(<var>main</var>())</div>\n\n\nThis is a typical way to start your threads running.\nIt runs <code>main()</code> on the main event loop.\n\n\n\n"},{"id":"FSCs","level":4,"heading":"Event Loop - Start on Main Loop (Verbose Version)","content":"<h4>Event Loop - Start on Main Loop (Verbose Version)</h4>\n\n<div class=\"codebox\">get_event_loop().run_until_complete(<var>main</var>())</div>\n\nUsage:\n\n<div class=\"codebox\">from asyncio import get_event_loop\n\nasync def <var>main</var>():\n\t<var>...</var>\n\n<var>loop</var> = get_event_loop()\n<var>loop</var>.run_until_complete(<var>main</var>())\n<var>loop</var>.close()</div>\n\n\nThis is a typical way to start your threads running.\nIt runs <code>main()</code> on the main event loop.\n\n\n\n"},{"id":"cU9j","level":4,"heading":"Event Loop - Get Main Loop","content":"<h4>Event Loop - Get Main Loop</h4>\n\n<div class=\"codebox\">from asyncio import get_event_loop()</div>\n\n<div class=\"codebox\">= get_even_loop()</div>\n\n\nReturns: Subclass of <code>AbstractEventLoop</code>\n\n\n\n"},{"id":"Zz1B","level":3,"heading":"Event Loop - Operations","content":"<h3>Event Loop - Operations</h3>\n\n\n\n"},{"id":"CEY1","level":4,"heading":"Event Loop - Start","content":"<h4>Event Loop - Start</h4>\n\n<div class=\"codebox\"><var>event_loop_1</var>.run_forever()</div>\n\n\nStarts the event loop.\n\n\n\n"},{"id":"5evx","level":4,"heading":"Event Loop - Stop","content":"<h4>Event Loop - Stop</h4>\n\n<div class=\"codebox\"><var>event_loop_1</var>.stop()</div>\n\n\nStops the event loop at the next appropriate moment.\n\n\n\n"},{"id":"nENA","level":4,"heading":"Event Loop - Close","content":"<h4>Event Loop - Close</h4>\n\n<div class=\"codebox\"><var>event_loop_1</var>.close()</div>\n\n\nCloses an event loop.\nMake sure to call <code>.stop()</code> first.\n\n\n\n"},{"id":"wQxz","level":4,"heading":"Event Loop - Run Until Complete","content":"<h4>Event Loop - Run Until Complete</h4>\n\n<div class=\"codebox\"><var>event_loop_1</var>.run_until_complete(<var>future_1</var>)</div>\n\n<div class=\"codebox\"><var>event_loop_1</var>.run_until_complete(<var>coroutine_object_1</var>)</div>\n\n\n\n"},{"id":"Ux36","level":2,"heading":"Asyncio Future","content":"<h2>Asyncio Future</h2>\nAn object that is a proxy for a future result that has yet to be computed.\n\n\n\n"},{"id":"PnhF","level":3,"heading":"Future - Cancel","content":"<h3>Future - Cancel</h3>\n\n<div class=\"codebox\">= <var>future_1</var>.cancel()</div>\n\n\nReturns: <code>bool</code>\n\n\nAttempts to cancel a request.\nReturns <code>True</code> if successful.\n\n\n\n"},{"id":"SNv5","level":3,"heading":"Future - Is Complete?","content":"<h3>Future - Is Complete?</h3>\n\n<div class=\"codebox\">= <var>future_1</var>.done()</div>\n\n\n\n"},{"id":"pL8w","level":3,"heading":"Future - Get Value","content":"<h3>Future - Get Value</h3>\n\n<div class=\"codebox\">= <var>future_1</var>.result()</div>\n\n\n<code>.result()</code> never blocks even if the result is not available.\n\n\n\n"},{"id":"UqbD","level":3,"heading":"Future - Get With Exception Handling","content":"<h3>Future - Get With Exception Handling</h3>\n\n<div class=\"codebox\">try:\n\t<var>result</var> = <var>future_1</var>.result()\nexcept Exception as <var>exception</var>:\n\t<var>...</var></div>\n\n\nExceptions are returned through the future itself.\n\n\n\n"},{"id":"3pD2","level":3,"heading":"Future - Get Exception","content":"<h3>Future - Get Exception</h3>\n\n<div class=\"codebox\">= <var>future_1</var>.exception()</div>\n\n<code>.exception()</code> never blocks.\n\n\n\n"},{"id":"q5mw","level":3,"heading":"Future - Add Callback Function","content":"<h3>Future - Add Callback Function</h3>\n\n<div class=\"codebox\">= <var>future_1</var>.add_done_callback(<var>callback_function</var>)</div>\n\n\n<code><var>callback_fuction</var></code> is called once the future completes.\nExceptions are not returned to the callback function.\n\n\n\n"},{"id":"HVy1","level":2,"heading":"Asyncio Task","content":"<h2>Asyncio Task</h2>\n\nSubclass of Future.\nWraps and manages the execution of a coroutien in an event loop.\n\n\n\n"},{"id":"pGAk","level":3,"heading":"Task - Operations","content":"<h3>Task - Operations</h3>\n\n\n\n"},{"id":"JeCV","level":4,"heading":"Create Task From Future / Coroutine Object","content":"<h4>Create Task From Future / Coroutine Object</h4>\n\n<div class=\"codebox\">from asyncio import create_task</div>\n\n<div class=\"codebox\">= create_task(<var>coroutine_function_1</var>())</div>\n\n\nThe task is placed on the event loop and scheduled to run.\nDefaults to the default event loop.\n\n\n\n"},{"id":"JeDX","level":4,"heading":"Create Task From Future / Coroutine Object","content":"<h4>Create Task From Future / Coroutine Object</h4>\n\n<div class=\"codebox\">from asyncio import ensure_future</div>\n\n<div class=\"codebox\">= ensure_future(<var>coroutine_function_1</var>())</div>\n\n<div class=\"codebox\">= ensure_future(<var>coroutine_object_1</var>)</div>\n\n<div class=\"codebox\">= ensure_future(<var>future_</var>)</div>\n\n<div class=\"codebox\">= ensure_future(<var>...</var>, loop = <var>event_loop_1</var>)</div>\n\n\nThe task is placed on the event loop and scheduled to run.\nDefaults to the default event loop.\n\n\n\n"},{"id":"hCwE","level":4,"heading":"Task - Cancel","content":"<h4>Task - Cancel</h4>\n\n<div class=\"codebox\">= <var>task_1</var>.cancel()</div>\n\n\nReturns: <code>bool</code>\n\n\nAttempts to cancel a request.\nReturns <code>True</code> if successful.\n\n\n\n"},{"id":"JqBh","level":4,"heading":"Task - Is Complete?","content":"<h4>Task - Is Complete?</h4>\n\n<div class=\"codebox\">= <var>task_1</var>.done()</div>\n\n\n\n"},{"id":"uJS4","level":4,"heading":"Task - Get Value","content":"<h4>Task - Get Value</h4>\n\n<div class=\"codebox\">= <var>task_1</var>.result()</div>\n\n\n<code>.result()</code> never blocks even if the result is not available.\n\n\n\n"},{"id":"GuKe","level":4,"heading":"Task - Get With Exception Handling","content":"<h4>Task - Get With Exception Handling</h4>\n\n<div class=\"codebox\">try:\n\t<var>result</var> = <var>task_1</var>.result()\nexcept Exception as <var>exception</var>:\n\t<var>...</var></div>\n\n\nExceptions are returned through the task itself.\n\n\n\n"},{"id":"3eYF","level":4,"heading":"Task - Get Exception","content":"<h4>Task - Get Exception</h4>\n\n<div class=\"codebox\">= <var>task_1</var>.exception()</div>\n\n<code>.exception()</code> never blocks.\n\n\n\n"},{"id":"MyJY","level":4,"heading":"Task - Add Callback Function","content":"<h4>Task - Add Callback Function</h4>\n\n<div class=\"codebox\">= <var>task_1</var>.add_done_callback(<var>callback_function</var>)</div>\n\n\nExceptions are not returned the the callback function.\n\n\n\n"},{"id":"aK8N","level":4,"heading":"Task - Get Name","content":"<h4>Task - Get Name</h4>\n\n<div class=\"codebox\">= <var>task_1</var>.get_name()</div>\n\n\n\n\n"},{"id":"kCFc","level":4,"heading":"Task - Set Name","content":"<h4>Task - Set Name</h4>\n\n<div class=\"codebox\"><var>task_1</var>.set_name(<var>name</var>)</div>\n\n\n\n"},{"id":"sgVM","level":2,"heading":"Asyncio Tasks, Futures - Running","content":"<h2>Asyncio Tasks, Futures - Running</h2>\n\n\n\n"},{"id":"cH7Z","level":3,"heading":"Futures / Tasks - Run Single Task / Future","content":"<h4>Futures / Tasks - Run Single Task / Future</h4>\n\n<div class=\"codebox\">from asyncio import wait_for</div>\n\n<div class=\"codebox\">wait_for(<var>future_1</var>)</div>\n\n<div class=\"codebox\">wait_for(<var>task_1</var>)</div>\n\n<div class=\"codebox\">wait_for(<var>future_1</var>,\n\t\ttimeout = <var>timeout_seconds</var>,\n\t\t*,\n\t\tloop = <var>event_loop_1</var>)</div>\n\n<div class=\"codebox\">await wait_for(<var>future_1</var>)</div>\n\n\n\n"},{"id":"8Eyq","level":3,"heading":"Futures / Tasks - Run Chained Sequentially","content":"<h4>Futures / Tasks - Run Chained Sequentially</h4>\n\n<div class=\"codebox\">async def <code>chaining_function</code>():\n\n\tawait <var>task_1</var>()\n\tawait <var>task_2</var>()\n\t<var>...</var>\n\n\n\n</div>#### Futures / Tasks - Run In Parallel\n\n<div class=\"codebox\">from asyncio import wait</div>\n\n<div class=\"codebox\">wait(<var>futures</var>)</div>\n\n<div class=\"codebox\">wait(<var>tasks</var>)</div>\n\n<div class=\"codebox\">wait(<var>futures</var>,\n\t\t*,\n\t\tloop = <var>event_loop_1</var>,\n\t\ttimeout = <var>timeout_seconds</var>,\n\t\treturn_when = <var>when</var>)</div>\n\nWith Results:\n\n<div class=\"codebox\"><var>done</var>, <var>pending</var> = await wait(<var>futures</var>)</div>\n\n\nSchedules futures for execution together.\nTimeout does not cancel futures.\n\n\n\n"},{"id":"A0Ta","level":3,"heading":"Futures / Tasks - Process As Completed","content":"<h4>Futures / Tasks - Process As Completed</h4>\n\n<div class=\"codebox\">from asyncio import as_completed</div>\n\n<div class=\"codebox\">for <var>task</var> in as_completed(<var>futures</var>):\n\t<var>result</var> = await <var>task</var></div>\n\n\nReturns tasks as they are completed.\nInternally it sets up a call back function that yields a task when it completes.\n\n\n\n"},{"id":"Qf9g","level":3,"heading":"Futures / Tasks - Wait, Gather Results","content":"<h4>Futures / Tasks - Wait, Gather Results</h4>\n\n<div class=\"codebox\">from asyncio import gather</div>\n\n<div class=\"codebox\"><var>results</var> = await gather(*<var>futures</var>)</div>\n\n\nReturns: List of results\n\n\nWaits for all futures to complete and then returns the results.\nThe order of the results is the same order as the tasks were submitted.\n\n\n\n"},{"id":"epjX","level":2,"heading":"Asyncio - Popular Asyncio Libraries","content":"<h2>Asyncio - Popular Asyncio Libraries</h2>\n\n<strong>I/O:</strong>\n\n<code><a class=\"link\" href=\"https://pypi.org/project/aiofiles/\">aiofiles</a></code>\t\t\tAsynchronous File I/O\n<code><a class=\"link\" href=\"/s/aiohttp\">aiohttp</a></code>\t\t\t\tAsynchronous Web Requests (SpeedSheet)\n\n<strong>Databases:</strong>\n\n<code><a class=\"link\" href=\"https://aiomysql.readthedocs.io/en/latest/\">aiomysql</a></code>\t\t\tAsynchronous MySql Library\n<code><a class=\"link\" href=\"https://aiopg.readthedocs.io/en/stable/\">aiopg</a></code>\t\t\t\tAsynchronous PostgreSql Library\n<code><a class=\"link\" href=\"https://pypi.org/project/aiocouchdb/\">aiocouchdb</a></code>\t\t\tAsynchronous Couch DB Library\n<code><a class=\"link\" href=\"https://github.com/aio-libs/aiocassandra\">aiocassandra</a></code>\t\tAsynchronous Cassandra Library\n\n\nOther Libraries:\n<a class=\"link\" href=\"https://github.com/python/asyncio/wiki/ThirdParty\">https://github.com/python/asyncio/wiki/ThirdParty</a>\n\n\n\n"},{"id":"0LcE","level":1,"heading":"CSV","content":"<h1>CSV</h1>\n\n\n"},{"id":"LCJV","level":2,"heading":"CSV File - Read To Dict - With Header","content":"<h3>CSV File - Read To Dict - With Header</h3>\n\n<div class=\"codebox\">= DictReader(<var>file</var>)</div>\n\n<div class=\"codebox\">from csv import DictReader\n\nwith open(<var>file_name</var>) as file:\n\n\t<var>reader</var> = DictReader(<var>file</var>)\n\n\tfor <var>row</var> in <var>reader</var>:\n\t\t<var>...</var></div>\n\n\nEach <code><var>row</var></code> returns the row of values as a dict.\nThe keys are set by the header row (1st line in the CSV file).\nRequires a header row.\n\n\nExample:\n\n<div class=\"codebox\"><var>file_name</var> = '<var>path/data_file.csv</var>'\nwith open(<var>file_name</var>) as <var>file</var>:\n\n\t<var>reader</var> = DictReader(<var>file</var>)\n\t<var>data</var> = [<var>row</var> for <var>row</var> in <var>reader</var>]</div>\n\n\n\n"},{"id":"5fCm","level":2,"heading":"CSV File - Read To Dict - Without Header","content":"<h3>CSV File - Read To Dict - Without Header</h3>\n\n<div class=\"codebox\">= DictReader(<var>file</var>, fieldnames = <var>field_names</var>)</div>\n\n<div class=\"codebox\">from csv import DictReader\n\nwith open(<var>file_name</var>) as file:\n\n\t<var>reader</var> = DictReader(<var>file</var>, fieldnames = <var>field_names</var>)\n\n\tfor <var>row</var> in <var>reader</var>:\n\t\t<var>...</var></div>\n\n\nSet the field names using the <code>fieldnames</code> option.\nPass the field names as a list of strings.\nEach <code><var>row</var></code> returns the row of values as a dict.\n\n\nExample:\n\n<div class=\"codebox\"><var>file_name</var> = '<var>path/data_file.csv</var>'\nwith open(<var>file_name</var>) as <var>file</var>:\n\n\t<var>reader</var> = DictReader(<var>file</var>, [&quot;name&quot;, &quot;date&quot;, &quot;value&quot;])\n\t<var>data</var> = [<var>row</var> for <var>row</var> in <var>reader</var>]</div>\n\n\n\n"},{"id":"MZwj","level":2,"heading":"CSV File - Read To List - With Header","content":"<h3>CSV File - Read To List - With Header</h3>\n\n<div class=\"codebox\">= csv.reader(<var>file</var>)</div>\n\n<div class=\"codebox\">import csv\n\nwith open(<var>file_name</var>) as file:\n\n\t<var>reader</var> = csv.reader(<var>file</var>)\n\n\t<var>header</var> = next(<var>reader</var>)\n\tfor <var>row</var> in <var>reader</var>:\n\t\t<var>...</var></div>\n\n\n<code><var>header</var></code> contains the fields returned from the first row as a list of strings.\nEach <code><var>row</var></code> returns the row of values as a list.\n\n\nExample:\n\n<div class=\"codebox\"><var>file_name</var> = '<var>path/data_file.csv</var>'\nwith open(<var>file_name</var>) as <var>file</var>:\n\n\t<var>reader</var> = csv.reader(<var>file</var>)\n\t<var>header</var> = next(<var>reader</var>)\n\t<var>data</var> = [<var>row</var> for <var>row</var> in <var>reader</var>]</div>\n\n\n\n"},{"id":"GSq8","level":2,"heading":"CSV File - Read To List - Without Header","content":"<h3>CSV File - Read To List - Without Header</h3>\n\n<div class=\"codebox\">= csv.reader(<var>file</var>)</div>\n\n<div class=\"codebox\">import csv\n\nwith open(<var>file_name</var>) as file:\n\n\t<var>reader</var> = csv.reader(<var>file</var>)\n\n\tfor <var>row</var> in <var>reader</var>:\n\t\t<var>...</var></div>\n\n\nExample:\n\n<div class=\"codebox\"><var>file_name</var> = '<var>path/data_file.csv</var>'\nwith open(<var>file_name</var>) as <var>file</var>:\n\n\t<var>reader</var> = csv.reader(<var>file</var>)\n\t<var>data</var> = [<var>row</var> for <var>row</var> in <var>reader</var>]</div>\n\n\n\n"},{"id":"Gp4H","level":2,"heading":"CSV File - When Reading Blank Lines","content":"<h3>CSV File - When Reading Blank Lines</h3>\n\nUsing <strong><code>csv.reader()</code>:</strong>\n\n<div class=\"indent\">Returns a blank line as an empty list <code>[]</code>.\nThe last line is ignored if blank.</div>\n\nUsing <strong><code>DictReader</code>:</strong>\n\n<div class=\"indent\">Ignores all blank lines.</div>\n\n\n\n"},{"id":"Vp7M","level":2,"heading":"CSV File - Write From Dict","content":"<h3>CSV File - Write From Dict</h3>\n\n<div class=\"codebox\"><var>writer</var> = DictWriter(<var>file</var>, fieldnames = <var>fields</var>)\n\n<var>writer</var>.writerow(<var>row_dict</var>)</div>\n\n<div class=\"codebox\">from csv import DictWriter\n\nwith open(<var>file_name</var>, 'w') as <var>file</var>:\n\n\t<var>writer</var> = DictWriter(<var>file</var>, fieldnames = <var>fields</var>)\n\n\tfor <var>row_dict</var> in <var>list_of_dicts</var>:\n\t\t<var>writer</var>.writerow(<var>row_dict</var>)</div>\n\n\n\n"},{"id":"5ucK","level":2,"heading":"CSV File - Write List of Dicts","content":"<h3>CSV File - Write List of Dicts</h3>\n\n<div class=\"codebox\"><var>writer</var> = DictWriter(<var>file</var>, fieldnames = <var>fields</var>)\n\n<var>writer</var>.writerows(<var>list_of_dicts</var>)</div>\n\n<div class=\"codebox\">from csv import DictWriter\n\nwith open(<var>file_name</var>, 'w') as <var>file</var>:\n\n\t<var>writer</var> = DictWriter(<var>file</var>, fieldnames = <var>fields</var>)\n\n\t<var>writer</var>.writerows(<var>list_of_dicts</var>)</div>\n\n\n\n"},{"id":"Nhza","level":2,"heading":"CSV File - Write Dict Header","content":"<h3>CSV File - Write Dict Header</h3>\n\n<div class=\"codebox\"><var>writer</var> = DictWriter(<var>file</var>, fieldnames = <var>fields</var>)\n\n<var>writer</var>.writeheader()</div>\n\n<div class=\"codebox\">from csv import DictWriter\n\nwith open(<var>file_name</var>, 'w') as <var>file</var>:\n\n\t<var>writer</var> = DictWriter(<var>file</var>, fieldnames = <var>fields</var>)\n\n\t<var>writer</var>.writeheader()\n\t<var>...</var></div>\n\n\n\n"},{"id":"X5cF","level":2,"heading":"CSV File - Write From List","content":"<h3>CSV File - Write From List</h3>\n\n<div class=\"codebox\"><var>writer</var> = csv.writer(<var>file</var>)\n\n<var>writer</var>.writerow(<var>item_list</var>)</div>\n\n<div class=\"codebox\">import csv\n\nwith open(<var>file_name</var>, 'w') as <var>file</var>:\n\n\t<var>writer</var> = csv.writer(<var>file</var>)\n\n\tfor <var>item_list</var> in <var>list_of_lists</var>:\n\t\t<var>writer</var>.writerow(<var>item_list</var>)</div>\n\n\n\n"},{"id":"Nvva","level":2,"heading":"CSV File - Write List of Lists","content":"<h3>CSV File - Write List of Lists</h3>\n\n<div class=\"codebox\"><var>writer</var> = csv.writer(<var>file</var>)\n\n<var>writer</var>.writerows(<var>list_of_lists</var>)</div>\n\n<div class=\"codebox\">import csv\n\nwith open(<var>file_name</var>, 'w') as <var>file</var>:\n\n\t<var>writer</var> = csv.writer(<var>file</var>)\n\n\t<var>writer</var>.writerows(<var>list_of_lists</var>)</div>\n\n\n\n"},{"id":"YZfZ","level":2,"heading":"CSV - Escaped Quotes","content":"<h3>CSV - Escaped Quotes</h3>\n\nAutomatically handled.\n\nThe csv library handles escaping quotes in values automatically.\nWhen reading values, string values are automatically unescaped with extra quotes removed.\nWhen writing, strings will be automatically escaped and then placed inside double quotes.\n\nEscaped Double Quotes:  &quot;&quot;\n\n\n\n\n"},{"id":"uLDS","level":2,"heading":"CSV Option - Delimiter","content":"<h3>CSV Option - Delimiter</h3>\n\n<div class=\"codebox\"><var>...</var>(delimiter = &quot;<var>delimiter</var>&quot;)</div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>reader</var> = csv.reader(<var>file</var>, delimiter=&quot;\\t&quot;)</div>\n\n<div class=\"codebox\"><var>writer</var> = csv.writer(<var>file</var>, delimiter=&quot;\\t&quot;)</div>\n\n\n\n"},{"id":"dV7E","level":2,"heading":"CSV Option - Dialect","content":"<h3>CSV Option - Dialect</h3>\n\n<div class=\"codebox\"><var>...</var>(dialect = &quot;<var>dialect</var>&quot;)</div>\n\n<div class=\"indent\"><table><tr><td><code>'excel'</code></td><td>Excel formatting, Comma Delimited, '\\n\\r' Newlines</td></tr>\n<tr><td><code>'excel-tab'</code></td><td>Excel formatting, Tab Delimited, '\\n\\r' Newlines</td></tr>\n<tr><td><code>'unix'</code></td><td>Unix formatting, Comma Delimited, All Values in Quotes, '\\n' Newlines</td></tr></table></div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>reader</var> = csv.reader(<var>file</var>, dialect='excel')</div>\n\n<div class=\"codebox\"><var>writer</var> = csv.writer(<var>file</var>, dialect='unix')</div>\n\n\n\n"},{"id":"Aee3","level":2,"heading":"CSV Option - Quoting","content":"<h3>CSV Option - Quoting</h3>\n\n<div class=\"codebox\"><var>...</var>(quoting = <var>quote_setting</var>)</div>\n\n<code>quote_setting</code>:\n\n<div class=\"indent\"><table><tr><td><code>csv.QUOTE_NONE</code></td><td>Quote Nothing</td></tr>\n<tr><td><code>csv.QUOTE_MINIMAL</code></td><td>Add Quotes Only To Values That Need It (Default)</td></tr>\n<tr><td><code>csv.QUOTE_NONNUMERIC</code></td><td>Add Quotes To Non Numeric Values</td></tr>\n<tr><td><code>csv.QUOTE_ALL</code></td><td>Add Quotes To All Values</td></tr></table></div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>writer</var> = csv.writer(<var>file</var>, quoting=csv.QUOTE_NONNUMERIC)</div>\n\n\n\n"},{"id":"jRW2","level":1,"heading":"Dataclass","content":"<h1>Dataclass</h1>\n\n\n\n"},{"id":"kXxa","level":2,"heading":"Dataclass - Video Tutorial","content":"<h2>Dataclass - Video Tutorial</h2>\n\nGet going faster with our Dataclasses in a Hurry Video:\n\n<div class=\"card\"><a class=\"link\" href=\"https://youtu.be/_KT2lX4Wm2U\">Dataclasses in a Hurry (2 Mins)</a></div>\n\n\n\n"},{"id":"gQt1","level":2,"heading":"Dataclass - Basics","content":"<h2>Dataclass - Basics</h2>\n\nDefine:\n\n<div class=\"codebox\">from dataclasses import dataclass\n\n@dataclass\nclass <var>Dataclass1</var>:\n\t<var>field_1</var>: <var>int</var>\n\t<var>field_2</var>: <var>str</var>\n\t<var>...</var>\n\n\tdef <var>some_method</var>(self):\n\t\t<var>...</var></div>\n\nCreate:\n\n<div class=\"codebox\">= <var>Dataclass1</var>(<var>param_1</var>, <var>param_2</var>, <var>...</var>)\n= <var>Dataclass1</var>(<var>field_1</var> = <var>param_1</var>, <var>field_2</var> = <var>param_2</var>, <var>...</var>)</div>\n\nAccess:\n\n<div class=\"codebox\">= <var>dataclass_1</var>.<var>field_1</var></div>\n\n\n\n"},{"id":"sVAx","level":2,"heading":"Dataclass - Create","content":"<h2>Dataclass - Create</h2>\n\n\n"},{"id":"RT7Q","level":3,"heading":"Dataclass - Define","content":"<h3>Dataclass - Define</h3>\n\nDefine:\n\n<div class=\"codebox\">from dataclasses import dataclass\n\n@dataclass\nclass <var>Dataclass1</var>:\n\t<var>field_1</var>: <var>type</var>\n\t<var>field_2</var>: <var>type</var>\n\t<var>...</var></div>\n\nCreate:\n\n<div class=\"codebox\"><var>item_1</var> = <var>NewClass1</var>(<var>value_1</var>, <var>value_2</var> <var>...</var>)</div>\n\nOr:\n\n<div class=\"codebox\"><var>item_1</var> = <var>NewClass1</var>(<var>field_1</var> = <var>value_1</var>, <var>field_2</var> = <var>value_2</var> <var>...</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\">from dataclasses import dataclass\n\n@dataclass\nclass <var>Size</var>:\n\twidth: int\n\theight: int\n\nsize_1 = <var>Size</var>(10, 20)\nsize_2 = <var>Size</var>(width = 10, height = 20)</div>\n\n\n\n"},{"id":"0Nz6","level":3,"heading":"Dataclass - Define With Defaults","content":"<h3>Dataclass - Define With Defaults</h3>\n\nDefine:\n\n<div class=\"codebox\">@dataclass\nclass <var>Dataclass1</var>:\n\t<var>field_1</var>: <var>type</var> = <var>default_value</var>\n\t<var>field_2</var>: <var>type</var> = <var>default_value</var>\n\t<var>...</var></div>\n\nCreate:\n\n<div class=\"codebox\"><var>item_1</var> = <var>NewClass1</var>()</div>\n\n\nExample:\n\n<div class=\"codebox\">@dataclass\nclass Size:\n\twidth: int = 0\n\theight: int = 0\n\nsize_1 = Size()</div>\n\n\n\n"},{"id":"RaRN","level":3,"heading":"Dataclass - Define With Default List","content":"<h3>Dataclass - Define With Default List</h3>\n\n<div class=\"codebox\">= field(default_factory = lambda: [])</div>\n\nUsage:\n\n<div class=\"codebox\">from dataclasses import dataclass\nfrom dataclasses import field\n\n@dataclass\nclass <var>Dataclass1</var>:\n\t<var>list_1</var>: list = field(default_factory = lambda: [])</div>\n\n\n\n"},{"id":"QHwU","level":3,"heading":"Dataclass - Define With Default Dict","content":"<h3>Dataclass - Define With Default Dict</h3>\n\n<div class=\"codebox\">= field(default_factory = lambda: {})</div>\n\n<div class=\"codebox\">from dataclasses import dataclass\nfrom dataclasses import field\nfrom typing import Dict\n\n@dataclass\nclass <var>Dataclass1</var>:\n\n    <var>dict_1</var>: Dict[<var>K</var>: <var>V</var>] = field(\n            default_factory = lambda: {})\n\n    <var>dict_2</var>: Dict[<var>K</var>: <var>V</var>] = field(\n            default_factory = lambda: {'<var>a</var>': <var>1</var>, '<var>b</var>': <var>2</var>})</div>\n\n\n\n"},{"id":"Dq3j","level":3,"heading":"Dataclass - Define With Comparison Functions","content":"<h3>Dataclass - Define With Comparison Functions</h3>\n\n<div class=\"codebox\">@dataclass(order=true)</div>\n\nUsage:\n\n<div class=\"codebox\">from dataclasses import dataclass\n\n@dataclass(order=true)\nclass <var>Dataclass1</var>:\n\t<var>...</var></div>\n\n\nAdds comparison functions to the dataclass.\n\nComparisons are done in order by field.\n\n\nImplements:\n\n<code>__lt__(), __le__(), __gt__(), and __ge__()</code>\n\n\n\n"},{"id":"WfKY","level":3,"heading":"Dataclass - Define Immutable","content":"<h3>Dataclass - Define Immutable</h3>\n\nDefine:\n\n<div class=\"codebox\">@dataclass(frozen = True)\nclass <var>NewClass1</var>:\n\t<var>...</var></div>\n\n\nThe class properties can not be changed.\n\nThis also implements <code>__hash__()</code>.\n\n\n\n"},{"id":"r2UH","level":3,"heading":"Dataclass - Define Constructor - Override","content":"<h3>Dataclass - Define Constructor - Override</h3>\n\n<div class=\"codebox\">@dataclass\nclass <var>NewClass1</var>:\n\n\t<var>field_1</var>: <var>type</var>\n\t<var>...</var>\n\n\tdef __init__(self, <var>...</var>):\n\t\t<var>...</var></div>\n\n\nYou can override the constructor if you need.\nConsider using __post_init__() instead.\n\n\n\n"},{"id":"Ku9y","level":3,"heading":"Dataclass - Define Constructor - Post Init","content":"<h3>Dataclass - Define Constructor - Post Init</h3>\n\n<div class=\"codebox\">@dataclass\nclass <var>NewClass1</var>:\n\t<var>...</var>\n\n\tdef __post_init__(self):\n\t\t<var>...</var></div>\n\n\n<code>__post_init__</code> is called after the class is created.\nAdd any setup code you need in here including calling <code>super()</code>.\n\n\n\n"},{"id":"HqzZ","level":3,"heading":"Dataclass - Define Constructor - Call Parent Constructor","content":"<h3>Dataclass - Define Constructor - Call Parent Constructor</h3>\n\n<div class=\"codebox\">@dataclass\nclass <var>NewClass1</var>(<var>ParentClass</var>):\n\t<var>...</var>\n\n\tdef __post_init__(self):\n\t\tsuper().__init__()</div>\n\n\nUse <code>__post_init__</code> to add a call to the parents constructor and add<code>super().__init__().\n\n\n\n</code>### Dataclass - Define Method\n\nWorks the same as a normal class.\n\nDefine:\n\n<div class=\"codebox\">@dataclass\nclass <var>NewClass1</var>:\n\t\n\tdef <var>method_1</var>(self):\n\t\t<var>...</var></div>\n\nUse:\n\n<div class=\"codebox\"><var>item_1</var>.<var>method_1</var>()</div>\n\n\n\n"},{"id":"dypN","level":2,"heading":"Dataclass - Operations","content":"<h2>Dataclass - Operations</h2>\n\n\n"},{"id":"sNsj","level":3,"heading":"Dataclass - Is Dataclass","content":"<h3>Dataclass - Is Dataclass</h3>\n\n<div class=\"codebox\">= is_dataclass(<var>item_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from dataclasses import is_dataclass\n\n= is_dataclass(<var>item_1</var>)</div>\n\n\nReturns <code>True</code> if the item is a type of dataclass.\n\n\nExample:\n\n<div class=\"codebox\">from dataclasses import dataclass\nfrom dataclasses import is_dataclass\n\n@dataclass\nclass <var>Person</var>:\n    name: str\n\n<var>name</var> = '<var>joe</var>'\n<var>person_1</var> = Person(<var>name</var>)\n\nprint(is_dataclass(<var>name</var>))\nprint(is_dataclass(<var>person_1</var>))\n\n<span class=\"note\"># Prints:\n#\n#    False\n#    True</span></div>\n\n\n\n"},{"id":"SbHP","level":3,"heading":"Dataclass - Is Equal?","content":"<h3>Dataclass - Is Equal?</h3>\n\n<div class=\"codebox\">= <var>dataclass_1</var> == <var>dataclass_2</var></div>\n\n\nUse <code>==</code> to test if the dataclasses are the same.\n\nPython will do a field by field comparison.\n\n\nExample:\n\n<div class=\"codebox\">from dataclasses import dataclass\n\n@dataclass\nclass <var>Item</var>:\n    name: str\n    number: int\n\n<var>item_1</var> = Item('one', 1)\n<var>item_2</var> = Item('two', 2)\n\nprint (&quot;Equal?&quot;, <var>item_1</var> == <var>item_2</var>)\n\n<span class=\"note\"># Prints: Equal? False</span></div>\n\n\n\n"},{"id":"SbJR","level":3,"heading":"Dataclass - Is Equal?","content":"<h3>Dataclass - Is Equal?</h3>\n\n<div class=\"codebox\">= <var>dataclass_1</var> == <var>dataclass_2</var></div>\n\n\n<div class=\"codebox\">if <var>dataclass_1</var> == <var>dataclass_2</var>:\n\t<var>...</var></div>\n\n\nUse <code>==</code> to test if the dataclasses are the same.\n\nPython will do a field by field comparison.\n\n\nExample:\n\n<div class=\"codebox\">from dataclasses import dataclass\n\n@dataclass\nclass <var>Item</var>:\n    name: str\n    number: int\n\n<var>item_1</var> = Item('one', 1)\n<var>item_2</var> = Item('two', 2)\n\nprint (&quot;Equal?&quot;, <var>item_1</var> == <var>item_2</var>)\n\n<span class=\"note\"># Prints: Equal? False</span></div>\n\n\n\n"},{"id":"Rmc2","level":3,"heading":"Dataclass - Property - Access","content":"<h3>Dataclass - Property - Access</h3>\n\nSame as a normal class.\n\n<div class=\"codebox\">= <var>item_1</var>.<var>field_1</var></div>\n\n\n\n"},{"id":"w0BC","level":3,"heading":"Dataclass - Property - Update","content":"<h3>Dataclass - Property - Update</h3>\n\nSame as a normal class.\n\n<div class=\"codebox\"><var>item_1</var>.<var>field_1</var> = <var>new_value</var></div>\n\n\n\n"},{"id":"VFef","level":3,"heading":"Dataclass - From Dict","content":"<h3>Dataclass - From Dict</h3>\n\n<div class=\"codebox\">= <var>Dataclass1</var>(**<var>dict_1</var>)</div>\n\n\nConverts a dict into a dataclass.\n\n\nExample:\n\n<div class=\"codebox\">from dataclasses import dataclass\n\n@dataclass\nclass <var>Person</var>:\n    id: int\n    name: str\n\n<var>person_dict</var> = {'id': 1, 'name': 'Joe'}\n<var>person_1</var> = Person(**<var>person_dict</var>)\n\nprint(<var>person_1</var>)\n\n<span class=\"note\"># Prints: Person(id=1, name='Joe')</span></div>\n\n\n\n"},{"id":"ue31","level":3,"heading":"Dataclass - To Dict","content":"<h3>Dataclass - To Dict</h3>\n\n<div class=\"codebox\">= asdict(<var>dataclass_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from dataclasses import asdict\n\n= asdict(<var>dataclass_1</var>)</div>\n\n\nConverts a dataclass into a dict.\n\n\nExample:\n\n<div class=\"codebox\">from dataclasses import dataclass\nfrom dataclasses import asdict\n\n@dataclass\nclass <var>Person</var>:\n    id: int\n    name: str\n\n<var>person_1</var> = Person(1, 'Joe')\n<var>person_dict</var> = asdict(<var>person_1</var>)\n\nprint(<var>person_dict</var>)\n\n<span class=\"note\"># Prints: {'id': 1, 'name': 'Joe'}</span></div>\n\n\n\n"},{"id":"XTFF","level":1,"heading":"Collections Library","content":"<h1>Collections Library</h1>\n\n\n"},{"id":"DxVS","level":2,"heading":"Deque","content":"<h2>Deque</h2>\n\nA double ended queue that is implemented as a linked list under the hood.\n\nGuarantees O(1) performance for append, remove on either end of the queue.\n\n\n\n"},{"id":"RfJQ","level":3,"heading":"Deque - Basics","content":"<h3>Deque - Basics</h3>\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque()\n\n<var>queue_1</var>.append(<var>value</var>)\t\t\t<span class=\"note\"># Append End / Right</span>\n<var>queue_1</var>.appendleft(<var>value</var>)\t\t<span class=\"note\"># Append Start / Left</span>\n\n<var>last</var> = <var>queue_1</var>.pop()\t\t\t<span class=\"note\"># Pop End / Right</span>\n<var>first</var> = <var>queue_1</var>.popleft()\t\t<span class=\"note\"># Pop Start / Left</span>\n\n<var>size</var> = len(<var>queue_1</var>)\n<var>item</var> = <var>queue_1</var>[<var>1</var>]\n\ndel <var>queue_1</var>[<var>1</var>]\n<var>queue_1</var>.clear()</div>\n\n\n\n"},{"id":"Gb0U","level":3,"heading":"Deque - Create","content":"<h3>Deque - Create</h3>\n\n\n"},{"id":"Gb1W","level":4,"heading":"Deque - Create","content":"<h4>Deque - Create</h4>\n\n<div class=\"codebox\">= deque()</div>\n\nUsage:\n\n<div class=\"codebox\">from collections import deque\n\n= deque()</div>\n\n\nCreates an empty queue.\n\n\n\n"},{"id":"273C","level":4,"heading":"Deque - Create From List","content":"<h4>Deque - Create From List</h4>\n\n<div class=\"codebox\">= deque(<var>list_1</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from collections import deque\n\n= deque(<var>list_1</var>)\n\n= deque([<var>value_1</var>, <var>value_2</var>, <var>...</var>])</div>\n\n\n\n"},{"id":"JTuz","level":4,"heading":"Deque - Create With Maximum Size","content":"<h4>Deque - Create With Maximum Size</h4>\n\n<div class=\"codebox\">= deque(maxlen = <var>size</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">from collections import deque\n\n= deque(maxlen = <var>size</var>)</div>\n\n\nSets the maximum size of deque().\n\nThe oldest item is removed when adding an item to a full deque.\n\n\n\n"},{"id":"R3mv","level":3,"heading":"Deque - Operations","content":"<h3>Deque - Operations</h3>\n\n\n\n"},{"id":"ryt3","level":4,"heading":"Deque - Append","content":"<h4>Deque - Append</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.append(<var>value</var>)</div>\n\n\nAppends an item to the end / right of the queue.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var>queue_1</var>.append(10)\n\n<span class=\"note\"># Sets queue_1 To: [1, 2, 3, 10]</span></div>\n\n\n\n"},{"id":"2GXj","level":4,"heading":"Deque - Append List","content":"<h4>Deque - Append List</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.extend(<var>list_1</var>)</div>\n\n\nAppends a list of items to the end / right of the queue.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var>queue_1</var>.extend([10, 20])\n\n<span class=\"note\"># Sets queue_1 To: [1, 2, 3, 10, 20]</span></div>\n\n\n\n"},{"id":"JsEN","level":4,"heading":"Deque - Count Occurences","content":"<h4>Deque - Count Occurences</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.count(<var>value</var>)</div>\n\n\nReturns the number of times <code><var>value</var></code> appears in <code><var>queue_1</var></code>.\n\n\n\n"},{"id":"fgAH","level":4,"heading":"Deque - Delete","content":"<h4>Deque - Delete</h4>\n\n<div class=\"codebox\"><var>del</var> <var>queue_1</var>[<var>index</var>]</div>\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var>del queue_1</var>[1]\n\n<span class=\"note\"># Sets queue_1 To: [1, 3]</span></div>\n\n\n\n"},{"id":"3G1h","level":4,"heading":"Deque - Delete All","content":"<h4>Deque - Delete All</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.clear()</div>\n\n\n\n"},{"id":"9CLJ","level":4,"heading":"Deque - Is Empty?","content":"<h4>Deque - Is Empty?</h4>\n\n<div class=\"codebox\">= not <var>queue_1</var></div>\n\n<div class=\"codebox\">if not <var>queue_1</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"ednC","level":4,"heading":"Deque - Not Empty?","content":"<h4>Deque - Not Empty?</h4>\n\n<div class=\"codebox\">= bool(<var>queue_1</var>)</div>\n\n<div class=\"codebox\">if <var>queue_1</var>:\n\t<var>...</var></div>\n\nUse <strong>bool()</strong> if you need to get a True/False value.\nThere is no need for <strong>bool()</strong> when using <strong>if...</strong>.\n\n\n\n"},{"id":"WcPx","level":4,"heading":"Deque - Get","content":"<h4>Deque - Get</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>[<var>index</var>]</div>\n\n\nReturns an item on the queue.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var><var>item_1</var> = queue_1</var>[1]\n\n<span class=\"note\"># Returns: 2</span></div>\n\n\n\n"},{"id":"G3PL","level":4,"heading":"Deque - Get First","content":"<h4>Deque - Get First</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>[0]</div>\n\n\nReturns the first item on the queue (first added).\n\nRetrieves in O(1) time.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var><var>first</var> = queue_1</var>[0]\n\n<span class=\"note\"># Returns: 1</span></div>\n\n\n\n"},{"id":"GDxq","level":4,"heading":"Deque - Get Last","content":"<h4>Deque - Get Last</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>[-1]</div>\n\n\nReturns the last item on the queue (most recently added).\n\nRetrieves in O(1) time.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var><var>item_1</var> = queue_1</var>[-1]\n\n<span class=\"note\"># Returns: 3</span></div>\n\n\n\n"},{"id":"JjMR","level":4,"heading":"Deque - Insert","content":"<h4>Deque - Insert</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.insert(<var>index</var>, <var>value</var>)</div>\n\nInserts at position <code><var>index</var></code>.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var>queue_1</var>.insert(1, 10)\n\n<span class=\"note\"># Sets queue_1 To: [1, 10, 2, 3]</span></div>\n\n\n\n"},{"id":"20DN","level":4,"heading":"Deque - Pop First","content":"<h4>Deque - Pop First</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.popleft()</div>\n\nRemoves the first / left item from the queue and returns it.\n\n\n\n"},{"id":"9L58","level":4,"heading":"Deque - Pop Last","content":"<h4>Deque - Pop Last</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.pop()</div>\n\nRemoves the last / right item from the queue and returns it.\n\n\n\n"},{"id":"TnvE","level":4,"heading":"Deque - Prepend","content":"<h4>Deque - Prepend</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.appendleft(<var>value</var>)</div>\n\n\nPrepends an item to the start / left of the queue.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var>queue_1</var>.appendleft(10)\n\n<span class=\"note\"># Sets queue_1 To: [10, 1, 2, 3]</span></div>\n\n\n\n"},{"id":"aGyd","level":4,"heading":"Deque - Prepend List","content":"<h4>Deque - Prepend List</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.extendleft(<var>list_1</var>)</div>\n\n\nAppends a list of items to the start / left of the queue.\n\n⚠️ Adds items in reverse order!\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var>queue_1</var>.extendleft([<var>10</var>, <var>20</var>])\n\n<span class=\"note\"># Sets queue_1 To: [20, 10, 1, 2, 3]</span></div>\n\n\n\n"},{"id":"20bn","level":4,"heading":"Deque - Reverse","content":"<h4>Deque - Reverse</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.reverse()</div>\n\n\nReverses the order of items in the queue.\nReverses in place.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var>queue_1</var>.reverse()\n\n<span class=\"note\"># Sets queue_1 To: [3, 2, 1]</span></div>\n\n\n\n"},{"id":"njGV","level":4,"heading":"Deque - Shift / Rotate","content":"<h4>Deque - Shift / Rotate</h4>\n\n<div class=\"codebox\"><var>queue_1</var>.rotate(<var>count</var>)</div>\n\n\nRotates (shifts) the queue to the right <code><var>count</var></code> times by taking the last items and placing them at the start of the queue.\nRotates in place.\n\n\nExample:\n\n<div class=\"codebox\">from collections import deque\n\n<var>queue_1</var> = deque([<var>1</var>, <var>2</var>, <var>3</var>])\n\n<var>queue_1</var>.rotate(2)\n\n<span class=\"note\"># Sets queue_1 To: [2, 3, 1]</span></div>\n\n\n\n"},{"id":"6qYm","level":4,"heading":"Deque - Size","content":"<h4>Deque - Size</h4>\n\n<div class=\"codebox\">= len(<var>queue_1</var>)</div>\n\n\n\n"},{"id":"CxHg","level":4,"heading":"Deque - Maximum Size","content":"<h4>Deque - Maximum Size</h4>\n\n<div class=\"codebox\">= <var>queue_1</var>.maxlen</div>\n\n\n\n"},{"id":"cqj9","level":2,"heading":"Named Tuple","content":"<h2>Named Tuple</h2>\n\nNamed tuples allow you to access tuple values by name.\n\nUse the <code>namedtuple</code> function to create a class for a given tuple type.\n\n\nPython Docs: <a class=\"link\" href=\"https://docs.python.org/3/library/collections.html#collections.namedtuple\">Named Tuples</a>\n\n\n\n"},{"id":"zhQE","level":3,"heading":"Named Tuple - Video Tutorial","content":"<h3>Named Tuple - Video Tutorial</h3>\n\nGet going faster with our Named Tuples in a Hurry Video:\n\n<div class=\"card\"><a class=\"link\" href=\"https://youtu.be/IyYayd6oApg\">Named Tuples in a Hurry</a>\n\n(2&frac12; Mins)</div>\n\n\n\n"},{"id":"R8jc","level":3,"heading":"Named Tuple - Basics","content":"<h3>Named Tuple - Basics</h3>\n\nDefine:\n\n<div class=\"codebox\">from collections import namedtuple\n\n= namedtuple(&quot;<var>NamedTuple1</var>&quot;, [&quot;<var>field_1</var>&quot;, &quot;<var>field_2</var>&quot;, <var>...</var>])</div>\n\nCreate:\n\n<div class=\"codebox\">= <var>NamedTuple1</var>(<var>param_1</var>, <var>param_2</var>, <var>...</var>)\n\n= <var>NamedTuple1</var>(<var>field_1</var> = <var>param_1</var>, <var>field_2</var> = <var>param_2</var>, <var>...</var>)</div>\n\nAccess:\n\n<div class=\"codebox\">= <var>named_tuple_1</var>.<var>field_1</var>\n\n= <var>named_tuple_1</var>[0]</div>\n\n\n\n"},{"id":"G4Qg","level":3,"heading":"Named Tuple - Create","content":"<h3>Named Tuple - Create</h3>\n\n\n"},{"id":"g6UD","level":4,"heading":"Named Tuple - Define","content":"<h4>Named Tuple - Define</h4>\n\n<div class=\"codebox\">= namedtuple(&quot;<var>NamedTuple1</var>&quot;, [&quot;<var>field_1</var>&quot;, &quot;<var>field_2</var>&quot;])</div>\n\nUsage:\n\n<div class=\"codebox\">from collections import namedtuple\n\n= namedtuple(&quot;<var>NamedTuple1</var>&quot;, [&quot;<var>field_1</var>&quot;, &quot;<var>field_2</var>&quot;, <var>...</var>])\n\n= namedtuple(&quot;<var>NamedTuple1</var>&quot;, &quot;<var>field_1</var> <var>field_2</var> <var>...&quot;</var>)\n\n= namedtuple(&quot;<var>NamedTuple1</var>&quot;, &quot;<var>field_1</var>, <var>field_2</var>, <var>...&quot;</var>)</div>\n\nReturns: <code>class</code>\n\n\nDefines a named tuple, a tuple with named propeties.\n\nCreates a subclass of <code>tuple</code>.\n\n\nExample:\n\n<div class=\"codebox\">from collections import namedtuple\n<var>Size</var> = namedtuple(&quot;Size&quot;, [&quot;width&quot;, &quot;height&quot;])\n\n<var>size_1</var> = Size(<var>160</var>, <var>100</var>)\n\n<var>width</var> = <var>size_1</var>.width\n<var>height</var> = <var>size_1</var>.height</div>\n\n\n\n"},{"id":"Sh34","level":4,"heading":"Named Tuple - Instantiate","content":"<h4>Named Tuple - Instantiate</h4>\n\n<div class=\"codebox\">= <var>NamedTuple1</var> (<var>value_1</var>, <var>value_2</var>, <var>...</var>)\n\n= <var>NamedTuple1</var> (<var>field_1</var> = <var>value_1</var>, <var>field_2</var> = <var>value_2</var>, <var>...</var>)</div>\n\n\nCreates an instance of the named tuple.\n\n\nExample:\n\n<div class=\"codebox\">from collections import namedtuple\n<var>Size</var> = namedtuple(&quot;Size&quot;, [&quot;width&quot;, &quot;height&quot;])\n\n<var>size_1</var> = Size(<var>160</var>, <var>100</var>)\n<var>size_2</var> = Size(width = <var>160</var>, height = <var>100</var>)</div>\n\n\n\n"},{"id":"6hDW","level":4,"heading":"Named Tuple - Instantiate From Tuple","content":"<h4>Named Tuple - Instantiate From Tuple</h4>\n\n<div class=\"codebox\">= <var>NamedTuple1</var> (*<var>tuple_1</var>)</div>\n\nor\n\n<div class=\"codebox\">= <var>NamedTuple1</var> (*(<var>value_1</var>, <var>value_2</var>, <var>...</var>))</div>\n\n\nCreates an instance of the named tuple from a regular tuple.\n\n\nExample:\n\n<div class=\"codebox\">from collections import namedtuple\n<var>Size</var> = namedtuple(&quot;Size&quot;, [&quot;width&quot;, &quot;height&quot;])\n\n<var>tuple</var> = (<var>160</var>, <var>100</var>)\n\n<var>size_1</var> = Size(*<var>tuple</var>)</div>\n\n\n\n"},{"id":"GWvS","level":4,"heading":"Named Tuple - Extend","content":"<h4>Named Tuple - Extend</h4>\n\n<div class=\"codebox\">class <var>ExtendedNamedTuple1</var>(<var>NamedTuple1</var>):\n\n\tdef <var>method_1</var>(self)...</div>\n\nExtend by creating an extended class.\n\nAllows you to add custom fields and methods to your base namedtuple.\n\n\nExample:\n\n<div class=\"codebox\">from collections import namedtuple\n\n<var>BaseSize</var> = namedtuple(&quot;Size&quot;, [&quot;width&quot;, &quot;height&quot;])\n\nclass <var>Size</var>(<var>BaseSize</var>):\n\n    def area(self):\n        return self.<var>width</var> * self.<var>height</var>\n\n<var>size_1</var> = <var>Size</var>(160, 100)\n<var>area</var> = <var>size_1</var>.area()\n\n<span class=\"note\">Returns: 16000</span></div>\n\n\n\n"},{"id":"Tu3J","level":3,"heading":"Named Tuple - Operations","content":"<h3>Named Tuple - Operations</h3>\n\n\n\n"},{"id":"XAhG","level":4,"heading":"Named Tuple - Get Field Names","content":"<h4>Named Tuple - Get Field Names</h4>\n\n<div class=\"codebox\">= <var>named_tuple_1</var>._fields</div>\n\nReturns: <code>tuple of str</code>\n\n\nReturns the named tuple's fields as a tuple of strings.\n\n\nExample:\n\n<div class=\"codebox\">from collections import namedtuple\n<var>Size</var> = namedtuple(&quot;Size&quot;, [&quot;width&quot;, &quot;height&quot;])\n\n<var>size_1</var> = Size(<var>160</var>, <var>100</var>)\n\nprint(&quot;Fields&quot;, <var>size_1</var>._fields)\n\n<span class=\"note\"># Prints: Fields ('width', 'height')</span></div>\n\n\n\n"},{"id":"E4Xs","level":4,"heading":"Named Tuple - Get Field Value","content":"<h4>Named Tuple - Get Field Value</h4>\n\n<div class=\"codebox\">= <var>item_1</var>.<var>field_1</var></div>\n\n<div class=\"codebox\">= <var>item_1</var>[0]</div>\n\n\nAccesses a value of the named tuple by accessing the property name.\n\n\nExample:\n\n<div class=\"codebox\">from collections import namedtuple\n<var>Size</var> = namedtuple(&quot;Size&quot;, [&quot;width&quot;, &quot;height&quot;])\n\n<var>size_1</var> = Size(<var>160</var>, <var>100</var>)\n\n<var>width</var> = <var>size_1</var>.width\n<var>height</var> = <var>size_1</var>.height</div>\n\n\n\n"},{"id":"uM4f","level":4,"heading":"Named Tuple - Is Equal?","content":"<h4>Named Tuple - Is Equal?</h4>\n\n<div class=\"codebox\">= <var>named_1</var> == <var>named_2</var></div>\n\n\n<div class=\"codebox\">if <var>named_1</var> == <var>named_2</var>:\n\t<var>...</var></div>\n\n\nUse <code>==</code> to test if the named tuples are the same.\n\nPython does a field by field comparison.\n\n\nExample:\n\n<div class=\"codebox\">from collections import namedtuple\n<var>Size</var> = namedtuple(&quot;Size&quot;, [&quot;width&quot;, &quot;height&quot;])\n\n<var>size_1</var> = Size(<var>160</var>, <var>100</var>)\n<var>size_2</var> = Size(<var>100</var>, <var>160</var>)\n\nprint (&quot;Equal?&quot;, <var>size_1</var> == <var>size_2</var>)\n\n<span class=\"note\"># Prints: Equal? False</span></div>\n\n\n\n"},{"id":"AFJv","level":4,"heading":"Named Tuple - Update Field Value","content":"<h4>Named Tuple - Update Field Value</h4>\n\nNot possible.\nThis is an immutable tuple.\n\n\n\n"},{"id":"PXvt","level":4,"heading":"Named Tuple - To Dict","content":"<h4>Named Tuple - To Dict</h4>\n\n<div class=\"codebox\">= <var>named_tuple_1</var>._asdict()</div>\n\nReturns: <code>tuple of str</code>\n\n\nReturns a named tuple as a dict.\n\n\nExample:\n\n<div class=\"codebox\">from collections import namedtuple\n<var>Size</var> = namedtuple(&quot;Size&quot;, [&quot;width&quot;, &quot;height&quot;])\n\n<var>size_1</var> = Size(<var>160</var>, <var>100</var>)\n\nprint(&quot;Dict&quot;, <var>size_1</var>._asdict())\n\n<span class=\"note\"># Prints: Dict {'width': 160, 'height': 100}</span></div>\n\n\n\n"},{"id":"f2RL","level":2,"heading":"Ordered Dict","content":"<h2>Ordered Dict</h2>\n\n<div class=\"codebox\">from collections import OrderedDict\n\n= OrderedDict()</div>\n\n<div class=\"codebox\">= OrderedDict({<var>key</var>: <var>value</var>, <var>key</var>: <var>value</var>, <var>...</var>})</div>\n\n\nReturns a dict where the keys are stored in insertion order.\nSubclasses the dict type.\n\nAll dict operations work on ordered dict.\n\n\nExample:\n\n<div class=\"codebox\">from collections import OrderedDict\n\n<var>dict_1</var> = OrderedDict()\n\n<var>dict_1</var>['<var>c</var>'] = '<var>First</var>'\n<var>dict_1</var>['<var>b</var>'] = '<var>Second</var>'\n<var>dict_1</var>['<var>a</var>'] = '<var>Third</var>'\n\nfor <var>key</var> in <var>dict_1</var>.keys():\n\tprint (<var>key</var>, <var>dict_1</var>[<var>key</var>])\n\n<span class=\"note\"># Prints:\n#\n# c First\n# b Second\n# a Third</span></div>\n\n\n\n\n"},{"id":"yaAb","level":3,"heading":"Ordered Dict - Operations","content":"<h3>Ordered Dict - Operations</h3>\n\n\n"},{"id":"XVry","level":4,"heading":"Ordered Dict - Get Keys","content":"<h4>Ordered Dict - Get Keys</h4>\n\n<div class=\"codebox\">= <var>dict_1</var>.keys()</div>\n\nReturns: <code>odict_keys</code>\n\n\nReturns the keys in insertion order.\n\n\n<div class=\"codebox\">from collections import OrderedDict\n\n<var>dict_1</var> = OrderedDict()\n\n<var>dict_1</var>['<var>c</var>'] = '<var>First</var>'\n<var>dict_1</var>['<var>b</var>'] = '<var>Second</var>'\n<var>dict_1</var>['<var>a</var>'] = '<var>Third</var>'\n\nfor <var>key</var> in <var>dict_1</var>.keys():\n\tprint (<var>key</var>, <var>dict_1</var>[<var>key</var>])\n\n<span class=\"note\"># Prints:\n#\n# c First\n# b Second\n# a Third</span></div>\n\n\n\n"},{"id":"XkxL","level":4,"heading":"Ordered Dict - Get Item","content":"<h4>Ordered Dict - Get Item</h4>\n\n<div class=\"codebox\">= list(<var>dict_1</var>.items())[<var>index</var>]</div>\n\nReturns: <code><var>value</var></code>\n\n\nReturns an item.\n\nThe index references the item based on the insert order.\n\n\nExample:\n\n<div class=\"codebox\">from collections import OrderedDict\n\n<var>dict_1</var> = OrderedDict({\n        '<var>c</var>': '<var>First</var>',\n        '<var>b</var>': '<var>Second</var>',\n        '<var>a</var>': '<var>Third</var>'})\n\n<var>second_tuple</var> = list(<var>dict_1</var>.items())[0]\n\nprint('2nd:', <var>second_tuple</var>)\n\n<span class=\"note\"># Prints: &quot;2nd: ('c', 'Second')&quot;</span></div>\n\n\n\n"},{"id":"PtbM","level":4,"heading":"Ordered Dict - Get First Item","content":"<h4>Ordered Dict - Get First Item</h4>\n\n<div class=\"codebox\">= <var>dict_1</var>.popitem(last = False)</div>\n\nReturns: <code>tuple = (<var>key</var>, <var>value</var>)</code>\n\n\nRemoves and returns the first item placed in the dictionary.\n\nExample:\n\n<div class=\"codebox\">from collections import OrderedDict\n\n<var>dict_1</var> = OrderedDict({\n        '<var>c</var>': '<var>First</var>',\n        '<var>b</var>': '<var>Second</var>',\n        '<var>a</var>': '<var>Third</var>'})\n\n<var>first</var> = <var>dict_1</var>.popitem(last = False)\n\n<span class=\"note\"># Returns ('c', 'First')</span></div>\n\n\n\n"},{"id":"DxS6","level":4,"heading":"Ordered Dict - Get Last Item","content":"<h4>Ordered Dict - Get Last Item</h4>\n\n<div class=\"codebox\">= <var>dict_1</var>.popitem()</div>\n\nReturns: <code>tuple = (<var>key</var>, <var>value</var>)</code>\n\n\nRemoves and returns the last item placed in the dictionary.\n\nExample:\n\n<div class=\"codebox\">from collections import OrderedDict\n\n<var>dict_1</var> = OrderedDict({\n        '<var>c</var>': '<var>First</var>',\n        '<var>b</var>': '<var>Second</var>',\n        '<var>a</var>': '<var>Third</var>'})\n\n<var>last</var> = <var>dict_1</var>.popitem()\n\n<span class=\"note\"># Returns ('a', 'Third')</span></div>\n\n\n\n"},{"id":"G8KL","level":4,"heading":"Ordered Dict - Get Items","content":"<h4>Ordered Dict - Get Items</h4>\n\n<div class=\"codebox\">= <var>dict_1</var>.items()</div>\n\nReturns: <code>odict_items</code>\n\n\nReturns the items in insertion order.\n\nThe returned value is iterable but not indexable or slicable.\n\n\n<div class=\"codebox\">from collections import OrderedDict\n\n<var>dict_1</var> = OrderedDict()\n\n<var>dict_1</var>['<var>c</var>'] = '<var>First</var>'\n<var>dict_1</var>['<var>b</var>'] = '<var>Second</var>'\n<var>dict_1</var>['<var>a</var>'] = '<var>Third</var>'\n\nfor <var>item</var> in <var>dict_1</var>.items():\n\tprint (<var>item</var>)\n\n<span class=\"note\"># Prints:\n#\n# First\n# Second\n# Third</span></div>\n\n\n\n"},{"id":"XRAJ","level":1,"heading":"How To","content":"<h1>How To</h1>\n\n\n"},{"id":"ewC5","level":2,"heading":"Assert","content":"<h3>Assert</h3>\n\n<div class=\"codebox\">assert <var>expression</var></div>\n\n<div class=\"codebox\">assert <var>expression</var>, <var>expression</var>, <var>...</var></div>\n\n\nAsserts an expression is true.\n\nIf false, rasises AssertionError.\nUse to debug code or alert of unexpected conditions.\n\n\n"},{"id":"KbV2","level":2,"heading":"Anything - Convert To String","content":"<h3>Anything - Convert To String</h3>\n\n<div class=\"codebox\">= repr(<var>variable</var> <span class=\"dim\">|</span> <var>expression</var>)</div>\n\nConverts any value to a machine intrepretable string.\n\n\n\n"},{"id":"Wsaq","level":2,"heading":"Bash - Make Python File Executable","content":"<h3>Bash - Make Python File Executable</h3>\n\nPython File - 1st Line:\n\n<div class=\"codebox\">#!/usr/bin/env python3</div>\n\nMake Executable:\n\n<div class=\"codebox\">chmod +x <var>file_name.py</var></div>\n\n\n1. Add the shebang to the file.\n2. Set the file as executable.\n\n\nAdding a shebang to the top of the script allows Bash to run it without explicitly having to tell it to use Python. \n\n\n\n"},{"id":"RWJd","level":3,"heading":"1 - Add Shebang","content":"<h4>1 - Add Shebang</h4>\n\n<div class=\"codebox\">#!/usr/bin/env python3</div>\n\nCalled the shebang.\nAdd to the first line in your file.\n\n\n\n"},{"id":"2b3V","level":3,"heading":"2 - Set File As Executable","content":"<h4>2 - Set File As Executable</h4>\n\n<div class=\"codebox\">chmod +x <var>file_name.py</var></div>\n\nMakes the file executable.\n\n\n\n"},{"id":"RwcP","level":2,"heading":"Bitwise Not","content":"<h3>Bitwise Not</h3>\n\n<div class=\"codebox\">= (1 &lt;&lt; <var>bit_count</var>) - 1 - <var>value</var></div>\n\nBitwise NOT Function:\n\n<div class=\"codebox\">def bitwise_not(<var>value</var>, <var>bits</var> = 8):\n\treturn (1 &lt;&lt; <var>bits</var>) - 1 - <var>value</var></div>\n\n\nThere is no built in bitwise NOT that simply flips the bits.\nUse this formula instead.\n\n\nExamples:\n\nUsing Formula:\n\n<div class=\"codebox\"><var>value</var> = 0b11\n\n<var>bitwise_not</var> = (1 &lt;&lt; <var>4</var>) - 1 - <var>value</var>\n\n<span class=\"note\"># Returns: 0b1100</span></div>\n\nUsing Function:\n\n<div class=\"codebox\">def bitwise_not(<var>value</var>, <var>bits</var> = 8):\n\treturn (1 &lt;&lt; <var>bits</var>) - 1 - <var>value</var>\n\n<var>value</var> = 0b11\n\n<var>not_value</var> = bitwise_not(<var>value</var>)\n\n<span class=\"note\"># Returns: 0b11111100</span>\n\n<var>not_value</var> = bitwise_not(<var>value</var>, 4)\n\n<span class=\"note\"># Returns: 0b1100</span></div>\n\n\n\n"},{"id":"mNNW","level":2,"heading":"Byte Code - Print","content":"<h3>Byte Code - Print</h3>\n\n<div class=\"codebox\">from dis import dis</div>\n\nPrint Function:\n\n<div class=\"codebox\">dis(<var>function_name</var>)</div>\n\nPrint Class:\n\n<div class=\"codebox\">dis(<var>class_name</var>)</div>\n\n\nPrints the byte code operations for the given function or class.\n\n\n\n"},{"id":"xWac","level":2,"heading":"Command-line Arguments - Get","content":"<h3>Command-line Arguments - Get</h3>\n\n<div class=\"codebox\">from sys import argv\n\n<var>arguments</var> = argv[1:]</div>\n\nUse <code>argv[1:]</code> to return arguments.\n<code>.argv[0]</code> returns the module file name.\n\n\n\n"},{"id":"xWsH","level":2,"heading":"Command-line Arguments - Has","content":"<h3>Command-line Arguments - Has</h3>\n\n<div class=\"codebox\">from sys import argv\n\n= len(argv) &gt; 1</div>\n\n\nReturns True when the program has command-line arguments.\n\n\n\n"},{"id":"HEGn","level":2,"heading":"Cached Compiled Files - Delete","content":"<h3>Cached Compiled Files - Delete</h3>\n\nBash:\n\n<div class=\"codebox\">find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete</div>\n\n\nDeletes all __pycache__ directories in your project.\n\n\n\n"},{"id":"dtAz","level":2,"heading":"Console Screen - Clear","content":"<h3>Console Screen - Clear</h3>\n\nUse This Function:\n\n<div class=\"codebox\">from os import system, name\n\ndef <var>clear_screen</var>():\n    if name == 'nt':\n        system('cls')\t<span class=\"note\"># Windows</span>\n    else:\n        system('clear')\t<span class=\"note\"># Mac, Linux</span></div>\n\nCall:\n\n<div class=\"codebox\"><var>clear_screen</var>()</div>\n\n\nClears the console screen.\n\n\n\n"},{"id":"XBng","level":2,"heading":"Current Working Directory - Get","content":"<h3>Current Working Directory - Get</h3>\n\n<div class=\"codebox\">from os import getcwd\n\n<var>directory</var> = getcwd()</div>\n\n\n\n"},{"id":"UsMJ","level":2,"heading":"Current Working Directory - Change","content":"<h3>Current Working Directory - Change</h3>\n\n<div class=\"codebox\">from os import chdir\n\nchdir(<var>new_directory</var>)</div>\n\n\n\n"},{"id":"7sp6","level":2,"heading":"Email - Send Basic Text Email","content":"<h3>Email - Send Basic Text Email</h3>\n\n<div class=\"codebox\">from email.message import EmailMessage\nfrom smtplib import SMTP\n\n<var>MAIL_HOST</var> = '...'\n<var>MAIL_PORT</var> = 587\n<var>MAIL_ID</var> = '...'\n<var>MAIL_PASSWORD</var> = '...'\n\ndef new_message(<var>sender</var>, <var>to</var>, <var>subject</var>, <var>body</var>):\n    <var>message</var> = EmailMessage()\n    <var>message</var>['From'] = <var>sender</var>\n    <var>message</var>['To'] = <var>to</var>\n    <var>message</var>['Subject'] = <var>subject</var>\n    <var>message</var>.set_content(<var>body</var>)\n    return <var>message</var>\n\ndef new_smtp(<var>host</var>, <var>port</var>, <var>id</var>, <var>password</var>):\n    <var>smtp</var> = SMTP(<var>host</var>, <var>port</var>)\n    <var>smtp</var>.login(<var>id</var>, <var>password</var>)\n    return <var>smtp</var>\n\n\nmessage = new_message(\n    sender = '<var>...</var>',\n    to = '<var>...</var>',\n    subject = '<var>Test Subject</var>',\n    body = '<var>Test Message.</var>')\n\nwith new_smtp(<var>MAIL_HOST</var>, <var>MAIL_PORT</var>, <var>MAIL_ID</var>, <var>MAIL_PASSWORD</var>) as <var>smtp</var>\n    <var>smtp</var>.send_message(<var>message</var>)</div>\n\n\n\n"},{"id":"TDbb","level":2,"heading":"Evaluate String Expression","content":"<h3>Evaluate String Expression</h3>\n\n<div class=\"codebox\">= eval(&quot;<var>expression</var>&quot;)</div>\n\n\nEvaluates the python expression and returns the value.\nThe expression can contain local and global variables.\n\nSyntax errors will raise <code>SyntaxError</code>.\nReferencing non-existent variables will raise <code>NameError</code>.\n\n\nExamples:\n\n<div class=\"codebox\"><var>a</var> = eval('<var>2 * 3</var>')               <span class=\"note\"># Returns 6</span></div>\n\n<div class=\"codebox\"><var>a</var> = <var>3</var>\n<var>b</var> = eval('<var>2 * a</var>')               <span class=\"note\"># Returns 6</span></div>\n\n<div class=\"codebox\"><var>b</var> = eval(&quot;<var>'2' + ' * ' + '3'</var>&quot;)   <span class=\"note\"># Returns &quot;2 * 3&quot;</span></div>\n\n\n\n"},{"id":"Xcm1","level":2,"heading":"Global Symbols - Get","content":"<h3>Global Symbols - Get</h3>\n\n<div class=\"codebox\">= globals()</div>\n\n\nReturns: <code>dict</code>\n\n\nReturns all symbols currently in global scope from the symbol table.\n\n\n\n"},{"id":"H83c","level":2,"heading":"Input - Read","content":"<h3>Input - Read</h3>\n\n<div class=\"codebox\">= input()</div>\n\n<div class=\"codebox\">= input()\n= input(&quot;<var>Enter value: </var>&quot;)\n= input(&quot;<var>Enter value:\\n</var>&quot;)</div>\n\n\nRead a line from the standard input.\n\n\nExample:\n\n<div class=\"codebox\"><var>name</var> = input(&quot;<var>Enter your name:\\n</var>&quot;)\n\nprint(&quot;You entered&quot;, <var>name</var>)</div>\n\n\n\n"},{"id":"BLEp","level":2,"heading":"Input - Read Integer","content":"<h3>Input - Read Integer</h3>\n\n<div class=\"codebox\">= int(input(&quot;<var>Input number: </var>&quot;))</div>\n\n\nRead input as an integer.\n\nThrows <code>ValueError</code> if not an integer.\n\n\nExample:\n\n<div class=\"codebox\"><var>number</var> = int(input(&quot;<var>Enter a number: </var>&quot;))\n\nprint(&quot;You entered&quot;, <var>number</var>)</div>\n\n\n\n"},{"id":"kwC8","level":2,"heading":"Input - Read Password","content":"<h3>Input - Read Password</h3>\n\n<div class=\"codebox\">= getpass()</div>\n\n<div class=\"codebox\">from getpass import getpass\n\n= getpass()\n= getpass(&quot;<var>Enter password: </var>&quot;)\n= getpass(&quot;<var>Enter password:\\n</var>&quot;)</div>\n\n\nRead a line from the standard input but doesn't display it.\n\n\nExample:\n\n<div class=\"codebox\">from getpass import getpass\n\n<var>password</var> = getpass(&quot;<var>Enter your password:\\n</var>&quot;)\n\nprint(&quot;You entered&quot;, <var>password</var>)</div>\n\n\n\n"},{"id":"V8gH","level":2,"heading":"Is Palindrome?","content":"<h3>Is Palindrome?</h3>\n\n<div class=\"codebox\">def is_palindrome(<var>word</var>):\n    return <var>word</var> == <var>word</var>[::-1]</div>\n\n\nTests if a word is a palindrome.\n\n\n<span class=\"note\">Not sure why everyone is searching for this but here you go - Tim O'.</span>\n\n\nExample:\n\n<div class=\"codebox\">def is_palindrome(<var>word</var>):\n    return <var>word</var> == <var>word</var>[::-1]\n\nprint(is_palindrome(&quot;racecar&quot;))\nprint(is_palindrome(&quot;not a palindrome&quot;))\n\n<span class=\"note\"># Prints:\n#\n# True\n# False</span></div>\n\n\n\n"},{"id":"HWzt","level":2,"heading":"Item - Copy - Deep Copy","content":"<h3>Item - Copy - Deep Copy</h3>\n\n<div class=\"codebox\">from copy import copy</div>\n\n<div class=\"codebox\">= deepcopy(<var>item_1</var>)</div>\n\nMakes a copy of any variable, particularly objects or collections.\nAll child objects will also be replicated.\nThe new item will be completely independent of the original.\n\n\n\n"},{"id":"kBC4","level":2,"heading":"Item - Copy - Shallow Copy","content":"<h3>Item - Copy - Shallow Copy</h3>\n\n<div class=\"codebox\">from copy import copy</div>\n\n<div class=\"codebox\">= copy.copy(<var>item_1</var>)</div>\n\nMakes a shallow copy of any variable, particularly objects or collections.\nAll child objects will be referenced from the new item.\n\n\n\n"},{"id":"71pb","level":2,"heading":"Item - dir - Show Methods, Attributes","content":"<h3>Item - dir - Show Methods, Attributes</h3>\n\n<div class=\"codebox\">dir(<var>Class1</var>)</div>\n\n<div class=\"codebox\">dir(<var>instance_1</var>)</div>\n\nPrints all available methods and attributes on an item.\nWorks for classes, class instances, functions, just about everything.\n\n\n\n"},{"id":"m39H","level":2,"heading":"Line Separator","content":"<h3>Line Separator</h3>\n\n<div class=\"codebox\">from os import linesep\n\n= linesep</div>\n\nReturns the OS specific new line character.\n\n\n\n"},{"id":"16Qd","level":2,"heading":"Local Symbols - Get","content":"<h3>Local Symbols - Get</h3>\n\n<div class=\"codebox\">= locals()</div>\n\n\nReturns: <code>dict</code>\n\n\nLocals returns all symbols currently in local scope from the local symbol table.\n\n\n\n"},{"id":"J0wW","level":2,"heading":"Logical Operator - XOR","content":"<h3>Logical Operator - XOR</h3>\n\n<div class=\"codebox\">= bool(<var>a</var>) != bool(<var>b</var>)</div>\n\nIf <code><var>a</var></code>, <code><var>b</var></code> Are Booleans:\n\n<div class=\"codebox\">= <var>a</var> != <var>b</var></div>\n\n\nThere is no explicit XOR operator but <code>!=</code> works just fine.\n\n\n\n"},{"id":"knb2","level":3,"heading":"Match - Match If in List","content":"<h4>Match - Match If in List</h4>\n\n<div class=\"codebox\">match <var>item_1</var>:\n    case <var>item_1</var> if <var>item_1</var> in <var>list_2</var>:\n        <var>...</var></div>\n\n\nWill match the case only when <var>condition</var> is met.\n\n\n<div class=\"codebox\"><var>item_1</var> = 1\n\neven = [2, 4, 6, 8, 10]\nodd = [1, 3, 5, 7, 9]\n\nmatch <var>item_1</var>:\n    case <var>item</var> if <var>item</var> in <var>even</var>: print('Even')\n    case <var>item</var> if <var>item</var> in <var>odd</var>: print('Odd')\n    case _: print(&quot;Didn't match value.&quot;)\n\n<span class=\"note\">Prints: 'Odd'</span></div>\n\n\n\n"},{"id":"D9hp","level":2,"heading":"Module - File Path","content":"<h3>Module - File Path</h3>\n\n<div class=\"codebox\">= __file__</div>\n\n\n\n"},{"id":"VpeP","level":2,"heading":"Module - Root","content":"<h3>Module - Root</h3>\n\n<div class=\"codebox\">= __main__</div>\n\n\n\n"},{"id":"83SG","level":2,"heading":"Module - Root - File Path","content":"<h3>Module - Root - File Path</h3>\n\n<div class=\"codebox\">= __main__.__file__</div>\n\n\n\n"},{"id":"JSxR","level":2,"heading":"Operating System - Get","content":"<h3>Operating System - Get</h3>\n\n<div class=\"codebox\">from platform import system</div>\n\n<div class=\"codebox\">= system()</div>\n\n\nReturns the current Operating System\n\nLinux:\n\n<div class=\"codebox\">= 'Linux'</div>\n\nMacOS:\n\n<div class=\"codebox\">= 'Darwin'</div>\n\nWindows:\n\n<div class=\"codebox\">= 'Windows'</div>\n\n\n\n\n"},{"id":"JrEx","level":2,"heading":"Print","content":"<h3>Print</h3>\n\n<div class=\"codebox\">print(&quot;<var>Text to be printed.</var>&quot;)</div>\n\n<div class=\"codebox\">print(&quot;<var>item 1</var>&quot;, &quot;<var>item 2</var>&quot;, <var>...</var>)\t\t\t<span class=\"note\">#1</span></div>\n\n<div class=\"codebox\">print(repr(<var>item_1</var>))\t\t\t\t\t\t<span class=\"note\">#2</span></div>\n\n\n#1  -  Puts a space between items.\n\n#2  -  Use when <code>print(<var>item_1</var>)</code> wouldn't work.\n\n\nPrints to the standard out.\nAutomatically moves to the next line.\n\n\n\n"},{"id":"Kc3P","level":2,"heading":"Print - Newline Only","content":"<h3>Print - Newline Only</h3>\n\n<div class=\"codebox\">print()</div>\n\nPrints an empty line.\n\n\n\n"},{"id":"1Du8","level":2,"heading":"Print - No Newline","content":"<h3>Print - No Newline</h3>\n\n<div class=\"codebox\">print('<var>text...</var>', end='')</div>\n\n\n\n"},{"id":"JtVj","level":2,"heading":"Print - No Separator","content":"<h3>Print - No Separator</h3>\n\n<div class=\"codebox\">print('<var>text1</var>', '<var>text2</var>', '<var>text3</var>', sep='')</div>\n\n\n\n"},{"id":"TLFv","level":2,"heading":"Print - PPrint","content":"<h3>Print - PPrint</h3>\n\n<div class=\"codebox\">import pprint\n\npprint.pprint(<var>value</var>)</div>\n\nPrints Python data structures in a readable format.\n\n\n\n"},{"id":"aRee","level":2,"heading":"Print - Stay on Same Line","content":"<h3>Print - Stay on Same Line</h3>\n\n<div class=\"codebox\">print('<var>text...</var>', end='\\r')</div>\n\n\nReturns the print cursor to the start of the line.\n\n\n'\\r' - Carriage Return\n\n\nExample:\n\n<div class=\"codebox\"><span class=\"note\"># 5 Second Countdown:</span>\n\nfrom time import sleep\n\nfor <var>i</var> in range(5,0,-1):\n\tprint(<var>i</var>, end='\\r')\n\tsleep(1)\n\nprint('Done.')</div>\n\n\n\n\n"},{"id":"txLJ","level":2,"heading":"Print - To Standard Error","content":"<h3>Print - To Standard Error</h3>\n\nPreferred:\n\n<div class=\"codebox\">print('<var>text...</var>', file = sys.stderr)</div>\n\nAlternative:\n\n<div class=\"codebox\">sys.stderr.write('<var>text...</var>')</div>\n\n\n\n"},{"id":"zgbQ","level":2,"heading":"Print - To Standard Out","content":"<h3>Print - To Standard Out</h3>\n\nPreferred:\n\n<div class=\"codebox\">print('<var>text...</var>')</div>\n\nExplicit:\n\n<div class=\"codebox\">print('<var>text...</var>', file = sys.stdout)</div>\n\n\n\n"},{"id":"AMrq","level":2,"heading":"Program - Starting Module","content":"<h3>Program - Starting Module</h3>\n\n<div class=\"codebox\">from sys import argv\n\n<var>module_name</var> = argv[0]</div>\n\nReturns the name of the starting module file.\n\n\n\n"},{"id":"uS5U","level":2,"heading":"Project - Recommended Project Structure","content":"<h3>Project - Recommended Project Structure</h3>\n\n<div class=\"codebox\"><var>project_name</var>/\n├─ README.md\n├─ pyproject.toml\n├─ setup.cfg\n├─ dist/\n├─ docs/\n│  └─ ...\n├─ src/\n│  ├─ __main__.py\n│  └─ <var>package</var>/\n│     ├─__init__.py\n│     └─<var>module</var>.py\n└─ tests/\n   └─ ...</div>\n\n\nThere are many ways to structure your project but this is perhaps the most standard way.\n\n\nOfficial Doc:\n<a class=\"link\" href=\"https://packaging.python.org/en/latest/tutorials/packaging-projects/\">https://packaging.python.org/en/latest/tutorials/packaging-projects/</a>\n\n\n\n"},{"id":"ewLp","level":2,"heading":"Project - Minimal setup.py","content":"<h3>Project - Minimal setup.py</h3>\n\n<div class=\"codebox\">from setuptools import find_packages, setup\n\nsetup(\n\tname='<var>app_name</var>',\n\tversion='1.0.0',\n\tdescription='<var>App description.</var>',\n\tpackages=find_packages('<var>src</var>'),\n\tpackage_dir={'': '<var>src</var>'}\n)</div>\n\nNote:\n'<code>src</code>' is the standard directory for the project source code. On many projects the source folder has the same name as the root directory. In these cases, change <var><code>src</code></var> to the correct name.\n\n\n\n"},{"id":"00Gx","level":2,"heading":"Python Home Directory","content":"<h3>Python Home Directory</h3>\n\n<div class=\"codebox\">from sys import prefix\n\n<var>python_home_directory</var> = prefix</div>\n\nThis is where Python thinks it's home directory is.\n\n\n\n"},{"id":"yqs0","level":2,"heading":"Python Module - Search Path","content":"<h3>Python Module - Search Path</h3>\n\n<div class=\"codebox\">import path from sys\n\n<var>module_search_path</var> = path</div>\n\n\nReturns the python module search path.\n\n\n\n"},{"id":"UB4S","level":2,"heading":"Python Module - Add Path","content":"<h3>Python Module - Add Path</h3>\n\n<div class=\"codebox\">import path from sys\n\npath.append(<var>new_module_root_directory</var></div>\n\n\nAdds a directory to the sources for python modules and scripts.\n\n\n\n"},{"id":"vd4q","level":2,"heading":"Python Version","content":"<h3>Python Version</h3>\n\n<div class=\"codebox\">import sys\n\n<var>version</var> = sys.version\t\t\t\t\t<span class=\"note\"># Text Form of Version Number</span></div>\n\n<div class=\"codebox\">= sys.version_info\t\t\t\t\t\t<span class=\"note\"># Properties <code>major</code>, <code>minor</code>, And <code>micro</code></span></div>\n\n\nExample:\n\n<div class=\"codebox\">import sys\n\nprint(\n\t\tsys.version_info.major, '-',\n\t\tsys.version_info.minor, '-',\n\t\tsys.version_info.micro)</div>\n\n\n\n"},{"id":"Vt6z","level":2,"heading":"Python Version - Descriptive","content":"<h3>Python Version - Descriptive</h3>\n\n<div class=\"codebox\">from sys import version\n\n<var>descriptive_version</var> = version</div>\n\nIncludes version number, build date, clang version.\n\n\n\n"},{"id":"u9YV","level":2,"heading":"Show Help","content":"<h3>Show Help</h3>\n\n<div class=\"codebox\">help(<var>item</var>)</div>\n\nShows help documentation for <code><var>item</var></code>.\nWill display the docstring if available.\nWorks for keywords, functions, classes, methods, or modules.\n\n\n\n"},{"id":"Yph1","level":2,"heading":"Sleep","content":"<h3>Sleep</h3>\n\n<div class=\"codebox\">from time import sleep\n\nsleep(<var>time_in_seconds</var>)</div>\n\nSleep for the time in seconds.\n\nTakes floats (0.030 = 30 ms).\nWill pause current thread to allow other threads to run.\n\n\nExample:\n\n<div class=\"codebox\">from time import sleep\n\nsleep(1.5)\n<span class=\"note\"># Sleep 1&frac12; seconds.</span></div>\n\n\n\n"},{"id":"0Crn","level":2,"heading":"Sleep - Until Given Time","content":"<h3>Sleep - Until Given Time</h3>\n\nFunction:\n\n<div class=\"codebox\">from datetime import datetime\nfrom time import sleep\n\ndef <var>slee_until</var>(<var>datetime_1</var>):\n\tsleep((<var>datetime_1</var> - datetime.now()).total_seconds())</div>\n\nCall:\n\n<div class=\"codebox\"><var>sleep_until</var>(<var>datetime_1</var>)</div>\n\nSleeps until the given time has passed.\nWorks fine for sub-second times.\n\n\n\n"},{"id":"dQM4","level":2,"heading":"System - Exit, Return Exit Code","content":"<h3>System - Exit, Return Exit Code</h3>\n\n<div class=\"codebox\">import sys\n\nsys.exit(<var>exit_code</var>)</div>\n\nReturns from execution with the given exit code.\n\nRecommended Exit Codes:\n\n\t0\tOK\n\t1\tGeneral Error\n\t2\tCommand-line Validation\n\n\n\n"},{"id":"Je4g","level":2,"heading":"System - Exit, Return Exit Messages","content":"<h3>System - Exit, Return Exit Messages</h3>\n\n<div class=\"codebox\">import sys\n\nsys.exit(<var>exit_message</var>)</div>\n\nReturns from execution with error code 1.\nPrints <code><var>exit_message</var></code>.\n\n\n\n"},{"id":"DWQg","level":2,"heading":"Timer - Measure Elapsed Time","content":"<h3>Timer - Measure Elapsed Time</h3>\n\n<div class=\"codebox\">from time import perf_counter\n\n<var>start</var> = perf_counter()\n<var>...</var>\n<var>end</var> = perf_counter()\n\n<var>difference_in_seconds</var> = <var>end</var> - <var>start</var></div>\n\nReturns: <code>float</code>\n\n\n<code>perf_counter()</code> returns the elapsed time in seconds,\nPrefer over <code>time.time()</code> as <code>perf_counter()</code> is more accurate.\n\n\n\n"},{"id":"ZAZj","level":2,"heading":"Timer - Measure Execution Time (CPU Time)","content":"<h3>Timer - Measure Execution Time (CPU Time)</h3>\n\n<div class=\"codebox\">from time import process_time\n\n<var>start</var> = process_time()\n<var>...</var>\n<var>end</var> = process_time()\n\n<var>difference_in_seconds</var> = <var>end</var> - <var>start</var></div>\n\nReturns: <code>float</code>\n\n\n<code>process_time()</code> returns the execution time (CPU time) in seconds as a float.\nDoes not measure time while a process is sleeping or suspended.\n\n\n\n"},{"id":"XKzM","level":2,"heading":"Timing - perf_counter() vs process_time() vs time()","content":"<h3>Timing - perf_counter() vs process_time() vs time()</h3>\n\n<code>perf_counter()</code>:\n\n<ul><li>Prefer over <code>time()</code> (more accurate).</li>\n<li>Measures elapsed time precisely.</li>\n<li>perf_counter -&gt; Performance Counter</li>\n<li><code>import time.perf_counter</code></li></ul>\n\n<code>process_time()</code>:\n\n<ul><li>Measures CPU time only.</li>\n<li>If the process sleeps, that time will not be tracked.</li>\n<li><code>import time.process_time</code></li></ul>\n\n<code>time()</code>:\n\n<ul><li>Measures absolute elapsed time.</li>\n<li>Not guaranteed to be accurate as it can be changed.</li>\n<li><code>import time.time</code></li></ul>\n\n\n"},{"id":"cuXK","level":1,"heading":"Reference - Formatting","content":"<h1>Reference - Formatting</h1>\n\nPython Format Page:\n<a class=\"link\" href=\"https://docs.python.org/3/library/string.html#format-specification-mini-language\">https://docs.python.org/3/library/string.html#format-specification-mini-language</a>\n\n\n\n"},{"id":"n2xy","level":2,"heading":"Format - Padding","content":"<h3>Format - Padding</h3>\n\n\n"},{"id":"sXJS","level":3,"heading":"Format - Pad Center Text","content":"<h4>Format - Pad Center Text</h4>\n\n<div class=\"codebox\">= f'{<var>item_1</var>:^<var>length</var>}'</div>\n\n<div class=\"codebox\">= '{:^<var>length</var>}'.format(<var>item_1</var>)</div>\n\n\nText centered, pad both sides with spaces.\n\n\nExample:\n\n<div class=\"codebox\"><var>formatted_1</var> = &quot;{:^15}&quot;.format(<var>&quot;Center&quot;</var>)\n\n<span class=\"note\"># Returns '<code>    Center     </code>'</span></div>\n\n\n\n"},{"id":"P5zR","level":3,"heading":"Format - Pad Center Text - With Fill Character","content":"<h4>Format - Pad Center Text - With Fill Character</h4>\n\n<div class=\"codebox\">= f'{<var>item_1</var>:<var>fill_character</var>^<var>length</var>}'</div>\n\n<div class=\"codebox\">= '{:<var>fill_character</var>^<var>length</var>}'.format(<var>item_1</var>)</div>\n\n\nCenters text and pad both sides with the fill character.\n\n\nExample:\n\n<div class=\"codebox\"><var>formatted_2</var> = &quot;{:*^15}&quot;.format(<var>&quot;Center&quot;</var>)\n\n<span class=\"note\"># Returns '<code>****Center*****</code>'</span></div>\n\n\n\n"},{"id":"Tdft","level":3,"heading":"Format - Pad on Left","content":"<h4>Format - Pad on Left</h4>\n\n<div class=\"codebox\">= f'{<var>item_1</var>:&gt;<var>length</var>}'</div>\n\n<div class=\"codebox\">= '{:&gt;<var>length</var>}'.format(<var>item_1</var>)</div>\n\n\nPads on the left side with spaces.\n\n\nExample:\n\n<div class=\"codebox\"><var>formatted_1</var> = &quot;{:&gt;15}&quot;.format(<var>&quot;Pad Left&quot;</var>)\n\n<span class=\"note\"># Returns '<code>       Pad Left</code>'</span></div>\n\n\n\n"},{"id":"Ym9K","level":3,"heading":"Format - Pad on Left - With Fill Character","content":"<h4>Format - Pad on Left - With Fill Character</h4>\n\n<div class=\"codebox\">= f'{<var>item_1</var>:<var>fill_character</var>&gt;<var>length</var>}'</div>\n\n<div class=\"codebox\">= '{:<var>fill_character</var>&gt;<var>length</var>}'.format(<var>item_1</var>)</div>\n\n\nPads on the left side with the fill character.\n\n\nExample:\n\n<div class=\"codebox\"><var>formatted_2</var> = &quot;{:*&gt;15}&quot;.format(<var>&quot;Pad Left&quot;</var>)\n\n<span class=\"note\"># Returns '<code>*******Pad Left</code>'</span></div>\n\n\n\n"},{"id":"xmR4","level":3,"heading":"Format - Pad on Right","content":"<h4>Format - Pad on Right</h4>\n\n<div class=\"codebox\">= f'{<var>item_1</var>:<var>length</var>}'</div>\n\n<div class=\"codebox\">= f'{<var>item_1</var>:&lt;<var>length</var>}'</div>\n\n<div class=\"codebox\">= '{:<var>length</var>}'.format(<var>item_1</var>)</div>\n\n<div class=\"codebox\">= '{:&lt;<var>length</var>}'.format(<var>item_1</var>)</div>\n\n\nPads on the right side with spaces.\n\n'&lt;' is not required when you do not explicitly set the fill character.\n\n\nExample:\n\n<div class=\"codebox\"><var>formatted_1</var> = &quot;{:&lt;15}&quot;.format(<var>&quot;Pad Right&quot;</var>)\n\n<span class=\"note\"># Returns '<code>Pad Right      </code>'</span></div>\n\n\n\n"},{"id":"mxgT","level":3,"heading":"Format - Pad on Right - With Fill Character","content":"<h4>Format - Pad on Right - With Fill Character</h4>\n\n<div class=\"codebox\">= '{<var>item_1</var>:<var>fill_character</var>&lt;<var>length</var>}'</div>\n\n<div class=\"codebox\">= '{:<var>fill_character</var>&lt;<var>length</var>}'.format(<var>item_1</var>)</div>\n\n\nPads on the right side with the fill character.\n\n\nExample:\n\n<div class=\"codebox\"><var>formatted_2</var> = &quot;{:*&lt;15}&quot;.format(<var>&quot;Pad Right&quot;</var>)\n\n<span class=\"note\"># Returns '<code>Pad Right******</code>'</span></div>\n\n\n\n"},{"id":"xyTk","level":2,"heading":"Format Binary","content":"<h3>Format Binary</h3>\n\n\n"},{"id":"d4N1","level":3,"heading":"Format Integer - As Binary","content":"<h4>Format Integer - As Binary</h4>\n\n<div class=\"codebox\">= f'{<var>value</var>:b}'</div>\n\n<div class=\"codebox\">= '{:b}'.format(<var>value</var>)</div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>value</var> = <var>12</var>\n\nprint(f'{<var>value</var>:b}')\n\n<span class=\"note\"># Prints: 1100</span></div>\n\n<div class=\"codebox\"><var>value</var> = <var>12</var>\n\nprint('{:b}'.format(<var>value</var>))\n\n<span class=\"note\"># Prints: 1100</span></div>\n\n\n\n"},{"id":"jtZL","level":3,"heading":"Format Integer - As Binary, Leading Zeros","content":"<h4>Format Integer - As Binary, Leading Zeros</h4>\n\n<div class=\"codebox\">= f'{<var>int_1</var>:0<var>length</var>b}'</div>\n\n<div class=\"codebox\">= '{:0<var>length</var>b}'.format(<var>int_1</var>)</div>\n\n\nExamples:\n\n<div class=\"codebox\"><var>value</var> = <var>12</var>\n\nprint(f'{<var>value</var>:0<var>8</var>b}')\n\n<span class=\"note\"># Prints: 00001100</span></div>\n\n<div class=\"codebox\"><var>value</var> = <var>12</var>\n\nprint('{:0<var>8</var>b}'.format(<var>value</var>))\n\n<span class=\"note\"># Prints: 00001100</span></div>\n\n\n\n"},{"id":"UcEw","level":2,"heading":"Format Hex","content":"<h3>Format Hex</h3>\n\n\n"},{"id":"LvNQ","level":3,"heading":"Format Integer - As Hex, Lower Case","content":"<h4>Format Integer - As Hex, Lower Case</h4>\n\n<div class=\"codebox\">= f'{<var>value</var>:x}'</div>\n\n<div class=\"codebox\">= '{:x}'.format(<var>value</var>)</div>\n\n\nFormat to lower case hex values using lower case 'x'.\n\n\nExamples:\n\n<div class=\"codebox\"><var>value</var> = <var>42</var>\n\nprint(f'{<var>value</var>:x}')\n\n<span class=\"note\"># Prints: 2a</span></div>\n\n<div class=\"codebox\"><var>value</var> = <var>42</var>\n\nprint('{:x}'.format(<var>value</var>))\n\n<span class=\"note\"># Prints: 2a</span></div>\n\n\n\n"},{"id":"p9qJ","level":3,"heading":"Format Integer - As Hex, Lower Case, Leading Zeros","content":"<h4>Format Integer - As Hex, Lower Case, Leading Zeros</h4>\n\n<div class=\"codebox\">= f'{<var>int_1</var>:0<var>length</var>x}'</div>\n\n<div class=\"codebox\">= '{:0<var>length</var>x}'.format(<var>int_1</var>)</div>\n\n\nFormat to lower case hex values using lower case 'x'.\nFormat with leading zeros by adding '0' and length after the ':'.\n\n\nExamples:\n\n<div class=\"codebox\"><var>value</var> = <var>42</var>\n\nprint(f'{<var>value</var>:0<var>4</var>x}')\n\n<span class=\"note\"># Prints: 002a</span></div>\n\n<div class=\"codebox\"><var>value</var> = <var>42</var>\n\nprint('{:0<var>4</var>x}'.format(<var>value</var>))\n\n<span class=\"note\"># Prints: 002a</span></div>\n\n\n\n"},{"id":"MrXC","level":3,"heading":"Format Integer - As Hex, Upper Case","content":"<h4>Format Integer - As Hex, Upper Case</h4>\n\n<div class=\"codebox\">= f'{<var>value</var>:X}'</div>\n\n<div class=\"codebox\">= '{:X}'.format(<var>value</var>)</div>\n\n\nFormat to upper case hex values using upper case 'X'.\n\n\nExamples:\n\n<div class=\"codebox\"><var>value</var> = <var>42</var>\n\nprint(f'{<var>value</var>:X}')\n\n<span class=\"note\"># Prints: 2A</span></div>\n\n<div class=\"codebox\"><var>value</var> = <var>42</var>\n\nprint('{:X}'.format(<var>value</var>))\n\n<span class=\"note\"># Prints: 2A</span></div>\n\n\n\n"},{"id":"M8bn","level":3,"heading":"Format Integer - As Hex, Upper Case, Leading Zeros","content":"<h4>Format Integer - As Hex, Upper Case, Leading Zeros</h4>\n\n<div class=\"codebox\">= f'{<var>int_1</var>:0<var>length</var>X}'</div>\n\n<div class=\"codebox\">= '{:0<var>length</var>X}'.format(<var>int_1</var>)</div>\n\n\nFormat to upper case hex values using upper case 'X'.\nFormat with leading zeros by adding '0' and length after the ':'.\n\n\nExamples:\n\n<div class=\"codebox\"><var>value</var> = <var>42</var>\n\nprint(f'{<var>value</var>:0<var>4</var>X}')\n\n<span class=\"note\"># Prints: 002A</span></div>\n\n<div class=\"codebox\"><var>value</var> = <var>42</var>\n\nprint('{:0<var>4</var>X}'.format(<var>value</var>))\n\n<span class=\"note\"># Prints: 002A</span></div>\n\n\n\n"},{"id":"2QJy","level":2,"heading":"Format - Date / Date Time","content":"<h3>Format - Date / Date Time</h3>\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:<var>date_format</var>}'</div>\n\n<div class=\"codebox\">= '{:<var>date_format</var>}'.format(<var>datetime_1</var>)</div>\n\n\n\n"},{"id":"wVNN","level":3,"heading":"Format Date - Date Format Codes","content":"<h4>Format Date - Date Format Codes</h4>\n\n<table><tr><td><strong>Item</strong></td><td><strong>Output</strong></td><td><strong>Symbol</strong></td></tr>\n<tr><td> </td></tr>\n<tr><td>Literal %\t\t</td><td><code>%\t\t</code></td><td><code>%%\t</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Day</td><td><code>1-31</code></td><td><code>%-d</code></td></tr>\n<tr><td>\t</td><td><code>01-31</code></td><td><code>%d</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Day of Week</td><td><code>0-6</code></td><td><code>%w</code></td></tr>\n<tr><td>\t</td><td><code>1-7</code></td><td><code>%u</code></td><td><span class=\"note\">(ISO 8601)</span></td></tr>\n<tr><td>\t</td><td><code>Mon</code></td><td><code>%a</code></td></tr>\n<tr><td>\t</td><td><code>Monday</code></td><td><code>%A</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Day of Year</td><td><code>1-365</code></td><td><code>%-j</code></td></tr>\n<tr><td>\t</td><td><code>001-365</code></td><td><code>%j</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Month</td><td><code>1-12</code></td><td><code>%-m</code></td></tr>\n<tr><td>\t</td><td><code>01-12</code></td><td><code>%m</code></td></tr>\n<tr><td>\t</td><td><code>Jan</code></td><td><code>%b</code></td></tr>\n<tr><td>\t</td><td><code>January</code></td><td><code>%B</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Week</td><td><code>0-53</code></td><td><code>%-U</code></td><td><span class=\"note\">(Starts Sunday)</span></td></tr>\n<tr><td>\t</td><td><code>00-53</code></td><td><code>%U</code></td><td><span class=\"note\">(Starts Sunday)</span></td></tr>\n<tr><td>\t</td><td><code>0-53</code></td><td><code>%-W</code></td><td><span class=\"note\">(Starts Monday)</span></td></tr>\n<tr><td>\t</td><td><code>00-53</code></td><td><code>%W</code></td><td><span class=\"note\">(Starts Monday)</span></td></tr>\n<tr><td>\t</td><td><code>0-53</code></td><td><code>%-V</code></td><td><span class=\"note\">(Starts Monday) (ISO 8601)</span></td></tr>\n<tr><td>\t</td><td><code>00-53</code></td><td><code>%V</code></td><td><span class=\"note\">(Starts Monday) (ISO 8601)</span></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Year</td><td><code>00-99</code></td><td><code>%y</code></td></tr>\n<tr><td>\t</td><td><code>2001</code></td><td><code>%Y</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Time Zone</td><td><code>%Z</code></td></tr>\n<tr><td>UTC Offset</td><td><code>%z</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Local Date</td><td><code>%x</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Local Date Time</td><td><code>%c</code></td></tr></table>\n\n\n\n"},{"id":"AKvL","level":3,"heading":"Format Date - Time Format Codes","content":"<h4>Format Date - Time Format Codes</h4>\n\n<table><tr><td><strong>Item</strong></td><td><strong>Output</strong></td><td><strong>Symbol</strong></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Literal %\t\t</td><td><code>%\t\t</code></td><td><code>%%\t</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Milliseconds</td><td><code>000000-999999</code></td><td><code>%f</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Second</td><td><code>00-59</code></td><td><code>%S</code></td></tr>\n<tr><td>\t</td><td><code>0-59</code></td><td><code>%-S</code></td></tr>\n<tr><td>Minute</td><td><code>00-59</code></td><td><code>%M</code></td></tr>\n<tr><td>\t</td><td><code>0-59</code></td><td><code>%-M</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Hour</td><td><code>00-12</code></td><td><code>%I</code></td></tr>\n<tr><td>\t</td><td><code>0-12</code></td><td><code>%-I</code></td></tr>\n<tr><td>\t</td><td><code>00-23</code></td><td><code>%H</code></td></tr>\n<tr><td>\t</td><td><code>0-23</code></td><td><code>%-H</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>AM/PM</td><td><code>AM <span class=\"dim\">|</span> PM</code></td><td><code>%p</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Time Zone</td><td><code>UTC</code></td><td><code>%Z</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>UTC Offset</td><td><span class=\"note\"># -0500</span></td><td><code>%z</code></td></tr>\n<tr><td>\t</td></tr>\n<tr><td>Local Time</td><td> </td><td><code>%X</code></td></tr></table>\n\n\n\n"},{"id":"4DXk","level":3,"heading":"Format Date - HH:MM:SS","content":"<h4>Format Date - HH:MM:SS</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%H:%M:%S}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:%H:%M:%S}'.format(<var>datetime_1</var>)</div>\n\n\nReturns hour, minute, second.\n\n\n\n"},{"id":"NtPh","level":3,"heading":"Format Date - YYYY-MM-DD","content":"<h4>Format Date - YYYY-MM-DD</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y-%m-%d}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:%Y-%m-%d}'.format(<var>datetime_1</var>)</div>\n\nReturns year, month, day.\n\nWorks with dates and datetimes.\n\n\n\n"},{"id":"NYTQ","level":3,"heading":"Format Date - YYYY-MM-DD HH:MM:SS","content":"<h4>Format Date - YYYY-MM-DD HH:MM:SS</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y-%m-%d %H:%M:%S}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:%Y-%m-%d %H:%M:%S}'.format(<var>date_1</var>)</div>\n\n<div class=\"codebox\">= '{:%Y-%m-%d %H:%M:%S}'.format(<var>datetime_1</var>)</div>\n\nReturns year, month, day, hour, minute, second.\nFor dates will print time as '00:00:00'\n\n\n\n"},{"id":"gE4z","level":3,"heading":"Format Date - YYYY-MM-DD HH:MM:SS - Time Zone","content":"<h4>Format Date - YYYY-MM-DD HH:MM:SS - Time Zone</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y-%m-%d %H:%M:%S %Z}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:%Y-%m-%d %H:%M:%S %Z}'.format(<var>date_1</var>)</div>\n\n<div class=\"codebox\">= '{:%Y-%m-%d %H:%M:%S %Z}'.format(<var>datetime_1</var>)</div>\n\nReturns year, month, day, hour, minute, second and timezone.\nFor dates will print time as '00:00:00'\n\n\n\nash.#### Format Date - YYYY-MM-DD HH:MM:SS - UTC Offset\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y-%m-%d %H:%M:%S %z}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:%Y-%m-%d %H:%M:%S %z}'.format(<var>date_1</var>)</div>\n\n<div class=\"codebox\">= '{:%Y-%m-%d %H:%M:%S %z}'.format(<var>datetime_1</var>)</div>\n\nReturns year, month, day, hour, minute, second and utc offset.\nFor dates will print time as '00:00:00'\n\n\n\n"},{"id":"kADD","level":2,"heading":"Format Date - Standard Formats","content":"<h3>Format Date - Standard Formats</h3>\n\n\n"},{"id":"725q","level":3,"heading":"Format Date - Ireland / UK","content":"<h4>Format Date - Ireland / UK</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%d/%m/%Y}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:%d/%m/%Y}'.format(<var>datetime_1</var>)</div>\n\nFormat:\n\n<div class=\"codebox\"><var>dd</var>/<var>mm</var>/<var>yyyy</var></div>\n\n\n\n"},{"id":"Js9w","level":3,"heading":"Format Date - Europe","content":"<h4>Format Date - Europe</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%d.%m.%Y}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:%d.%m.%Y}'.format(<var>datetime_1</var>)</div>\n\nFormat:\n\n<div class=\"codebox\"><var>dd</var>.<var>mm</var>.<var>yyyy</var></div>\n\n\n\n"},{"id":"fdj6","level":3,"heading":"Format Date - USA","content":"<h4>Format Date - USA</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%m/%d/%Y}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:%m/%d/%Y}'.format(<var>datetime_1</var>)</div>\n\nFormat:\n\n<div class=\"codebox\"><var>mm</var>/<var>dd</var>/<var>yyyy</var></div>\n\n\n\n"},{"id":"TkTa","level":3,"heading":"Format Date - ISO 8601 / International","content":"<h4>Format Date - ISO 8601 / International</h4>\n\nYYYY-MM-DD:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y-%m-%d}'</div>\n\n<div class=\"codebox\">= '{:%Y-%m-%d}'.format(<var>datetime_1</var>)</div>\n\nYYYYMMDD:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y%m%d}'</div>\n\n<div class=\"codebox\">= '{:%Y%m%d}'.format(<var>datetime_1</var>)</div>\n\n\n\n"},{"id":"FQkZ","level":3,"heading":"Format Date Time - ISO 8601 / International","content":"<h4>Format Date Time - ISO 8601 / International</h4>\n\nYYYYMMDDThhmmss:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y%m%dT%H%M%S}'</div>\n\n<div class=\"codebox\">= '{:%Y%m%dT%H%M%S}'.format(<var>datetime_1</var>)</div>\n\nYYYY-MM-DDThh:mm:ss:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y-%m-%dT%H:%M:%S}'</div>\n\n<div class=\"codebox\">= '{:%Y-%m-%dT%H:%M:%S}'.format(<var>datetime_1</var>)</div>\n\nYYYY-MM-DDThh:mm:ssZ:\n\n<div class=\"codebox\">= f'{<var>datetime_1</var>:%Y-%m-%dT%H:%M:%S%Z}'</div>\n\n<div class=\"codebox\">= '{:%Y-%m-%dT%H:%M-:S%Z}'.format(<var>datetime_1</var>)</div>\n\n\n\n"},{"id":"SuAy","level":2,"heading":"Format Integer","content":"<h3>Format Integer</h3>\n\n\n\n"},{"id":"FkhG","level":3,"heading":"Format Integer - Comma Separated","content":"<h4>Format Integer - Comma Separated</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>int_1</var>:,}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:,}'.format(<var>int_1</var>)</div>\n\n\nExample:\n\n<div class=\"codebox\"><var>an_int</var> = 1234\n\n<var>formatted</var> = f'{<var>an_int</var>:,}'\n\n<span class=\"note\"># Returns '1,234'</span></div>\n\n\n\n"},{"id":"2fBD","level":3,"heading":"Format Integer - Leading Zeros","content":"<h4>Format Integer - Leading Zeros</h4>\n\nUsing F-String:\n\n<div class=\"codebox\">= f'{<var>int_1</var>:0<var>length</var>}'</div>\n\nUsing format():\n\n<div class=\"codebox\">= '{:0<var>length</var>}'.format(<var>int_1</var>)</div>\n\n\n<code><var>length</var></code> is the total length including leading zeros.\n\n\nExample:\n\n<div class=\"codebox\"><var>an_int</var> = 1234\n\n<var>formatted</var> = f'{<var>an_int</var>:0<var>6</var>}'\n\n<span class=\"note\"># Returns '001234'</span></div>\n\n\n\n"},{"id":"ynuH","level":2,"heading":"Format - Float","content":"<h3>Format - Float</h3>\n\nBasic:\n\n<div class=\"codebox\">= f'{<var>value</var>:f}'</div>\n\n<div class=\"codebox\">= '{:f}'.format(<var>value</var>)</div>\n\n\nWith Formatting:\n\n<div class=\"codebox\">= f'{<var>value</var>:<var>format</var>f}'</div>\n\n<div class=\"codebox\">= '{:<var>format</var>f}'.format(<var>value</var>)</div>\n\n\n\n"},{"id":"bhYt","level":3,"heading":"Format Float - Decimals","content":"<h4>Format Float - Decimals</h4>\n\n<div class=\"codebox\">= f'{<var>value</var>:.<var>decimals</var>f}'</div>\n\n<div class=\"codebox\">= '{:.<var>decimals</var>f}'.format(<var>value</var>)</div>\n\n\nRounds up or down as needed.\n\n\nExample:\n\n<div class=\"codebox\"><var>formatted_1</var> = '{:.<var>2</var>f}'.format(<var>12.3456</var>)\n\n<span class=\"note\"># Returns '12.35'</span></div>\n\n\n\n"},{"id":"vBbs","level":3,"heading":"Format Float - Decimals, Comma Separated","content":"<h4>Format Float - Decimals, Comma Separated</h4>\n\n<div class=\"codebox\">= '{<var>value</var>:,.<var>decimals</var>f}'</div>\n\n<div class=\"codebox\">= '{:,.<var>decimals</var>f}'.format(<var>value</var>)</div>\n\n\nRounds up or down as needed.\n\n\nExample:\n\n<div class=\"codebox\"><var>formatted_1</var> = '{:,.<var>2</var>f}'.format(<var>1234.567</var>)\n\n<span class=\"note\"># Returns '1,234.57'</span></div>\n\n\n\n"},{"id":"db88","level":2,"heading":"Format Codes - Reverse Lookup","content":"<h3>Format Codes - Reverse Lookup</h3>\n\nCodes for the <code><var>format</var></code> Part In:\n\n<div class=\"codebox\">f'{<var>value</var>:<var>format</var>}'\n\n'{:<var>format</var>}'.format(<var>value</var>)</div>\n\n\n<code>%%</code>\t\t\tEscaped %\n<code>{{</code>\t\t\tEscaped {\n<code>}}</code>\t\t\tEscaped }\n\n<code>,</code>\t\t\tComma Separated Numbers\n<code>.<var>2</var></code>\t\t\tDecimal Places\n\n<code>&lt;<var>10</var></code>\t\t\tAlign Left  /  Pad Right\n<code>&gt;<var>10</var></code>\t\t\tAlign Right  /  Pad Left\n<code>^<var>10</var></code>\t\t\tAlign Center\n\n<code>0<var>10</var></code>\t\t\tLeading Zeroes\n\n<code><var>char</var>&lt;<var>10</var></code>\t\tAlight Left, Fill Character <code><var>char</var></code>\n<code><var>char</var>&gt;<var>10</var></code>\t\tAlight Right, Fill Character <code><var>char</var></code>\n<code><var>char</var>^<var>10</var></code>\t\tAlight Center, Fill Character <code><var>char</var></code>\n\n<code>%%</code>\t\t\tLiteral %\t\t\t<code>%</code>\n<code>%-d</code>\t\t\tDay \t\t\t<code>1-31</code>\n<code>%-H</code>\t\t\tHour\t\t\t<code>0-23</code>\n<code>%-I</code>\t\t\tHour\t\t\t<code>0-12</code>\n<code>%-j</code>\t\t\tDay of Year\t\t<code>1-365</code>\n<code>%-M</code>\t\t\tMinute\t\t\t<code>0-59</code>\n<code>%-m</code>\t\t\tMonth\t\t\t<code>1-12</code>\n<code>%-S</code>\t\t\tSecond\t\t\t<code>0-59</code>\n<code>%-U</code>\t\t\tWeek\t\t\t<code>0-53</code> (Starts Sunday)\n<code>%-V</code>\t\t\tWeek\t\t\t<code>0-53</code> (Starts Monday) (ISO 8601)\n<code>%-W</code>\t\t\tWeek\t\t\t<code>0-53</code> (Starts Monday)\n<code>%a</code>\t\t\tDay of Week\t\t<code>Mon</code>\n<code>%A</code>\t\t\tDay of Week\t\t<code>Monday</code>\n<code>%b</code>\t\t\tMonth\t\t\t<code>Jan</code>\n<code>%B</code>\t\t\tMonth\t\t\t<code>January</code>\n<code>%c</code>\t\t\tLocal Date Time\n<code>%d</code>\t\t\tDay\t\t\t\t<code>01-31</code>\n<code>%f</code>\t\t\tMilliseconds\t\t<code>000000-999999</code>\n<code>%H</code>\t\t\tHour\t\t\t<code>00-23</code>\n<code>%I</code>\t\t\tHour\t\t\t<code>00-12</code>\n<code>%j</code>\t\t\tDay of Year\t\t<code>001-365</code>\n<code>%m</code>\t\t\tMonth\t\t\t<code>01-12</code>\n<code>%M</code>\t\t\tMinute\t\t\t<code>00-59</code>\n<code>%p</code>\t\t\tAM/PM\t\t\t<code>AM <span class=\"dim\">|</span> PM</code>\n<code>%S</code>\t\t\tSecond\t\t\t<code>00-59</code>\n<code>%u</code>\t\t\tDay of Week\t\t<code>1-7</code>\t (ISO 8601)\n<code>%U</code>\t\t\tWeek\t\t\t<code>00-53</code> (Starts Sunday)\n<code>%V</code>\t\t\tWeek\t\t\t<code>01-53</code> (Starts Monday) (ISO 8601)\n<code>%w</code>\t\t\tDay of Week\t\t<code>0-6</code>\n<code>%W</code>\t\t\tWeek\t\t\t<code>00-53</code> (Starts Monday)\n<code>%x</code>\t\t\tLocal Date\n<code>%y</code>\t\t\tYear\t\t\t<code>00-99</code>\n<code>%Y</code>\t\t\tYear\t\t\t<code>2001</code>\n<code>%z</code>\t\t\tUTC Offset\t\t(e.g. -0500)\n<code>%Z</code>\t\t\tTime Zone\t\t<code>UTC</code>\n<code>%X</code>\t\t\tLocal Time\n\n\n\n"},{"id":"G5zB","level":1,"heading":"Reference - Magic Methods","content":"<h1>Reference - Magic Methods</h1>\n\n\n"},{"id":"pmSx","level":2,"heading":"Basics","content":"<h3>Basics</h3>\n\n\n__all__\t\t\t\tDefines \n__bool__\n__contains__\n__dict__\n__doc__\n__file__\n__hash__\n__init__\n__iter__\n__len___\n__main__\n__name__\n__next__\n__repr__\n__str__\n\n\n"},{"id":"wpGa","level":2,"heading":"__bool__","content":"<h3>__bool__</h3>\n\nReturns the true or false value of an object.\nReturn True for non zero, non empty values.\nUse with if statements or <code>bool()</code> function.\n\n\nExample:\n\n<div class=\"codebox\">class <var>GetBoolean</var>:\n\n\tdef __init__(self, <var>bool_value</var>):\n\t\tself.<var>bool_value</var> = <var>bool_value</var>\n\n\tdef __bool__(self):\n\t\treturn self.<var>bool_value</var></div>\n\n<div class=\"codebox\"><var>is_true</var> = <var>GetBoolean</var>(<var>True</var>)\t\t\t\t<span class=\"note\"># Set To True</span>\n\n<var>actual_value</var> = bool(<var>is_true</var>)\t\t\t<span class=\"note\"># Returns True</span></div>\n\n<div class=\"codebox\"><var>is_true</var> = <var>GetBoolean</var>(<var>True</var>)\t\t\t\t<span class=\"note\"># Set To True</span>\n\nif <var>is_true</var>:\n\t<var>...</var></div>\n\n\n\n"},{"id":"w67L","level":2,"heading":"__contains__","content":"<h3>__contains__</h3>\n\n<div class=\"codebox\">def __contains__(self, <var>value</var>):\n\t<var>...</var></div>\n\n<div class=\"codebox\">if <var>item</var> in <var>class_1</var>:\n\t<var>...</var></div>\n\nOverloads 'in' operator.\n\n\n\n"},{"id":"4R4c","level":2,"heading":"__dict__","content":"<h3>__dict__</h3>\n\n<div class=\"codebox\">= <var>class_1</var>.__dict__.keys()</div>\n\nReturns class attributes as a dict.\n\n\n\n"},{"id":"QTWK","level":2,"heading":"__doc__","content":"<h3>__doc__</h3>\n\n<div class=\"codebox\">= <var>Class1</var>.__doc__\t\t\t\t\t\t<span class=\"note\"># From Class</span></div>\n\n<div class=\"codebox\">= <var>class_1</var>.__doc__\t\t\t\t\t\t<span class=\"note\"># From Instance</span></div>\n\nReturns the object's docstring.\n\n\n\n"},{"id":"btc4","level":2,"heading":"__file__","content":"<h3>__file__</h3>\n\nReturns the file name of the current module.\n\n\n\n"},{"id":"tSAJ","level":2,"heading":"__hash__","content":"<h3>__hash__</h3>\n\n<div class=\"codebox\">def __hash__(self):\n\treturn hash(<var>key_tuple</var>)</div>\n\nUsage:\n\n<div class=\"codebox\">def __hash__(self):\n    return hash(<var>key_tuple</var>)</div>\n\n<div class=\"codebox\">def __hash__(self):\n    return hash((self.<var>key_1</var>, self.<var>key_2</var>, <var>...</var>))</div>\n\n\nHashes the identity of an object.\n\nUse an object's keys to create hash.\nThe key should never change for the lifetime of the object.\nPrefer immutable objects over mutable ones.\n\n\nObject Identity vs Object Hash:\n\n<div class=\"codebox\">if <var>a</var> == <var>b</var> then\n    hash(<var>a</var>) == hash(<var>b</var>)\n\nif hash(<var>a</var>) == hash(<var>b</var>) then\n    <var>a</var> maybe == <var>b</var>\n\nif hash(<var>a</var>) != hash(<var>b</var>) then\n    <var>a</var> != <var>b</var></div>\n\n\n\n"},{"id":"3ZQ5","level":2,"heading":"__init__","content":"<h3>__init__</h3>\n\n<div class=\"codebox\">class <var>Class1</var>:\n\n\tdef __init__(self, <var>...</var>):\n\t\t<var>...</var></div>\n\nClass initializer / constructor.\n\n\n\n"},{"id":"XJBe","level":2,"heading":"__iter__","content":"<h3>__iter__</h3>\n\nReturns an iterator usable with <code>for</code> and <code>in</code> statements.\nImplement this method if you want to return an iterator for your object.\n\nSee: <code>__next__</code>\nSee: Class - Iterator - Define\n\n\n\n"},{"id":"fzyZ","level":2,"heading":"__len___","content":"<h3>__len___</h3>\n\nReturns the length or count of an object.\nUse with len function.\n\n\nExample:\n\n<div class=\"codebox\">class <var>GetLength</var>:\n\n\tdef __init__(self, length):\n\t\tself.length = length\n\n\tdef __len__(self):\n\t\treturn self.length\n\n\n<var>of_length_10</var> = <var>GetLength</var>(<var>10</var>)\n\n<var>length</var> = len(<var>of_length_10</var>)\t\t\t\t<span class=\"note\"># Returns 10</span></div>\n\n\n\n"},{"id":"L4fb","level":2,"heading":"__main__","content":"<h3>__main__</h3>\n\n<div class=\"codebox\">__name__ == '__main__'</div>\n\nUsage:\n\n<div class=\"codebox\">if __name__ == '__main__':\n\t<var>...</var></div>\n\n\nThe main/root module reference.\n\n\nWhy use <code>__name__ == '__main__'</code>:\n\nUse this when you want to run a file as the main program and also as a module.\n<code>__name__</code> will only be <code>'__main__'</code> when the file is the starting file / entry point into the program.\n\nAdd module classes and functions as normal.\nBut to run as a the main application, add code after the <code>if</code> statement.\n\nForm:\n\n<div class=\"codebox\">if __name__ == '__main__':\n\n\t<span class=\"note\"># Code for main program here...</span></div>\n\n\n\n"},{"id":"btzx","level":2,"heading":"__name__","content":"<h3>__name__</h3>\n\nThe name of the object.\n\nFor modules, it is the file name (no extension).\n\ne.g. module, class or function name.\n\n\n\n"},{"id":"E5gQ","level":2,"heading":"__next__","content":"<h3>__next__</h3>\n\nIterator: Returns the next item in the collection.\nIterator: Raises an exception beyond the last point.\n\n\n\n"},{"id":"Q1w6","level":2,"heading":"__repr__","content":"<h3>__repr__</h3>\n\nReturns unambiguous string representation of the class.\nAlways implement this.\n\n\n\n"},{"id":"k9WJ","level":2,"heading":"__str__","content":"<h3>__str__</h3>\n\nReturns a readable string representation of the class.\nWill call <code>__repr__</code> if no <code>__str__()</code> method found.\n\n\n\n"},{"id":"FgBf","level":2,"heading":"__repr__ vs __str__","content":"<h3>__repr__ vs __str__</h3>\n\n<code>__repr__</code>\n\n\tUse to show an unambiguous version of the class.\n\tYou should always implement this.\n\n<code>__str__</code>\n\n\tUse to show a human readable version of the class.\n\tIf not present, Python will call <code>__repr__</code>.\n\n\n\n"},{"id":"KxKn","level":1,"heading":"Reference - Standard Packages","content":"<h1>Reference - Standard Packages</h1>\n\n\n\n"},{"id":"euxr","level":2,"heading":"Package - kombu","content":"<h3>Package - kombu</h3>\n\nMessage Queue Library\n\n\n\n"},{"id":"xwFe","level":2,"heading":"Package - os","content":"<h3>Package - os</h3>\n\nOS and File Related Functions\n\n\n\n"},{"id":"U1ek","level":2,"heading":"Package - sys","content":"<h3>Package - sys</h3>\n\nSystem Utilities\n\n\n\n"},{"id":"DBN8","level":2,"heading":"Package - zipfile","content":"<h3>Package - zipfile</h3>\n\nZip Class, Functions\n\n\n\n"},{"id":"S61K","level":1,"heading":"Reference - External Libraries","content":"<h1>Reference - External Libraries</h1>\n\n\n"},{"id":"G12t","level":2,"heading":"NumPy - A Data Crunching Library","content":"<h3>NumPy - A Data Crunching Library</h3>\n\nA scientific computing/ data crunching library.\n\nSpeedSheet:\n<a class=\"link\" href=\"/s/numpy\">/s/numpy</a>\n\nLibrary Name:\n\n<div class=\"codebox\">numpy</div>\n\n<div class=\"codebox\">pip install numpy</div>\n\nImport:\n\n<div class=\"codebox\">import numpy as np</div>\n\n\nOfficial Site:\n<a class=\"link\" href=\"https://numpy.org/doc/stable/\">https://numpy.org/doc/stable/</a>\n\n\n\n"},{"id":"XNgc","level":2,"heading":"pynput - Keyboard / Mouse Library","content":"<h3>pynput - Keyboard / Mouse Library</h3>\n\nIdeal for sending keystrokes, mouse actions to the current windown.\nIdeal for monitoring the keyboard and mouse.\n\nLibrary:\n\n<div class=\"codebox\">pynput</div>\n\n<div class=\"codebox\">pip install pynput</div>\n\nImport:\n\n<div class=\"codebox\">from pynput import mouse, keyboard</div>\n\n\nSpeedSheet (Partial Details):\n<a class=\"link\" href=\"/s/pynput\">/s/pynput</a>\n\nOfficial Site:\n<a class=\"link\" href=\"https://pynput.readthedocs.io/en/latest/\">https://pynput.readthedocs.io/en/latest/</a>\n\n\n\n"},{"id":"559u","level":2,"heading":"pyperclip - A Clipboard Library","content":"<h3>pyperclip - A Clipboard Library</h3>\n\nA simple and useful library for copying to and from the clipboard.\n\nLibrary Name:\n\n<div class=\"codebox\">pyperclip</div>\n\n<div class=\"codebox\">pip install pyperclip</div>\n\nImport:\n\n<div class=\"codebox\">import pyperclip</div>\n\nBasics:\n\n<div class=\"codebox\">pyperclip.copy(<var>text</var>)\n\n<var>text</var> = pyperclip.paste()</div>\n\n\nOfficial Site:\n<a class=\"link\" href=\"https://github.com/asweigart/pyperclip\">https://github.com/asweigart/pyperclip</a>\n\nPyPi:\n<a class=\"link\" href=\"https://pypi.org/project/pyperclip/\">https://pypi.org/project/pyperclip/</a>\n\n\n\n"},{"id":"qFwY","level":2,"heading":"pyttsx3 - Text To Speech","content":"<h3>pyttsx3 - Text To Speech</h3>\n\nGood library for text to speech.\nUses OS for speech.\n\nLibrary:\n\n<div class=\"codebox\">pyttsx3</div>\n\n<div class=\"codebox\">pip install pyttsx3</div>\n\nImport:\n\n<div class=\"codebox\">import pyttsx3</div>\n\nBasic Example:\n\n<div class=\"codebox\">import pyttsx3\n\n<var>engine</var> = pyttsx3.init()\n\nvoices = <var>engine</var>.getProperty('voices') \n<var>engine</var>.setProperty('voice', voices[0].id)\n\n<var>engine</var>.say (&quot;<var>Hello meatbag.</var>&quot;)\n<var>engine</var>.runAndWait()</div>\n\n\n\n"},{"id":"HRPh","level":1,"heading":"Reference - Configuration Files","content":"<h1>Reference - Configuration Files</h1>\n\n\n\n"},{"id":"6TJb","level":2,"heading":"pyproject.toml","content":"<h3>pyproject.toml</h3>\n\nPlace in your project root directory.\n\nSample:\n\n<div class=\"codebox\">[project]\nname = &quot;<var>project_name</var>&quot;\ndescription = &quot;<var>Project description.</var>&quot;\nversion = &quot;<var>0.1.0</var>&quot;\nlicense = &quot;<var>license type</var>&quot;\nauthors = [\n\t{ name = &quot;<var>your_name_here</var>&quot;, email = &quot;<var>your_email_here</var>&quot; }\n]\n\ndependencies = [\n\t&quot;<var>package_1</var>&quot;,\n\t&quot;<var>package_2</var>&quot;\n]\n\n[project.optional-dependencies]\ndev = [\n\t&quot;pytest&quot;,\n\t&quot;<var>test_package_1</var>&quot;\n]\n\n[build-system]\nrequires = [\n    &quot;setuptools &gt;= 35.0.2&quot;,\n    &quot;setuptools_scm &gt;= 2.0.0, &lt;3&quot;\n]\nbuild-backend = &quot;setuptools.build_meta&quot;</div>\n\n\n\n"},{"id":"T7rT","level":1,"heading":"Reference - Coming From Other Languages","content":"<h1>Reference - Coming From Other Languages</h1>\n\n\n"},{"id":"g1Kk","level":2,"heading":"++, -- Operators","content":"<h3>++, -- Operators</h3>\n\nNot supported in Python.\n\nUse Instead:\n\n<div class=\"codebox\"><var>a</var> += 1;\n<var>a</var> -= 1;</div>\n\n\n"},{"id":"Zkee","level":2,"heading":"Arrays","content":"<h3>Arrays</h3>\n\nUse <code><a class=\"link\" href=\"?q=list-only\">list</a></code>.\n\nPython does not have built in arrays.\nUse lists instead.\nYou can also use the Array library.\n\n\n\n"},{"id":"0bhw","level":2,"heading":"Arrow Functions, ->, =>","content":"<h3>Arrow Functions, -&gt;, =&gt;</h3>\n\nUse <code><a class=\"link\" href=\"?q=lambda-only\">lambdas</a></code>.\n\n\n\n"},{"id":"dnN3","level":2,"heading":"Hash Maps, Tables","content":"<h3>Hash Maps, Tables</h3>\n\nUse <code><a class=\"link\" href=\"?q=dict-only\">dicts</a></code>.\n\n\n\n"},{"id":"D2K9","level":2,"heading":"istype, instanceof","content":"<h3>istype, instanceof</h3>\n\nUse <code><a class=\"link\" href=\"?q=type()\">type()</a></code> or <code><a class=\"link\" href=\"?q=isinstance()\">isinstance()</a></code>.\n\n\n\n"},{"id":"CpmN","level":2,"heading":"Long","content":"<h3>Long</h3>\n\nUse <code><a class=\"link\" href=\"?q=int-only\">int</a></code>.\n\nPython has only one integer type and that is <code>int</code>.\n\n\n\n"},{"id":"LP3w","level":2,"heading":"Money, Currency","content":"<h3>Money, Currency</h3>\n\nUse <code><a class=\"link\" href=\"?q=decimal-only\">Decimal</a></code>.\n\n\n\n"},{"id":"VZT1","level":2,"heading":"New Keyword","content":"<h3>New Keyword</h3>\n\nNot needed.\n\nPython does not require <code>new</code> when creatin a new instance of a class.\n\n\nExample:\n\n<div class=\"codebox\"><var>instance_1</var> = <var>Class1</var>()\t\t<span class=\"note\"># Creates a New Instance of Class1</span></div>\n\n\n\n"},{"id":"c5C5","level":2,"heading":"Nil, Null","content":"<h3>Nil, Null</h3>\n\nUse <code><a class=\"link\" href=\"?q=none-only\">None</a></code>.\n\nPython's version of <code>nil</code> or <code>null</code> is <code>None</code>.\n\nFor char(0), use <code>&quot;\\00&quot;</code>.\n\n\n\n"},{"id":"a4sa","level":2,"heading":"Stack","content":"<h3>Stack</h3>\n\nThere is no stack. Use <code><a class=\"link\" href=\"?q=list-only\">list</a></code> instead.\n\n\nExample:\n\n<div class=\"codebox\"><var>stack_1</var> = []\n\n<var>stack_1</var>.append(<var>item</var>)\n\n<var>item</var> = <var>stack_1</var>.pop()</div>\n\n\n\n"},{"id":"dDDG","level":2,"heading":"Throw","content":"<h3>Throw</h3>\n\nUse:\n\n<div class=\"codebox\">raise <var>Exception1</var>()</div>\n\nSee: <a class=\"link\" href=\"?q=exceptions-only\">Exceptions</a>.\n\n\n\n"},{"id":"EGjM","level":2,"heading":"Try Catch","content":"<h3>Try Catch</h3>\n\nUse:\n\n<div class=\"codebox\">try:\n\nexcept Exception as <var>exception_1</var>:</div>\n\nSee: <a class=\"link\" href=\"?q=exceptions-only\">Exceptions</a>.\n\n\n\n"},{"id":"AxH2","level":1,"heading":"Reference - Git","content":"<h1>Reference - Git</h1>\n\n\n"},{"id":"hjSx","level":2,"heading":"Git .gitignore","content":"<h3>Git .gitignore</h3>\n\nGit .gitignore file for Python projects:\n\n<div class=\"codebox\"><span class=\"note\"># Backup files</span>\n**/*.rs.bk\n*.orig\n\n<span class=\"note\"># Cargo</span>\n<span class=\"note\"># (include for binaries, exclude for libraries)</span>\nCargo.lock\n\n<span class=\"note\"># Environment variables</span>\n.env\n.env.local\n\n<span class=\"note\"># IDEs</span>\n.idea/\n.vscode/*\n!.vscode/extensions.json\n*.swo\n*.swp\n*.iml\n\n<span class=\"note\"># Build artifacts</span>\ndebug/\ntarget/\n*.pdb\n*.o\n\n<span class=\"note\"># OS</span>\n.DS_Store\nThumbs.db</div>\n\n\n\n"},{"id":"SQ1b","level":1,"heading":"Symbols","content":"<h1>Symbols</h1>\n\n\n"},{"id":"SXqs","level":2,"heading":"Symbols - Basics","content":"<h2>Symbols - Basics</h2>\n\n<table><tr><td><code><span class=\"note\"># A comment.</span></code></td><td>Programmer Comment</td></tr>\n<tr><td> </td></tr>\n<tr><td><code><var>statement</var>;</code></td><td>Semicolon Statement Separator</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>@<var>function_1</var>()</code></td><td>Decorated Function</td><td><span class=\"note\"># At Sign '@'</span></td></tr>\n<tr><td> </td></tr>\n<tr><td><code>*args</code></td><td>Arguments Passed as a Tuple (Array</td><td><span class=\"note\"># Single Asterisk '*'</span></td></tr>\n<tr><td><code>**kwargs</code></td><td>Arguments Passed as a Key Value Dictionary</td><td><span class=\"note\"># Double Asterisks '**'</span></td></tr>\n<tr><td> </td></tr>\n<tr><td><code>*<var>value_1</var></code></td><td>A Sublist Extracted from Some Sequence</td></tr>\n<tr><td><code>*_</code></td><td>A Sublist Extracted from Some Sequence But Ignored</td></tr>\n<tr><td><code>_</code></td><td>A Value Extracted from a Sequence But Ignored</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>self.<var>some_member</var></code></td><td>Class instance reference to internal member</td><td><span class=\"note\"># <code>self.</code></span></td></tr>\n<tr><td> </td></tr>\n<tr><td><code>'<var>A string</var>'</code></td><td>String</td></tr>\n<tr><td><code>&quot;<var>A string</var>&quot;</code></td><td>Also A String</td></tr>\n<tr><td> </td></tr>\n<tr><td><code><span class=\"note\">&quot;&quot;&quot;Doc comment.&quot;&quot;&quot;</span></code></td><td>DocString</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>&quot;&quot;&quot;<var>Multiline\nString</var>&quot;&quot;&quot;</code></td><td>A Multiline String</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>'''<var>Multiline\nString</var>'''</code></td><td>A Multiline String</td></tr>\n<tr><td> </td></tr>\n<tr><td><code>_<var>name_1</var></code></td><td>Private Function or Variable</td><td><span class=\"note\"># Single Underscore '_'</span></td></tr>\n<tr><td><code>__<var>method_name</var>__</code></td><td>Magic Method / System Method</td><td><span class=\"note\"># Double Underscore, Both Ends '__'</span></td></tr>\n<tr><td> </td></tr>\n<tr><td><code>{}</code></td><td>Empty Dictionary</td></tr>\n<tr><td><code>{<var>key1</var> : <var>value1</var>, <var>...</var>}</code></td><td>Dictionary</td></tr>\n<tr><td><code>{<var>value1</var>, <var>...</var>}</code></td><td>Set</td><td><span class=\"note\"># No Colon ':'</span></td></tr>\n<tr><td> </td></tr>\n<tr><td><code>[]</code></td><td>Empty List</td></tr>\n<tr><td><code>[<var>value1</var>, <var>value2</var>, <var>...</var>]</code></td><td>List</td></tr>\n<tr><td><code>(<var>value1</var>, <var>value2</var>, <var>...</var>)</code></td><td>Tuple</td></tr>\n<tr><td> </td></tr>\n<tr><td><code><var>a</var> := <var>b</var></code></td><td>Walrus Operator / Assignment Expression</td></tr></table>\n\n\n\n"},{"id":"zcG6","level":2,"heading":"Symbols - Details","content":"<h2>Symbols - Details</h2>\n\n\n"},{"id":"FeGL","level":3,"heading":"Symbol ''","content":"<h3>Symbol ''</h3>\n\nString\n\n<div class=\"codebox\">'<var>This is a string.</var>'</div>\n\nEmpty String\n\n<div class=\"codebox\">''</div>\n\n\n\n\n"},{"id":"yHsg","level":3,"heading":"Symbol '''","content":"<h3>Symbol '''</h3>\n\nMultiline String\n\n<div class=\"codebox\">multiline_string = '''<var>This is\na multiline\nstring.</var>'''</div>\n\n\n"},{"id":"FeDX","level":3,"heading":"Symbol \"\"","content":"<h3>Symbol &quot;&quot;</h3>\n\nString\n\n<div class=\"codebox\">&quot;<var>This is a string.</var>&quot;</div>\n\nEmpty String\n\n<div class=\"codebox\">&quot;&quot;</div>\n\n\n\n"},{"id":"yKNp","level":3,"heading":"Symbol \"\"\"","content":"<h3>Symbol &quot;&quot;&quot;</h3>\n\nDocString\n\n<div class=\"codebox\">def <var>function_1</var>():\n\t<span class=\"note\">&quot;&quot;&quot; DocString describing function_1. &quot;&quot;&quot;</span></div>\n\nMultiline String\n\n<div class=\"codebox\">multiline_string = &quot;&quot;&quot;<var>This is\na multiline\nstring.</var>&quot;&quot;&quot;</div>\n\n\n"},{"id":"UkUN","level":3,"heading":"Symbol @","content":"<h3>Symbol @</h3>\nDenotes a decorated function.\n\n<div class=\"codebox\">@<var>decorator</var>()\ndef <var>decorated_function</var>():\n    <var>...</var></div>\n\nA function name leading with an at sign is a decorator\n\n\n\n"},{"id":"UkTt","level":3,"heading":"Symbol #","content":"<h3>Symbol #</h3>\nComment\n\n<div class=\"codebox\"><span class=\"note\"># This is a comment</span></div>\n\nThe hash denotes a comment section at the end of a line.\n\n\n\n"},{"id":"UkUH","level":3,"heading":"Symbol ;","content":"<h3>Symbol ;</h3>\nStatement Separator\n\n<div class=\"codebox\"><var>statement_1</var>;</div>\n\nThe semicolon identifies the division between one statement and another.\nIt is not required in Python but is accepted.\n2 semicolon, statement separator\n\n\n\n"},{"id":"bYJ8","level":3,"heading":"Symbol *args","content":"<h3>Symbol *args</h3>\n\nArguments received as a tuple.\n\n<div class=\"codebox\">def <var>function_1</var>(*args):\n\t<var>...</var></div>\n\nWhen calling the function, the sequence or list is converted to the function arguments in order.\nWhen the arguments as defined as <code>*args</code> in the function, arguments are converted to a tuple and then passed in.\n\n\n\n"},{"id":"mfSc","level":3,"heading":"Symbol **kwargs","content":"<h3>Symbol **kwargs</h3>\nKey Word Arguments\n\nDenotes arguments received by a function as a key value dict.\n\n<div class=\"codebox\">def <var>function_1</var>(**kwargs):\n\t<var>...</var></div>\n\nWhen calling the function, the keys are mapped to the function's internal arguments by name.\nWhen the arguments are defined as <code>**kwargs</code> in the function, named arguments are converted to a dict and then passed in.\n\n\n\n"},{"id":"dGc5","level":3,"heading":"Symbol *list","content":"<h3>Symbol *list</h3>\nA sequence or list to be unpacked when calling a function.\n\nWhen calling a function, the sequence or list will be unpacked into parameter order before passing to the function.\n\n<div class=\"codebox\"><var>function_1</var>(*<var>parameters</var>)</div>\n\n<div class=\"codebox\"><var>parameters</var> = (1, &quot;name&quot;, &quot;description&quot;)\n<var>create</var>(*<var>parameters</var>)</div>\n\n\n\n"},{"id":"V6sm","level":3,"heading":"Symbol *sublist","content":"<h3>Symbol *sublist</h3>\nSublist destructured (extracted) from a sequence or other list.\n\n<div class=\"codebox\"><var>first</var>, *<var>remainder</var> = <var>sequence_1</var></div>\n\nSee: <a class=\"link\" href=\"?q=destructur&select=2jr2\">Destructuring</a>\n\n\n\n"},{"id":"FeJy","level":3,"heading":"Symbol *_","content":"<h3>Symbol *_</h3>\nAn ignored sublist during destructuring of a sequence.\n\n<div class=\"codebox\"><var>first</var>, *_, <var>last</var> = <var>sequence_1</var></div>\n\nSee: <a class=\"link\" href=\"?q=destructur&select=2jr2\">Destructuring</a>\n\n\n"},{"id":"UkUw","level":3,"heading":"Symbol _","content":"<h3>Symbol _</h3>\n\nPrivate Method or Variable (Name with Leading _)\n\n<div class=\"codebox\">def _<var>private_method_1</var>():\n\t<var>...</var></div>\n\nNumber Literal (For Readability)\n\n<div class=\"codebox\"><var>12</var>_<var>345.00</var>_<var>00</var></div>\n\nDestructuring - Ignored Value\n\n<div class=\"codebox\">_, *<var>remainder</var> = <var>list_1</var></div>\n\nDefault Match Clause\n\n<div class=\"codebox\">match <var>value</var>:\n    case _:\n        <var>...</var></div>\n\n\n"},{"id":"Feqn","level":3,"heading":"Symbol __","content":"<h3>Symbol __</h3>\n\nA Dunder Method, A System Reserved Method\n\n<div class=\"codebox\"><var>instance_1</var>.__<var>name</var>__</div>\n\n\n\n"},{"id":"UkU4","level":3,"heading":"Symbol .","content":"<h3>Symbol .</h3>\n\nMethod or Property Accessor\n\n<div class=\"codebox\"><var>instance_1</var>.<var>method_1</var>()</div>\n\n<div class=\"codebox\">= <var>instance_1</var>.<var>property_1</var></div>\n\n\n\n"},{"id":"EV4m","level":3,"heading":"Symbol self","content":"<h3>Symbol self</h3>\n\nReferences the current class instance.\n\n<div class=\"codebox\"> = self.<var>property_1</var></div>\n\n\n\n"},{"id":"FenZ","level":3,"heading":"Symbol []","content":"<h3>Symbol []</h3>\n\nList\n\n<div class=\"codebox\"><var>list_1</var> = [1, 2, 3]</div>\n\n\nEmpty List\n\n<div class=\"codebox\"><var>empty_list</var> = []</div>\n\n\n\n"},{"id":"Ff6X","level":3,"heading":"Symbol {}","content":"<h3>Symbol {}</h3>\n\nDict\n\n<div class=\"codebox\"><var>dict_1</var> = {1 : &quot;one&quot;, 2 : &quot;two&quot;, 3 : &quot;three&quot;}</div>\n\nEmpty Dict\n\n<div class=\"codebox\"><var>empty_dict</var> = {}</div>\n\nSet\n\n<div class=\"codebox\"><var>set_1</var> = {1, 2, 3}</div>\n\n\n\n"},{"id":"FeGw","level":3,"heading":"Symbol ()","content":"<h3>Symbol ()</h3>\n\nTuple\n\n<div class=\"codebox\"><var>tuple_1</var> = (1, 2, 3)</div>\n\n\nEmpty Tuple\n\n<div class=\"codebox\"><var>empty_tuple</var> = ()</div>\n\n\n\n"},{"id":"chGP","level":2,"heading":"Symbols - Operator Symbols","content":"<h2>Symbols - Operator Symbols</h2>\n\n\n"},{"id":"UkU1","level":3,"heading":"Symbol +","content":"<h3>Symbol +</h3>\n\nAddition (Arithmetic Operator)\nString Concatenation (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> + <var>b</var></div>\n\n\n"},{"id":"UkU3","level":3,"heading":"Symbol -","content":"<h3>Symbol -</h3>\n\nSubtraction (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> - <var>b</var></div>\n\n\n"},{"id":"UkU0","level":3,"heading":"Symbol *","content":"<h3>Symbol *</h3>\n\nMultiplication (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> * <var>b</var></div>\n\n\n"},{"id":"UkU5","level":3,"heading":"Symbol /","content":"<h3>Symbol /</h3>\n\nDivision (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> / <var>b</var></div>\n\n\n"},{"id":"FeLr","level":3,"heading":"Symbol //","content":"<h3>Symbol //</h3>\n\nFloor Division (Arithmetic Operator)\n\n<div class=\"codebox\">/<var>a</var> // <var>b</var></div>\n\n\n"},{"id":"UkTv","level":3,"heading":"Symbol %","content":"<h3>Symbol %</h3>\n\nModulus (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> % <var>b</var></div>\n\n\n"},{"id":"FeJ2","level":3,"heading":"Symbol **","content":"<h3>Symbol **</h3>\n\nPower (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> ** <var>b</var></div>\n\n\n"},{"id":"FeJv","level":3,"heading":"Symbol +=","content":"<h3>Symbol +=</h3>\n\nAdd And Assign (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> += <var>b</var></div>\n\nString Concatenation (Arithmetic Operator)\n\n<div class=\"codebox\"><var>string_1</var> += <var>string_2</var></div>\n\n\n"},{"id":"FeL0","level":3,"heading":"Symbol -=","content":"<h3>Symbol -=</h3>\n\nSubtract And Assign (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> -= <var>b</var></div>\n\n\n"},{"id":"FeJM","level":3,"heading":"Symbol *=","content":"<h3>Symbol *=</h3>\n\nMultiply And Assign (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> *= <var>b</var></div>\n\n\n"},{"id":"FeM5","level":3,"heading":"Symbol /=","content":"<h3>Symbol /=</h3>\n\nDivide And Assign (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> /= <var>b</var></div>\n\n\n"},{"id":"yFQ5","level":3,"heading":"Symbol //=","content":"<h3>Symbol //=</h3>\n\nFloor Divide And Assign (Arithmetic Operator)\n\n<div class=\"codebox\">/<var>a</var> //= <var>b</var></div>\n\n\n"},{"id":"FeFd","level":3,"heading":"Symbol %=","content":"<h3>Symbol %=</h3>\n\nCalculate Modulus And Assign (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> %= <var>b</var></div>\n\n\n"},{"id":"yGx6","level":3,"heading":"Symbol **=","content":"<h3>Symbol **=</h3>\n\nCalculate Power And Assign (Arithmetic Operator)\n\n<div class=\"codebox\"><var>a</var> **= <var>b</var></div>\n\n\n"},{"id":"UkUJ","level":3,"heading":"Symbol <","content":"<h3>Symbol &lt;</h3>\n\nLess Than (Comparison Operator)\n\n<div class=\"codebox\"><var>a</var> &lt; <var>b</var></div>\n\n\n"},{"id":"FeU9","level":3,"heading":"Symbol <=","content":"<h3>Symbol &lt;=</h3>\n\nLess Than Or Equal To (Comparison Operator)\n\n<div class=\"codebox\"><var>a</var> &lt;= <var>b</var></div>\n\n\n"},{"id":"UkUL","level":3,"heading":"Symbol >","content":"<h3>Symbol &gt;</h3>\n\nGreater Than (Comparison Operator)\n\n<div class=\"codebox\"><var>a</var> &gt; <var>b</var></div>\n\n\n"},{"id":"FeVE","level":3,"heading":"Symbol >=","content":"<h3>Symbol &gt;=</h3>\n\nGreater Than Or Equal To (Comparison Operator)\n\n<div class=\"codebox\"><var>a</var> &gt;= <var>b</var></div>\n\n\n"},{"id":"FeUg","level":3,"heading":"Symbol ==","content":"<h3>Symbol ==</h3>\n\nEqual To (Comparison Operator)\n\n<div class=\"codebox\"><var>a</var> == <var>b</var></div>\n\n\n"},{"id":"FeDT","level":3,"heading":"Symbol !=","content":"<h3>Symbol !=</h3>\n\nNot Equal To (Comparison Operator)\n\n<div class=\"codebox\"><var>a</var> != <var>b</var></div>\n\n\n"},{"id":"FeT4","level":3,"heading":"Symbol :=","content":"<h3>Symbol :=</h3>\nWalrus Operator / Assignment Expression\n\n<div class=\"codebox\"><var>variable</var> := <var>expression</var></div>\n\nEvaluates an expression, assigns it to the variable, and returns the result same expression..\n\n\n"},{"id":"UkVT","level":3,"heading":"Symbol ~","content":"<h3>Symbol ~</h3>\n\nComplement / Inverse\n\n<div class=\"codebox\">~<var>a</var></div>\n\n\n"},{"id":"UkTw","level":3,"heading":"Symbol &","content":"<h3>Symbol &amp;</h3>\n\nBitwise AND (Bitwise Operator)\n\n<div class=\"codebox\"><var>a</var> &amp; <var>b</var></div>\n\n\n"},{"id":"UkVR","level":3,"heading":"Symbol |","content":"<h3>Symbol |</h3>\n\nBitwise OR (Bitwise Operator)\n\n<div class=\"codebox\"><var>a</var> | <var>b</var></div>\n\n\n"},{"id":"UkWT","level":3,"heading":"Symbol |","content":"<h3>Symbol |</h3>\n\nType Hint - Union Type\n\n<div class=\"codebox\"><var>str</var> | <var>int</var></div>\n\nFunction Parameter:\n\n<div class=\"codebox\">def <var>function_1</var>(<var>parameter</var>: <var>str</var> | <var>int</var>):</div>\n\n\n"},{"id":"UkUv","level":3,"heading":"Symbol ^","content":"<h3>Symbol ^</h3>\n\nBitwise XOR (Bitwise Operator)\n\n<div class=\"codebox\"><var>a</var> ^ <var>b</var></div>\n\n\n"},{"id":"FeU8","level":3,"heading":"Symbol <<","content":"<h3>Symbol &lt;&lt;</h3>\n\nBitwise Shift Left (Bitwise Operator)\n\n<div class=\"codebox\"><var>a</var> &lt;&lt; <var>shift_count</var></div>\n\n\n"},{"id":"FeVF","level":3,"heading":"Symbol >>","content":"<h3>Symbol &gt;&gt;</h3>\n\nBitwise Shift Right (Bitwise Operator)\n\n<div class=\"codebox\"><var>a</var> &gt;&gt; <var>shift_count</var></div>\n\n\n"},{"id":"xzDX","level":3,"heading":"Symbol f''","content":"<h3>Symbol f''</h3>\n\nF-String\n\nReturns formated text.\n\n<div class=\"codebox\">f'<var>text</var>'</div>\n\n<div class=\"codebox\">f'{<var>variable</var>}'</div>\n\n\n\n"},{"id":"xzGL","level":3,"heading":"Symbol f\"\"","content":"<h3>Symbol f&quot;&quot;</h3>\n\nF-String\n\nReturns formated text.\n\n<div class=\"codebox\">f&quot;<var>text</var>&quot;</div>\n\n<div class=\"codebox\">f&quot;{<var>variable</var>}&quot;</div>\n\n\n\n"},{"id":"xvfD","level":3,"heading":"Symbol r''","content":"<h3>Symbol r''</h3>\n\nRaw String\n\nReturns text exactly as it is represented between the quotes.\n\n<div class=\"codebox\">r'<var>text\\text\\text\\n</var>'</div>\n\n\n\n"},{"id":"xvj2","level":3,"heading":"Symbol r\"\"","content":"<h3>Symbol r&quot;&quot;</h3>\n\nRaw String\n\nReturns text exactly as it is represented between the quotes.\n\n<div class=\"codebox\">r&quot;<var>text\\text\\text\\n</var>&quot;</div>\n\n\n"},{"id":"AFJL","level":1,"heading":"What Is The Difference","content":"<h1>What Is The Difference</h1>\n\n\n\n"},{"id":"XR46","level":2,"heading":"Iterable vs Iterator vs Generator","content":"<h3>Iterable vs Iterator vs Generator</h3>\n\nIterable:\n\n<ul><li>Think &quot;contains iterable data&quot;</li>\n<li>Implements <code>__iter__()</code></li>\n<li>Returns an Iterator</li></ul>\n\n\nIterator:\n\n<ul><li>Think &quot;the data being iterated over&quot;</li>\n<li>Implements <code>__next__()</code></li>\n<li>Returns Data One at a Time</li></ul>\n\n\nGenerator:\n\n<ul><li>A Type of Iterable</li>\n<li>Wraps an Iterator Function with an Iterable</li></ul>\n\n\n\n"},{"id":"3k43","level":2,"heading":"List Comprehension vs Generator Expression","content":"<h3>List Comprehension vs Generator Expression</h3>\n\nList Comprehension:\n\n<ul><li>Executes immediately</li>\n<li>Results are stored in memory.</li>\n<li>Syntax: <code>[<var>expression</var> for <var>item</var> in <var>items</var>]</code></li></ul>\n\n\nGenerator Expression:\n\n<ul><li>Similar to List Comprehension</li>\n<li>Evaluates Lazily</li>\n<li>Only uses memory for each item, never the entire result set.</li>\n<li>Syntax: <code>(<var>expression</var> for <var>item</var> in <var>items</var>)</code></li></ul>\n\n\n\n"},{"id":"jbEg","level":2,"heading":"List vs Tuple vs Sequence vs Array vs NumPy Array","content":"<h3>List vs Tuple vs Sequence vs Array vs NumPy Array</h3>\n\nList:\n\n<ul><li>Mutable List</li></ul>\n\n<ul><li>Mutable Ordered List of Items</li>\n<li>Can Mix and Match Types</li></ul>\n\nTuple:\n\n<ul><li>Immutable List</li></ul>\n\n<ul><li>Immutable Ordered List of Items</li>\n<li>Can Mix and Match Types</li></ul>\n\nSequence:\n\n<ul><li>General Type For All Lists</li></ul>\n\n<ul><li>Any Type of Ordered List</li>\n<li>Includes Lists, Tuples</li></ul>\n\nArray:\n\n<ul><li>High Performance Single Type List</li></ul>\n\n<ul><li>A High Performance List of Items</li>\n<li>Data Must Single Type</li></ul>\n\nNumPy Array:\n\n<ul><li>High Performance Multidimenisonal Array</li></ul>\n\n<ul><li>Requires NumPy Library (External Library)</li>\n<li>Data Most Be Single Type</li></ul>\n\n\n\n"},{"id":"quGh","level":1,"heading":"Reserved Words","content":"<h1>Reserved Words</h1>\n\nA reserved word is a keyword that has special meaning or purpose to Python.\nIt can not be used as the name of an object, variable or function.\n\n<ul><li><code>and</code></li>\n<li><code>as</code></li>\n<li><code>assert</code></li>\n<li><code>break</code></li>\n<li><code>class</code></li>\n<li><code>continue</code></li>\n<li><code>def</code></li>\n<li><code>del</code></li>\n<li><code>elif</code></li>\n<li><code>else</code></li>\n<li><code>except</code></li>\n<li><code>False</code></li>\n<li><code>finally</code></li>\n<li><code>for</code></li>\n<li><code>from</code></li>\n<li><code>global</code></li>\n<li><code>if</code></li>\n<li><code>import</code></li>\n<li><code>in</code></li>\n<li><code>is</code></li>\n<li><code>lambda</code></li>\n<li><code>None</code></li>\n<li><code>nonlocal</code></li>\n<li><code>not</code></li>\n<li><code>or</code></li>\n<li><code>pass</code></li>\n<li><code>raise</code></li>\n<li><code>return</code></li>\n<li><code>True</code></li>\n<li><code>try</code></li>\n<li><code>while</code></li>\n<li><code>with</code></li>\n<li><code>yield</code></li></ul>\n\n\n\n"},{"id":"eE3e","level":1,"heading":"Acronyms","content":"<h1>Acronyms</h1>\n\n\n"},{"id":"0Ksx","level":2,"heading":"ABC","content":"<h3>ABC</h3>\nAbstract Base Class\n\n\n\n"},{"id":"0L2U","level":2,"heading":"AST","content":"<h3>AST</h3>\nAbstract Syntax Tree\n\n\n\n"},{"id":"0VpB","level":2,"heading":"arg","content":"<h3>arg</h3>\nAn argument passed into a function.\n\n\n\n"},{"id":"0L4d","level":2,"heading":"AWS","content":"<h3>AWS</h3>\nThis is used in coroutines and event loops.\n\nBest guess:\nAwaitable subroutine.\n\n<span class=\"important\">Someone who knows, can you please help us out and tell us what this stands for?</span>\n\n\n\n"},{"id":"00fT","level":2,"heading":"FP","content":"<h3>FP</h3>\nFile Pointer\n\n<div class=\"codebox\">with open(<var>file_name</var>, &quot;w&quot;) as <var>fp</var>:\n\t<var>fp</var>.write()</div>\n\nSee: <a class=\"link\" href=\"?q=open()+write\">Write File</a>\n\n\n\n"},{"id":"0Mh4","level":2,"heading":"GIL","content":"<h3>GIL</h3>\nGlobal Interpreter Lock\n\n\n\n"},{"id":"0QKg","level":2,"heading":"PEP","content":"<h3>PEP</h3>\nPython Enhancement Proposals\n\n\n\n"},{"id":"0QMt","level":2,"heading":"PIP","content":"<h3>PIP</h3>\nPip Installs Packages (Python&rsquo;s Package Manager)\n\n\n\n"},{"id":"DV6j","level":2,"heading":"PyPI","content":"<h3>PyPI</h3>\nPython Package Index\n\n\n\n"},{"id":"p1VN","level":3,"heading":"Python File Extension .py","content":"<h4>Python File Extension .py</h4>\nPython code file.\n\n\n\n"},{"id":"PWJP","level":3,"heading":"Python File Extension .pyc","content":"<h4>Python File Extension .pyc</h4>\nPython compiled bytecode.\nAutomatically generated.\n\n\n\n"},{"id":"PWJB","level":3,"heading":"Python File Extension .pyo","content":"<h4>Python File Extension .pyo</h4>\nPython compiled module.\nCreated by interpreter when a module is imported.\n\n\n\n"},{"id":"PWJN","level":3,"heading":"Python File Extension .pyd","content":"<h4>Python File Extension .pyd</h4>\nWindows dynamic link library that contains a python module.\nCalled from other python applications.\n\n\n\n"},{"id":"DY4N","level":2,"heading":"REPL","content":"<h3>REPL</h3>\nRead Eval Print Loop\n\nPythons inteactive command-line interface for executing Python code.\n\n\n\n"},{"id":"EBj4","level":2,"heading":"VENV","content":"<h3>VENV</h3>\nVirtual Environment\n\n\n\n"},{"id":"cjgA","level":1,"heading":"Terms","content":"<h1>Terms</h1>\n\n\n"},{"id":"jH44","level":2,"heading":"Asynchronous Programs","content":"<h3>Asynchronous Programs</h3>\nBreaks a task into internal and external steps.\n\nThe external steps are submitted.\nThen the internal steps are performed.\nFinally the responses from the external steps are collected.\n\nThe external task is often represented by an object\ncalled future, promise or task.\n\nBest for I/O bound processes and Python threads.\n\n\n\n"},{"id":"4bp8","level":2,"heading":"Attribute","content":"<h3>Attribute</h3>\nA class variable or function. Anything you reference with '.' . \n\n\n\n"},{"id":"k60q","level":2,"heading":"Awaitable","content":"<h3>Awaitable</h3>\n\nAnything that can be used with <code>await</code>.\n\nMain types: coroutines, Tasks, and Futures\n\n\n\n"},{"id":"A0gG","level":2,"heading":"Class","content":"<h3>Class</h3>\nA class object defined in a module file. Classes should use Pascal case.\n\n\n\n"},{"id":"SVtP","level":2,"heading":"Class Member","content":"<h3>Class Member</h3>\nAny variable or function defined in the class.\n\nAll members are public.\n\n\n\n"},{"id":"RLqV","level":2,"heading":"Class Method","content":"<h3>Class Method</h3>\nStored as an attribute on a class.\n\n\n\n"},{"id":"4uvb","level":2,"heading":"Closure","content":"<h3>Closure</h3>\nIs a function that &quot;closes over&quot; the environment it was defined in. It has access to all the variables in that are in scope in that environment without having to explicitly have them passed in.\n\nThis applies to lambdas and nested functions.\n\n\n\n"},{"id":"qm07","level":2,"heading":"Constants","content":"<h3>Constants</h3>\nThere is no mechanism to enforce constants in Python.\n\nUse a regular variable, style it as a constant and trust your fellow developers to play by the rules!\n\n\n\n"},{"id":"XrTA","level":2,"heading":"Coroutine","content":"<h3>Coroutine</h3>\nA suspendable function for use in concurrent thread processes.\n\nIt can be stopped and restarted and will voluntarily yield control to other functions on the current thread instead of blocking.\nUse this to work on single threaded event loops.\n\n\n\n"},{"id":"LmhX","level":2,"heading":"Daemon Process","content":"<h3>Daemon Process</h3>\nA process that runs independently of its parent process.\n\nIt will continue to run when the parent terminates.\n\n\n\n"},{"id":"0Zb2","level":2,"heading":"Decorator","content":"<h3>Decorator</h3>\nA method or class that runs before a method is called.\n\nThe decorator method is applied with <code>@<var>decorator</var></code> ('@' + decorator function name).\nNot related to the decorator pattern.\n\n\n\n"},{"id":"9UHw","level":2,"heading":"Deep vs Shallow Copying","content":"<h3>Deep vs Shallow Copying</h3>\n\nShallow Copy:\nCreates a copy of the parent object but reuses the original child objects.\n\nDeep Copy:\nCreates duplicates of the parent object and all related child objects.\nCan break if there are circular references.\n\n\n\n"},{"id":"ebPK","level":2,"heading":"Dictionary","content":"<h3>Dictionary</h3>\nA dict. A collection of key value pairs.\n\n\n\n"},{"id":"n8Vq","level":2,"heading":"Duck Typing","content":"<h3>Duck Typing</h3>\nIf it walks like a duck and quacks like a duck, it is a duck.\n\nDuck typing states that if the method exists, the object supports that action and you can invoke it.\nThere is no type checking to see if the object type or superclass explicitly supports that method.\n\n\n\n"},{"id":"mzHR","level":2,"heading":"Dunder Method","content":"<h3>Dunder Method</h3>\nAny method that stars and ends with a double underscore.\n\nExample: <code>__name__</code>\n\nDunder = Double Underscore\nSee: Magic Method\n\n\n\n"},{"id":"YVyv","level":2,"heading":"Egg File","content":"<h3>Egg File</h3>\nA zip file containing Python files. It is runnable if it contains __main__.py in the root directory.\n\n\n\n"},{"id":"LfsF","level":2,"heading":"Epoch","content":"<h3>Epoch</h3>\nThe time at Unix Time 0.\n\nJanuary 1st, 1970 at 00:00:00 UTC.\n\n\n\n"},{"id":"gBrV","level":2,"heading":"Epoch Time / Unix Time","content":"<h3>Epoch Time / Unix Time</h3>\nThe time that has passed in seconds since the Unix epoch (January 1st, 1970).\n\n\n\n"},{"id":"NqVS","level":2,"heading":"Event Loop","content":"<h3>Event Loop</h3>\nA single threaded process that places coroutines and tasks on a queue and executes them one at a time.\nThe task or coroutine will voluntarily give up control back to the event loop when blocked, allowing other tasks to continue.\n\nGreat for handling IO bound operations where you don't want to block execution when waiting for external operations to complete.\n\n\n\n"},{"id":"m1Tc","level":2,"heading":"Executable Directory","content":"<h3>Executable Directory</h3>\nAn executable directory is any directory containing <code>__main__.py</code>.\n\nWhen called from python, it will execute the code in <code>__main__.py</code> to start the application.\n\n\n\n"},{"id":"kCgF","level":2,"heading":"Expression","content":"<h3>Expression</h3>\nSome code that evaluates to a value.\n\nExamples:\n\n<div class=\"codebox\">1 + 3\n&quot;A string&quot;\n<var>my_variable</var></div>\n\n\n\n"},{"id":"cnHs","level":2,"heading":"Formatted String literal","content":"<h3>Formatted String literal</h3>\nAn f-string or string in the form <code>f&quot;<var>text</var>&quot;</code>.\n\nUsed to create a formatted string.\n\n\n\n"},{"id":"wpbS","level":2,"heading":"Function","content":"<h3>Function</h3>\nA callable section of code that has a name, takes arguments and performs an action or calculation.\nPython functions can be stand alone or in a class.\n\n\n\n"},{"id":"eJxZ","level":2,"heading":"Function - Function Overloading","content":"<h3>Function - Function Overloading</h3>\nNot supported by Python.\n\nUse named argument passing or optional function arguments.\n\nFunction overloading is where multiple functions are defined with the same name but have different arguments. For Python, use named arguments with default values inside a single function instead.\n\n\n\n"},{"id":"dv58","level":2,"heading":"Function - Inner Function","content":"<h3>Function - Inner Function</h3>\nA function defined inside another function.\n\n\n\n"},{"id":"bfnv","level":2,"heading":"Generics","content":"<h3>Generics</h3>\nStrictly speaking not supported in Python.\n\nPython is a dynamic language and uses duck typing. No need for Generics.\n\nPython's typing library allows you to declare generic types but they are ignored by the compiler.\n\n\n\n"},{"id":"eW9y","level":2,"heading":"Global Interpreter Lock (GIL)","content":"<h3>Global Interpreter Lock (GIL)</h3>\nUsed by python to protect the interpreter's state during multitasking operations.\n\nPrevents multiple native threads from executing python code at the same time.\n\nIt is needed to prevent race conditions and dead locks with Python's memory management unit.\nIt is implemented as a mutex (lock) that allows only one thread to hold control of Python's interpreter.\nA thread must obtain the lock before it can execute.\nIO bound operations automatically release control to the GIL so other threads can run.\n\nSee: Multitasking, Thread\n\n\n\n"},{"id":"ZQsf","level":2,"heading":"Gorilla","content":"<h3>Gorilla</h3>\nHere is a gorilla  \uD83E\uDD8D\n\n\n\n"},{"id":"C0zX","level":2,"heading":"Goto","content":"<h3>Goto</h3>\nNot supported in Python\n\n\n\n"},{"id":"BswV","level":2,"heading":"Green Threads","content":"<h3>Green Threads</h3>\nPython's mechanism for emulating multi-threading.\n\nThey are managed in user space instead of kernel space, enabling them to work in environments that do not have native thread support. They work like cooperative multi-threading. Each thread voluntarily/explicitly give up control to one another at specified points in your code.\n\nAlso called: Greenlets\n\n\n\n"},{"id":"EkAT","level":2,"heading":"Guido van Rossum","content":"<h3>Guido van Rossum</h3>\nThe creator of Python.\n\nGuido created Python in 1991.\n\n\n\n"},{"id":"3f5K","level":2,"heading":"Inter-Process Communication","content":"<h3>Inter-Process Communication</h3>\n\nUse any of these:\n\n\tPipe\n\tQueue\n\tShared Memory\n\tShared Manager\n\n\n\n"},{"id":"TAvT","level":3,"heading":"Inter-Process Communication - Shared Memory","content":"<h4>Inter-Process Communication - Shared Memory</h4>\n\n<div class=\"codebox\">multiprocessing.Value</div>\n\n<div class=\"codebox\">multiprocessing.Array</div>\n\n\nThese are faster than a shared manager but have restrictions.\n\n\n\n"},{"id":"LxdK","level":3,"heading":"Inter-Process Communication - Shared Manager","content":"<h4>Inter-Process Communication - Shared Manager</h4>\n\nSlower, uses proxy to write to shared memory.\nSupports a wider range of types (dicts, lists, semaphores, etc.)\n\nCan share memory over the network.\n\n\n\n"},{"id":"8MpC","level":2,"heading":"Iterable","content":"<h3>Iterable</h3>\nAny object that returns an iterator.\n\nUsed by any class that has data that can be iterated over.\n\n\n\n"},{"id":"8T9X","level":2,"heading":"Iterator","content":"<h3>Iterator</h3>\nAn object that iterates over a set of data.\n\nIt returns the data one element at a time.\n\n\n\n"},{"id":"ZGrb","level":2,"heading":"Kitchen Sink","content":"<h3>Kitchen Sink</h3>\nSo we might have lied about the kitchen sink. But we are doing our best to make this as complete as possible.\n\nLet us know what we should have in here but don't.\n\nAnd one day, we may also add the kitchen sink!\n\n\n\n"},{"id":"0Dwm","level":2,"heading":"Lazy Iterators","content":"<h3>Lazy Iterators</h3>\nThese iterators evaluate each value one at a time and only when required.\n\nExamples: Generator Expression, Yield\n\n\n\n"},{"id":"Xgz0","level":2,"heading":"Magic Method","content":"<h3>Magic Method</h3>\nA python language method that adds &quot;magic&quot; functionality to a class.\n\nReserved for system methods. These methods are always in the form <code>__<var>methodname</var>__</code>. The double underscores is a way of ensuring system method names don't collide with user names.\n\nAlso called: A Dunder method (<strong>d</strong>ouble-<strong>under</strong>score).\n\n\n\n"},{"id":"FXVt","level":2,"heading":"Map Data Structure","content":"<h3>Map Data Structure</h3>\nUse Python's <code>dict</code> for other languages' map() or dictionary() data structures.\n\n\n\n"},{"id":"13X9","level":2,"heading":"Memory Management","content":"<h3>Memory Management</h3>\nPython uses reference counting to track when objects become unused. When the count is 0, the object memory gets freed.\n\n\n\n"},{"id":"5jDa","level":2,"heading":"Method or Function Overloading","content":"<h3>Method or Function Overloading</h3>\nNot supported in Python.\n\nUse named argument passing or optional method arguments.\n\nUse default values in the method signatures and pass arguments by name.\n\n\n\n"},{"id":"2VMp","level":2,"heading":"Mixin","content":"<h3>Mixin</h3>\nA special kind of multiple inheritance.\n\nUsed to either: \n- provide a lot of optional features for a class.\n- use a particular feature in a lot of classes.\n\nFor the optional feature classes, these classes are not designed to stand alone but add some functionality to another class type.\n\n\n\n"},{"id":"25be","level":2,"heading":"Module","content":"<h3>Module</h3>\nA file that contains related Python definitions and statements. Should be short and lower case. Module names map to file names.\n\n\n\n"},{"id":"4hYJ","level":2,"heading":"Monkey Patch","content":"<h3>Monkey Patch</h3>\nPython's mechanism for changing the behaviour of a piece of code at runtime.\n\nFunctions or class methods can be changed dynamically while the application is running.\nUsually done for testing purposes (unit tests).\n\n\n\n"},{"id":"J6Nu","level":2,"heading":"Multitasking","content":"<h3>Multitasking</h3>\nPython implements multitasking through non-blocking event loops, multithreading or multiprocessing.\nEach has their benefits and costs.\n\n\n\n"},{"id":"vdhR","level":3,"heading":"Multitasking - Event Loops","content":"<h4>Multitasking - Event Loops</h4>\nRuns non blocking functions on a single threaded event loop.\nFunctions identify themselves as non-blocking and voluntarily give up control to the interpreter.\n\nThis has very little overhead and improves performance for IO bound operations.\nIt is slower than Multithreading but easier to code and is faster than sequential processing.\nAll core Python IO operations are non-blocking and work well.\n\n\n\n"},{"id":"hLMq","level":3,"heading":"Multitasking - Multithreading","content":"<h4>Multitasking - Multithreading</h4>\nPythons multitasking implementation using threads.\n\nIt allows cooperative multitasking and uses shared memory.\nIt is light weight and starts up fast but will not do true multitasking.\nThreads must voluntarily give up control to the interpreter.\nHowever, it is ideal for processing IO bound operations.\n\nSee: Threads\n\n\n\n"},{"id":"YD4M","level":2,"heading":"Multiprocessing","content":"<h3>Multiprocessing</h3>\nPythons multitasking implementation using processes.\n\nIt allows multitasking in separate memory spaces.\nIt is costly to start and does not share memory (by default) with other processes but it preforms true multitasking.\n\nSee: Process\n\n\n\n"},{"id":"af5J","level":2,"heading":"Namespace Package","content":"<h3>Namespace Package</h3>\nA package that is split across multiple root directories (those listed in <code>sys.path</code>) but with the same package name.\n\nPython scans all directories in sys.path for namespace packages.\nIf it finds package directories of the same name but no <code>__init__.py</code> file, it will treat them as one single package.\n\nCan not have <code>__init__.py</code> files.\nThis is to avoid the complexity and issues of deciding the order of running <code>__init__</code> files.\n\n\n\n"},{"id":"cUj5","level":2,"heading":"Object Aliasing","content":"<h3>Object Aliasing</h3>\nThe ability for Python to assign multiple names to Python objects.\n\ne.g. Functions can be referenced through multiple names.\n\n\n\n"},{"id":"Vbeb","level":2,"heading":"Operators","content":"<h3>Operators</h3>\nA symbols takes one or two arguments and performs a calculation on them.\n\nExample: +, -, *, /\n\n\n\n"},{"id":"DnJ1","level":2,"heading":"Package","content":"<h3>Package</h3>\nGenerally a directory that contains module files and the file <code>__info__.py</code> (required).\n\nAll packages are modules but not all modules are packages.\n\n\n\n"},{"id":"xGGE","level":2,"heading":"Pass By Assignment","content":"<h3>Pass By Assignment</h3>\nPython passes arguments by assignment (object reference).\n\nAll variables are references(pointers) to an object. The references are copied in the arguments. Thus the function/method has access to the original value and mutable objects can be changed. However, reassign the variable ( var = &hellip;) and the reference to the original object is gone.\n\n\n\n"},{"id":"yNBJ","level":2,"heading":"PEP 8 - Style Guide","content":"<h3>PEP 8 - Style Guide</h3>\nPython Standard Style Guide\n\n<a class=\"link\" href=\"https://www.python.org/dev/peps/pep-0008/\">https://www.python.org/dev/peps/pep-0008/</a>\n\n\n\n"},{"id":"rmyF","level":2,"heading":"Pickling","content":"<h3>Pickling</h3>\nConverting an object hierarchy into a byte stream.\n\nUnpickling is the inverse operation converting a byte stream back into an object hierarchy.\n\n\n\n"},{"id":"MPqF","level":2,"heading":"Process","content":"<h3>Process</h3>\nA single execution unit executing a part of the program.\n\nProcesses run on their own python interpeter and have their own memory space. As a result, there are no issues with GIL and performance is improved. They are costly to start up (use Pool to get the startup hit only one time) but perform true multitasking.\n\nLibrary: multiprocessing\n\nSee Also: Multitasking, Threads\n\n\n\n"},{"id":"DV7Z","level":2,"heading":"PyPy","content":"<h3>PyPy</h3>\nAn alternative to the standard python language.\n\nFeatures: Just in time compiler, better memory management, Stackless.\nPyPy is written in RPython and compiled into c.\n\n\n\n"},{"id":"zZws","level":2,"heading":"Python Package Index (PiPy)","content":"<h3>Python Package Index (PiPy)</h3>\nPython software repository.\n\n\n\n"},{"id":"eb0T","level":2,"heading":"Python Programming Language","content":"<h3>Python Programming Language</h3>\nPython was created in 1991 by Guido van Rossum.\n\n\n\n"},{"id":"wEUB","level":2,"heading":"Raw String","content":"<h3>Raw String</h3>\nA string where values between the quotes are seet as in. No processing is done on the values between the quotes.\n\n\n\n"},{"id":"yRSy","level":2,"heading":"Read Eval Print Loop (REPL)","content":"<h3>Read Eval Print Loop (REPL)</h3>\nPython&rsquo;s interactive command-line environment.\n\n\n\n"},{"id":"cF42","level":2,"heading":"RPython","content":"<h3>RPython</h3>\nA strict subset of python that can be statically compiled into C.\n\n\n\n"},{"id":"VLxG","level":2,"heading":"Samples","content":"<h3>Samples</h3>\nCongratulations in testing out the <strong>-only</strong> feature. Here are your samples \uD83D\uDC4D\n\nNot happy with this? Let us know and we'll put something better in here.\n\n\n\n"},{"id":"K2P0","level":2,"heading":"self","content":"<h3>self</h3>\nA reference to the class instance.\n\nUse it to reference any instance variables or methods inside the class..\nMust be declared in every instance method in a class.\n\nSimilar to <code>this</code> in other languages.\n\n\nExample:\n\n<div class=\"codebox\">self.<var>property_1</var> = <var>...</var>\n\nself.<var>function_1</var>()</div>\n\n\n\n"},{"id":"yHxe","level":2,"heading":"Sequence","content":"<h3>Sequence</h3>\nAny iterable type in Python.\n\nIncludes lists, sets, tuples, range, strings, etc.\n\n\n\n"},{"id":"Gw21","level":2,"heading":"Symbol Table","content":"<h3>Symbol Table</h3>\nA structure used by python to track and manage what program elements have been loaded and are are in scope.\n\n\n"},{"id":"MybA","level":3,"heading":"Global Symbol Table","content":"<h4>Global Symbol Table</h4>\nManages all program elements that are global.\n\nSee: globals()\n\n\n"},{"id":"ZnT6","level":3,"heading":"Local Symbol Table","content":"<h4>Local Symbol Table</h4>\nManages all program elements that are currently in local scope.\n\nSee: locals()\n\n\n\n"},{"id":"bg4Z","level":2,"heading":"Thread","content":"<h3>Thread</h3>\nA single execution unit executing a part of the program.\n\nThreads run in shared memory, on a single execution thread and use the same python interpreter. A thread needs to acquire GIL lock before it can execute. Threads are light weight to start up. Threads do not give an overall performance improvement as they use cooperative multitasking inside a single process.\n\nLibrary: threading\n\nSee Also: Multitasking, Process, GIL\n\n\n\n\n"},{"id":"3cTm","level":2,"heading":"Timestamp","content":"<h3>Timestamp</h3>\nThe number of seconds since January 1st, 1970 at 00:00:00 UTC.\n\nCan be an integer or float.\n\nAlso called Unix Time, Epoch Time.\n\n\n\n"},{"id":"DzTY","level":2,"heading":"Top Level Statement","content":"<h3>Top Level Statement</h3>\nStatements in a module (python file) that are outside functions and classes.\n\n\n\n"},{"id":"fHq5","level":2,"heading":"Tuple","content":"<h3>Tuple</h3>\nAn immutable Array.\n\n\n\n"},{"id":"53uP","level":2,"heading":"Typing Library","content":"<h3>Typing Library</h3>\nAdded to Python 3.5, this allows you to label types in function signatures.\n\n<a class=\"link\" href=\"https://docs.python.org/3/library/typing.html\">https://docs.python.org/3/library/typing.html</a>\n\n\n\n"},{"id":"Ywj7","level":2,"heading":"Venv / Virtual Environment","content":"<h3>Venv / Virtual Environment</h3>\nCreates an isolated python environment for a program to run in.\n\nShips standard with Python 3. It contains it's own packages independent of the global python environment but it links back to the standard python installation when possible. The environment must be accessed through a custom shell started up by one of the script files. Does not support Python 2.\n\nvs <code>virtualenv</code>\n\n\n\n"},{"id":"Hdpn","level":2,"heading":"VirtualEnv","content":"<h3>VirtualEnv</h3>\nA 3rd party tool used to create isolated Python environments.\n\nvirtualenv creates a directory which contains all the necessary executables to use the packages that a Python project would need. It works by installing required python files and binaries in a directory (eg: env/), and then modifying the PATH environment variable to prefix it with a custom bin directory (eg: env/bin/).\n\nPrefer <code>venv</code>.\n\n\n\n"},{"id":"v71r","level":2,"heading":"Wheel","content":"<h3>Wheel</h3>\nA packaging system used to distribute but not execute python files. It is preferred over egg files. Can be stored on PyPI servers.\n\nvs: Egg\n\n\n\n"},{"id":"SgBG","level":1,"heading":"Other SpeedSheets","content":"<h1>Other SpeedSheets</h1>\n\n\n"},{"id":"8XG1","level":2,"heading":"aiohttp SpeedSheet","content":"<h3>aiohttp SpeedSheet</h3>\nThe aiohttp library for making asynchronous http calls.\n\nSheet:\t<a class=\"link\" href=\"/s/aiohttp\">aiohttp</a>\n\n\n\n"},{"id":"nzUG","level":2,"heading":"BeautifulSoup SpeedSheet","content":"<h3>BeautifulSoup SpeedSheet</h3>\nAn easy to use library for processing HTML or XML.\n\nSheet:\t<a class=\"link\" href=\"/s/beautifulsoup\">BeautifulSoup</a>\n\n\n\n"},{"id":"gEx8","level":2,"heading":"Numpy SpeedSheet","content":"<h3>Numpy SpeedSheet</h3>\nA great library for manipulating large amounts of data.\n\nSheet:\t<a class=\"link\" href=\"/s/numpy\">numpy</a>\n\n\n\n"},{"id":"C2gT","level":2,"heading":"Pandas SpeedSheet","content":"<h3>Pandas SpeedSheet</h3>\n\n⚠️ The Pandas SpeedSheet doesn't hava any content. Send us a note if you'd like to see this updated. Or contribute on Github.\n\nSheet: <a class=\"link\" href=\"/s/pandas\">Pandas</a>\n\nGit Source: <a class=\"link\" href=\"https://github.com/speedsheet/sheet-python-pandas\">https://github.com/speedsheet/sheet-python-pandas</a>\n\n\n"},{"id":"MqsT","level":2,"heading":"Pillow SpeedSheet","content":"<h3>Pillow SpeedSheet</h3>\nAn image manipulation library.\n\nSheet:\t<a class=\"link\" href=\"/s/pillow\">pillow</a>\n\n\n\n"},{"id":"KgD1","level":2,"heading":"Requests SpeedSheet","content":"<h3>Requests SpeedSheet</h3>\nThe requests library for making http calls.\n\nSheet:\t<a class=\"link\" href=\"/s/requests\">requests</a>\n\n\n\n"},{"id":"zrnQ","level":1,"heading":"More Speedsheets?","content":"<h1>More Speedsheets?</h1>\n\nThis sheet covers core python only. But want to see more here? Or for other libraries? Please let us know.\n\nOr make contributions on Github:\n<a class=\"link\" href=\"https://github.com/speedsheet?tab=repositories&q=&type=&language=&sort=name\">SpeedSheet Source on GitHub</a>\n\n\n\n"},{"id":"wnL5","level":1,"heading":"Legal","content":"<h1>Legal</h1>\n\n\n"},{"id":"UBQd","level":2,"heading":"License","content":"<h2>License</h2>\n\n&copy; 2021-2025 ThinkGo, LLC. Licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).\n\n<strong>Summary:</strong>\n\n<strong>Allowed:</strong>\n<div class=\"indent\"><ul><li>Personal use and link sharing</li>\n<li>Modifications and improvements</li>\n<li>Redistribution of modified versions</li></ul></div>\n\n<strong>Required:</strong>\n<div class=\"indent\"><ul><li>Credit speedsheet.io as source</li>\n<li>License derivatives under CC BY-NC-SA 4.0</li></ul></div>\n\n<strong>Prohibited:</strong>\n<div class=\"indent\"><ul><li>Commercial use without permission</li></ul></div>\n\nFull license text: <a class=\"link\" href=\"https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode\">https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode</a>\n\n<strong>Contributing improvements:</strong>\nPRs welcome at <a class=\"link\" href=\"https://github.com/speedsheet/sheet-python\">https://github.com/speedsheet/sheet-python</a>\n\n<strong>Commercial licensing inquiries:</strong>\nContact via [feedback form](https://speedsheet.io/feedback) with subject &quot;Commercial Licensing - Python SpeedSheet&quot;"}]