mirror of
https://github.com/m-lamonaca/dev-notes.git
synced 2025-04-07 03:16:41 +00:00
8121 lines
No EOL
362 KiB
HTML
8121 lines
No EOL
362 KiB
HTML
|
||
<!doctype html>
|
||
<html lang="en" class="no-js">
|
||
<head>
|
||
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
|
||
<meta name="author" content="Marcello Lamonaca">
|
||
|
||
|
||
<link rel="canonical" href="http://m-lamonaca.github.io/dev-notes/languages/python/python.html">
|
||
|
||
|
||
<link rel="prev" href="../assembly/riscv.html">
|
||
|
||
|
||
<link rel="next" href="modules/argparse.html">
|
||
|
||
|
||
<link rel="icon" href="../../assets/images/favicon.png">
|
||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.34">
|
||
|
||
|
||
|
||
<title>Python - Dev Notes</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../../assets/stylesheets/main.35f28582.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script src="https://unpkg.com/iframe-worker/shim"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||
|
||
|
||
|
||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:type" content="website" >
|
||
|
||
<meta property="og:title" content="Python - Dev Notes" >
|
||
|
||
<meta property="og:description" content="None" >
|
||
|
||
<meta property="og:image" content="http://m-lamonaca.github.io/dev-notes/assets/images/social/languages/python/python.png" >
|
||
|
||
<meta property="og:image:type" content="image/png" >
|
||
|
||
<meta property="og:image:width" content="1200" >
|
||
|
||
<meta property="og:image:height" content="630" >
|
||
|
||
<meta property="og:url" content="http://m-lamonaca.github.io/dev-notes/languages/python/python.html" >
|
||
|
||
<meta name="twitter:card" content="summary_large_image" >
|
||
|
||
<meta name="twitter:title" content="Python - Dev Notes" >
|
||
|
||
<meta name="twitter:description" content="None" >
|
||
|
||
<meta name="twitter:image" content="http://m-lamonaca.github.io/dev-notes/assets/images/social/languages/python/python.png" >
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="deep-orange">
|
||
|
||
|
||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
<label class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
|
||
|
||
<a href="#python-notes" class="md-skip">
|
||
Skip to content
|
||
</a>
|
||
|
||
</div>
|
||
<div data-md-component="announce">
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
|
||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||
<a href="../../index.html" title="Dev Notes" class="md-header__button md-logo" aria-label="Dev Notes" data-md-component="logo">
|
||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3"/></svg>
|
||
|
||
</a>
|
||
<label class="md-header__button md-icon" for="__drawer">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
||
</label>
|
||
<div class="md-header__title" data-md-component="header-title">
|
||
<div class="md-header__ellipsis">
|
||
<div class="md-header__topic">
|
||
<span class="md-ellipsis">
|
||
Dev Notes
|
||
</span>
|
||
</div>
|
||
<div class="md-header__topic" data-md-component="header-topic">
|
||
<span class="md-ellipsis">
|
||
|
||
Python
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<form class="md-header__option" data-md-component="palette">
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="deep-orange" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
|
||
|
||
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
||
</label>
|
||
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="deep-orange" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
||
|
||
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
||
</label>
|
||
|
||
|
||
</form>
|
||
|
||
|
||
|
||
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||
|
||
|
||
|
||
<label class="md-header__button md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
</label>
|
||
<div class="md-search" data-md-component="search" role="dialog">
|
||
<label class="md-search__overlay" for="__search"></label>
|
||
<div class="md-search__inner" role="search">
|
||
<form class="md-search__form" name="search">
|
||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||
<label class="md-search__icon md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||
</label>
|
||
<nav class="md-search__options" aria-label="Search">
|
||
|
||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
||
</button>
|
||
</nav>
|
||
|
||
</form>
|
||
<div class="md-search__output">
|
||
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
||
<div class="md-search-result" data-md-component="search-result">
|
||
<div class="md-search-result__meta">
|
||
Initializing search
|
||
</div>
|
||
<ol class="md-search-result__list" role="presentation"></ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-header__source">
|
||
<a href="https://github.com/m-lamonaca/dev-notes" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
GitHub
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
</nav>
|
||
|
||
|
||
|
||
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
|
||
<div class="md-grid">
|
||
<ul class="md-tabs__list">
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../index.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Home
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../containers/docker.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Containers
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../databases/redis.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Databases
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item md-tabs__item--active">
|
||
<a href="../html/html.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Languages
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../misc/git.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Misc
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../../linux/filesystem/file-links.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Linux
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
</header>
|
||
|
||
<div class="md-container" data-md-component="container">
|
||
|
||
|
||
|
||
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
||
<label class="md-nav__title" for="__drawer">
|
||
<a href="../../index.html" title="Dev Notes" class="md-nav__button md-logo" aria-label="Dev Notes" data-md-component="logo">
|
||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3"/></svg>
|
||
|
||
</a>
|
||
Dev Notes
|
||
</label>
|
||
|
||
<div class="md-nav__source">
|
||
<a href="https://github.com/m-lamonaca/dev-notes" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
GitHub
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../index.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Home
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Containers
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Containers
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../containers/docker.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Docker
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../containers/kubernetes.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Kubernetes
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Databases
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Databases
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../databases/redis.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Redis
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../databases/sql.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SQL
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../databases/mongo-db.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
MongoDB
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Languages
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
|
||
<label class="md-nav__title" for="__nav_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Languages
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../html/html.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
HTML
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../markdown.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Markdown
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../css/css.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
CSS
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../c/c.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
C
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../kotlin/kotlin.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Kotlin
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../swift/swift.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Swift
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_7" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_7" id="__nav_4_7_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Assembly
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_7_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_7">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Assembly
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../assembly/intel.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Intel
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../assembly/riscv.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
RISC-V
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8" checked>
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_8" id="__nav_4_8_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Python
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_8_label" aria-expanded="true">
|
||
<label class="md-nav__title" for="__nav_4_8">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Python
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active">
|
||
|
||
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Python
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="python.html" class="md-nav__link md-nav__link--active">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Python
|
||
</span>
|
||
|
||
|
||
</a>
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#basics" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Basics
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Basics">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#naming-convention" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Naming Convention
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#assignment-operation" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Assignment Operation
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#variable-type-conversion" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Variable Type Conversion
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#expression-assignment" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Expression Assignment
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#variable-comparison-vs-is" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Variable Comparison (== vs is)
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#on-screen-output" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
On Screen Output
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#format-specification-mini-language" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Format Specification Mini-Language
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#keyboard-input" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Keyboard Input
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#numeric-types" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Numeric Types
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Numeric Types">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#comparison-of-decimal-numbers" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Comparison of Decimal Numbers
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#strings" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Strings
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#lists" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Lists
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#tuple" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Tuple
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#set" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Set
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#bytes-e-bytearray" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Bytes e Bytearray
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#encoding-decoding-unicode" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Encoding-Decoding & Unicode
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#memoryview" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Memoryview
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#dictionaries" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Dictionaries
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Operators
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Operators">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#mathematical-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Mathematical Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#relational-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Relational Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#assignment" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Assignment
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#bitwise-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Bitwise Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#logical-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Logical Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#identity-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Identity Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#membership-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Membership Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#operator-precedence" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
OPerator Precedence
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#conditional-statements" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Conditional Statements
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Conditional Statements">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#if-else" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
if-else
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#context-manager" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Context Manager
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#loops" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Loops
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Loops">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#while" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
while
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#for" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
for
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#break-continue" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
break & continue
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#range" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
range
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#enumerate" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
enumerate
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#zip" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
zip
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#shuffle-randint" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
shuffle & randint
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#in" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
in
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#functions" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Functions
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Functions">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#function-definition" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Function Definition
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#specify-type-parameters-in-functions" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Specify Type Parameters In Functions
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docstring-style" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docstring Style
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#args-kwargs" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
args *kwargs
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#function-with-default-parameters" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Function with default parameters
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#global-and-local-variables" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Global And Local Variables
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#iterables-iterators-generators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Iterables, Iterators & Generators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#next-iter" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
next() & iter()
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#customs-generators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Customs Generators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#termination-generator-and-exception-handling" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Termination Generator And Exception Handling
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#generator-comprehensions" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Generator Comprehensions
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#coroutines" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Coroutines
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Coroutines">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#yield-from-iterabile" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
yield from <iterabile>
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#lambda-functions" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
LAMBDA Functions
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#object-oriented-programming" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Object Oriented Programming
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Object Oriented Programming">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#class-definition" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Class Definition
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#setter-getter-with-property" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Setter & Getter with @Property
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#__slots__" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
__slots__
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#inner-classes" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Inner Classes
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#special-methods" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Special Methods
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Special Methods">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#special-methods-list" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Special Methods List
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#inheritance" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Inheritance
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#polymorphism" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Polymorphism
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#operator-overloading" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Operator Overloading
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#astrazione" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Astrazione
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#exception-handling" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Exception Handling
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#file" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
File
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="File">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#opening-a-file" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Opening A File
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#copy" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
COPY
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_8_2" id="__nav_4_8_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Modules
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_8_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_8_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Modules
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/argparse.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
argparse
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/collections.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
collection
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/csv.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
csv
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/ftplib.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
ftplib
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/itertools.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
itertools
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/json.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
json
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/logging.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
logging
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/shutil.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
shutil
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/smtplib.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
smtplib
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/socket.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
socket
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/sqlite.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
sqlite
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/time-datetime.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
time & datetime
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="modules/unittest.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
unittest
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_8_3" id="__nav_4_8_3_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Libraries
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_8_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_8_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Libraries
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="libs/tkinter.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
TKinter
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="libs/numpy.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Numpy
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="libs/pandas.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Pandas
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="libs/seaborn.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seaborn
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="libs/requests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Requests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="libs/beautiful-soup.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Beatiful Soup
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_9" id="__nav_4_9_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
.NET
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_9_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_9">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
.NET
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_1" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_9_1" id="__nav_4_9_1_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
C#
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_1_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_9_1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
C#
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/csharp/csharp.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
C#
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/csharp/linq.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Linq
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/csharp/collections.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Collections
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/csharp/reactive-extensions.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Reactive Extensions
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/csharp/async-programming.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Async Programming
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/csharp/unit-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Unit Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_9_2" id="__nav_4_9_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
ASP.NET
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_9_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
ASP.NET
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/asp.net/minimal-api.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Minimal API
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/asp.net/filters.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
FIlters
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/asp.net/middleware.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Middleware
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/asp.net/razor-syntax.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Razor Syntax
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/asp.net/blazor.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Blazor
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/asp.net/signalr.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SignalR
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/asp.net/web-forms.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Web Forms
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_9_3" id="__nav_4_9_3_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Database
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_9_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Database
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/database/ado.net.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
ADO.NET
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../dotnet/database/entity-framework.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Entity Framework
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_10" id="__nav_4_10_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Java
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_10_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_10">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Java
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../java/java.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Java
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../java/java-collection-framework.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Java Collection Framework
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../java/dao.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
DAO
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10_4" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_10_4" id="__nav_4_10_4_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Web
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_10_4_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_10_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Web
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../java/web/servlet.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Serverlet
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10_4_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_10_4_2" id="__nav_4_10_4_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Spring
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_4_10_4_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_10_4_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Spring
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../java/spring/pom.xml.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
POM
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../java/spring/spring-project.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Project Structure
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_11" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_11" id="__nav_4_11_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PHP
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_11_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_11">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
PHP
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/php.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PHP
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/database.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Database
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/web.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Web
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/dependency-injection.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Dependency Injection
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/unit-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Unit Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/composer.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Composer
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/psr-7.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PSR 7
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/plates-templating.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Plates
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_11_9" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_11_9" id="__nav_4_11_9_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Simple MVC
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_11_9_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_11_9">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Simple MVC
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/simple-mvc/simple-mvc.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Simple MVC
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../php/simple-mvc/rest-api.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
REST API
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_12" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_12" id="__nav_4_12_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Rust
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_12_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_12">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Rust
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../rust/rust.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Rust
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../rust/macros.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Macros
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../rust/cargo.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Cargo
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../rust/concurrency.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Concurrency
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../rust/unit-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Unit Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_13" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_13" id="__nav_4_13_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Javascript
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_13_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_13">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Javascript
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/javascript.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Javascript
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/dom.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
DOM
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/events-animation.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Events & Animation
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/ajax.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
AJAX
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/jquery.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
jQuery
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_13_6" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_13_6" id="__nav_4_13_6_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
React
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_13_6_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_13_6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
React
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/react/react.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
React
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/react/react-router.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
React Router
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/react/react-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
React Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/react/redux.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Redux
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/react/redux-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Redux Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../javascript/svelte/svelte.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Svelte
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_14" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_14" id="__nav_4_14_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PowerShell
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_14_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_14">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
PowerShell
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../powershell/scripting.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Scripting
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../powershell/commands.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Commands
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_15" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_15" id="__nav_4_15_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Bash
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_15_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_15">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Bash
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../bash/scripting.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Scripting
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../bash/commands.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Commands
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Misc
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Misc
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../misc/git.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Git
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../misc/graph-ql.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
GraphQL
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../misc/regular-expressions.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
RegEx
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../misc/ssh.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SSH
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../misc/web-components.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
WebComponents
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Linux
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Linux
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_1" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_6_1" id="__nav_6_1_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Filesystem
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_1_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_6_1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Filesystem
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux/filesystem/file-links.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
File Links
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux/filesystem/procfs.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
/proc
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux/filesystem/sysfs.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
/sys
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_6_2" id="__nav_6_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
System Init
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_6_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
System Init
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux/init/systemd.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Systemd
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../../linux/init/open-rc.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
OpenRC
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#basics" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Basics
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Basics">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#naming-convention" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Naming Convention
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#assignment-operation" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Assignment Operation
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#variable-type-conversion" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Variable Type Conversion
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#expression-assignment" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Expression Assignment
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#variable-comparison-vs-is" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Variable Comparison (== vs is)
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#on-screen-output" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
On Screen Output
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#format-specification-mini-language" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Format Specification Mini-Language
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#keyboard-input" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Keyboard Input
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#numeric-types" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Numeric Types
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Numeric Types">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#comparison-of-decimal-numbers" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Comparison of Decimal Numbers
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#strings" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Strings
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#lists" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Lists
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#tuple" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Tuple
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#set" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Set
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#bytes-e-bytearray" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Bytes e Bytearray
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#encoding-decoding-unicode" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Encoding-Decoding & Unicode
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#memoryview" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Memoryview
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#dictionaries" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Dictionaries
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Operators
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Operators">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#mathematical-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Mathematical Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#relational-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Relational Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#assignment" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Assignment
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#bitwise-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Bitwise Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#logical-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Logical Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#identity-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Identity Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#membership-operators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Membership Operators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#operator-precedence" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
OPerator Precedence
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#conditional-statements" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Conditional Statements
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Conditional Statements">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#if-else" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
if-else
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#context-manager" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Context Manager
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#loops" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Loops
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Loops">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#while" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
while
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#for" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
for
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#break-continue" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
break & continue
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#range" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
range
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#enumerate" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
enumerate
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#zip" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
zip
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#shuffle-randint" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
shuffle & randint
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#in" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
in
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#functions" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Functions
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Functions">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#function-definition" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Function Definition
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#specify-type-parameters-in-functions" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Specify Type Parameters In Functions
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docstring-style" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docstring Style
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#args-kwargs" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
args *kwargs
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#function-with-default-parameters" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Function with default parameters
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#global-and-local-variables" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Global And Local Variables
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#iterables-iterators-generators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Iterables, Iterators & Generators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#next-iter" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
next() & iter()
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#customs-generators" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Customs Generators
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#termination-generator-and-exception-handling" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Termination Generator And Exception Handling
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#generator-comprehensions" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Generator Comprehensions
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#coroutines" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Coroutines
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Coroutines">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#yield-from-iterabile" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
yield from <iterabile>
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#lambda-functions" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
LAMBDA Functions
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#object-oriented-programming" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Object Oriented Programming
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Object Oriented Programming">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#class-definition" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Class Definition
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#setter-getter-with-property" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Setter & Getter with @Property
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#__slots__" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
__slots__
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#inner-classes" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Inner Classes
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#special-methods" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Special Methods
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Special Methods">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#special-methods-list" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Special Methods List
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#inheritance" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Inheritance
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#polymorphism" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Polymorphism
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#operator-overloading" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Operator Overloading
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#astrazione" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Astrazione
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#exception-handling" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Exception Handling
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#file" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
File
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="File">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#opening-a-file" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Opening A File
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#copy" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
COPY
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-content" data-md-component="content">
|
||
<article class="md-content__inner md-typeset">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h1 id="python-notes">Python Notes</h1>
|
||
<h2 id="basics">Basics</h2>
|
||
<h3 id="naming-convention">Naming Convention</h3>
|
||
<p>Class -> PascalCase<br />
|
||
Method, Function -> snake_case<br />
|
||
Variable -> snake_case</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-25">25</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="c1"># standard comment</span>
|
||
<a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="sd">'''multiline comment'''</span>
|
||
<a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="sd">"""DOCSTRING"""</span>
|
||
<a id="__codelineno-0-4" name="__codelineno-0-4"></a>
|
||
<a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="n">help</span><span class="p">(</span><span class="nb">object</span><span class="o">.</span><span class="n">method</span><span class="p">)</span> <span class="c1"># return method explanation</span>
|
||
<a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="nb">dir</span><span class="p">(</span><span class="nb">object</span><span class="p">)</span> <span class="c1"># return an alphabetized list of names comprising (some of) the attributes of the given object</span>
|
||
<a id="__codelineno-0-7" name="__codelineno-0-7"></a>
|
||
<a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="kn">import</span> <span class="nn">sys</span> <span class="c1"># import module</span>
|
||
<a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="kn">from</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="n">argv</span> <span class="c1"># import single item from a module</span>
|
||
<a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="kn">from</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># import all elements of a module (no module syntax.method needed)</span>
|
||
<a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="kn">import</span> <span class="nn">sys</span> <span class="k">as</span> <span class="nn">alias</span> <span class="c1"># import the module with an alias, I use alias.method</span>
|
||
<a id="__codelineno-0-12" name="__codelineno-0-12"></a>
|
||
<a id="__codelineno-0-13" name="__codelineno-0-13"></a><span class="c1"># CHARACTER SET</span>
|
||
<a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="kn">import</span> <span class="nn">string</span>
|
||
<a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="n">string</span><span class="o">.</span><span class="n">ascii_lowercase</span> <span class="o">=</span> <span class="s1">'abcdefghijklmnopqrstuvwxyz'</span>
|
||
<a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="n">string</span><span class="o">.</span><span class="n">asci_uppercase</span> <span class="o">=</span> <span class="s1">'ABCDEFGHIJKLMNOPQRSTUVWXYZ'</span>
|
||
<a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="n">string</span><span class="o">.</span><span class="n">asci_letters</span> <span class="o">=</span> <span class="s1">'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'</span>
|
||
<a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="n">string</span><span class="o">.</span><span class="n">digits</span> <span class="o">=</span> <span class="s1">'0123456789'</span>
|
||
<a id="__codelineno-0-19" name="__codelineno-0-19"></a><span class="n">string</span><span class="o">.</span><span class="n">hexdigits</span> <span class="o">=</span> <span class="s1">'0123456789abcdefABCDEF'</span>
|
||
<a id="__codelineno-0-20" name="__codelineno-0-20"></a><span class="n">string</span><span class="o">.</span><span class="n">octdigits</span> <span class="o">=</span> <span class="s1">'01234567'</span>
|
||
<a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="n">string</span><span class="o">.</span><span class="n">punctuation</span>
|
||
<a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="n">string</span><span class="o">.</span><span class="n">whitespace</span>
|
||
<a id="__codelineno-0-23" name="__codelineno-0-23"></a>
|
||
<a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="c1"># SPECIAL CHARACTERS</span>
|
||
<a id="__codelineno-0-25" name="__codelineno-0-25"></a><span class="c1"># (\a, \b, \f, \n, \r, \t, \u, \U, \v, \x, \\)</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="assignment-operation">Assignment Operation</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-6">6</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-7">7</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-8">8</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1"></a><span class="sd">"""instructions to the right of = executed before instructions to the left of ="""</span>
|
||
<a id="__codelineno-1-2" name="__codelineno-1-2"></a><span class="n">variable</span> <span class="o">=</span> <span class="n">expression</span> <span class="c1"># the type of the variable is dynamically decided by python based on the content</span>
|
||
<a id="__codelineno-1-3" name="__codelineno-1-3"></a><span class="n">var_1</span><span class="p">,</span> <span class="n">var_2</span> <span class="o">=</span> <span class="n">value1</span><span class="p">,</span> <span class="n">value2</span> <span class="c1"># parallel assignment</span>
|
||
<a id="__codelineno-1-4" name="__codelineno-1-4"></a><span class="n">var_1</span><span class="p">,</span> <span class="n">var_2</span> <span class="o">=</span> <span class="n">var_2</span><span class="p">,</span> <span class="n">var_1</span> <span class="c1"># swap values</span>
|
||
<a id="__codelineno-1-5" name="__codelineno-1-5"></a>
|
||
<a id="__codelineno-1-6" name="__codelineno-1-6"></a><span class="c1"># conditional assignment</span>
|
||
<a id="__codelineno-1-7" name="__codelineno-1-7"></a><span class="n">x</span> <span class="o">=</span> <span class="n">a</span> <span class="k">if</span> <span class="n">condition</span> <span class="k">else</span> <span class="n">b</span>
|
||
<a id="__codelineno-1-8" name="__codelineno-1-8"></a><span class="n">x</span> <span class="o">=</span> <span class="n">a</span> <span class="ow">or</span> <span class="n">b</span> <span class="c1"># If bool (a) returns False, then x is assigned the value of b</span>
|
||
<a id="__codelineno-1-9" name="__codelineno-1-9"></a><span class="c1"># a series of OR expressions has the effect of returning the first item that evaluates True, or the last item (last item should be a literal).</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="variable-type-conversion">Variable Type Conversion</h3>
|
||
<p><code>type(expression)</code></p>
|
||
<h3 id="expression-assignment">Expression Assignment</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="p">(</span><span class="n">var</span><span class="p">:</span> <span class="o">=</span> <span class="n">expression</span><span class="p">)</span> <span class="c1"># assign an expression to a variable to avoid repeating the expression</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="variable-comparison-vs-is">Variable Comparison (<code>==</code> vs <code>is</code>)</h3>
|
||
<p><code>==</code> compares the values of objects
|
||
<code>is</code> compares the identities of objects</p>
|
||
<h3 id="on-screen-output">On Screen Output</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-20">20</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="nb">print</span><span class="p">()</span> <span class="c1"># print blank line and wrap</span>
|
||
<a id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="nb">print</span><span class="p">(</span><span class="s1">'string'</span> <span class="o">*</span> <span class="n">n</span><span class="p">)</span> <span class="c1"># print string n times</span>
|
||
<a id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="nb">print</span><span class="p">(</span><span class="s1">'string1 \ n string2'</span><span class="p">)</span> <span class="c1"># wrap with \ n</span>
|
||
<a id="__codelineno-3-4" name="__codelineno-3-4"></a><span class="nb">print</span><span class="p">(</span><span class="n">variable</span><span class="p">)</span> <span class="c1"># print variable content</span>
|
||
<a id="__codelineno-3-5" name="__codelineno-3-5"></a><span class="nb">print</span><span class="p">(</span><span class="s1">'string'</span><span class="p">,</span> <span class="n">end</span> <span class="o">=</span> <span class="s1">''</span><span class="p">)</span> <span class="c1"># print without wrapping</span>
|
||
<a id="__codelineno-3-6" name="__codelineno-3-6"></a>
|
||
<a id="__codelineno-3-7" name="__codelineno-3-7"></a><span class="c1"># FORMATTING</span>
|
||
<a id="__codelineno-3-8" name="__codelineno-3-8"></a><span class="n">name</span> <span class="o">=</span> <span class="s1">'Alex'</span>
|
||
<a id="__codelineno-3-9" name="__codelineno-3-9"></a><span class="n">marks</span> <span class="o">=</span> <span class="mf">94.5</span>
|
||
<a id="__codelineno-3-10" name="__codelineno-3-10"></a><span class="nb">print</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">marks</span><span class="p">)</span>
|
||
<a id="__codelineno-3-11" name="__codelineno-3-11"></a><span class="nb">print</span><span class="p">(</span><span class="s1">'Name is'</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="s1">'\ nMarks are'</span><span class="p">,</span> <span class="n">marks</span><span class="p">)</span>
|
||
<a id="__codelineno-3-12" name="__codelineno-3-12"></a><span class="c1"># expand the rest of the expression and write tense before = in output</span>
|
||
<a id="__codelineno-3-13" name="__codelineno-3-13"></a><span class="nb">print</span><span class="p">(</span><span class="n">f</span> <span class="s1">'{name =}, {marks =}'</span><span class="p">)</span> <span class="c1"># OUTPUT: name = Alex, marks = 94.5</span>
|
||
<a id="__codelineno-3-14" name="__codelineno-3-14"></a>
|
||
<a id="__codelineno-3-15" name="__codelineno-3-15"></a><span class="c1"># USE OF PLACEHOLDERS</span>
|
||
<a id="__codelineno-3-16" name="__codelineno-3-16"></a><span class="nb">print</span><span class="p">(</span><span class="s1">'Name is</span><span class="si">% s</span><span class="s1">, Marks are</span><span class="si">% 3.2f</span><span class="s1">'</span><span class="o">%</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">marks</span><span class="p">))</span> <span class="c1"># method inherited from C. Variable is substituted for% ..</span>
|
||
<a id="__codelineno-3-17" name="__codelineno-3-17"></a><span class="nb">print</span><span class="p">(</span><span class="s2">"Name is </span><span class="si">{}</span><span class="s2">, Marks are </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span> <span class="nb">format</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">marks</span><span class="p">))</span>
|
||
<a id="__codelineno-3-18" name="__codelineno-3-18"></a><span class="nb">print</span><span class="p">(</span><span class="s2">"Name is </span><span class="si">{1}</span><span class="s2">, Marks are </span><span class="si">{2}</span><span class="s2">"</span><span class="o">.</span> <span class="nb">format</span><span class="p">(</span><span class="n">marks</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span> <span class="c1"># indices in brackets sort elements in .format</span>
|
||
<a id="__codelineno-3-19" name="__codelineno-3-19"></a><span class="nb">print</span><span class="p">(</span><span class="s2">"Name is </span><span class="si">{n}</span><span class="s2">, Marks are </span><span class="si">{m}</span><span class="s2">"</span><span class="o">.</span> <span class="nb">format</span><span class="p">(</span><span class="n">m</span> <span class="o">=</span> <span class="s1">'94 .5 '</span><span class="p">,</span> <span class="n">n</span> <span class="o">=</span><span class="s1">' Alex '</span><span class="p">))</span> <span class="c1"># indices in brackets sort elements in .format</span>
|
||
<a id="__codelineno-3-20" name="__codelineno-3-20"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Name is </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s1">, Marks are </span><span class="si">{</span><span class="n">marks</span><span class="si">}</span><span class="s1"> '</span><span class="p">)</span> <span class="c1"># formatting with f-strings</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="format-specification-mini-language">Format Specification Mini-Language</h3>
|
||
<p><code>{value:width.precision symbol}</code></p>
|
||
<p>Format: <code>[[fill]align] [sign] [#] [width] [grouping] [.precision] [type]</code></p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th><code>[align]</code></th>
|
||
<th>Alignment</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>:<</code></td>
|
||
<td>left alignment</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:></code></td>
|
||
<td>right alignment</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:=</code></td>
|
||
<td>padding after the mark</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:^</code></td>
|
||
<td>centered</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th><code>[sign]</code></th>
|
||
<th>NUMBER SIGNS</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>:+</code></td>
|
||
<td>sign for both positive and negative numbers</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:-</code></td>
|
||
<td>sign only for negative numbers</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:</code></td>
|
||
<td>space for num > 0, '-' for num < 0</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:#</code></td>
|
||
<td>alternative form:prefix integers type (0x, 0b, 0o), floats and complexes always have at least one decimal place</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th><code>[grouping]</code></th>
|
||
<th>GROUPING</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>:,</code></td>
|
||
<td>use comma to separate thousands</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:_</code></td>
|
||
<td>use underscore to separate thousands</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th><code>[type]</code></th>
|
||
<th>OUTPUT TYPE</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>:s</code></td>
|
||
<td>output is string</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:b</code></td>
|
||
<td>output is binary</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:c</code></td>
|
||
<td>output is character</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:d</code></td>
|
||
<td>output is a decimal integer (base 10)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:or</code></td>
|
||
<td>output is octal integer (base 8)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:x</code></td>
|
||
<td>output is hexadecimal integer (base 16)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:X</code></td>
|
||
<td>output is hexadecimal integer (base 16) with uppercase</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:e</code></td>
|
||
<td>output is exponential notation (6-digit base precision)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:E</code></td>
|
||
<td>output is exponential notation (6-digit base precision) uppercase separator</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:f</code></td>
|
||
<td>output is float (6-digit base precision)</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>:%</code></td>
|
||
<td>output is percentage (multiplies * 100, displays as:f)</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3 id="keyboard-input">Keyboard Input</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-4-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-4-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-4-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-4-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-4-6">6</a></span>
|
||
<span class="normal"><a href="#__codelineno-4-7">7</a></span>
|
||
<span class="normal"><a href="#__codelineno-4-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1"></a><span class="c1"># input always returns a STRING</span>
|
||
<a id="__codelineno-4-2" name="__codelineno-4-2"></a><span class="n">s</span> <span class="o">=</span> <span class="nb">input</span><span class="p">()</span> <span class="c1"># input request without message</span>
|
||
<a id="__codelineno-4-3" name="__codelineno-4-3"></a><span class="n">s</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s1">'Prompt'</span><span class="p">)</span> <span class="c1"># request input</span>
|
||
<a id="__codelineno-4-4" name="__codelineno-4-4"></a><span class="n">i</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s1">'prompt'</span><span class="p">))</span> <span class="c1"># request input with type conversion</span>
|
||
<a id="__codelineno-4-5" name="__codelineno-4-5"></a>
|
||
<a id="__codelineno-4-6" name="__codelineno-4-6"></a><span class="c1"># MULTIPLE INPUTS</span>
|
||
<a id="__codelineno-4-7" name="__codelineno-4-7"></a><span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">input</span><span class="p">(</span><span class="s1">'prompt'</span><span class="p">)</span><span class="o">.</span> <span class="n">split</span><span class="p">(</span><span class="s1">'separator'</span><span class="p">)]</span>
|
||
<a id="__codelineno-4-8" name="__codelineno-4-8"></a><span class="c1"># save multiple inputs in a list(.split separates values and defines separator</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="numeric-types">Numeric Types</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-34">34</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-35">35</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1"></a><span class="n">a</span> <span class="o">=</span> <span class="mi">77</span>
|
||
<a id="__codelineno-5-2" name="__codelineno-5-2"></a><span class="n">b</span> <span class="o">=</span> <span class="mi">1_000_000</span> <span class="c1"># underscore can be used to separate groups of digits</span>
|
||
<a id="__codelineno-5-3" name="__codelineno-5-3"></a><span class="n">c</span> <span class="o">=</span> <span class="o">-</span><span class="mi">69</span>
|
||
<a id="__codelineno-5-4" name="__codelineno-5-4"></a>
|
||
<a id="__codelineno-5-5" name="__codelineno-5-5"></a><span class="c1"># float numbers</span>
|
||
<a id="__codelineno-5-6" name="__codelineno-5-6"></a><span class="n">x</span> <span class="o">=</span> <span class="mf">3.15</span>
|
||
<a id="__codelineno-5-7" name="__codelineno-5-7"></a><span class="n">y</span> <span class="o">=</span> <span class="mf">2.71</span>
|
||
<a id="__codelineno-5-8" name="__codelineno-5-8"></a><span class="n">z</span> <span class="o">=</span> <span class="mf">25.0</span>
|
||
<a id="__codelineno-5-9" name="__codelineno-5-9"></a>
|
||
<a id="__codelineno-5-10" name="__codelineno-5-10"></a><span class="n">d</span> <span class="o">=</span> <span class="mi">6</span> <span class="o">+</span> <span class="mi">9</span><span class="n">j</span> <span class="c1"># complex number</span>
|
||
<a id="__codelineno-5-11" name="__codelineno-5-11"></a><span class="c1"># returns a complex number starting with two reals</span>
|
||
<a id="__codelineno-5-12" name="__codelineno-5-12"></a><span class="nb">complex</span><span class="p">(</span><span class="n">real</span><span class="p">,</span> <span class="n">imag</span><span class="p">)</span> <span class="c1"># -> complex #(real + imag * 1j)</span>
|
||
<a id="__codelineno-5-13" name="__codelineno-5-13"></a>
|
||
<a id="__codelineno-5-14" name="__codelineno-5-14"></a><span class="n">e</span> <span class="o">=</span> <span class="mb">0B1101</span> <span class="c1"># BINARY TYPE(0B ...)</span>
|
||
<a id="__codelineno-5-15" name="__codelineno-5-15"></a><span class="n">f</span> <span class="o">=</span> <span class="mh">0xFF</span> <span class="c1"># EXADECIMAL TYPE(0X ...)</span>
|
||
<a id="__codelineno-5-16" name="__codelineno-5-16"></a><span class="n">o</span> <span class="o">=</span> <span class="mo">0o77</span> <span class="c1"># OCTAL TYPE</span>
|
||
<a id="__codelineno-5-17" name="__codelineno-5-17"></a><span class="n">g</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># BOOLEAN TYPE</span>
|
||
<a id="__codelineno-5-18" name="__codelineno-5-18"></a>
|
||
<a id="__codelineno-5-19" name="__codelineno-5-19"></a><span class="c1"># VARIABLE TYPE CONVERSION</span>
|
||
<a id="__codelineno-5-20" name="__codelineno-5-20"></a><span class="n">h</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||
<a id="__codelineno-5-21" name="__codelineno-5-21"></a><span class="n">i</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="s1">'22 .5 '</span><span class="p">)</span>
|
||
<a id="__codelineno-5-22" name="__codelineno-5-22"></a>
|
||
<a id="__codelineno-5-23" name="__codelineno-5-23"></a><span class="c1"># NUMERIC BASIC CONVERSION</span>
|
||
<a id="__codelineno-5-24" name="__codelineno-5-24"></a><span class="nb">bin</span><span class="p">(</span><span class="mi">3616544</span><span class="p">)</span>
|
||
<a id="__codelineno-5-25" name="__codelineno-5-25"></a><span class="nb">hex</span><span class="p">(</span><span class="mi">589</span><span class="p">)</span>
|
||
<a id="__codelineno-5-26" name="__codelineno-5-26"></a><span class="nb">oct</span><span class="p">(</span><span class="mi">265846</span><span class="p">)</span>
|
||
<a id="__codelineno-5-27" name="__codelineno-5-27"></a>
|
||
<a id="__codelineno-5-28" name="__codelineno-5-28"></a><span class="c1"># UNICODE CONVERSION</span>
|
||
<a id="__codelineno-5-29" name="__codelineno-5-29"></a><span class="nb">ord</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="c1"># Given a string representing one Unicode character, return an integer representing the Unicode code point of that character</span>
|
||
<a id="__codelineno-5-30" name="__codelineno-5-30"></a><span class="nb">chr</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="c1"># Return the string representing a character whose Unicode code point is the integer i</span>
|
||
<a id="__codelineno-5-31" name="__codelineno-5-31"></a>
|
||
<a id="__codelineno-5-32" name="__codelineno-5-32"></a>
|
||
<a id="__codelineno-5-33" name="__codelineno-5-33"></a><span class="nb">pow</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="c1"># x ^ y</span>
|
||
<a id="__codelineno-5-34" name="__codelineno-5-34"></a><span class="nb">abs</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="c1"># returns absolute value of num(| num |)</span>
|
||
<a id="__codelineno-5-35" name="__codelineno-5-35"></a><span class="nb">round</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">precision</span><span class="p">)</span> <span class="c1"># rounds number to given precision, does not convert float to int</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="comparison-of-decimal-numbers">Comparison of Decimal Numbers</h3>
|
||
<p>Do not use <code>==</code> or <code>! =</code> To compare floating point numbers. They are approximations or have several digits.
|
||
It is worth checking if the difference between the numbers is small enough.</p>
|
||
<h2 id="strings">Strings</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-34">34</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-35">35</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-36">36</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-37">37</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-38">38</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-39">39</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-40">40</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-41">41</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-42">42</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-43">43</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-44">44</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-45">45</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-46">46</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-47">47</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-48">48</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-49">49</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-50">50</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-51">51</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-52">52</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-53">53</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-54">54</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-55">55</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-56">56</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-57">57</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-58">58</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-59">59</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-60">60</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-61">61</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-62">62</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-63">63</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-64">64</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-65">65</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-66">66</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-67">67</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-68">68</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-69">69</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-70">70</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-71">71</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1"></a><span class="n">string</span> <span class="o">=</span> <span class="s1">'string content'</span> <span class="c1"># assignment and creation of string variable</span>
|
||
<a id="__codelineno-6-2" name="__codelineno-6-2"></a><span class="n">string</span> <span class="o">=</span> <span class="s1">'''multi</span>
|
||
<a id="__codelineno-6-3" name="__codelineno-6-3"></a><span class="s1">line</span>
|
||
<a id="__codelineno-6-4" name="__codelineno-6-4"></a><span class="s1">string'''</span>
|
||
<a id="__codelineno-6-5" name="__codelineno-6-5"></a>
|
||
<a id="__codelineno-6-6" name="__codelineno-6-6"></a><span class="n">string3</span> <span class="o">=</span> <span class="n">string1</span> <span class="o">+</span> <span class="n">string2</span> <span class="c1"># string concatenation(operator polymorphism +)</span>
|
||
<a id="__codelineno-6-7" name="__codelineno-6-7"></a>
|
||
<a id="__codelineno-6-8" name="__codelineno-6-8"></a><span class="c1"># INDEXING(selection of a character in the string)</span>
|
||
<a id="__codelineno-6-9" name="__codelineno-6-9"></a><span class="n">string</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||
<a id="__codelineno-6-10" name="__codelineno-6-10"></a><span class="n">string</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
||
<a id="__codelineno-6-11" name="__codelineno-6-11"></a><span class="n">string</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="c1"># selection starting from the bottom(negative index)</span>
|
||
<a id="__codelineno-6-12" name="__codelineno-6-12"></a>
|
||
<a id="__codelineno-6-13" name="__codelineno-6-13"></a><span class="c1"># REPETITION (repeat string output)</span>
|
||
<a id="__codelineno-6-14" name="__codelineno-6-14"></a><span class="nb">print</span><span class="p">(</span><span class="n">string</span> <span class="o">*</span> <span class="n">n</span><span class="p">)</span>
|
||
<a id="__codelineno-6-15" name="__codelineno-6-15"></a>
|
||
<a id="__codelineno-6-16" name="__codelineno-6-16"></a><span class="nb">len</span><span class="p">(</span><span class="n">string</span><span class="p">)</span> <span class="c1"># show the length of a string</span>
|
||
<a id="__codelineno-6-17" name="__codelineno-6-17"></a>
|
||
<a id="__codelineno-6-18" name="__codelineno-6-18"></a><span class="c1"># SLICING (extraction of sub-strings, does not include the position of the last index)</span>
|
||
<a id="__codelineno-6-19" name="__codelineno-6-19"></a><span class="n">string</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span> <span class="mi">5</span><span class="p">]</span>
|
||
<a id="__codelineno-6-20" name="__codelineno-6-20"></a><span class="n">string</span><span class="p">[:</span> <span class="mi">6</span><span class="p">]</span>
|
||
<a id="__codelineno-6-21" name="__codelineno-6-21"></a><span class="n">string</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||
<a id="__codelineno-6-22" name="__codelineno-6-22"></a>
|
||
<a id="__codelineno-6-23" name="__codelineno-6-23"></a><span class="c1"># SLICING WITH STEP</span>
|
||
<a id="__codelineno-6-24" name="__codelineno-6-24"></a><span class="n">string</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span> <span class="mi">12</span><span class="p">:</span> <span class="mi">3</span><span class="p">]</span>
|
||
<a id="__codelineno-6-25" name="__codelineno-6-25"></a><span class="n">string</span><span class="p">[</span><span class="mi">15</span> <span class="p">::</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
|
||
<a id="__codelineno-6-26" name="__codelineno-6-26"></a><span class="n">string</span><span class="p">[::</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="c1"># selection in reverse order (negative step)</span>
|
||
<a id="__codelineno-6-27" name="__codelineno-6-27"></a>
|
||
<a id="__codelineno-6-28" name="__codelineno-6-28"></a><span class="c1"># STRIPPING (elimination of spaces before and after string)</span>
|
||
<a id="__codelineno-6-29" name="__codelineno-6-29"></a><span class="n">string</span> <span class="o">=</span> <span class="s1">'stripping test'</span>
|
||
<a id="__codelineno-6-30" name="__codelineno-6-30"></a><span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||
<a id="__codelineno-6-31" name="__codelineno-6-31"></a><span class="n">string</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span> <span class="c1"># only left spaces removed</span>
|
||
<a id="__codelineno-6-32" name="__codelineno-6-32"></a><span class="n">string</span><span class="o">.</span><span class="n">rstrip</span><span class="p">()</span> <span class="c1"># only right spaces removed</span>
|
||
<a id="__codelineno-6-33" name="__codelineno-6-33"></a><span class="n">string</span><span class="o">.</span><span class="n">removeprefix</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="c1"># If the string starts with the prefix string, return string [len (prefix):]</span>
|
||
<a id="__codelineno-6-34" name="__codelineno-6-34"></a><span class="n">string</span><span class="o">.</span><span class="n">removesuffix</span><span class="p">(</span><span class="n">suffix</span><span class="p">)</span> <span class="c1"># If the string ends with the suffix string and that suffix is not empty, return string [: - len (suffix)]</span>
|
||
<a id="__codelineno-6-35" name="__codelineno-6-35"></a>
|
||
<a id="__codelineno-6-36" name="__codelineno-6-36"></a><span class="c1"># SUBSTRING IDENTIFICATION</span>
|
||
<a id="__codelineno-6-37" name="__codelineno-6-37"></a><span class="c1">#returns starting index of the substring or -1 if it is not present</span>
|
||
<a id="__codelineno-6-38" name="__codelineno-6-38"></a><span class="n">string</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'substring'</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">len</span> <span class="p">(</span><span class="n">string</span><span class="p">))</span> <span class="c1"># you can specify the start and end index of the search</span>
|
||
<a id="__codelineno-6-39" name="__codelineno-6-39"></a>
|
||
<a id="__codelineno-6-40" name="__codelineno-6-40"></a><span class="c1"># COUNT OF APPARITIONS</span>
|
||
<a id="__codelineno-6-41" name="__codelineno-6-41"></a><span class="n">string</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s1">'t'</span><span class="p">)</span>
|
||
<a id="__codelineno-6-42" name="__codelineno-6-42"></a>
|
||
<a id="__codelineno-6-43" name="__codelineno-6-43"></a><span class="c1"># REPLACEMENT</span>
|
||
<a id="__codelineno-6-44" name="__codelineno-6-44"></a><span class="n">string</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'multi'</span><span class="p">,</span> <span class="s1">'multiple'</span><span class="p">)</span>
|
||
<a id="__codelineno-6-45" name="__codelineno-6-45"></a>
|
||
<a id="__codelineno-6-46" name="__codelineno-6-46"></a><span class="c1"># UPPER CASE CONVERSION</span>
|
||
<a id="__codelineno-6-47" name="__codelineno-6-47"></a><span class="n">string</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||
<a id="__codelineno-6-48" name="__codelineno-6-48"></a><span class="n">string</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||
<a id="__codelineno-6-49" name="__codelineno-6-49"></a><span class="n">string</span><span class="o">.</span><span class="n">title</span><span class="p">()</span>
|
||
<a id="__codelineno-6-50" name="__codelineno-6-50"></a><span class="n">string</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span>
|
||
<a id="__codelineno-6-51" name="__codelineno-6-51"></a>
|
||
<a id="__codelineno-6-52" name="__codelineno-6-52"></a><span class="c1"># SEPARATION IN LIST ELEMENTS</span>
|
||
<a id="__codelineno-6-53" name="__codelineno-6-53"></a><span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
|
||
<a id="__codelineno-6-54" name="__codelineno-6-54"></a><span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'separator'</span><span class="p">)</span> <span class="c1"># separate using separator (separator omitted in list)</span>
|
||
<a id="__codelineno-6-55" name="__codelineno-6-55"></a><span class="n">string</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s1">'char'</span><span class="p">)</span> <span class="c1"># -> tuple # separates the string from the 3 parts at the first occurrence of separator</span>
|
||
<a id="__codelineno-6-56" name="__codelineno-6-56"></a>
|
||
<a id="__codelineno-6-57" name="__codelineno-6-57"></a><span class="c1"># IS_CHECK METHODS -> bool</span>
|
||
<a id="__codelineno-6-58" name="__codelineno-6-58"></a><span class="n">string</span><span class="o">.</span><span class="n">isalnum</span><span class="p">()</span>
|
||
<a id="__codelineno-6-59" name="__codelineno-6-59"></a><span class="n">string</span><span class="o">.</span><span class="n">isalpha</span><span class="p">()</span>
|
||
<a id="__codelineno-6-60" name="__codelineno-6-60"></a><span class="n">string</span><span class="o">.</span><span class="n">islower</span><span class="p">()</span>
|
||
<a id="__codelineno-6-61" name="__codelineno-6-61"></a><span class="n">string</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span>
|
||
<a id="__codelineno-6-62" name="__codelineno-6-62"></a><span class="n">string</span><span class="o">.</span><span class="n">istitle</span><span class="p">()</span>
|
||
<a id="__codelineno-6-63" name="__codelineno-6-63"></a><span class="n">string</span><span class="o">.</span><span class="n">isupper</span><span class="p">()</span>
|
||
<a id="__codelineno-6-64" name="__codelineno-6-64"></a><span class="n">string</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'char'</span><span class="p">)</span>
|
||
<a id="__codelineno-6-65" name="__codelineno-6-65"></a>
|
||
<a id="__codelineno-6-66" name="__codelineno-6-66"></a><span class="c1"># JOIN INSTRUCTION()</span>
|
||
<a id="__codelineno-6-67" name="__codelineno-6-67"></a><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span> <span class="c1"># merges all elements of the iterable into the new string</span>
|
||
<a id="__codelineno-6-68" name="__codelineno-6-68"></a>
|
||
<a id="__codelineno-6-69" name="__codelineno-6-69"></a><span class="c1"># FORMATTING</span>
|
||
<a id="__codelineno-6-70" name="__codelineno-6-70"></a><span class="n">string</span><span class="o">.</span><span class="n">center</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="s1">'char'</span><span class="p">)</span> <span class="c1"># stretch the string with char to width</span>
|
||
<a id="__codelineno-6-71" name="__codelineno-6-71"></a><span class="s1">'...</span><span class="se">\t</span><span class="s1">...'</span><span class="o">.</span><span class="n">expandtabs</span><span class="p">()</span> <span class="c1"># transform tabs into spaces</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="lists">Lists</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-34">34</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-35">35</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-36">36</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-37">37</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-38">38</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-39">39</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-40">40</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-41">41</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-42">42</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-43">43</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-44">44</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-45">45</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-46">46</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-47">47</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-48">48</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-49">49</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-50">50</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-51">51</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-52">52</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-53">53</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-54">54</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-55">55</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-56">56</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-57">57</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-58">58</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-59">59</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-60">60</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-61">61</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-62">62</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-63">63</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-64">64</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-65">65</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-66">66</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-67">67</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-68">68</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1"></a><span class="nb">list</span> <span class="o">=</span> <span class="p">[</span><span class="mi">9</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="s1">'WTC'</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.6</span><span class="p">,</span> <span class="kc">True</span><span class="p">]</span> <span class="c1"># lists can contain data of different types</span>
|
||
<a id="__codelineno-7-2" name="__codelineno-7-2"></a>
|
||
<a id="__codelineno-7-3" name="__codelineno-7-3"></a><span class="nb">list</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="c1"># indexing</span>
|
||
<a id="__codelineno-7-4" name="__codelineno-7-4"></a><span class="nb">list</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span> <span class="mi">5</span><span class="p">]</span> <span class="c1"># slicing</span>
|
||
<a id="__codelineno-7-5" name="__codelineno-7-5"></a><span class="nb">list</span> <span class="o">*</span> <span class="mi">3</span> <span class="c1"># repetition</span>
|
||
<a id="__codelineno-7-6" name="__codelineno-7-6"></a><span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> <span class="c1"># length</span>
|
||
<a id="__codelineno-7-7" name="__codelineno-7-7"></a><span class="n">list3</span> <span class="o">=</span> <span class="n">list1</span> <span class="o">+</span> <span class="n">list2</span> <span class="c1"># list concatenation (operator + polymorphism)</span>
|
||
<a id="__codelineno-7-8" name="__codelineno-7-8"></a><span class="nb">list</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> <span class="c1"># modify list element</span>
|
||
<a id="__codelineno-7-9" name="__codelineno-7-9"></a><span class="k">del</span> <span class="p">(</span><span class="nb">list</span> <span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="c1"># remove by index (INBUILT IN PYTHON)</span>
|
||
<a id="__codelineno-7-10" name="__codelineno-7-10"></a><span class="c1"># modify the list between the start and stop indices by reassigning the elements of the iterable</span>
|
||
<a id="__codelineno-7-11" name="__codelineno-7-11"></a><span class="nb">list</span><span class="p">[</span><span class="n">start</span><span class="p">:</span> <span class="n">stop</span><span class="p">]</span> <span class="o">=</span> <span class="n">iterable</span>
|
||
<a id="__codelineno-7-12" name="__codelineno-7-12"></a>
|
||
<a id="__codelineno-7-13" name="__codelineno-7-13"></a><span class="c1"># LIST METHODS</span>
|
||
<a id="__codelineno-7-14" name="__codelineno-7-14"></a><span class="nb">list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">object</span><span class="p">)</span> <span class="c1"># add object to background</span>
|
||
<a id="__codelineno-7-15" name="__codelineno-7-15"></a><span class="nb">list</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="c1"># counts the number of occurrences of item</span>
|
||
<a id="__codelineno-7-16" name="__codelineno-7-16"></a><span class="nb">list</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="c1"># add sequence elements to the list</span>
|
||
<a id="__codelineno-7-17" name="__codelineno-7-17"></a><span class="nb">list</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">position</span><span class="p">,</span> <span class="nb">object</span><span class="p">)</span> <span class="c1"># insert object in list [position]</span>
|
||
<a id="__codelineno-7-18" name="__codelineno-7-18"></a><span class="nb">list</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="c1"># returns the index of item</span>
|
||
<a id="__codelineno-7-19" name="__codelineno-7-19"></a><span class="nb">list</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="c1"># remove item</span>
|
||
<a id="__codelineno-7-20" name="__codelineno-7-20"></a><span class="n">poplist</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="c1"># delete item and return it</span>
|
||
<a id="__codelineno-7-21" name="__codelineno-7-21"></a><span class="nb">list</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> <span class="c1"># remove all elements</span>
|
||
<a id="__codelineno-7-22" name="__codelineno-7-22"></a>
|
||
<a id="__codelineno-7-23" name="__codelineno-7-23"></a><span class="nb">list</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span> <span class="c1"># sorts in ascending order (in place)</span>
|
||
<a id="__codelineno-7-24" name="__codelineno-7-24"></a><span class="nb">list</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">reverse</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="c1"># sorts in descending order (in place)</span>
|
||
<a id="__codelineno-7-25" name="__codelineno-7-25"></a><span class="nb">list</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> <span class="c1"># invert the string (in place)</span>
|
||
<a id="__codelineno-7-26" name="__codelineno-7-26"></a>
|
||
<a id="__codelineno-7-27" name="__codelineno-7-27"></a><span class="c1"># CLONING</span>
|
||
<a id="__codelineno-7-28" name="__codelineno-7-28"></a><span class="n">list1</span> <span class="o">=</span> <span class="p">[</span><span class="o">...</span><span class="p">]</span>
|
||
<a id="__codelineno-7-29" name="__codelineno-7-29"></a><span class="n">list2</span> <span class="o">=</span> <span class="n">list1</span> <span class="c1"># list2 points to the same object of list 1 (changes are shared)</span>
|
||
<a id="__codelineno-7-30" name="__codelineno-7-30"></a><span class="n">list3</span> <span class="o">=</span> <span class="n">list1</span> <span class="p">[:]</span> <span class="c1"># list3 is a clone of list1 (no shared changes)</span>
|
||
<a id="__codelineno-7-31" name="__codelineno-7-31"></a>
|
||
<a id="__codelineno-7-32" name="__codelineno-7-32"></a><span class="c1"># NESTED LISTS (MATRICES)</span>
|
||
<a id="__codelineno-7-33" name="__codelineno-7-33"></a><span class="n">list_1</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
|
||
<a id="__codelineno-7-34" name="__codelineno-7-34"></a><span class="n">list_2</span> <span class="o">=</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">]</span>
|
||
<a id="__codelineno-7-35" name="__codelineno-7-35"></a><span class="n">list_3</span> <span class="o">=</span> <span class="p">[</span><span class="mi">7</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">9</span><span class="p">]</span>
|
||
<a id="__codelineno-7-36" name="__codelineno-7-36"></a>
|
||
<a id="__codelineno-7-37" name="__codelineno-7-37"></a><span class="n">matrix</span> <span class="o">=</span> <span class="p">[</span><span class="n">list_1</span><span class="p">,</span> <span class="n">list_2</span><span class="p">,</span> <span class="n">list_3</span><span class="p">]</span>
|
||
<a id="__codelineno-7-38" name="__codelineno-7-38"></a><span class="n">matrix</span> <span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="c1"># identify element of list_i index j</span>
|
||
<a id="__codelineno-7-39" name="__codelineno-7-39"></a>
|
||
<a id="__codelineno-7-40" name="__codelineno-7-40"></a><span class="c1"># MAXIMUM AND MINIMUM</span>
|
||
<a id="__codelineno-7-41" name="__codelineno-7-41"></a><span class="nb">max</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||
<a id="__codelineno-7-42" name="__codelineno-7-42"></a><span class="nb">min</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||
<a id="__codelineno-7-43" name="__codelineno-7-43"></a>
|
||
<a id="__codelineno-7-44" name="__codelineno-7-44"></a><span class="c1"># ALL () & ANY ()</span>
|
||
<a id="__codelineno-7-45" name="__codelineno-7-45"></a><span class="nb">all</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="c1"># returns TRUE if all elements of the sequence are true</span>
|
||
<a id="__codelineno-7-46" name="__codelineno-7-46"></a><span class="nb">any</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="c1"># returns TRUE if at least one element of the sequence has the value True</span>
|
||
<a id="__codelineno-7-47" name="__codelineno-7-47"></a>
|
||
<a id="__codelineno-7-48" name="__codelineno-7-48"></a><span class="c1"># MAP INSTRUCTION</span>
|
||
<a id="__codelineno-7-49" name="__codelineno-7-49"></a><span class="c1"># apply function to iterable and create new list (map object)</span>
|
||
<a id="__codelineno-7-50" name="__codelineno-7-50"></a><span class="c1"># function can be lambda</span>
|
||
<a id="__codelineno-7-51" name="__codelineno-7-51"></a><span class="nb">map</span><span class="p">(</span><span class="n">function</span><span class="p">,</span> <span class="n">iterable</span><span class="p">)</span> <span class="c1"># -> map object</span>
|
||
<a id="__codelineno-7-52" name="__codelineno-7-52"></a>
|
||
<a id="__codelineno-7-53" name="__codelineno-7-53"></a><span class="c1"># FILTER INSTRUCTION ()</span>
|
||
<a id="__codelineno-7-54" name="__codelineno-7-54"></a><span class="c1"># create a new list composed of the iterable elements for which the function returns TRUE</span>
|
||
<a id="__codelineno-7-55" name="__codelineno-7-55"></a><span class="nb">filter</span><span class="p">(</span><span class="n">function</span><span class="p">,</span> <span class="n">iterable</span><span class="p">)</span> <span class="c1"># -> filter object</span>
|
||
<a id="__codelineno-7-56" name="__codelineno-7-56"></a>
|
||
<a id="__codelineno-7-57" name="__codelineno-7-57"></a><span class="c1"># ZIP INSTRUCTION ()</span>
|
||
<a id="__codelineno-7-58" name="__codelineno-7-58"></a><span class="c1"># create a tuple generator by joining two or more iterables</span>
|
||
<a id="__codelineno-7-59" name="__codelineno-7-59"></a><span class="c1"># [(seq_1 [0], seq_2 [0], ...), (seq_1 [1], seq_2 [1], ...), ...]</span>
|
||
<a id="__codelineno-7-60" name="__codelineno-7-60"></a><span class="c1"># truncate the sequence to the length of the shortest input sequence</span>
|
||
<a id="__codelineno-7-61" name="__codelineno-7-61"></a><span class="nb">zip</span><span class="p">(</span><span class="n">seq_1</span><span class="p">,</span> <span class="n">seq_2</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span> <span class="c1"># -> zip object (tuple generator)</span>
|
||
<a id="__codelineno-7-62" name="__codelineno-7-62"></a>
|
||
<a id="__codelineno-7-63" name="__codelineno-7-63"></a><span class="c1"># LIST COMPREHENSIONS</span>
|
||
<a id="__codelineno-7-64" name="__codelineno-7-64"></a><span class="n">var</span> <span class="o">=</span> <span class="p">[</span><span class="n">expression</span> <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">sequence</span> <span class="k">if</span> <span class="n">condition</span><span class="p">]</span> <span class="c1"># create list from pre-existing list (instead of map, filter, reduce) applying any manipulations</span>
|
||
<a id="__codelineno-7-65" name="__codelineno-7-65"></a><span class="c1"># expression can be lambda, if is optional</span>
|
||
<a id="__codelineno-7-66" name="__codelineno-7-66"></a><span class="n">var</span> <span class="o">=</span> <span class="p">[</span><span class="n">expression</span> <span class="k">if</span> <span class="n">condition</span> <span class="k">else</span> <span class="n">statement</span> <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">]</span> <span class="c1"># list comprehension with IF-ELSE</span>
|
||
<a id="__codelineno-7-67" name="__codelineno-7-67"></a><span class="n">var</span> <span class="o">=</span> <span class="p">[</span><span class="n">expression_1</span> <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="p">[</span><span class="n">expression_2</span> <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">]]</span> <span class="c1"># nested list comprehension</span>
|
||
<a id="__codelineno-7-68" name="__codelineno-7-68"></a><span class="n">var</span> <span class="o">=</span> <span class="p">[(</span><span class="n">exp_1</span><span class="p">,</span> <span class="n">exp_2</span><span class="p">)</span> <span class="k">for</span> <span class="n">item_1</span> <span class="ow">in</span> <span class="n">seq_1</span> <span class="k">for</span> <span class="n">item_2</span> <span class="ow">in</span> <span class="n">seq_2</span><span class="p">]</span> <span class="c1"># -> [(..., ...), (..., ...), ...]</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="tuple">Tuple</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-26">26</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1"></a><span class="c1"># TUPLES CANNOT BE MODIFIED</span>
|
||
<a id="__codelineno-8-2" name="__codelineno-8-2"></a><span class="nb">tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">69</span><span class="p">,</span> <span class="mi">420</span><span class="p">,</span> <span class="mi">69</span><span class="p">,</span> <span class="s1">'abc'</span><span class="p">)</span> <span class="c1"># tuple assignment</span>
|
||
<a id="__codelineno-8-3" name="__codelineno-8-3"></a><span class="nb">tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">44</span><span class="p">,)</span> <span class="c1"># single element tuples need a comma</span>
|
||
<a id="__codelineno-8-4" name="__codelineno-8-4"></a>
|
||
<a id="__codelineno-8-5" name="__codelineno-8-5"></a><span class="nb">tuple</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="c1"># indexing</span>
|
||
<a id="__codelineno-8-6" name="__codelineno-8-6"></a><span class="nb">tuple</span> <span class="o">*</span> <span class="mi">3</span> <span class="c1"># repetition</span>
|
||
<a id="__codelineno-8-7" name="__codelineno-8-7"></a><span class="nb">tuple</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="mi">69</span><span class="p">)</span> <span class="c1"># counting</span>
|
||
<a id="__codelineno-8-8" name="__codelineno-8-8"></a><span class="nb">tuple</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="mi">420</span><span class="p">)</span> <span class="c1"># find index</span>
|
||
<a id="__codelineno-8-9" name="__codelineno-8-9"></a><span class="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">)</span> <span class="c1"># length tuple</span>
|
||
<a id="__codelineno-8-10" name="__codelineno-8-10"></a>
|
||
<a id="__codelineno-8-11" name="__codelineno-8-11"></a><span class="c1"># CONVERSION FROM TUPLE TO LIST</span>
|
||
<a id="__codelineno-8-12" name="__codelineno-8-12"></a><span class="nb">tuple</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||
<a id="__codelineno-8-13" name="__codelineno-8-13"></a>
|
||
<a id="__codelineno-8-14" name="__codelineno-8-14"></a><span class="c1"># TUPLE UNPACKING</span>
|
||
<a id="__codelineno-8-15" name="__codelineno-8-15"></a><span class="n">tup</span> <span class="o">=</span> <span class="p">(</span><span class="n">item_1</span><span class="p">,</span> <span class="n">item_2</span><span class="p">,</span> <span class="n">etc</span><span class="p">)</span>
|
||
<a id="__codelineno-8-16" name="__codelineno-8-16"></a><span class="n">var_1</span><span class="p">,</span> <span class="n">var_2</span><span class="p">,</span> <span class="n">etc</span> <span class="o">=</span> <span class="n">tup</span>
|
||
<a id="__codelineno-8-17" name="__codelineno-8-17"></a><span class="c1"># var_1 = item_1, var_2 = item_2, ...</span>
|
||
<a id="__codelineno-8-18" name="__codelineno-8-18"></a>
|
||
<a id="__codelineno-8-19" name="__codelineno-8-19"></a><span class="n">tup</span> <span class="o">=</span> <span class="p">(</span><span class="n">item_1</span><span class="p">,</span> <span class="p">(</span><span class="n">item_2</span><span class="p">,</span> <span class="n">item_3</span><span class="p">))</span>
|
||
<a id="__codelineno-8-20" name="__codelineno-8-20"></a><span class="n">var_1</span><span class="p">,</span> <span class="p">(</span><span class="n">var_2</span><span class="p">,</span> <span class="n">var_3</span><span class="p">)</span> <span class="o">=</span> <span class="n">tup</span>
|
||
<a id="__codelineno-8-21" name="__codelineno-8-21"></a><span class="c1"># var_1 = item_1, var_2 = item_2, var_3 = item_3</span>
|
||
<a id="__codelineno-8-22" name="__codelineno-8-22"></a>
|
||
<a id="__codelineno-8-23" name="__codelineno-8-23"></a><span class="c1">#OPERATOR * VAR (tuple unpacking)</span>
|
||
<a id="__codelineno-8-24" name="__codelineno-8-24"></a><span class="n">var_1</span><span class="p">,</span> <span class="n">var_2</span><span class="p">,</span> <span class="o">*</span> <span class="n">rest</span> <span class="o">=</span> <span class="n">sequence</span> <span class="c1"># var_1 = seq [0], var_2 = seq [1], rest = seq [2:]</span>
|
||
<a id="__codelineno-8-25" name="__codelineno-8-25"></a><span class="n">var_1</span><span class="p">,</span> <span class="o">*</span> <span class="n">body</span><span class="p">,</span> <span class="n">var_2</span><span class="p">,</span> <span class="n">var_3</span> <span class="o">=</span> <span class="n">sequence</span> <span class="c1"># var_1 = seq [0], body = seq [1: -2], var_2 = sequence [-2], var_3 = seq [-1]</span>
|
||
<a id="__codelineno-8-26" name="__codelineno-8-26"></a><span class="c1"># * var retrieves the excess items, if in parallel assignment usable max once but in any position</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="set">Set</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-34">34</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-35">35</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-36">36</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-37">37</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-38">38</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-39">39</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-40">40</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-41">41</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-42">42</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-43">43</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-44">44</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-45">45</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-46">46</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-47">47</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-48">48</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-49">49</a></span>
|
||
<span class="normal"><a href="#__codelineno-9-50">50</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1"></a><span class="c1"># SETS MAY NOT CONTAIN REPEATED ELEMENTS (THEY ARE OMITTED)</span>
|
||
<a id="__codelineno-9-2" name="__codelineno-9-2"></a><span class="c1"># THE ORDER DOES NOT MATTER (NO SLICING, INDEXING, REPETITION, ...)</span>
|
||
<a id="__codelineno-9-3" name="__codelineno-9-3"></a><span class="nb">set</span> <span class="o">=</span> <span class="p">{</span><span class="mi">10</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="s1">'abc'</span><span class="p">,</span> <span class="mi">20</span><span class="p">}</span>
|
||
<a id="__codelineno-9-4" name="__codelineno-9-4"></a><span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">)</span> <span class="c1"># length set</span>
|
||
<a id="__codelineno-9-5" name="__codelineno-9-5"></a><span class="nb">set</span><span class="p">()</span> <span class="c1"># create empty set ({} create empty dictionary)</span>
|
||
<a id="__codelineno-9-6" name="__codelineno-9-6"></a><span class="c1"># FREEZING SETS (no longer editable)</span>
|
||
<a id="__codelineno-9-7" name="__codelineno-9-7"></a><span class="n">fset</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">(</span><span class="nb">set</span><span class="p">)</span>
|
||
<a id="__codelineno-9-8" name="__codelineno-9-8"></a>
|
||
<a id="__codelineno-9-9" name="__codelineno-9-9"></a><span class="c1"># OPERATORS</span>
|
||
<a id="__codelineno-9-10" name="__codelineno-9-10"></a><span class="n">set_1</span> <span class="o">-</span> <span class="n">set_2</span> <span class="c1"># elements in set_1 but not in set_2</span>
|
||
<a id="__codelineno-9-11" name="__codelineno-9-11"></a><span class="n">set_1</span> <span class="o">|</span> <span class="n">set_2</span> <span class="c1"># elements in set_1 or set_2</span>
|
||
<a id="__codelineno-9-12" name="__codelineno-9-12"></a><span class="n">set_1</span> <span class="o">&</span> <span class="n">set_2</span> <span class="c1"># elements in set_1 and set_2</span>
|
||
<a id="__codelineno-9-13" name="__codelineno-9-13"></a><span class="n">set_1</span> <span class="o">^</span> <span class="n">set_1</span> <span class="c1"># elements in either set_1 or set_2</span>
|
||
<a id="__codelineno-9-14" name="__codelineno-9-14"></a><span class="n">set_1</span> <span class="o"><=</span> <span class="n">set_2</span> <span class="c1"># elements set_1 also in set_2</span>
|
||
<a id="__codelineno-9-15" name="__codelineno-9-15"></a><span class="n">set_1</span> <span class="o"><</span> <span class="n">set_2</span> <span class="c1"># set_1 <= set_2 and set_1! = set_2</span>
|
||
<a id="__codelineno-9-16" name="__codelineno-9-16"></a><span class="n">set_1</span> <span class="o">>=</span> <span class="n">set_2</span> <span class="c1"># elements set_2 also in set_1</span>
|
||
<a id="__codelineno-9-17" name="__codelineno-9-17"></a><span class="n">set_1</span> <span class="o">></span> <span class="n">set_2</span> <span class="c1"># set_1> = set_2 and set_1! = set_2</span>
|
||
<a id="__codelineno-9-18" name="__codelineno-9-18"></a>
|
||
<a id="__codelineno-9-19" name="__codelineno-9-19"></a><span class="c1"># METHODS SET</span>
|
||
<a id="__codelineno-9-20" name="__codelineno-9-20"></a><span class="nb">set</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="c1"># remove and return item</span>
|
||
<a id="__codelineno-9-21" name="__codelineno-9-21"></a><span class="nb">set</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="c1"># add item to set</span>
|
||
<a id="__codelineno-9-22" name="__codelineno-9-22"></a>
|
||
<a id="__codelineno-9-23" name="__codelineno-9-23"></a><span class="nb">set</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="c1"># -> set # returns a copy of the set</span>
|
||
<a id="__codelineno-9-24" name="__codelineno-9-24"></a><span class="nb">set</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> <span class="c1"># remove all elements from the set</span>
|
||
<a id="__codelineno-9-25" name="__codelineno-9-25"></a><span class="nb">set</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="c1"># remove item from set if present, otherwise raise KeyError</span>
|
||
<a id="__codelineno-9-26" name="__codelineno-9-26"></a><span class="nb">set</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="c1"># remove item from set if present, otherwise do nothing</span>
|
||
<a id="__codelineno-9-27" name="__codelineno-9-27"></a><span class="nb">set</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="o">*</span> <span class="n">sets</span><span class="p">)</span> <span class="c1"># -> set # returns elements in set that are absent in * sets</span>
|
||
<a id="__codelineno-9-28" name="__codelineno-9-28"></a><span class="nb">set</span><span class="o">.</span><span class="n">difference_update</span><span class="p">(</span><span class="o">*</span> <span class="n">sets</span><span class="p">)</span> <span class="c1"># remove differences from set_2</span>
|
||
<a id="__codelineno-9-29" name="__codelineno-9-29"></a><span class="nb">set</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="o">*</span> <span class="n">sets</span><span class="p">)</span> <span class="c1"># -> set # returns all elements of sets</span>
|
||
<a id="__codelineno-9-30" name="__codelineno-9-30"></a><span class="nb">set</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="o">*</span> <span class="n">sets</span><span class="p">)</span> <span class="c1"># add * sets elements to set</span>
|
||
<a id="__codelineno-9-31" name="__codelineno-9-31"></a><span class="nb">set</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="o">*</span> <span class="n">sets</span><span class="p">)</span> <span class="c1"># -> set # returns the elements common to sets</span>
|
||
<a id="__codelineno-9-32" name="__codelineno-9-32"></a><span class="nb">set</span><span class="o">.</span><span class="n">intersection_update</span><span class="p">(</span><span class="o">*</span> <span class="n">sets</span><span class="p">)</span> <span class="c1"># remove all elements except those common to sets</span>
|
||
<a id="__codelineno-9-33" name="__codelineno-9-33"></a><span class="nb">set</span><span class="o">.</span><span class="n">symmetric_difference</span><span class="p">(</span><span class="o">*</span> <span class="n">sets</span><span class="p">)</span> <span class="c1"># -> set # returns elements not common to sets</span>
|
||
<a id="__codelineno-9-34" name="__codelineno-9-34"></a><span class="nb">set</span><span class="o">.</span><span class="n">symmetric_difference_update</span><span class="p">(</span><span class="o">*</span> <span class="n">sets</span><span class="p">)</span> <span class="c1"># remove all elements common to sets (leave only uncommon elements)</span>
|
||
<a id="__codelineno-9-35" name="__codelineno-9-35"></a>
|
||
<a id="__codelineno-9-36" name="__codelineno-9-36"></a><span class="n">set_1</span><span class="o">.</span><span class="n">isdisjoint</span><span class="p">(</span><span class="n">set_2</span><span class="p">)</span> <span class="c1"># -> bool # True if there are no common elements (intersection is empty)</span>
|
||
<a id="__codelineno-9-37" name="__codelineno-9-37"></a><span class="n">set_1</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="n">set_2</span><span class="p">)</span> <span class="c1"># -> bool # True if every element of set_1 is also in set_2</span>
|
||
<a id="__codelineno-9-38" name="__codelineno-9-38"></a><span class="n">set_1</span><span class="o">.</span><span class="n">issuperset</span><span class="p">(</span><span class="n">set_2</span><span class="p">)</span> <span class="c1"># -> bool # True if every element of set_2 is also in set_1</span>
|
||
<a id="__codelineno-9-39" name="__codelineno-9-39"></a>
|
||
<a id="__codelineno-9-40" name="__codelineno-9-40"></a><span class="c1"># SET COMPREHENSIONS</span>
|
||
<a id="__codelineno-9-41" name="__codelineno-9-41"></a><span class="n">var</span> <span class="o">=</span> <span class="p">{</span><span class="n">expression</span> <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">sequence</span> <span class="k">if</span> <span class="n">condition</span><span class="p">}</span>
|
||
<a id="__codelineno-9-42" name="__codelineno-9-42"></a>
|
||
<a id="__codelineno-9-43" name="__codelineno-9-43"></a><span class="c1"># SLICE OBJECT</span>
|
||
<a id="__codelineno-9-44" name="__codelineno-9-44"></a><span class="c1"># [start: stop: step] -> slice object (start, stop, step)</span>
|
||
<a id="__codelineno-9-45" name="__codelineno-9-45"></a><span class="n">var_1</span> <span class="o">=</span> <span class="nb">slice</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">stop</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span> <span class="c1"># assignment to variable</span>
|
||
<a id="__codelineno-9-46" name="__codelineno-9-46"></a><span class="n">var_2</span><span class="p">[</span><span class="n">var_1</span><span class="p">]</span> <span class="c1"># same as var_2 [start: stop: step]</span>
|
||
<a id="__codelineno-9-47" name="__codelineno-9-47"></a>
|
||
<a id="__codelineno-9-48" name="__codelineno-9-48"></a><span class="c1"># ELLIPSIS OBJECT</span>
|
||
<a id="__codelineno-9-49" name="__codelineno-9-49"></a><span class="n">var</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span> <span class="c1"># -> shortcut for var [i,:,:,:,]</span>
|
||
<a id="__codelineno-9-50" name="__codelineno-9-50"></a><span class="c1"># used for multidimensional slices (NumPy, ...)</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="bytes-e-bytearray">Bytes e Bytearray</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-10-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-10-16">16</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1"></a><span class="c1"># THE BYTES CANNOT BE MODIFIED OR INDEXED</span>
|
||
<a id="__codelineno-10-2" name="__codelineno-10-2"></a><span class="c1"># THE BYTEARRAYS CAN BE MODIFIED AND INDEXED</span>
|
||
<a id="__codelineno-10-3" name="__codelineno-10-3"></a><span class="c1"># YOU CANNOT DO REPETITION AND SLICING ON BYTE OR BYTEARRAY</span>
|
||
<a id="__codelineno-10-4" name="__codelineno-10-4"></a>
|
||
<a id="__codelineno-10-5" name="__codelineno-10-5"></a><span class="n">b</span> <span class="o">=</span> <span class="nb">bytes</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||
<a id="__codelineno-10-6" name="__codelineno-10-6"></a><span class="n">ba</span> <span class="o">=</span> <span class="nb">bytearray</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||
<a id="__codelineno-10-7" name="__codelineno-10-7"></a>
|
||
<a id="__codelineno-10-8" name="__codelineno-10-8"></a><span class="c1"># item of bytes and bytearray is always integer between 0 and 255</span>
|
||
<a id="__codelineno-10-9" name="__codelineno-10-9"></a><span class="c1"># slice of bytes and bytearray is binary sequence (even if len = 1)</span>
|
||
<a id="__codelineno-10-10" name="__codelineno-10-10"></a>
|
||
<a id="__codelineno-10-11" name="__codelineno-10-11"></a><span class="c1"># BYTES AND BYTEARRAY METHODS</span>
|
||
<a id="__codelineno-10-12" name="__codelineno-10-12"></a><span class="nb">bytes</span><span class="o">.</span><span class="n">fromhex</span><span class="p">(</span><span class="n">pair_hex_digits</span><span class="p">)</span> <span class="c1"># -> byte literal</span>
|
||
<a id="__codelineno-10-13" name="__codelineno-10-13"></a><span class="sa">b</span><span class="s1">'bite_literal'</span><span class="o">.</span><span class="n">hex</span><span class="p">()</span> <span class="c1"># -> str # returns a string containing hex digit pairs</span>
|
||
<a id="__codelineno-10-14" name="__codelineno-10-14"></a><span class="nb">bytearray</span><span class="o">.</span><span class="n">fromhex</span><span class="p">(</span><span class="n">pair_hex_digits</span><span class="p">)</span> <span class="c1"># -> byte literal</span>
|
||
<a id="__codelineno-10-15" name="__codelineno-10-15"></a><span class="nb">bytes</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="n">subseq</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span> <span class="c1"># returns subseq appearance count between start and end positions</span>
|
||
<a id="__codelineno-10-16" name="__codelineno-10-16"></a><span class="nb">bytearray</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="n">subseq</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span> <span class="c1"># returns subseq appearance count between start and end positions</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="encoding-decoding-unicode">Encoding-Decoding & Unicode</h2>
|
||
<p>Unicode Literals:</p>
|
||
<ul>
|
||
<li><code>\u0041</code> → 'A'</li>
|
||
<li><code>\U00000041</code> → 'A'</li>
|
||
<li><code>\x41</code> → 'A'</li>
|
||
</ul>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-34">34</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-35">35</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-36">36</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1"></a><span class="c1"># ENCODING</span>
|
||
<a id="__codelineno-11-2" name="__codelineno-11-2"></a><span class="c1"># transform string into literal byte</span>
|
||
<a id="__codelineno-11-3" name="__codelineno-11-3"></a><span class="c1"># UnicodeEncodeError on error</span>
|
||
<a id="__codelineno-11-4" name="__codelineno-11-4"></a><span class="c1"># errors = ignore -> skip error-causing characters</span>
|
||
<a id="__codelineno-11-5" name="__codelineno-11-5"></a><span class="c1"># errors = replace -> replace? to characters causing error</span>
|
||
<a id="__codelineno-11-6" name="__codelineno-11-6"></a><span class="c1"># errors = xmlcharrefreplace -> substitutes XML entities for error-causing characters</span>
|
||
<a id="__codelineno-11-7" name="__codelineno-11-7"></a><span class="n">string</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf-8'</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="s1">'replace'</span><span class="p">)</span> <span class="c1"># -> b'byte literals'</span>
|
||
<a id="__codelineno-11-8" name="__codelineno-11-8"></a>
|
||
<a id="__codelineno-11-9" name="__codelineno-11-9"></a><span class="c1"># BOM (BYTE ORDER MARK)</span>
|
||
<a id="__codelineno-11-10" name="__codelineno-11-10"></a><span class="c1"># byte literal given to indicate byte ordering (little-endian vs big-endian)</span>
|
||
<a id="__codelineno-11-11" name="__codelineno-11-11"></a><span class="c1"># in little-endian the least significant bytes come first (e.g. U + 0045 -> DEC 069 -> encoded as 69 and 0)</span>
|
||
<a id="__codelineno-11-12" name="__codelineno-11-12"></a><span class="c1"># U + FEFF (ZERO WIDTH NO-BREAK SPACE) -> b '\ xff \ xfe' indicates little-endian</span>
|
||
<a id="__codelineno-11-13" name="__codelineno-11-13"></a>
|
||
<a id="__codelineno-11-14" name="__codelineno-11-14"></a><span class="c1"># DECODING</span>
|
||
<a id="__codelineno-11-15" name="__codelineno-11-15"></a><span class="c1"># transform byte literal to string</span>
|
||
<a id="__codelineno-11-16" name="__codelineno-11-16"></a><span class="c1"># error = 'replace' replaces errors (byte literals not belonging to decoding format) with U + FFFD "REPLACEMENT CHARACTER"</span>
|
||
<a id="__codelineno-11-17" name="__codelineno-11-17"></a><span class="nb">bytes</span><span class="o">.</span><span class="n">decode</span> <span class="p">(</span><span class="s1">'utf-8'</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="s1">'replace'</span><span class="p">)</span> <span class="c1"># -> str</span>
|
||
<a id="__codelineno-11-18" name="__codelineno-11-18"></a>
|
||
<a id="__codelineno-11-19" name="__codelineno-11-19"></a><span class="c1"># UNICODE NORMALIZATION</span>
|
||
<a id="__codelineno-11-20" name="__codelineno-11-20"></a><span class="c1"># handling canonical unicode equivalents (e.g. é, and \ u0301 are equivalent for unicode)</span>
|
||
<a id="__codelineno-11-21" name="__codelineno-11-21"></a><span class="n">unicodedata</span><span class="o">.</span><span class="n">normalize</span><span class="p">(</span><span class="n">form</span><span class="p">,</span> <span class="n">unicode_string</span><span class="p">)</span> <span class="c1"># FORM: NFC, NFD, NFCK, NFDK</span>
|
||
<a id="__codelineno-11-22" name="__codelineno-11-22"></a><span class="c1"># NFC -> "Normalization Form C" -> produces the shortest equivalent string</span>
|
||
<a id="__codelineno-11-23" name="__codelineno-11-23"></a><span class="c1"># NFD -> "Normalization Form D" -> produces the longest equivalent string</span>
|
||
<a id="__codelineno-11-24" name="__codelineno-11-24"></a>
|
||
<a id="__codelineno-11-25" name="__codelineno-11-25"></a><span class="c1"># CASE FOLDING UNICODE</span>
|
||
<a id="__codelineno-11-26" name="__codelineno-11-26"></a><span class="c1"># transform to lowercase with some differences (116 differences, 0.11% of Unicode 6.3)</span>
|
||
<a id="__codelineno-11-27" name="__codelineno-11-27"></a><span class="n">string</span><span class="o">.</span><span class="n">casefold</span><span class="p">()</span>
|
||
<a id="__codelineno-11-28" name="__codelineno-11-28"></a>
|
||
<a id="__codelineno-11-29" name="__codelineno-11-29"></a><span class="c1"># USEFUL FUNCTIONS FOR NORMALIZED EQUIVALENCE (Source: Fluent Python p. 121, Luciano Ramalho)</span>
|
||
<a id="__codelineno-11-30" name="__codelineno-11-30"></a><span class="kn">from</span> <span class="nn">unicodedata</span> <span class="kn">import</span> <span class="n">normalize</span>
|
||
<a id="__codelineno-11-31" name="__codelineno-11-31"></a>
|
||
<a id="__codelineno-11-32" name="__codelineno-11-32"></a><span class="k">def</span> <span class="nf">nfc_eual</span><span class="p">(</span><span class="n">str_1</span><span class="p">,</span> <span class="n">str_2</span><span class="p">):</span>
|
||
<a id="__codelineno-11-33" name="__codelineno-11-33"></a> <span class="k">return</span> <span class="p">(</span><span class="n">normalize</span><span class="p">(</span><span class="s1">'NFC'</span><span class="p">,</span> <span class="n">str1</span><span class="p">)</span> <span class="o">==</span> <span class="n">normalize</span><span class="p">(</span><span class="s1">'NFC'</span><span class="p">,</span> <span class="n">str2</span><span class="p">))</span>
|
||
<a id="__codelineno-11-34" name="__codelineno-11-34"></a><span class="k">def</span> <span class="nf">fold_equal</span> <span class="p">(</span><span class="n">str_1</span><span class="p">,</span> <span class="n">str_2</span><span class="p">):</span>
|
||
<a id="__codelineno-11-35" name="__codelineno-11-35"></a> <span class="k">return</span> <span class="p">(</span><span class="n">normalize</span><span class="p">(</span><span class="s1">'NFC'</span><span class="p">,</span> <span class="n">str_1</span><span class="p">)</span><span class="o">.</span><span class="n">casefold</span><span class="p">()</span> <span class="o">==</span>
|
||
<a id="__codelineno-11-36" name="__codelineno-11-36"></a> <span class="n">normalize</span><span class="p">(</span><span class="s1">'NFC'</span><span class="p">,</span> <span class="n">st_2</span><span class="p">)</span><span class="o">.</span><span class="n">casefold</span><span class="p">())</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="memoryview">Memoryview</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-17">17</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1"></a><span class="c1"># memoryview objects allow python to access the data inside the object</span>
|
||
<a id="__codelineno-12-2" name="__codelineno-12-2"></a><span class="c1"># without copy if it supports the buffer protocol</span>
|
||
<a id="__codelineno-12-3" name="__codelineno-12-3"></a><span class="n">v</span> <span class="o">=</span> <span class="nb">memoryview</span><span class="p">(</span><span class="nb">object</span><span class="p">)</span> <span class="c1"># create a memoryview with reference to object</span>
|
||
<a id="__codelineno-12-4" name="__codelineno-12-4"></a><span class="c1"># slice of memoryview produces new memoryview</span>
|
||
<a id="__codelineno-12-5" name="__codelineno-12-5"></a>
|
||
<a id="__codelineno-12-6" name="__codelineno-12-6"></a><span class="c1"># MEMORYVIEW METHODS</span>
|
||
<a id="__codelineno-12-7" name="__codelineno-12-7"></a><span class="n">v</span><span class="o">.</span><span class="n">tobytes</span><span class="p">()</span> <span class="c1"># return data as bytestring, equivalent to bytes (v)</span>
|
||
<a id="__codelineno-12-8" name="__codelineno-12-8"></a><span class="n">v</span><span class="o">.</span><span class="n">hex</span><span class="p">()</span> <span class="c1"># returns string containing two hex digits for each byte in the buffer</span>
|
||
<a id="__codelineno-12-9" name="__codelineno-12-9"></a><span class="n">v</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span> <span class="c1"># returns the data in the buffer as a list of elements</span>
|
||
<a id="__codelineno-12-10" name="__codelineno-12-10"></a><span class="n">v</span><span class="o">.</span><span class="n">toreadonly</span><span class="p">()</span>
|
||
<a id="__codelineno-12-11" name="__codelineno-12-11"></a><span class="n">v</span><span class="o">.</span><span class="n">release</span><span class="p">()</span> <span class="c1"># release the buffer below</span>
|
||
<a id="__codelineno-12-12" name="__codelineno-12-12"></a><span class="n">v</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="nb">format</span><span class="p">,</span> <span class="n">shape</span><span class="p">)</span> <span class="c1"># change the format or shape of the memoryview</span>
|
||
<a id="__codelineno-12-13" name="__codelineno-12-13"></a><span class="n">see</span> <span class="nb">object</span> <span class="c1"># object of the memoryview</span>
|
||
<a id="__codelineno-12-14" name="__codelineno-12-14"></a><span class="n">v</span><span class="o">.</span><span class="n">format</span> <span class="c1"># format of the memoryview</span>
|
||
<a id="__codelineno-12-15" name="__codelineno-12-15"></a><span class="n">v</span><span class="o">.</span><span class="n">itemsize</span> <span class="c1"># size in bytes of each element of the memoryview</span>
|
||
<a id="__codelineno-12-16" name="__codelineno-12-16"></a><span class="n">v</span><span class="o">.</span><span class="n">ndim</span> <span class="c1"># integer indicating the size of the multidimensional array represented</span>
|
||
<a id="__codelineno-12-17" name="__codelineno-12-17"></a><span class="n">v</span><span class="o">.</span><span class="n">shape</span> <span class="c1"># tuple of integers indicating the shape of the memoryview</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Format String</th>
|
||
<th>C Type</th>
|
||
<th>Python Type</th>
|
||
<th>Standard Size</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>x</code></td>
|
||
<td><code>pad byte</code></td>
|
||
<td><code>no value</code></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>c</code></td>
|
||
<td><code>char</code></td>
|
||
<td><code>bytes</code></td>
|
||
<td><code>1</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>b</code></td>
|
||
<td><code>signed char</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>1</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>B</code></td>
|
||
<td><code>unsigned char</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>1</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>?</code></td>
|
||
<td><code>_Bool</code></td>
|
||
<td><code>bool</code></td>
|
||
<td><code>1</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>h</code></td>
|
||
<td><code>short</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>2</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>H</code></td>
|
||
<td><code>unsigned short</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>2</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>i</code></td>
|
||
<td><code>int</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>4</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>I</code></td>
|
||
<td><code>unsigned int</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>4</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>l</code></td>
|
||
<td><code>long</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>4</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>L</code></td>
|
||
<td><code>unsigned long</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>4</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>q</code></td>
|
||
<td><code>long long</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>8</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>Q</code></td>
|
||
<td><code>unsigned long long</code></td>
|
||
<td><code>integer</code></td>
|
||
<td><code>8</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>n</code></td>
|
||
<td><code>ssize_t</code></td>
|
||
<td><code>integer</code></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>N</code></td>
|
||
<td><code>size_t</code></td>
|
||
<td><code>integer</code></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>f</code></td>
|
||
<td><code>float</code></td>
|
||
<td><code>float</code></td>
|
||
<td><code>4</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>F</code></td>
|
||
<td><code>double</code></td>
|
||
<td><code>float</code></td>
|
||
<td><code>8</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>s</code></td>
|
||
<td><code>char[]</code></td>
|
||
<td><code>bytes</code></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>P</code></td>
|
||
<td><code>char[]</code></td>
|
||
<td><code>bytes</code></td>
|
||
<td></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h2 id="dictionaries">Dictionaries</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-34">34</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-35">35</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-36">36</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-37">37</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-38">38</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-39">39</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1"></a><span class="c1"># SET OF KEY-VALUE PAIRS</span>
|
||
<a id="__codelineno-13-2" name="__codelineno-13-2"></a><span class="n">d</span> <span class="o">=</span> <span class="p">{</span><span class="mi">1</span><span class="p">:</span> <span class="s1">'Alex'</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s1">'Bob'</span><span class="p">,</span> <span class="mi">3</span><span class="p">:</span> <span class="s1">'Carl'</span><span class="p">}</span>
|
||
<a id="__codelineno-13-3" name="__codelineno-13-3"></a><span class="n">d</span> <span class="o">=</span> <span class="nb">dict</span> <span class="p">(</span><span class="n">one</span> <span class="o">=</span> <span class="s1">'Alex'</span><span class="p">,</span> <span class="n">two</span> <span class="o">=</span> <span class="s1">'Bob'</span><span class="p">,</span> <span class="n">three</span> <span class="o">=</span> <span class="s1">'Carl'</span><span class="p">)</span>
|
||
<a id="__codelineno-13-4" name="__codelineno-13-4"></a><span class="n">d</span> <span class="o">=</span> <span class="nb">dict</span> <span class="p">(</span><span class="nb">zip</span> <span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="s1">'Alex'</span><span class="p">,</span> <span class="s1">'Bob'</span><span class="p">,</span> <span class="s1">'Carl'</span><span class="p">]))</span>
|
||
<a id="__codelineno-13-5" name="__codelineno-13-5"></a><span class="n">d</span> <span class="o">=</span> <span class="nb">dict</span> <span class="p">([(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'Alex'</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'Bob'</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'Carl'</span><span class="p">)])</span>
|
||
<a id="__codelineno-13-6" name="__codelineno-13-6"></a>
|
||
<a id="__codelineno-13-7" name="__codelineno-13-7"></a><span class="n">d</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="c1"># returns value associated with key</span>
|
||
<a id="__codelineno-13-8" name="__codelineno-13-8"></a><span class="n">d</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'Dan'</span> <span class="c1"># add or change element</span>
|
||
<a id="__codelineno-13-9" name="__codelineno-13-9"></a><span class="nb">list</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> <span class="c1"># returns a list of all elements</span>
|
||
<a id="__codelineno-13-10" name="__codelineno-13-10"></a><span class="nb">len</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> <span class="c1"># returns the number of elements</span>
|
||
<a id="__codelineno-13-11" name="__codelineno-13-11"></a><span class="k">del</span><span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="c1"># delete element</span>
|
||
<a id="__codelineno-13-12" name="__codelineno-13-12"></a>
|
||
<a id="__codelineno-13-13" name="__codelineno-13-13"></a><span class="c1"># DICTIONARY METHODS</span>
|
||
<a id="__codelineno-13-14" name="__codelineno-13-14"></a><span class="n">d</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> <span class="c1"># remove all elements</span>
|
||
<a id="__codelineno-13-15" name="__codelineno-13-15"></a><span class="n">d</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="c1"># shallow copy of the dictionary</span>
|
||
<a id="__codelineno-13-16" name="__codelineno-13-16"></a><span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># returns the value associated with key</span>
|
||
<a id="__codelineno-13-17" name="__codelineno-13-17"></a><span class="n">d</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="c1"># return key-value pairs (view object)</span>
|
||
<a id="__codelineno-13-18" name="__codelineno-13-18"></a><span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="c1"># return dictionary keys (view object)</span>
|
||
<a id="__codelineno-13-19" name="__codelineno-13-19"></a><span class="n">d</span><span class="o">.</span><span class="n">values</span><span class="err"></span><span class="p">()</span> <span class="c1"># returns dictionary values (view object)</span>
|
||
<a id="__codelineno-13-20" name="__codelineno-13-20"></a><span class="n">d</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># remove and return the value associated with key</span>
|
||
<a id="__codelineno-13-21" name="__codelineno-13-21"></a><span class="n">d</span><span class="o">.</span><span class="n">popitem</span><span class="p">()</span> <span class="c1"># remove and return the last key-value pair</span>
|
||
<a id="__codelineno-13-22" name="__codelineno-13-22"></a><span class="n">d</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">default</span><span class="p">)</span> <span class="c1"># if the key is present in the dictionary it returns it, otherwise it inserts it with the default value and returns default</span>
|
||
<a id="__codelineno-13-23" name="__codelineno-13-23"></a>
|
||
<a id="__codelineno-13-24" name="__codelineno-13-24"></a><span class="n">d</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span> <span class="c1"># add or modify dictionary elements, argument must be key-value pair</span>
|
||
<a id="__codelineno-13-25" name="__codelineno-13-25"></a>
|
||
<a id="__codelineno-13-26" name="__codelineno-13-26"></a><span class="c1"># DICT UNION</span>
|
||
<a id="__codelineno-13-27" name="__codelineno-13-27"></a><span class="n">d</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'spam'</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">'eggs'</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> <span class="s1">'cheese'</span><span class="p">:</span> <span class="mi">3</span><span class="p">}</span>
|
||
<a id="__codelineno-13-28" name="__codelineno-13-28"></a><span class="n">e</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'cheese'</span><span class="p">:</span> <span class="s1">'cheddar'</span><span class="p">,</span> <span class="s1">'aardvark'</span><span class="p">:</span> <span class="s1">'Ethel'</span><span class="p">}</span>
|
||
<a id="__codelineno-13-29" name="__codelineno-13-29"></a>
|
||
<a id="__codelineno-13-30" name="__codelineno-13-30"></a><span class="n">d</span> <span class="o">|</span> <span class="n">e</span> <span class="c1"># {'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}</span>
|
||
<a id="__codelineno-13-31" name="__codelineno-13-31"></a><span class="n">e</span> <span class="o">|</span> <span class="n">d</span> <span class="c1"># {'aardvark': 'Ethel', 'spam': 1, 'eggs': 2, 'cheese': 3}</span>
|
||
<a id="__codelineno-13-32" name="__codelineno-13-32"></a><span class="n">d</span> <span class="o">|=</span> <span class="n">e</span> <span class="c1"># {'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}</span>
|
||
<a id="__codelineno-13-33" name="__codelineno-13-33"></a>
|
||
<a id="__codelineno-13-34" name="__codelineno-13-34"></a><span class="c1"># NESTED DICTIONARIES (it is possible to nest dictionaries within dictionaries)</span>
|
||
<a id="__codelineno-13-35" name="__codelineno-13-35"></a><span class="n">my_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'key_1'</span><span class="p">:</span> <span class="mi">123</span><span class="p">,</span> <span class="s1">'key_2'</span><span class="p">:</span> <span class="p">[</span><span class="mi">12</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span class="mi">33</span><span class="p">],</span> <span class="s1">'key_3'</span><span class="p">:</span> <span class="p">[</span><span class="s1">'item_0'</span><span class="p">,</span> <span class="s1">'item_1'</span><span class="p">,</span> <span class="s1">'item_2'</span><span class="p">]}</span>
|
||
<a id="__codelineno-13-36" name="__codelineno-13-36"></a><span class="n">my_dict</span> <span class="p">[</span><span class="s1">'key'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># returns nested element</span>
|
||
<a id="__codelineno-13-37" name="__codelineno-13-37"></a>
|
||
<a id="__codelineno-13-38" name="__codelineno-13-38"></a><span class="c1"># DICT COMPREHENSIONS</span>
|
||
<a id="__codelineno-13-39" name="__codelineno-13-39"></a><span class="n">var</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">value</span> <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">}</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="operators">Operators</h2>
|
||
<h3 id="mathematical-operators">Mathematical Operators</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Operator</th>
|
||
<th>Operation</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>x <code>+</code> y</td>
|
||
<td>addition, string concatenation</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>-</code> y</td>
|
||
<td>subtraction</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>*</code> y</td>
|
||
<td>multiplication</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>*+</code> y</td>
|
||
<td>exponentiation</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>/</code> y</td>
|
||
<td>division (result always float)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>//</code> y</td>
|
||
<td>integer division</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>%</code> y</td>
|
||
<td>modulo, remainder</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3 id="relational-operators">Relational Operators</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Operator</th>
|
||
<th>Operation</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>x <code><</code> y</td>
|
||
<td>less than</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code><=</code> y</td>
|
||
<td>less or equal to</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>></code> y</td>
|
||
<td>greater than</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>>=</code> y</td>
|
||
<td>greater or equal to</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>==</code> y</td>
|
||
<td>equality</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>!=</code> y</td>
|
||
<td>inequality</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3 id="assignment">Assignment</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Operator</th>
|
||
<th>Operation</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>x <code>+=</code> y</td>
|
||
<td>x = x + y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>-=</code> y</td>
|
||
<td>x = x - y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>*=</code> y</td>
|
||
<td>x = x * y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>/=</code> y</td>
|
||
<td>x = x / y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>//=</code> y</td>
|
||
<td>x = x // y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>%=</code> y</td>
|
||
<td>x = x % y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code><<=</code> y</td>
|
||
<td>x = x << y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>>>=</code> y</td>
|
||
<td>x = x >> y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>&=</code> y</td>
|
||
<td>x = x & y</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>| =</code> y</td>
|
||
<td>x = x</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>^=</code> y</td>
|
||
<td>x = x ^ y</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3 id="bitwise-operators">Bitwise Operators</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Operator</th>
|
||
<th>Operation</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>~</code>x</td>
|
||
<td>bitwise NOT</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>&</code> y</td>
|
||
<td>bitwise AND</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>^</code> y</td>
|
||
<td>bitwise XOR</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>|</code> y</td>
|
||
<td>bitwise OR</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code><<</code> y</td>
|
||
<td>left bit shift</td>
|
||
</tr>
|
||
<tr>
|
||
<td>x <code>>></code> y</td>
|
||
<td>right bit shift</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3 id="logical-operators">Logical Operators</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Operator</th>
|
||
<th>Operation</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>and</code></td>
|
||
<td>logical AND</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>or</code></td>
|
||
<td>logical OR</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>not</code></td>
|
||
<td>logical NOT</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3 id="identity-operators">Identity Operators</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Operator</th>
|
||
<th>Operation</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>is</code></td>
|
||
<td>reference equality</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>is not</code></td>
|
||
<td>reference inequality</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3 id="membership-operators">Membership Operators</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Operator</th>
|
||
<th>Operation</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>in</code></td>
|
||
<td>item in collection</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>not in</code></td>
|
||
<td>item not in collection</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<h3 id="operator-precedence">OPerator Precedence</h3>
|
||
<ol>
|
||
<li>assignment operators <code>+=</code>, <code>-=</code>, <code>*=</code>, <code>/=</code>, <code>%=</code>, <code>**=</code>, <code>//=</code></li>
|
||
<li>binary arithmetic operators <code>*</code>, <code>/</code>, <code>%</code>, <code>//</code> (floor division)</li>
|
||
<li>binary arithmetic operators <code>+</code>, <code>-</code></li>
|
||
<li>boolean operators <code><</code>, <code>></code>, <code><=</code>, <code>>=</code></li>
|
||
<li>boolean operators <code>==</code>, <code>!=</code></li>
|
||
<li>boolean operator <code>and</code></li>
|
||
<li>boolean operator <code>or</code></li>
|
||
<li>boolean operator <code>not</code></li>
|
||
</ol>
|
||
<h2 id="conditional-statements">Conditional Statements</h2>
|
||
<p>Any object can be tested for truth value for use in an if or while condition or as operand of the Boolean operations.</p>
|
||
<p>built-in objects considered <em>false</em>:</p>
|
||
<ul>
|
||
<li>constants defined to be false: <code>None</code> and <code>False</code>.</li>
|
||
<li>zero of any numeric type: <code>0</code>, <code>0.0</code>, <code>0j</code>, <code>Decimal(0)</code>, <code>Fraction(0, 1)</code></li>
|
||
<li>empty sequences and collections: <code>''</code>, <code>()</code>, <code>[]</code>, <code>{}</code>, <code>set()</code>, <code>range(0)</code></li>
|
||
</ul>
|
||
<h3 id="if-else"><code>if-else</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-14-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-14-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-14-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-14-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-14-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-14-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1"></a><span class="k">if</span> <span class="p">(</span><span class="n">condition</span><span class="p">):</span>
|
||
<a id="__codelineno-14-2" name="__codelineno-14-2"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-14-3" name="__codelineno-14-3"></a><span class="k">elif</span> <span class="p">(</span><span class="n">condition</span><span class="p">):</span>
|
||
<a id="__codelineno-14-4" name="__codelineno-14-4"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-14-5" name="__codelineno-14-5"></a><span class="k">else</span><span class="p">:</span>
|
||
<a id="__codelineno-14-6" name="__codelineno-14-6"></a> <span class="c1"># code here</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="context-manager">Context Manager</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-15-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-15-14">14</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1"></a><span class="k">with</span> <span class="n">resource</span> <span class="k">as</span> <span class="n">target</span><span class="p">:</span>
|
||
<a id="__codelineno-15-2" name="__codelineno-15-2"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-15-3" name="__codelineno-15-3"></a>
|
||
<a id="__codelineno-15-4" name="__codelineno-15-4"></a><span class="c1"># start context manager and bind resource returned by method to target using as operator</span>
|
||
<a id="__codelineno-15-5" name="__codelineno-15-5"></a><span class="n">contextmanager</span><span class="o">.</span><span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-15-6" name="__codelineno-15-6"></a>
|
||
<a id="__codelineno-15-7" name="__codelineno-15-7"></a><span class="c1"># exit runtime context</span>
|
||
<a id="__codelineno-15-8" name="__codelineno-15-8"></a><span class="c1"># returns exc_type, exc_value, traceback</span>
|
||
<a id="__codelineno-15-9" name="__codelineno-15-9"></a><span class="n">contextmanager</span><span class="o">.</span><span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">)</span>
|
||
<a id="__codelineno-15-10" name="__codelineno-15-10"></a><span class="c1"># exc_type: exception class</span>
|
||
<a id="__codelineno-15-11" name="__codelineno-15-11"></a><span class="c1"># exc_value: exception instance</span>
|
||
<a id="__codelineno-15-12" name="__codelineno-15-12"></a><span class="c1"># traceback: traceback object</span>
|
||
<a id="__codelineno-15-13" name="__codelineno-15-13"></a><span class="c1"># NO EXCEPTION -> returns None, None, None</span>
|
||
<a id="__codelineno-15-14" name="__codelineno-15-14"></a><span class="c1"># SUPPRESSION EXCEPTION: Must return True value</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="loops">Loops</h2>
|
||
<h3 id="while"><code>while</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-16-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-16-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-16-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-16-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-16-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-16-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1"></a><span class="k">while</span><span class="p">(</span><span class="n">condition</span><span class="p">):</span>
|
||
<a id="__codelineno-16-2" name="__codelineno-16-2"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-16-3" name="__codelineno-16-3"></a><span class="k">else</span><span class="p">:</span>
|
||
<a id="__codelineno-16-4" name="__codelineno-16-4"></a> <span class="c1"># executed only if condition becomes False</span>
|
||
<a id="__codelineno-16-5" name="__codelineno-16-5"></a> <span class="c1"># break, continue, return in block while do not perform else block</span>
|
||
<a id="__codelineno-16-6" name="__codelineno-16-6"></a> <span class="c1"># code here</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="for"><code>for</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-17-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-17-12">12</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1"></a><span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">:</span> <span class="c1"># sequence can be a list, set, tuple, etc ..</span>
|
||
<a id="__codelineno-17-2" name="__codelineno-17-2"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-17-3" name="__codelineno-17-3"></a><span class="k">else</span><span class="p">:</span>
|
||
<a id="__codelineno-17-4" name="__codelineno-17-4"></a> <span class="c1"># executed only if for reaches the end of the loop</span>
|
||
<a id="__codelineno-17-5" name="__codelineno-17-5"></a> <span class="c1"># break, continue, return in block for do not perform else block</span>
|
||
<a id="__codelineno-17-6" name="__codelineno-17-6"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-17-7" name="__codelineno-17-7"></a>
|
||
<a id="__codelineno-17-8" name="__codelineno-17-8"></a><span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span> <span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">step</span><span class="p">):</span>
|
||
<a id="__codelineno-17-9" name="__codelineno-17-9"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-17-10" name="__codelineno-17-10"></a>
|
||
<a id="__codelineno-17-11" name="__codelineno-17-11"></a><span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">dict</span><span class="o">.</span><span class="n">items</span> <span class="p">():</span>
|
||
<a id="__codelineno-17-12" name="__codelineno-17-12"></a> <span class="c1"># code here</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="break-continue"><code>break</code> & <code>continue</code></h3>
|
||
<p><code>break</code>: causes the loop to exit immediately without executing subsequent iterations
|
||
<code>continue</code>: skip the remaining iteration statements and continue the loop</p>
|
||
<h3 id="range"><code>range</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-18-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-18-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1"></a><span class="nb">range</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">step</span><span class="p">)</span> <span class="c1"># generate sequence num integers (does not include num stops) with possible step</span>
|
||
<a id="__codelineno-18-2" name="__codelineno-18-2"></a><span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">step</span><span class="p">))</span> <span class="c1"># return sequence of integers in a list</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="enumerate"><code>enumerate</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-19-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-19-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1"></a><span class="nb">enumerate</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span> <span class="c1"># iterable of item & index pairs</span>
|
||
<a id="__codelineno-19-2" name="__codelineno-19-2"></a><span class="nb">list</span><span class="p">(</span><span class="nb">enumerate</span><span class="p">(</span><span class="n">iterable</span><span class="p">))</span> <span class="c1"># returns list of tuples [(1, iterable [0]), (2, iterable [1]), (3, iterable [2])]</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="zip"><code>zip</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-20-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-20-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-20-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-20-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-20-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1"></a><span class="n">list_1</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">]</span>
|
||
<a id="__codelineno-20-2" name="__codelineno-20-2"></a><span class="n">list_2</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">]</span>
|
||
<a id="__codelineno-20-3" name="__codelineno-20-3"></a>
|
||
<a id="__codelineno-20-4" name="__codelineno-20-4"></a><span class="nb">zip</span><span class="p">(</span><span class="n">list_1</span><span class="p">,</span> <span class="n">list_2</span><span class="p">)</span> <span class="c1"># return zip object</span>
|
||
<a id="__codelineno-20-5" name="__codelineno-20-5"></a><span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">list_1</span><span class="p">,</span> <span class="n">list_2</span><span class="p">))</span> <span class="c1"># returns list of tuples by merging list [(list_1 [0], list_2 [0]), (list_1 [1], list_2 [1]), ...]</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="shuffle-randint"><code>shuffle</code> & <code>randint</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-21-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-21-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-21-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1"></a><span class="kn">from</span> <span class="nn">random</span> <span class="kn">import</span> <span class="n">shuffle</span><span class="p">,</span> <span class="n">randint</span>
|
||
<a id="__codelineno-21-2" name="__codelineno-21-2"></a><span class="n">shuffle</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span> <span class="c1"># shuffle the list</span>
|
||
<a id="__codelineno-21-3" name="__codelineno-21-3"></a><span class="n">randint</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span> <span class="c1"># returns a random integer between start and end</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="in"><code>in</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-22-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1"></a><span class="n">item</span> <span class="ow">in</span> <span class="n">iterable</span> <span class="c1"># check for the presence of item in iterable (returns True or False)</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="functions">Functions</h2>
|
||
<h3 id="function-definition">Function Definition</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-23-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-23-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-23-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-23-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1"></a><span class="k">def</span> <span class="nf">function_name</span> <span class="p">(</span><span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-23-2" name="__codelineno-23-2"></a> <span class="s2">""</span> <span class="s2">"DOCSTRING"</span> <span class="s2">""</span>
|
||
<a id="__codelineno-23-3" name="__codelineno-23-3"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-23-4" name="__codelineno-23-4"></a> <span class="k">return</span> <span class="n">expression</span> <span class="c1"># if return id missing the function returns None</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="specify-type-parameters-in-functions">Specify Type Parameters In Functions</h3>
|
||
<ul>
|
||
<li>parameters before <code>/</code> can only be <em>positional</em></li>
|
||
<li>parameters between <code>/</code> and <code>*</code> can be <em>positional</em> or <em>keyworded</em></li>
|
||
<li>parameters after <code>*</code> can only be <em>keyworded</em></li>
|
||
</ul>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-24-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-24-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1"></a><span class="k">def</span> <span class="nf">func</span> <span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="o">/</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">f</span><span class="p">):</span>
|
||
<a id="__codelineno-24-2" name="__codelineno-24-2"></a> <span class="c1"># code here</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="docstring-style">Docstring Style</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-25-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-25-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1"></a><span class="sd">"""function description</span>
|
||
<a id="__codelineno-25-2" name="__codelineno-25-2"></a>
|
||
<a id="__codelineno-25-3" name="__codelineno-25-3"></a><span class="sd">Args:</span>
|
||
<a id="__codelineno-25-4" name="__codelineno-25-4"></a><span class="sd"> argument: Type - description of the parameter</span>
|
||
<a id="__codelineno-25-5" name="__codelineno-25-5"></a>
|
||
<a id="__codelineno-25-6" name="__codelineno-25-6"></a><span class="sd">Returns:</span>
|
||
<a id="__codelineno-25-7" name="__codelineno-25-7"></a><span class="sd"> Type - description of <expr></span>
|
||
<a id="__codelineno-25-8" name="__codelineno-25-8"></a>
|
||
<a id="__codelineno-25-9" name="__codelineno-25-9"></a><span class="sd">Raises:</span>
|
||
<a id="__codelineno-25-10" name="__codelineno-25-10"></a><span class="sd"> Exception: Cause of the exception</span>
|
||
<a id="__codelineno-25-11" name="__codelineno-25-11"></a><span class="sd">"""</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="args-kwargs"><em>args </em>*kwargs</h3>
|
||
<p><code>*args</code> allows the function to accept a variable number of parameters (parameters stored in a tuple)
|
||
<code>**kwargs</code> allows the function to accept a variable number of key-value parameters (parameters stored in a dictionary)</p>
|
||
<p>When used in combination <code>*args</code> always goes before<code>**kwargs</code> (in def function and in function call)</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-26-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-26-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1"></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||
<a id="__codelineno-26-2" name="__codelineno-26-2"></a> <span class="c1"># code here</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="function-with-default-parameters">Function with default parameters</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-27-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-27-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-27-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-27-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-27-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1"></a><span class="k">def</span> <span class="nf">function</span><span class="p">(</span><span class="n">parameter1</span> <span class="o">=</span> <span class="n">value1</span><span class="p">,</span> <span class="n">parameter2</span> <span class="o">=</span> <span class="n">value3</span><span class="p">):</span> <span class="c1"># default values in case of omitted use of arguments in the call</span>
|
||
<a id="__codelineno-27-2" name="__codelineno-27-2"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-27-3" name="__codelineno-27-3"></a> <span class="k">return</span> <span class="n">expression</span>
|
||
<a id="__codelineno-27-4" name="__codelineno-27-4"></a>
|
||
<a id="__codelineno-27-5" name="__codelineno-27-5"></a><span class="n">function</span><span class="p">(</span><span class="n">parameter2</span> <span class="o">=</span> <span class="n">value2</span><span class="p">,</span> <span class="n">parameter1</span> <span class="o">=</span> <span class="n">value1</span><span class="p">)</span> <span class="c1"># arguments passed with keyword to enforce the order of reference</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="global-and-local-variables">Global And Local Variables</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-28-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-28-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-28-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-28-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-28-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-28-6">6</a></span>
|
||
<span class="normal"><a href="#__codelineno-28-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1"></a><span class="c1"># global scope</span>
|
||
<a id="__codelineno-28-2" name="__codelineno-28-2"></a>
|
||
<a id="__codelineno-28-3" name="__codelineno-28-3"></a><span class="k">def</span> <span class="nf">external_func</span><span class="p">():</span>
|
||
<a id="__codelineno-28-4" name="__codelineno-28-4"></a> <span class="c1"># enclosing local scope</span>
|
||
<a id="__codelineno-28-5" name="__codelineno-28-5"></a>
|
||
<a id="__codelineno-28-6" name="__codelineno-28-6"></a> <span class="k">def</span> <span class="nf">internal_func</span><span class="p">():</span>
|
||
<a id="__codelineno-28-7" name="__codelineno-28-7"></a> <span class="c1"># local scope</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<p><strong>LEGB Rule</strong>:</p>
|
||
<ul>
|
||
<li><strong>L</strong> - <strong>Local</strong>: Names assigned in any way within a function (<code>def</code> or <code>lambda</code>), and not declared global in that function.</li>
|
||
<li><strong>E</strong> - <strong>Enclosing function locals</strong>: Names in the local scope of any and all enclosing functions (<code>def</code> or <code>lambda</code>), from inner to outer.</li>
|
||
<li><strong>G</strong> - <strong>Global</strong> (module): Names assigned at the top-level of a module file, or declared global in a def within the file.</li>
|
||
<li><strong>B</strong> - <strong>Built-in</strong> (Python): Names preassigned in the built-in names module : <code>open</code>, <code>range</code>, <code>SyntaxError</code>,...</li>
|
||
</ul>
|
||
<p><code>Note</code>: variables declared inside a function are not usable outside</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-29-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-29-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-29-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-29-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-29-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1"></a><span class="k">def</span> <span class="nf">function</span><span class="p">():</span>
|
||
<a id="__codelineno-29-2" name="__codelineno-29-2"></a> <span class="c1"># global statement makes a variable global</span>
|
||
<a id="__codelineno-29-3" name="__codelineno-29-3"></a> <span class="c1"># actions on global variable within the function also have an effect outside</span>
|
||
<a id="__codelineno-29-4" name="__codelineno-29-4"></a>
|
||
<a id="__codelineno-29-5" name="__codelineno-29-5"></a> <span class="k">global</span> <span class="n">variable</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="iterables-iterators-generators">Iterables, Iterators & Generators</h3>
|
||
<p><strong>Iterable</strong>: object implementing <code>__iter __()</code>, sequences and objects supporting <code>__getitem__</code> with index <code>0</code></p>
|
||
<p><strong>Iterator</strong>: object implementing <code>__next__</code> and <code>__iter__</code> (<strong>iterator protocol</strong>), when entirely consumed by <code>next()</code> it becomes unusable. Returns <code>StopIteration</code> when <code>next()</code> has returned all elements.</p>
|
||
<p><strong>Generator Function</strong>: function with keyword <code>yield</code> (if present also <code>return</code> causes <code>StopIteration</code>), returns a generator that produces the values one at a time.</p>
|
||
<p><strong>Generator Factory</strong>: generator returning function (may not contain <code>yield</code>).</p>
|
||
<p>Operation <code>iter()</code>:</p>
|
||
<ul>
|
||
<li>calls <code>__iter__()</code></li>
|
||
<li>in the absence of it python uses <code>__getitem__()</code> (if present) to create an iterator that tries to retrieve the items in order, starting from the index <code>0</code></li>
|
||
<li>on failure it returns <code>TypeError</code></li>
|
||
</ul>
|
||
<p><strong>Note</strong>: <code>abc.Iterable</code> does not check for the presence of <code>__getitem__</code> to decide if a sub-object is a member therefore the best test for iterability is to use <code>iter()</code> and handle exceptions.</p>
|
||
<h3 id="next-iter"><code>next()</code> & <code>iter()</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-30-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-30-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-30-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-30-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-30-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-30-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1"></a><span class="nb">next</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span> <span class="c1"># next item of the iterable or error StopIteration</span>
|
||
<a id="__codelineno-30-2" name="__codelineno-30-2"></a>
|
||
<a id="__codelineno-30-3" name="__codelineno-30-3"></a><span class="nb">iter</span><span class="p">(</span><span class="nb">object</span><span class="p">)</span> <span class="c1"># get an iterator from an object</span>
|
||
<a id="__codelineno-30-4" name="__codelineno-30-4"></a><span class="c1"># call callable_onj.next () with no arguments as long as it returns non-sentinel values</span>
|
||
<a id="__codelineno-30-5" name="__codelineno-30-5"></a>
|
||
<a id="__codelineno-30-6" name="__codelineno-30-6"></a><span class="nb">iter</span><span class="p">(</span><span class="n">callable_obj</span><span class="p">,</span> <span class="n">sentinel</span><span class="p">)</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="customs-generators">Customs Generators</h3>
|
||
<p>Used to generate a sequence of values to be used once (they are not stored)</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-31-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-31-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-31-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-31-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-31-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-31-6">6</a></span>
|
||
<span class="normal"><a href="#__codelineno-31-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1"></a><span class="k">def</span> <span class="nf">custom_generator</span><span class="p">(</span><span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-31-2" name="__codelineno-31-2"></a> <span class="k">while</span> <span class="n">condition</span><span class="p">:</span> <span class="c1"># or for loop</span>
|
||
<a id="__codelineno-31-3" name="__codelineno-31-3"></a> <span class="k">yield</span> <span class="n">variable</span> <span class="c1"># returns the value without terminating the function, values passed to the caller without storing in a variable</span>
|
||
<a id="__codelineno-31-4" name="__codelineno-31-4"></a>
|
||
<a id="__codelineno-31-5" name="__codelineno-31-5"></a><span class="c1"># generator implementation</span>
|
||
<a id="__codelineno-31-6" name="__codelineno-31-6"></a><span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">custom_generator</span><span class="p">(</span><span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-31-7" name="__codelineno-31-7"></a> <span class="c1"># code here</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="termination-generator-and-exception-handling">Termination Generator And Exception Handling</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-32-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-32-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-32-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-32-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-32-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-32-6">6</a></span>
|
||
<span class="normal"><a href="#__codelineno-32-7">7</a></span>
|
||
<span class="normal"><a href="#__codelineno-32-8">8</a></span>
|
||
<span class="normal"><a href="#__codelineno-32-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1"></a><span class="c1"># raise exception at the suspension point and return generator value</span>
|
||
<a id="__codelineno-32-2" name="__codelineno-32-2"></a><span class="c1"># if the generator terminates without returning values it raises StopIteration</span>
|
||
<a id="__codelineno-32-3" name="__codelineno-32-3"></a><span class="c1"># if an exception is not handled it is propagated to the caller</span>
|
||
<a id="__codelineno-32-4" name="__codelineno-32-4"></a><span class="n">generator</span><span class="o">.</span><span class="n">throw</span><span class="p">(</span><span class="n">ExceptionType</span><span class="p">,</span> <span class="n">exception_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">)</span>
|
||
<a id="__codelineno-32-5" name="__codelineno-32-5"></a>
|
||
<a id="__codelineno-32-6" name="__codelineno-32-6"></a><span class="c1"># raises GeneratorExit to the point of suspension</span>
|
||
<a id="__codelineno-32-7" name="__codelineno-32-7"></a><span class="c1"># if generator returns a value -> RuntimeError</span>
|
||
<a id="__codelineno-32-8" name="__codelineno-32-8"></a><span class="c1"># if an exception is raised it propagates to the caller</span>
|
||
<a id="__codelineno-32-9" name="__codelineno-32-9"></a><span class="n">generator</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="generator-comprehensions">Generator Comprehensions</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-33-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-33-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-33-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-33-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-33-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-33-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1"></a><span class="c1"># zero-length sequence (instantaneously generated values)</span>
|
||
<a id="__codelineno-33-2" name="__codelineno-33-2"></a><span class="n">var</span> <span class="o">=</span> <span class="p">(</span><span class="k">for</span> <span class="n">expression</span> <span class="n">iterable</span> <span class="ow">in</span> <span class="n">sequence</span> <span class="k">if</span> <span class="n">condition</span><span class="p">)</span>
|
||
<a id="__codelineno-33-3" name="__codelineno-33-3"></a><span class="c1"># EDUCATION ENUMERATE ()</span>
|
||
<a id="__codelineno-33-4" name="__codelineno-33-4"></a><span class="c1"># returns a list of tuples associating a position index to each element of the sequence</span>
|
||
<a id="__codelineno-33-5" name="__codelineno-33-5"></a><span class="c1"># [(0, sequence [0]), (1, sequence [1]), (2, sequence [2]), ...)</span>
|
||
<a id="__codelineno-33-6" name="__codelineno-33-6"></a><span class="nb">enumerate</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="c1"># -> enumerate object</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="coroutines">Coroutines</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-34-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-34">34</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-35">35</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-36">36</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-37">37</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-38">38</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-39">39</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-40">40</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-41">41</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-42">42</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-43">43</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-44">44</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-45">45</a></span>
|
||
<span class="normal"><a href="#__codelineno-34-46">46</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1"></a><span class="k">def</span> <span class="nf">simple_coroutine</span><span class="p">():</span>
|
||
<a id="__codelineno-34-2" name="__codelineno-34-2"></a><span class="w"> </span><span class="sd">"""coroutine defined as a generator: yield in block"""</span>
|
||
<a id="__codelineno-34-3" name="__codelineno-34-3"></a>
|
||
<a id="__codelineno-34-4" name="__codelineno-34-4"></a> <span class="c1"># yield in expression to receive data</span>
|
||
<a id="__codelineno-34-5" name="__codelineno-34-5"></a> <span class="c1"># returns None (no variables on the right of yield)</span>
|
||
<a id="__codelineno-34-6" name="__codelineno-34-6"></a> <span class="n">var</span> <span class="o">=</span> <span class="k">yield</span> <span class="n">value</span> <span class="c1"># returns value and then suspends coroutine waiting for input</span>
|
||
<a id="__codelineno-34-7" name="__codelineno-34-7"></a> <span class="c1"># instructions to the right of = executed before instructions to the left of =</span>
|
||
<a id="__codelineno-34-8" name="__codelineno-34-8"></a>
|
||
<a id="__codelineno-34-9" name="__codelineno-34-9"></a><span class="n">gen_obj</span> <span class="o">=</span> <span class="n">simple_coroutine</span><span class="p">()</span> <span class="c1"># returns generator object</span>
|
||
<a id="__codelineno-34-10" name="__codelineno-34-10"></a><span class="nb">next</span><span class="p">(</span><span class="n">gen_obj</span><span class="p">)</span> <span class="c1"># start coroutine (PRIMING)</span>
|
||
<a id="__codelineno-34-11" name="__codelineno-34-11"></a><span class="n">gen_obj</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> <span class="c1"># start coroutine (PRIMING)</span>
|
||
<a id="__codelineno-34-12" name="__codelineno-34-12"></a><span class="n">gen_obj</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="c1"># send value to the coroutine (only possible in suspended state)</span>
|
||
<a id="__codelineno-34-13" name="__codelineno-34-13"></a>
|
||
<a id="__codelineno-34-14" name="__codelineno-34-14"></a><span class="c1"># STATES OF COROUTINE</span>
|
||
<a id="__codelineno-34-15" name="__codelineno-34-15"></a><span class="n">inspect</span><span class="o">.</span><span class="n">generatorstate</span><span class="p">()</span> <span class="c1"># returns the status of the coroutine</span>
|
||
<a id="__codelineno-34-16" name="__codelineno-34-16"></a><span class="c1"># GEN_CREATED: waiting to start execution</span>
|
||
<a id="__codelineno-34-17" name="__codelineno-34-17"></a><span class="c1"># GEN_RUNNING: currently run by the interpreter (visible if multithreaded)</span>
|
||
<a id="__codelineno-34-18" name="__codelineno-34-18"></a><span class="c1"># GEN_SUSPENDED: currently suspended by yield statement</span>
|
||
<a id="__codelineno-34-19" name="__codelineno-34-19"></a><span class="c1"># GEN_CLOSED: execution completed successfully</span>
|
||
<a id="__codelineno-34-20" name="__codelineno-34-20"></a>
|
||
<a id="__codelineno-34-21" name="__codelineno-34-21"></a><span class="c1"># COROUTINE PRIMING</span>
|
||
<a id="__codelineno-34-22" name="__codelineno-34-22"></a><span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">wraps</span>
|
||
<a id="__codelineno-34-23" name="__codelineno-34-23"></a>
|
||
<a id="__codelineno-34-24" name="__codelineno-34-24"></a><span class="k">def</span> <span class="nf">coroutine</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
||
<a id="__codelineno-34-25" name="__codelineno-34-25"></a> <span class="s2">"Decorator: primes 'func' by advancing to first 'yield'"</span>
|
||
<a id="__codelineno-34-26" name="__codelineno-34-26"></a>
|
||
<a id="__codelineno-34-27" name="__codelineno-34-27"></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
|
||
<a id="__codelineno-34-28" name="__codelineno-34-28"></a> <span class="k">def</span> <span class="nf">primer</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||
<a id="__codelineno-34-29" name="__codelineno-34-29"></a> <span class="n">gen</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||
<a id="__codelineno-34-30" name="__codelineno-34-30"></a> <span class="nb">next</span><span class="p">(</span><span class="n">gen</span><span class="p">)</span>
|
||
<a id="__codelineno-34-31" name="__codelineno-34-31"></a> <span class="k">return</span> <span class="n">gen</span>
|
||
<a id="__codelineno-34-32" name="__codelineno-34-32"></a> <span class="k">return</span> <span class="n">primer</span>
|
||
<a id="__codelineno-34-33" name="__codelineno-34-33"></a>
|
||
<a id="__codelineno-34-34" name="__codelineno-34-34"></a><span class="c1"># COROUTINE TERMINATION AND EXCEPTION HANDLING</span>
|
||
<a id="__codelineno-34-35" name="__codelineno-34-35"></a><span class="c1"># exceptions in unhandled coroutines propagate to subsequent iterations</span>
|
||
<a id="__codelineno-34-36" name="__codelineno-34-36"></a><span class="c1"># an exception causes the coroutine to terminate which it cannot resume</span>
|
||
<a id="__codelineno-34-37" name="__codelineno-34-37"></a>
|
||
<a id="__codelineno-34-38" name="__codelineno-34-38"></a><span class="c1"># yield raises exception, if handled loop continues</span>
|
||
<a id="__codelineno-34-39" name="__codelineno-34-39"></a><span class="c1"># throw() returns value of the generator</span>
|
||
<a id="__codelineno-34-40" name="__codelineno-34-40"></a><span class="n">coroutine</span><span class="o">.</span><span class="n">throw</span><span class="p">(</span><span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">)</span>
|
||
<a id="__codelineno-34-41" name="__codelineno-34-41"></a>
|
||
<a id="__codelineno-34-42" name="__codelineno-34-42"></a><span class="c1"># yield raises GeneratorExit to the suspension point</span>
|
||
<a id="__codelineno-34-43" name="__codelineno-34-43"></a><span class="c1"># if the generator yields a value -> RuntimeError</span>
|
||
<a id="__codelineno-34-44" name="__codelineno-34-44"></a><span class="c1"># if there are other exceptions they are propagated to the caller</span>
|
||
<a id="__codelineno-34-45" name="__codelineno-34-45"></a><span class="n">coroutine</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||
<a id="__codelineno-34-46" name="__codelineno-34-46"></a><span class="c1"># coroutine state becomes GEN_CLOSED</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="yield-from-iterabile"><code>yield from <iterabile></code></h3>
|
||
<p><strong>Note</strong>: auto-priming generators incompatible with <code>yield from</code></p>
|
||
<p><strong>DELEGATING GENERATOR</strong>: generator function containing <code>yield from</code>
|
||
<strong>SUBGENERATOR</strong>: generator obtained from <code>yield from</code>
|
||
<strong>CALLER-CLIENT</strong>: code calling <em>delegating generator</em></p>
|
||
<p>The main function of <code>yield from</code> is to open a bidirectional channel between the external caller (<em>client</em>) and the internal <em>subgenerator</em> so that values and exceptions can pass between the two.</p>
|
||
<ol>
|
||
<li>client calls delegating generator, delegating generator calls subgenerator</li>
|
||
<li>exhausted subgenerator returns value to <code>yield from <expr></code> (<code>return <result></code> statement)</li>
|
||
<li>
|
||
<p>delegating generator returns <code><expr></code> to client</p>
|
||
</li>
|
||
<li>
|
||
<p>Any values that the subgenerator yields are passed directly to the caller of the delegating generator (i.e., the client code).</p>
|
||
</li>
|
||
<li>
|
||
<p>Any values sent to the delegating generator using <code>send()</code> are passed directly to the subgenerator.</p>
|
||
</li>
|
||
<li>If the sent value is <code>None</code>, the subgenerator's <code>__next__()</code> method is called.</li>
|
||
<li>If the sent value is not <code>None</code>, the subgenerator's <code>send()</code> method is called.</li>
|
||
<li>If the call raises <code>StopIteration</code>, the delegating generator is resumed.</li>
|
||
<li>
|
||
<p>Any other exception is propagated to the delegating generator.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>return <expr></code> in a generator (or subgenerator) causes <code>StopIteration(<expr>)</code> to be raised upon exit from the generator.</p>
|
||
</li>
|
||
<li>
|
||
<p>The value of the <code>yield from</code> expression is the first argument to the <code>StopIteration</code> exception raised by the subgenerator when it terminates.</p>
|
||
</li>
|
||
<li>
|
||
<p>Exceptions other than <code>GeneratorExit</code> thrown into the delegating generator are passed to the <code>throw()</code> method of the subgenerator.</p>
|
||
</li>
|
||
<li>If the call raises <code>StopIteration</code>, the delegating generator is resumed.</li>
|
||
<li>
|
||
<p>Any other exception is propagated to the delegating generator.</p>
|
||
</li>
|
||
<li>
|
||
<p>If a <code>GeneratorExit</code> exception is thrown into the delegating generator, or the <code>close()</code> method of the delegating generator is called, then the <code>close()</code> method of the subgenerator is called if it has one.</p>
|
||
</li>
|
||
<li>If this call results in an exception, it is propagated to the delegating generator.</li>
|
||
<li>Otherwise, <code>GeneratorExit</code> is raised in the delegating generator</li>
|
||
</ol>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-35-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-35-13">13</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1"></a><span class="k">def</span> <span class="nf">sub_gen</span><span class="p">():</span>
|
||
<a id="__codelineno-35-2" name="__codelineno-35-2"></a> <span class="n">sent_input</span> <span class="o">=</span> <span class="k">yield</span>
|
||
<a id="__codelineno-35-3" name="__codelineno-35-3"></a> <span class="c1"># result of sub_gen() returned to delegating_gen()</span>
|
||
<a id="__codelineno-35-4" name="__codelineno-35-4"></a> <span class="c1"># result of yield from <expr></span>
|
||
<a id="__codelineno-35-5" name="__codelineno-35-5"></a>
|
||
<a id="__codelineno-35-6" name="__codelineno-35-6"></a> <span class="k">return</span> <span class="n">result</span>
|
||
<a id="__codelineno-35-7" name="__codelineno-35-7"></a>
|
||
<a id="__codelineno-35-8" name="__codelineno-35-8"></a><span class="k">def</span> <span class="nf">delegating_gen</span><span class="p">(</span><span class="n">var</span><span class="p">):</span>
|
||
<a id="__codelineno-35-9" name="__codelineno-35-9"></a> <span class="n">var</span> <span class="o">=</span> <span class="k">yield from</span> <span class="n">sub_gen</span><span class="p">()</span> <span class="c1"># get values from sub_gen</span>
|
||
<a id="__codelineno-35-10" name="__codelineno-35-10"></a>
|
||
<a id="__codelineno-35-11" name="__codelineno-35-11"></a><span class="k">def</span> <span class="nf">client</span><span class="p">():</span>
|
||
<a id="__codelineno-35-12" name="__codelineno-35-12"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">delegating_gen</span><span class="p">()</span> <span class="c1"># use delegating_gen</span>
|
||
<a id="__codelineno-35-13" name="__codelineno-35-13"></a> <span class="n">result</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> <span class="c1"># terminate sub_gen instance (IMPORTANT)</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="lambda-functions">LAMBDA Functions</h2>
|
||
<p>Possible use within functions. Useful for replacing functions if the logic is simple.</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-36-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1"></a><span class="n">var</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">argument_list</span><span class="p">:</span> <span class="o"><</span><span class="n">expression</span><span class="o">></span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="object-oriented-programming">Object Oriented Programming</h2>
|
||
<h3 id="class-definition">Class Definition</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-37-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-37-24">24</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1"></a><span class="k">class</span> <span class="nc">Class</span><span class="p">:</span>
|
||
<a id="__codelineno-37-2" name="__codelineno-37-2"></a>
|
||
<a id="__codelineno-37-3" name="__codelineno-37-3"></a> <span class="n">static_var</span> <span class="o">=</span> <span class="n">expression</span>
|
||
<a id="__codelineno-37-4" name="__codelineno-37-4"></a>
|
||
<a id="__codelineno-37-5" name="__codelineno-37-5"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value_1</span><span class="p">,</span> <span class="n">value_2</span><span class="p">):</span> <span class="c1"># parameterized default constructor</span>
|
||
<a id="__codelineno-37-6" name="__codelineno-37-6"></a> <span class="bp">self</span><span class="o">.</span><span class="n">variable</span> <span class="o">=</span> <span class="n">value_1</span> <span class="c1"># create instance variables</span>
|
||
<a id="__codelineno-37-7" name="__codelineno-37-7"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__private</span> <span class="o">=</span> <span class="n">value_2</span> <span class="c1"># private, accessed via NAME MANGLING</span>
|
||
<a id="__codelineno-37-8" name="__codelineno-37-8"></a>
|
||
<a id="__codelineno-37-9" name="__codelineno-37-9"></a> <span class="k">def</span> <span class="nf">method</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-37-10" name="__codelineno-37-10"></a> <span class="o">...</span>
|
||
<a id="__codelineno-37-11" name="__codelineno-37-11"></a>
|
||
<a id="__codelineno-37-12" name="__codelineno-37-12"></a> <span class="nd">@staticmethod</span>
|
||
<a id="__codelineno-37-13" name="__codelineno-37-13"></a> <span class="k">def</span> <span class="nf">static_method</span><span class="p">(</span><span class="n">parameters</span><span class="p">):</span> <span class="c1"># static methods do not affect instance variables (SELF not needed)</span>
|
||
<a id="__codelineno-37-14" name="__codelineno-37-14"></a> <span class="o">...</span>
|
||
<a id="__codelineno-37-15" name="__codelineno-37-15"></a>
|
||
<a id="__codelineno-37-16" name="__codelineno-37-16"></a> <span class="nd">@classmethod</span> <span class="c1"># method acting on the class and not on the object (useful for alternative constructors)</span>
|
||
<a id="__codelineno-37-17" name="__codelineno-37-17"></a> <span class="k">def</span> <span class="nf">class_method</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-37-18" name="__codelineno-37-18"></a> <span class="o">...</span>
|
||
<a id="__codelineno-37-19" name="__codelineno-37-19"></a>
|
||
<a id="__codelineno-37-20" name="__codelineno-37-20"></a> <span class="nb">object</span> <span class="o">=</span> <span class="n">Class</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> <span class="c1"># creation of an object</span>
|
||
<a id="__codelineno-37-21" name="__codelineno-37-21"></a> <span class="nb">object</span><span class="o">.</span><span class="n">variable</span> <span class="o">=</span> <span class="n">expression</span> <span class="c1"># edit public variable</span>
|
||
<a id="__codelineno-37-22" name="__codelineno-37-22"></a> <span class="nb">object</span><span class="o">.</span><span class="n">method</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> <span class="c1"># invocation method of instance</span>
|
||
<a id="__codelineno-37-23" name="__codelineno-37-23"></a> <span class="nb">object</span><span class="o">.</span><span class="n">_Class__private</span> <span class="c1"># access to variable specifying the membership class (NAME MANGLING)</span>
|
||
<a id="__codelineno-37-24" name="__codelineno-37-24"></a> <span class="n">Class</span><span class="o">.</span><span class="n">method</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> <span class="c1"># static method invocation</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="setter-getter-with-property">Setter & Getter with <code>@Property</code></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-38-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-38-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1"></a><span class="k">class</span> <span class="nc">Class</span><span class="p">:</span>
|
||
<a id="__codelineno-38-2" name="__codelineno-38-2"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameter</span><span class="p">):</span>
|
||
<a id="__codelineno-38-3" name="__codelineno-38-3"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__parameter</span> <span class="o">=</span> <span class="n">parameter</span>
|
||
<a id="__codelineno-38-4" name="__codelineno-38-4"></a>
|
||
<a id="__codelineno-38-5" name="__codelineno-38-5"></a> <span class="nd">@property</span> <span class="c1"># getter</span>
|
||
<a id="__codelineno-38-6" name="__codelineno-38-6"></a> <span class="k">def</span> <span class="nf">parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-38-7" name="__codelineno-38-7"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__parameter</span>
|
||
<a id="__codelineno-38-8" name="__codelineno-38-8"></a>
|
||
<a id="__codelineno-38-9" name="__codelineno-38-9"></a> <span class="o">@<</span><span class="n">parameter</span><span class="o">>.</span><span class="n">setter</span>
|
||
<a id="__codelineno-38-10" name="__codelineno-38-10"></a> <span class="k">def</span> <span class="nf">parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||
<a id="__codelineno-38-11" name="__codelineno-38-11"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__parameter</span> <span class="o">=</span> <span class="n">value</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="__slots__"><code>__slots__</code></h3>
|
||
<p>The <code>__slots__</code> attribute implements the <strong>Flyweight Design Pattern</strong>: it saves the instance attributes in a tuple and can be used to decrease the cost in memory by inserting only the instance variables into it (suppress the instance dictionary).</p>
|
||
<p><strong>Default</strong>: attributes saved in a dictionary (<code>object .__ dict__</code>)
|
||
<strong>Usage</strong>: <code>__slots_ = [attributes]</code></p>
|
||
<p><code>__slots__</code> is not inherited by subclasses, it prevents dynamically adding attributes.</p>
|
||
<h3 id="inner-classes">Inner Classes</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-39-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-39-13">13</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1"></a><span class="k">class</span> <span class="nc">Class</span><span class="p">:</span>
|
||
<a id="__codelineno-39-2" name="__codelineno-39-2"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-39-3" name="__codelineno-39-3"></a> <span class="o">...</span>
|
||
<a id="__codelineno-39-4" name="__codelineno-39-4"></a>
|
||
<a id="__codelineno-39-5" name="__codelineno-39-5"></a> <span class="k">class</span> <span class="nc">InnerClass</span><span class="p">:</span>
|
||
<a id="__codelineno-39-6" name="__codelineno-39-6"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-39-7" name="__codelineno-39-7"></a> <span class="o">...</span>
|
||
<a id="__codelineno-39-8" name="__codelineno-39-8"></a>
|
||
<a id="__codelineno-39-9" name="__codelineno-39-9"></a> <span class="k">def</span> <span class="nf">method</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-39-10" name="__codelineno-39-10"></a> <span class="o">...</span>
|
||
<a id="__codelineno-39-11" name="__codelineno-39-11"></a>
|
||
<a id="__codelineno-39-12" name="__codelineno-39-12"></a><span class="n">object_1</span> <span class="o">=</span> <span class="n">Class</span><span class="p">(</span><span class="n">arguments</span><span class="p">)</span> <span class="c1"># create 'external' class</span>
|
||
<a id="__codelineno-39-13" name="__codelineno-39-13"></a><span class="n">object_2</span> <span class="o">=</span> <span class="n">Class</span><span class="o">.</span><span class="n">InnerClass</span><span class="p">(</span><span class="n">arguments</span><span class="p">)</span> <span class="c1"># inner class created as object of the 'external' class</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="special-methods">Special Methods</h3>
|
||
<p>Special methods are defined by the use of double underscores; they allow the use of specific functions (possibly adapted) on the objects defined by the class.</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-40-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-40-19">19</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1"></a><span class="k">class</span> <span class="nc">Class</span><span class="p">():</span>
|
||
<a id="__codelineno-40-2" name="__codelineno-40-2"></a>
|
||
<a id="__codelineno-40-3" name="__codelineno-40-3"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-40-4" name="__codelineno-40-4"></a> <span class="n">instructions</span>
|
||
<a id="__codelineno-40-5" name="__codelineno-40-5"></a>
|
||
<a id="__codelineno-40-6" name="__codelineno-40-6"></a> <span class="c1"># used by str() and print() method</span>
|
||
<a id="__codelineno-40-7" name="__codelineno-40-7"></a> <span class="c1"># handle requests for impersonation as a string</span>
|
||
<a id="__codelineno-40-8" name="__codelineno-40-8"></a> <span class="k">def</span> <span class="fm">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-40-9" name="__codelineno-40-9"></a> <span class="k">return</span> <span class="n">expression</span> <span class="c1"># return required</span>
|
||
<a id="__codelineno-40-10" name="__codelineno-40-10"></a>
|
||
<a id="__codelineno-40-11" name="__codelineno-40-11"></a> <span class="k">def</span> <span class="fm">__len__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-40-12" name="__codelineno-40-12"></a> <span class="k">return</span> <span class="n">expression</span> <span class="c1"># must return as len requires a length / size</span>
|
||
<a id="__codelineno-40-13" name="__codelineno-40-13"></a>
|
||
<a id="__codelineno-40-14" name="__codelineno-40-14"></a> <span class="k">def</span> <span class="fm">__del__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># delete the class instance</span>
|
||
<a id="__codelineno-40-15" name="__codelineno-40-15"></a> <span class="n">instruction</span> <span class="c1"># any instructions that occur on deletion</span>
|
||
<a id="__codelineno-40-16" name="__codelineno-40-16"></a>
|
||
<a id="__codelineno-40-17" name="__codelineno-40-17"></a><span class="nb">object</span> <span class="o">=</span> <span class="n">Class</span><span class="p">()</span>
|
||
<a id="__codelineno-40-18" name="__codelineno-40-18"></a><span class="nb">len</span><span class="p">(</span><span class="nb">object</span><span class="p">)</span> <span class="c1"># special function applied to an object</span>
|
||
<a id="__codelineno-40-19" name="__codelineno-40-19"></a><span class="k">del</span> <span class="nb">object</span> <span class="c1"># delete object</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h4 id="special-methods-list">Special Methods List</h4>
|
||
<p><strong>Note</strong>: if the operator cannot be applied, returns <code>NotImplemented</code></p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-41-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-10"> 10</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-11"> 11</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-12"> 12</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-13"> 13</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-14"> 14</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-15"> 15</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-16"> 16</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-17"> 17</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-18"> 18</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-19"> 19</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-20"> 20</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-21"> 21</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-22"> 22</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-23"> 23</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-24"> 24</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-25"> 25</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-26"> 26</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-27"> 27</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-28"> 28</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-29"> 29</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-30"> 30</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-31"> 31</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-32"> 32</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-33"> 33</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-34"> 34</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-35"> 35</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-36"> 36</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-37"> 37</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-38"> 38</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-39"> 39</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-40"> 40</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-41"> 41</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-42"> 42</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-43"> 43</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-44"> 44</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-45"> 45</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-46"> 46</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-47"> 47</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-48"> 48</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-49"> 49</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-50"> 50</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-51"> 51</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-52"> 52</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-53"> 53</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-54"> 54</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-55"> 55</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-56"> 56</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-57"> 57</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-58"> 58</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-59"> 59</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-60"> 60</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-61"> 61</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-62"> 62</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-63"> 63</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-64"> 64</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-65"> 65</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-66"> 66</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-67"> 67</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-68"> 68</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-69"> 69</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-70"> 70</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-71"> 71</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-72"> 72</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-73"> 73</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-74"> 74</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-75"> 75</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-76"> 76</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-77"> 77</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-78"> 78</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-79"> 79</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-80"> 80</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-81"> 81</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-82"> 82</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-83"> 83</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-84"> 84</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-85"> 85</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-86"> 86</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-87"> 87</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-88"> 88</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-89"> 89</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-90"> 90</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-91"> 91</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-92"> 92</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-93"> 93</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-94"> 94</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-95"> 95</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-96"> 96</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-97"> 97</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-98"> 98</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-99"> 99</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-100">100</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-101">101</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-102">102</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-103">103</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-104">104</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-105">105</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-106">106</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-107">107</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-108">108</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-109">109</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-110">110</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-111">111</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-112">112</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-113">113</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-114">114</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-115">115</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-116">116</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-117">117</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-118">118</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-119">119</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-120">120</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-121">121</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-122">122</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-123">123</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-124">124</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-125">125</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-126">126</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-127">127</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-128">128</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-129">129</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-130">130</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-131">131</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-132">132</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-133">133</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-134">134</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-135">135</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-136">136</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-137">137</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-138">138</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-139">139</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-140">140</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-141">141</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-142">142</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-143">143</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-144">144</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-145">145</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-146">146</a></span>
|
||
<span class="normal"><a href="#__codelineno-41-147">147</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1"></a><span class="c1"># arithmetic operators</span>
|
||
<a id="__codelineno-41-2" name="__codelineno-41-2"></a><span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># +</span>
|
||
<a id="__codelineno-41-3" name="__codelineno-41-3"></a><span class="fm">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># -</span>
|
||
<a id="__codelineno-41-4" name="__codelineno-41-4"></a><span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># *</span>
|
||
<a id="__codelineno-41-5" name="__codelineno-41-5"></a><span class="fm">__matmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># (@) matrix multiplication</span>
|
||
<a id="__codelineno-41-6" name="__codelineno-41-6"></a><span class="fm">__truediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># /</span>
|
||
<a id="__codelineno-41-7" name="__codelineno-41-7"></a><span class="fm">__floordiv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># //</span>
|
||
<a id="__codelineno-41-8" name="__codelineno-41-8"></a><span class="fm">__mod__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># %</span>
|
||
<a id="__codelineno-41-9" name="__codelineno-41-9"></a><span class="fm">__divmod__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># divmod()</span>
|
||
<a id="__codelineno-41-10" name="__codelineno-41-10"></a><span class="fm">__pow__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># **, pow()</span>
|
||
<a id="__codelineno-41-11" name="__codelineno-41-11"></a><span class="fm">__lshift__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># <<</span>
|
||
<a id="__codelineno-41-12" name="__codelineno-41-12"></a><span class="fm">__rshift__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># >></span>
|
||
<a id="__codelineno-41-13" name="__codelineno-41-13"></a><span class="fm">__and__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># &</span>
|
||
<a id="__codelineno-41-14" name="__codelineno-41-14"></a><span class="fm">__xor__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># ^</span>
|
||
<a id="__codelineno-41-15" name="__codelineno-41-15"></a><span class="fm">__or__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># |</span>
|
||
<a id="__codelineno-41-16" name="__codelineno-41-16"></a>
|
||
<a id="__codelineno-41-17" name="__codelineno-41-17"></a><span class="c1"># reflex arithmetic operators</span>
|
||
<a id="__codelineno-41-18" name="__codelineno-41-18"></a><span class="c1"># if self.__ dunder __(other) fails, other.__ dunder__(self) is called</span>
|
||
<a id="__codelineno-41-19" name="__codelineno-41-19"></a><span class="fm">__radd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse +</span>
|
||
<a id="__codelineno-41-20" name="__codelineno-41-20"></a><span class="fm">__rsub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse -</span>
|
||
<a id="__codelineno-41-21" name="__codelineno-41-21"></a><span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse *</span>
|
||
<a id="__codelineno-41-22" name="__codelineno-41-22"></a><span class="fm">__rmatmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse @</span>
|
||
<a id="__codelineno-41-23" name="__codelineno-41-23"></a><span class="fm">__rtruediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse /</span>
|
||
<a id="__codelineno-41-24" name="__codelineno-41-24"></a><span class="fm">__rfloordiv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse //</span>
|
||
<a id="__codelineno-41-25" name="__codelineno-41-25"></a><span class="fm">__rmod__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse %</span>
|
||
<a id="__codelineno-41-26" name="__codelineno-41-26"></a><span class="fm">__rdivmod__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse divmod()</span>
|
||
<a id="__codelineno-41-27" name="__codelineno-41-27"></a><span class="fm">__rpow__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse **, pow()</span>
|
||
<a id="__codelineno-41-28" name="__codelineno-41-28"></a><span class="fm">__rlshift__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse <<</span>
|
||
<a id="__codelineno-41-29" name="__codelineno-41-29"></a><span class="fm">__rrshift__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse >></span>
|
||
<a id="__codelineno-41-30" name="__codelineno-41-30"></a><span class="fm">__rand__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse &</span>
|
||
<a id="__codelineno-41-31" name="__codelineno-41-31"></a><span class="fm">__rxor__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse ^</span>
|
||
<a id="__codelineno-41-32" name="__codelineno-41-32"></a><span class="fm">__ror__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># reverse |</span>
|
||
<a id="__codelineno-41-33" name="__codelineno-41-33"></a>
|
||
<a id="__codelineno-41-34" name="__codelineno-41-34"></a><span class="c1"># in-place arithmetic operators</span>
|
||
<a id="__codelineno-41-35" name="__codelineno-41-35"></a><span class="c1"># base implementation (built-in) like self = self <operator> other</span>
|
||
<a id="__codelineno-41-36" name="__codelineno-41-36"></a><span class="c1">#! not to be implemented for immutable objects!</span>
|
||
<a id="__codelineno-41-37" name="__codelineno-41-37"></a><span class="c1">#! in-place operators return self!</span>
|
||
<a id="__codelineno-41-38" name="__codelineno-41-38"></a><span class="fm">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># +=</span>
|
||
<a id="__codelineno-41-39" name="__codelineno-41-39"></a><span class="fm">__isub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># -=</span>
|
||
<a id="__codelineno-41-40" name="__codelineno-41-40"></a><span class="fm">__imul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># *=</span>
|
||
<a id="__codelineno-41-41" name="__codelineno-41-41"></a><span class="fm">__imatmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># @=</span>
|
||
<a id="__codelineno-41-42" name="__codelineno-41-42"></a><span class="fm">__itruediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># /=</span>
|
||
<a id="__codelineno-41-43" name="__codelineno-41-43"></a><span class="fm">__ifloordiv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># //=</span>
|
||
<a id="__codelineno-41-44" name="__codelineno-41-44"></a><span class="fm">__imod__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># %=</span>
|
||
<a id="__codelineno-41-45" name="__codelineno-41-45"></a><span class="fm">__ipow__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># **=</span>
|
||
<a id="__codelineno-41-46" name="__codelineno-41-46"></a><span class="fm">__ilshift__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># <<=</span>
|
||
<a id="__codelineno-41-47" name="__codelineno-41-47"></a><span class="fm">__irshift__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># >>=</span>
|
||
<a id="__codelineno-41-48" name="__codelineno-41-48"></a><span class="fm">__iand__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># &=</span>
|
||
<a id="__codelineno-41-49" name="__codelineno-41-49"></a><span class="fm">__ixor__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># ^=</span>
|
||
<a id="__codelineno-41-50" name="__codelineno-41-50"></a><span class="fm">__ior__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="c1"># |=</span>
|
||
<a id="__codelineno-41-51" name="__codelineno-41-51"></a>
|
||
<a id="__codelineno-41-52" name="__codelineno-41-52"></a><span class="c1"># unary mathematical operators (-, +, abs (), ~)</span>
|
||
<a id="__codelineno-41-53" name="__codelineno-41-53"></a><span class="fm">__neg__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># (-) negazione matematica unaria [if x = 2 then -x = 2]</span>
|
||
<a id="__codelineno-41-54" name="__codelineno-41-54"></a><span class="fm">__pos__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># (+) addizione unaria [x = +x]</span>
|
||
<a id="__codelineno-41-55" name="__codelineno-41-55"></a><span class="fm">__abs__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># [abs()] valore assoluto [|-x| = x]</span>
|
||
<a id="__codelineno-41-56" name="__codelineno-41-56"></a><span class="fm">__invert__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># (~) inversione binaria di un intero [~x == -(x + 1)]</span>
|
||
<a id="__codelineno-41-57" name="__codelineno-41-57"></a>
|
||
<a id="__codelineno-41-58" name="__codelineno-41-58"></a><span class="c1"># numeric type conversion</span>
|
||
<a id="__codelineno-41-59" name="__codelineno-41-59"></a><span class="fm">__complex__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-60" name="__codelineno-41-60"></a><span class="fm">__int__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># if not defined fall-back on __trunc__()</span>
|
||
<a id="__codelineno-41-61" name="__codelineno-41-61"></a><span class="fm">__float__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-62" name="__codelineno-41-62"></a><span class="fm">__index__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># conversion in bin(), hex(), oct() e slicing</span>
|
||
<a id="__codelineno-41-63" name="__codelineno-41-63"></a>
|
||
<a id="__codelineno-41-64" name="__codelineno-41-64"></a><span class="c1"># operations round() math.trunc(), math.floor(), math.ceil()</span>
|
||
<a id="__codelineno-41-65" name="__codelineno-41-65"></a><span class="fm">__round__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-66" name="__codelineno-41-66"></a><span class="n">__trunc__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-67" name="__codelineno-41-67"></a><span class="n">__floor__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-68" name="__codelineno-41-68"></a><span class="n">__ceil__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-69" name="__codelineno-41-69"></a>
|
||
<a id="__codelineno-41-70" name="__codelineno-41-70"></a><span class="c1"># equality operators</span>
|
||
<a id="__codelineno-41-71" name="__codelineno-41-71"></a><span class="bp">self</span><span class="o">.</span><span class="fm">__eq__</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="c1"># self == other</span>
|
||
<a id="__codelineno-41-72" name="__codelineno-41-72"></a><span class="bp">self</span><span class="o">.</span><span class="fm">__ne__</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="c1"># self != other</span>
|
||
<a id="__codelineno-41-73" name="__codelineno-41-73"></a><span class="bp">self</span><span class="o">.</span><span class="fm">__gt__</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="c1"># self > other</span>
|
||
<a id="__codelineno-41-74" name="__codelineno-41-74"></a><span class="bp">self</span><span class="o">.</span><span class="fm">__ge__</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="c1"># self >= other</span>
|
||
<a id="__codelineno-41-75" name="__codelineno-41-75"></a><span class="bp">self</span><span class="o">.</span><span class="fm">__lt__</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="c1"># self < other</span>
|
||
<a id="__codelineno-41-76" name="__codelineno-41-76"></a><span class="bp">self</span><span class="o">.</span><span class="fm">__le__</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="c1"># self <= other</span>
|
||
<a id="__codelineno-41-77" name="__codelineno-41-77"></a>
|
||
<a id="__codelineno-41-78" name="__codelineno-41-78"></a><span class="c1"># reflected equality operators</span>
|
||
<a id="__codelineno-41-79" name="__codelineno-41-79"></a><span class="n">other</span><span class="o">.</span><span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># other == self, fall-back id(self) == id(other)</span>
|
||
<a id="__codelineno-41-80" name="__codelineno-41-80"></a><span class="n">other</span><span class="o">.</span><span class="fm">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># other != self, fall-back not (self == other)</span>
|
||
<a id="__codelineno-41-81" name="__codelineno-41-81"></a><span class="n">other</span><span class="o">.</span><span class="fm">__gt__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># reverse self < other, fall-back TypeError</span>
|
||
<a id="__codelineno-41-82" name="__codelineno-41-82"></a><span class="n">other</span><span class="o">.</span><span class="fm">__ge__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># reverse self <= other, fall-back TypeError</span>
|
||
<a id="__codelineno-41-83" name="__codelineno-41-83"></a><span class="n">other</span><span class="o">.</span><span class="fm">__lt__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># reverse self > other, fall-back TypeError</span>
|
||
<a id="__codelineno-41-84" name="__codelineno-41-84"></a><span class="n">other</span><span class="o">.</span><span class="fm">__le__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="c1"># reverse self >= other, fall-back TypeError</span>
|
||
<a id="__codelineno-41-85" name="__codelineno-41-85"></a>
|
||
<a id="__codelineno-41-86" name="__codelineno-41-86"></a><span class="c1"># called when the instance is "called" as a function</span>
|
||
<a id="__codelineno-41-87" name="__codelineno-41-87"></a><span class="c1"># x (arg1, arg2, arg3) is short for x .__ call __ (arg1, arg2, arg3)</span>
|
||
<a id="__codelineno-41-88" name="__codelineno-41-88"></a><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span>
|
||
<a id="__codelineno-41-89" name="__codelineno-41-89"></a>
|
||
<a id="__codelineno-41-90" name="__codelineno-41-90"></a><span class="c1"># string object representation for the developer</span>
|
||
<a id="__codelineno-41-91" name="__codelineno-41-91"></a><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-92" name="__codelineno-41-92"></a>
|
||
<a id="__codelineno-41-93" name="__codelineno-41-93"></a><span class="c1"># string object representation for user (used by print)</span>
|
||
<a id="__codelineno-41-94" name="__codelineno-41-94"></a><span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-95" name="__codelineno-41-95"></a>
|
||
<a id="__codelineno-41-96" name="__codelineno-41-96"></a><span class="c1"># specify formatting for format ), str.format() [format_spec = format-mini-language]</span>
|
||
<a id="__codelineno-41-97" name="__codelineno-41-97"></a><span class="fm">__format__</span><span class="p">(</span><span class="n">format_spec</span><span class="p">)</span>
|
||
<a id="__codelineno-41-98" name="__codelineno-41-98"></a>
|
||
<a id="__codelineno-41-99" name="__codelineno-41-99"></a><span class="c1"># returns unique (integer) value for objects that have equal value</span>
|
||
<a id="__codelineno-41-100" name="__codelineno-41-100"></a><span class="c1"># __EQ__ MUST EXIST IN THE CLASS, usually hash((self.param_1, self.param_2, ...))</span>
|
||
<a id="__codelineno-41-101" name="__codelineno-41-101"></a><span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-102" name="__codelineno-41-102"></a>
|
||
<a id="__codelineno-41-103" name="__codelineno-41-103"></a><span class="c1"># makes object iterable:</span>
|
||
<a id="__codelineno-41-104" name="__codelineno-41-104"></a><span class="c1"># - returning self (in the iterator)</span>
|
||
<a id="__codelineno-41-105" name="__codelineno-41-105"></a><span class="c1"># - returning an iterator (in the iterable)</span>
|
||
<a id="__codelineno-41-106" name="__codelineno-41-106"></a><span class="c1"># - using yield (in the __iter__ generator)</span>
|
||
<a id="__codelineno-41-107" name="__codelineno-41-107"></a><span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-108" name="__codelineno-41-108"></a>
|
||
<a id="__codelineno-41-109" name="__codelineno-41-109"></a><span class="c1"># returns next available element, StopIteration otherwise (iterator scrolls)</span>
|
||
<a id="__codelineno-41-110" name="__codelineno-41-110"></a><span class="fm">__next__</span><span class="p">()</span>
|
||
<a id="__codelineno-41-111" name="__codelineno-41-111"></a>
|
||
<a id="__codelineno-41-112" name="__codelineno-41-112"></a><span class="c1"># returns truth value</span>
|
||
<a id="__codelineno-41-113" name="__codelineno-41-113"></a><span class="fm">__bool__</span><span class="p">()</span>
|
||
<a id="__codelineno-41-114" name="__codelineno-41-114"></a>
|
||
<a id="__codelineno-41-115" name="__codelineno-41-115"></a><span class="c1"># returns item associated with key of a sequence (self [key])</span>
|
||
<a id="__codelineno-41-116" name="__codelineno-41-116"></a><span class="c1"># IndexError if key is not appropriate</span>
|
||
<a id="__codelineno-41-117" name="__codelineno-41-117"></a><span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>
|
||
<a id="__codelineno-41-118" name="__codelineno-41-118"></a>
|
||
<a id="__codelineno-41-119" name="__codelineno-41-119"></a><span class="c1"># item assignment operation in sequence (self [key] = value)</span>
|
||
<a id="__codelineno-41-120" name="__codelineno-41-120"></a><span class="c1"># IndexError if key is not appropriate</span>
|
||
<a id="__codelineno-41-121" name="__codelineno-41-121"></a><span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||
<a id="__codelineno-41-122" name="__codelineno-41-122"></a>
|
||
<a id="__codelineno-41-123" name="__codelineno-41-123"></a><span class="c1"># operation deleting item in sequence (del self [key])</span>
|
||
<a id="__codelineno-41-124" name="__codelineno-41-124"></a><span class="c1"># IndexError if key is not appropriate</span>
|
||
<a id="__codelineno-41-125" name="__codelineno-41-125"></a><span class="fm">__delitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>
|
||
<a id="__codelineno-41-126" name="__codelineno-41-126"></a>
|
||
<a id="__codelineno-41-127" name="__codelineno-41-127"></a><span class="c1"># called by dict.__getitem__() to implement self [key] if key is not in the dictionary</span>
|
||
<a id="__codelineno-41-128" name="__codelineno-41-128"></a><span class="fm">__missing__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>
|
||
<a id="__codelineno-41-129" name="__codelineno-41-129"></a>
|
||
<a id="__codelineno-41-130" name="__codelineno-41-130"></a><span class="c1"># implement container iteration</span>
|
||
<a id="__codelineno-41-131" name="__codelineno-41-131"></a><span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||
<a id="__codelineno-41-132" name="__codelineno-41-132"></a>
|
||
<a id="__codelineno-41-133" name="__codelineno-41-133"></a><span class="c1"># implement membership test</span>
|
||
<a id="__codelineno-41-134" name="__codelineno-41-134"></a><span class="fm">__contains__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span>
|
||
<a id="__codelineno-41-135" name="__codelineno-41-135"></a>
|
||
<a id="__codelineno-41-136" name="__codelineno-41-136"></a><span class="c1"># implementation issublass (instance, class)</span>
|
||
<a id="__codelineno-41-137" name="__codelineno-41-137"></a><span class="fm">__instancecheck__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">)</span>
|
||
<a id="__codelineno-41-138" name="__codelineno-41-138"></a>
|
||
<a id="__codelineno-41-139" name="__codelineno-41-139"></a><span class="c1"># implementation issubclass (subclass, class)</span>
|
||
<a id="__codelineno-41-140" name="__codelineno-41-140"></a><span class="fm">__subclasscheck__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subclass</span><span class="p">)</span>
|
||
<a id="__codelineno-41-141" name="__codelineno-41-141"></a>
|
||
<a id="__codelineno-41-142" name="__codelineno-41-142"></a><span class="c1"># implement attribute access (obj.name)</span>
|
||
<a id="__codelineno-41-143" name="__codelineno-41-143"></a><span class="c1"># called if AttributeError happens or if called by __getattribute __()</span>
|
||
<a id="__codelineno-41-144" name="__codelineno-41-144"></a><span class="fm">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||
<a id="__codelineno-41-145" name="__codelineno-41-145"></a>
|
||
<a id="__codelineno-41-146" name="__codelineno-41-146"></a><span class="c1"># implement value assignment to attribute (obj.name = value)</span>
|
||
<a id="__codelineno-41-147" name="__codelineno-41-147"></a><span class="fm">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<p><strong>Note</strong>: Itearbility is tricky.</p>
|
||
<p>To make an object directly iterable (<code>for i in object</code>) <code>__iter__()</code> and <code>__next__()</code> are needed.
|
||
To make an iterable through an index (<code>for i in range(len(object)): object[i]</code>) <code>__getitem()__</code> is needed.</p>
|
||
<p>Some of the mixin methods, such as <code>__iter__()</code>, <code>__reversed__()</code> and <code>index()</code>, make repeated calls to the underlying <code>__getitem__()</code> method.
|
||
Consequently, if <code>__getitem__()</code> is implemented with constant access speed, the mixin methods will have linear performance;
|
||
however, if the underlying method is linear (as it would be with a linked list), the mixins will have quadratic performance and will likely need to be overridden.</p>
|
||
<h3 id="inheritance">Inheritance</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-42-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-42-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-42-1" name="__codelineno-42-1"></a><span class="k">class</span> <span class="nc">Parent</span> <span class="p">():</span>
|
||
<a id="__codelineno-42-2" name="__codelineno-42-2"></a> <span class="k">def</span> <span class="nf">__init</span> <span class="n">__</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-42-3" name="__codelineno-42-3"></a> <span class="o">...</span>
|
||
<a id="__codelineno-42-4" name="__codelineno-42-4"></a>
|
||
<a id="__codelineno-42-5" name="__codelineno-42-5"></a> <span class="k">def</span> <span class="nf">method_1</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-42-6" name="__codelineno-42-6"></a> <span class="o">...</span>
|
||
<a id="__codelineno-42-7" name="__codelineno-42-7"></a>
|
||
<a id="__codelineno-42-8" name="__codelineno-42-8"></a> <span class="k">def</span> <span class="nf">method_2</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-42-9" name="__codelineno-42-9"></a> <span class="o">...</span>
|
||
<a id="__codelineno-42-10" name="__codelineno-42-10"></a>
|
||
<a id="__codelineno-42-11" name="__codelineno-42-11"></a><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Parent</span><span class="p">):</span> <span class="c1"># parent class in parentheses to inherit variables and methods</span>
|
||
<a id="__codelineno-42-12" name="__codelineno-42-12"></a>
|
||
<a id="__codelineno-42-13" name="__codelineno-42-13"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">parent_parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-42-14" name="__codelineno-42-14"></a> <span class="n">Parent</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent_parameters</span><span class="p">)</span> <span class="c1"># inherit parent variables</span>
|
||
<a id="__codelineno-42-15" name="__codelineno-42-15"></a> <span class="o">...</span>
|
||
<a id="__codelineno-42-16" name="__codelineno-42-16"></a>
|
||
<a id="__codelineno-42-17" name="__codelineno-42-17"></a> <span class="k">def</span> <span class="nf">method</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-42-18" name="__codelineno-42-18"></a> <span class="o">...</span>
|
||
<a id="__codelineno-42-19" name="__codelineno-42-19"></a>
|
||
<a id="__codelineno-42-20" name="__codelineno-42-20"></a> <span class="k">def</span> <span class="nf">method_parent_1</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># override method (child class with homonymous method to parent class)</span>
|
||
<a id="__codelineno-42-21" name="__codelineno-42-21"></a> <span class="o">...</span>
|
||
<a id="__codelineno-42-22" name="__codelineno-42-22"></a>
|
||
<a id="__codelineno-42-23" name="__codelineno-42-23"></a><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Parent</span><span class="p">):</span> <span class="c1"># parent class in brackets to inherit properties</span>
|
||
<a id="__codelineno-42-24" name="__codelineno-42-24"></a>
|
||
<a id="__codelineno-42-25" name="__codelineno-42-25"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">parent_parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-42-26" name="__codelineno-42-26"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent_parameters</span><span class="p">)</span> <span class="c1"># different method to inherit parent variables (SELF not needed) using SUPER()</span>
|
||
<a id="__codelineno-42-27" name="__codelineno-42-27"></a> <span class="nb">super</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">parent_parameters</span><span class="p">)</span> <span class="c1"># parent constructor invoked separately</span>
|
||
<a id="__codelineno-42-28" name="__codelineno-42-28"></a>
|
||
<a id="__codelineno-42-29" name="__codelineno-42-29"></a> <span class="k">def</span> <span class="nf">method</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-42-30" name="__codelineno-42-30"></a> <span class="o">...</span>
|
||
<a id="__codelineno-42-31" name="__codelineno-42-31"></a>
|
||
<a id="__codelineno-42-32" name="__codelineno-42-32"></a> <span class="k">def</span> <span class="nf">method_2</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># parent method updated</span>
|
||
<a id="__codelineno-42-33" name="__codelineno-42-33"></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">method_2</span><span class="p">()</span> <span class="c1"># invoke parent method as is</span>
|
||
<a id="__codelineno-42-34" name="__codelineno-42-34"></a> <span class="o">...</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="polymorphism">Polymorphism</h3>
|
||
<p><strong>Note</strong>: python does not support method overloading</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-43-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-43-23">23</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-43-1" name="__codelineno-43-1"></a><span class="c1"># DUCKTYPING</span>
|
||
<a id="__codelineno-43-2" name="__codelineno-43-2"></a><span class="c1"># Working with objects regardless of their type, as long as they implement certain protocols</span>
|
||
<a id="__codelineno-43-3" name="__codelineno-43-3"></a>
|
||
<a id="__codelineno-43-4" name="__codelineno-43-4"></a><span class="k">class</span> <span class="nc">Class1</span><span class="p">:</span>
|
||
<a id="__codelineno-43-5" name="__codelineno-43-5"></a> <span class="k">def</span> <span class="nf">method_1</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-43-6" name="__codelineno-43-6"></a> <span class="o">...</span>
|
||
<a id="__codelineno-43-7" name="__codelineno-43-7"></a>
|
||
<a id="__codelineno-43-8" name="__codelineno-43-8"></a><span class="k">class</span> <span class="nc">Class2</span><span class="p">:</span>
|
||
<a id="__codelineno-43-9" name="__codelineno-43-9"></a> <span class="k">def</span> <span class="nf">method_1</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-43-10" name="__codelineno-43-10"></a> <span class="o">...</span>
|
||
<a id="__codelineno-43-11" name="__codelineno-43-11"></a>
|
||
<a id="__codelineno-43-12" name="__codelineno-43-12"></a><span class="c1"># since python is a dynamic language it doesn't matter what type (class) the object passed is</span>
|
||
<a id="__codelineno-43-13" name="__codelineno-43-13"></a><span class="c1"># the function invokes the object method passed regardless of the object class</span>
|
||
<a id="__codelineno-43-14" name="__codelineno-43-14"></a><span class="k">def</span> <span class="nf">polymorph_method</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||
<a id="__codelineno-43-15" name="__codelineno-43-15"></a> <span class="nb">object</span><span class="o">.</span><span class="n">method_1</span><span class="p">()</span>
|
||
<a id="__codelineno-43-16" name="__codelineno-43-16"></a>
|
||
<a id="__codelineno-43-17" name="__codelineno-43-17"></a><span class="c1"># DEPENDENCY INJECTION WITH DUCKTYPING</span>
|
||
<a id="__codelineno-43-18" name="__codelineno-43-18"></a><span class="k">class</span> <span class="nc">Class</span><span class="p">:</span>
|
||
<a id="__codelineno-43-19" name="__codelineno-43-19"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">object</span><span class="p">):</span>
|
||
<a id="__codelineno-43-20" name="__codelineno-43-20"></a> <span class="bp">self</span><span class="o">.</span><span class="n">dependency</span> <span class="o">=</span> <span class="nb">object</span>
|
||
<a id="__codelineno-43-21" name="__codelineno-43-21"></a>
|
||
<a id="__codelineno-43-22" name="__codelineno-43-22"></a> <span class="k">def</span> <span class="nf">method_1</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># the function invokes the method of the object passed</span>
|
||
<a id="__codelineno-43-23" name="__codelineno-43-23"></a> <span class="bp">self</span><span class="o">.</span><span class="n">dependency</span><span class="o">.</span><span class="n">method_1</span><span class="p">()</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="operator-overloading">Operator Overloading</h3>
|
||
<p><strong>Operators fundamental rule</strong>: <em>always</em> return an object, if operation fails return <code>NotImplemented</code></p>
|
||
<p>Limitations of operator overloading:</p>
|
||
<ul>
|
||
<li>no overloading of built-in types</li>
|
||
<li>no creation of new operators</li>
|
||
<li>no overloading operators <code>is</code>, <code>and</code>, <code>or</code>, <code>not</code></li>
|
||
</ul>
|
||
<h3 id="astrazione">Astrazione</h3>
|
||
<p>The <strong>interfaces</strong> are abstract classes with <em>all</em> abstract methods, they are used to indicate which methods such as child classes <em>must</em> have. Interfaces have <em>only</em> a list of abstract methods.</p>
|
||
<p><strong>abstract classes</strong> have <em>at least</em> one abstract method; child classes that inherit from an abstract class <em>must</em> implement abstract methods. Abstract classes <em>cannot</em> be instantiated.</p>
|
||
<p>Virtual subclasses are used to include third-party classes as subclasses of a class of their own. They are recognized as belonging to the parent class without however having to implement their methods.</p>
|
||
<p>The <code>@Class.register</code> or <code>Class.register(subclass)</code> decorators are used to mark subclasses.</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-44-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-44-28">28</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-44-1" name="__codelineno-44-1"></a><span class="kn">from</span> <span class="nn">abc</span> <span class="kn">import</span> <span class="n">abstractmethod</span><span class="p">,</span> <span class="n">ABC</span>
|
||
<a id="__codelineno-44-2" name="__codelineno-44-2"></a>
|
||
<a id="__codelineno-44-3" name="__codelineno-44-3"></a><span class="k">class</span> <span class="nc">Abstract</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span> <span class="c1"># abstract class MUST INHERIT from parent class ABC</span>
|
||
<a id="__codelineno-44-4" name="__codelineno-44-4"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-44-5" name="__codelineno-44-5"></a> <span class="o">...</span>
|
||
<a id="__codelineno-44-6" name="__codelineno-44-6"></a>
|
||
<a id="__codelineno-44-7" name="__codelineno-44-7"></a> <span class="k">def</span> <span class="nf">parent_method</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-44-8" name="__codelineno-44-8"></a> <span class="o">...</span>
|
||
<a id="__codelineno-44-9" name="__codelineno-44-9"></a>
|
||
<a id="__codelineno-44-10" name="__codelineno-44-10"></a> <span class="nd">@abstractmethod</span> <span class="c1"># abstract method MUST be marked with @abstractmethod decorator</span>
|
||
<a id="__codelineno-44-11" name="__codelineno-44-11"></a> <span class="k">def</span> <span class="nf">abstract_method</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-44-12" name="__codelineno-44-12"></a> <span class="k">pass</span>
|
||
<a id="__codelineno-44-13" name="__codelineno-44-13"></a> <span class="c1"># abstract method MUST be overridden (can be non-empty)</span>
|
||
<a id="__codelineno-44-14" name="__codelineno-44-14"></a> <span class="c1"># super() to invoke it in the concrete class</span>
|
||
<a id="__codelineno-44-15" name="__codelineno-44-15"></a>
|
||
<a id="__codelineno-44-16" name="__codelineno-44-16"></a><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Abstract</span><span class="p">):</span>
|
||
<a id="__codelineno-44-17" name="__codelineno-44-17"></a>
|
||
<a id="__codelineno-44-18" name="__codelineno-44-18"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">parent_parameters</span><span class="p">):</span>
|
||
<a id="__codelineno-44-19" name="__codelineno-44-19"></a> <span class="n">parent_class</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent_parameters</span><span class="p">)</span>
|
||
<a id="__codelineno-44-20" name="__codelineno-44-20"></a>
|
||
<a id="__codelineno-44-21" name="__codelineno-44-21"></a> <span class="k">def</span> <span class="nf">method</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<a id="__codelineno-44-22" name="__codelineno-44-22"></a> <span class="o">...</span>
|
||
<a id="__codelineno-44-23" name="__codelineno-44-23"></a>
|
||
<a id="__codelineno-44-24" name="__codelineno-44-24"></a> <span class="k">def</span> <span class="nf">parent_method</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># override method (child class with homonymous method to parent class)</span>
|
||
<a id="__codelineno-44-25" name="__codelineno-44-25"></a> <span class="o">...</span>
|
||
<a id="__codelineno-44-26" name="__codelineno-44-26"></a>
|
||
<a id="__codelineno-44-27" name="__codelineno-44-27"></a> <span class="k">def</span> <span class="nf">abstract_method</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># implementation of abstract method inherited from abstract class (NECESSARY) by override</span>
|
||
<a id="__codelineno-44-28" name="__codelineno-44-28"></a> <span class="o">...</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="exception-handling">Exception Handling</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-45-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-45-32">32</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-45-1" name="__codelineno-45-1"></a><span class="c1"># CHECK ASERATIONS</span>
|
||
<a id="__codelineno-45-2" name="__codelineno-45-2"></a><span class="k">assert</span> <span class="n">condition</span><span class="p">,</span> <span class="s1">'error message'</span> <span class="c1"># if the assertion is false show an error message</span>
|
||
<a id="__codelineno-45-3" name="__codelineno-45-3"></a>
|
||
<a id="__codelineno-45-4" name="__codelineno-45-4"></a><span class="c1"># particular errors are objects of a particular class of exceptions which in turn is a child of the base exception class (exception)</span>
|
||
<a id="__codelineno-45-5" name="__codelineno-45-5"></a><span class="k">class</span> <span class="nc">CustomExceptionError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> <span class="c1"># MUST somehow inherit from class exception (even in later inheritance steps)</span>
|
||
<a id="__codelineno-45-6" name="__codelineno-45-6"></a> <span class="k">pass</span> <span class="c1"># or instructions</span>
|
||
<a id="__codelineno-45-7" name="__codelineno-45-7"></a>
|
||
<a id="__codelineno-45-8" name="__codelineno-45-8"></a><span class="c1"># try block contains code that might cause an exception</span>
|
||
<a id="__codelineno-45-9" name="__codelineno-45-9"></a><span class="c1"># code inside try and after the error it is not executed</span>
|
||
<a id="__codelineno-45-10" name="__codelineno-45-10"></a><span class="k">try</span><span class="p">:</span>
|
||
<a id="__codelineno-45-11" name="__codelineno-45-11"></a> <span class="o">...</span>
|
||
<a id="__codelineno-45-12" name="__codelineno-45-12"></a> <span class="k">raise</span> <span class="n">CustomExceptionError</span> <span class="p">(</span><span class="s2">"message"</span><span class="p">)</span> <span class="c1"># raise the exception</span>
|
||
<a id="__codelineno-45-13" name="__codelineno-45-13"></a>
|
||
<a id="__codelineno-45-14" name="__codelineno-45-14"></a><span class="c1"># except takes control of error handling without passing through the interpreter</span>
|
||
<a id="__codelineno-45-15" name="__codelineno-45-15"></a><span class="c1"># block executed if an error occurs in try</span>
|
||
<a id="__codelineno-45-16" name="__codelineno-45-16"></a>
|
||
<a id="__codelineno-45-17" name="__codelineno-45-17"></a><span class="c1"># except error specified by class</span>
|
||
<a id="__codelineno-45-18" name="__codelineno-45-18"></a><span class="k">except</span> <span class="n">ExceptionClass</span><span class="p">:</span>
|
||
<a id="__codelineno-45-19" name="__codelineno-45-19"></a> <span class="c1"># Default error message is not shown</span>
|
||
<a id="__codelineno-45-20" name="__codelineno-45-20"></a> <span class="c1"># the program does not stop</span>
|
||
<a id="__codelineno-45-21" name="__codelineno-45-21"></a>
|
||
<a id="__codelineno-45-22" name="__codelineno-45-22"></a><span class="c1"># except on generic errors</span>
|
||
<a id="__codelineno-45-23" name="__codelineno-45-23"></a><span class="k">except</span><span class="p">:</span>
|
||
<a id="__codelineno-45-24" name="__codelineno-45-24"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-45-25" name="__codelineno-45-25"></a>
|
||
<a id="__codelineno-45-26" name="__codelineno-45-26"></a><span class="c1"># block executed if exception does not occur</span>
|
||
<a id="__codelineno-45-27" name="__codelineno-45-27"></a><span class="k">else</span><span class="p">:</span>
|
||
<a id="__codelineno-45-28" name="__codelineno-45-28"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-45-29" name="__codelineno-45-29"></a>
|
||
<a id="__codelineno-45-30" name="__codelineno-45-30"></a><span class="c1"># block executed in all cases, cleanup code goes here</span>
|
||
<a id="__codelineno-45-31" name="__codelineno-45-31"></a><span class="k">finally</span><span class="p">:</span>
|
||
<a id="__codelineno-45-32" name="__codelineno-45-32"></a> <span class="c1"># code here</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="file">File</h2>
|
||
<h3 id="opening-a-file">Opening A File</h3>
|
||
<p>Text file opening mode:</p>
|
||
<ul>
|
||
<li><code>w</code>: write, overwrite the contents of the file</li>
|
||
<li><code>r</code>: read, read file contents</li>
|
||
<li><code>a</code>: append, add content to the file</li>
|
||
<li><code>w +</code>: write & read</li>
|
||
<li><code>r +</code>: write & read & append</li>
|
||
<li><code>a +</code>: append & read</li>
|
||
<li><code>x</code>: exclusive creation, if the file already exists -> <code>FileExistError</code> (extended write mode)</li>
|
||
</ul>
|
||
<p>Open binary file mode:</p>
|
||
<ul>
|
||
<li><code>wb</code>: write, overwrites the contents of the file</li>
|
||
<li><code>rb</code>: read, read file contents</li>
|
||
<li><code>ab</code>: append, add content to the file</li>
|
||
<li><code>w + b</code>: write & read</li>
|
||
<li><code>r + b</code>: write & read & append</li>
|
||
<li><code>a + b</code>: append & read</li>
|
||
<li><code>xb</code>: exclusive creation, if the file already exists -> <code>FileExistError</code> (extended write mode)</li>
|
||
</ul>
|
||
<p><strong>Note</strong>: Linux and MacOSX use <code>UTF-8</code> everywhere while windows uses <code>cp1252</code>, <code>cp850</code>,<code>mbcs</code>, <code>UTF-8</code>. Don't rely on default encoding and use <strong>explicitly</strong> <code>UTF-8</code>.</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-46-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-46-27">27</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-46-1" name="__codelineno-46-1"></a><span class="nb">object</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'filename'</span><span class="p">,</span> <span class="n">mode</span> <span class="o">=</span> <span class="s1">'r'</span><span class="p">,</span> <span class="n">encoding</span> <span class="o">=</span> <span class="s1">'utf-8'</span><span class="p">)</span> <span class="c1"># encoding MUST BE utf-8 for compatibility</span>
|
||
<a id="__codelineno-46-2" name="__codelineno-46-2"></a><span class="c1"># filename can be the absolute path to the file location (default: file created in the source code folder)</span>
|
||
<a id="__codelineno-46-3" name="__codelineno-46-3"></a><span class="c1"># double slash to avoid \ escaping</span>
|
||
<a id="__codelineno-46-4" name="__codelineno-46-4"></a>
|
||
<a id="__codelineno-46-5" name="__codelineno-46-5"></a><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'filename'</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
|
||
<a id="__codelineno-46-6" name="__codelineno-46-6"></a> <span class="n">instructions_to_file</span> <span class="c1"># block use filename to indicate file</span>
|
||
<a id="__codelineno-46-7" name="__codelineno-46-7"></a>
|
||
<a id="__codelineno-46-8" name="__codelineno-46-8"></a><span class="c1"># CLOSE A FILE</span>
|
||
<a id="__codelineno-46-9" name="__codelineno-46-9"></a><span class="nb">object</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||
<a id="__codelineno-46-10" name="__codelineno-46-10"></a>
|
||
<a id="__codelineno-46-11" name="__codelineno-46-11"></a><span class="c1"># WRITE TO A FILE</span>
|
||
<a id="__codelineno-46-12" name="__codelineno-46-12"></a><span class="nb">object</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">string</span><span class="p">)</span> <span class="c1"># write single string to file</span>
|
||
<a id="__codelineno-46-13" name="__codelineno-46-13"></a><span class="nb">object</span><span class="o">.</span><span class="n">writelines</span><span class="p">(</span><span class="o">*</span> <span class="n">strings</span><span class="p">)</span> <span class="c1"># write multiple strings to file</span>
|
||
<a id="__codelineno-46-14" name="__codelineno-46-14"></a>
|
||
<a id="__codelineno-46-15" name="__codelineno-46-15"></a><span class="c1"># READING FROM A FILE</span>
|
||
<a id="__codelineno-46-16" name="__codelineno-46-16"></a><span class="nb">object</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="c1"># return ALL the contents of the file (including escape sequence) and place the "cursor" at the end of the file</span>
|
||
<a id="__codelineno-46-17" name="__codelineno-46-17"></a><span class="nb">object</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># returns 0 (zero) and places the cursor at the beginning of the file</span>
|
||
<a id="__codelineno-46-18" name="__codelineno-46-18"></a><span class="nb">object</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span> <span class="c1"># return list of file lines (ATTENTION: keep everything in memory, be careful with large files)</span>
|
||
<a id="__codelineno-46-19" name="__codelineno-46-19"></a><span class="nb">object</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span> <span class="c1"># returns single line file</span>
|
||
<a id="__codelineno-46-20" name="__codelineno-46-20"></a>
|
||
<a id="__codelineno-46-21" name="__codelineno-46-21"></a><span class="c1"># CHECK FILE EXISTENCE</span>
|
||
<a id="__codelineno-46-22" name="__codelineno-46-22"></a><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span>
|
||
<a id="__codelineno-46-23" name="__codelineno-46-23"></a><span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="s1">'filepath'</span><span class="p">):</span> <span class="c1"># check file existence (TRUE if it exists)</span>
|
||
<a id="__codelineno-46-24" name="__codelineno-46-24"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-46-25" name="__codelineno-46-25"></a><span class="k">else</span><span class="p">:</span>
|
||
<a id="__codelineno-46-26" name="__codelineno-46-26"></a> <span class="c1"># code here</span>
|
||
<a id="__codelineno-46-27" name="__codelineno-46-27"></a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span> <span class="c1"># exits the program and does not execute the next cosice</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="copy">COPY</h2>
|
||
<p><strong>SHALLOW COPY</strong>: copies the "container" and references to the content
|
||
<strong>DEEP COPY</strong>: copies the "container" and contents (no reference)</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Python</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-47-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-47-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-47-1" name="__codelineno-47-1"></a><span class="n">copy</span> <span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># returns shallow copy of xor</span>
|
||
<a id="__codelineno-47-2" name="__codelineno-47-2"></a><span class="n">deepcopy</span> <span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># returns shallow copy of x</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</article>
|
||
</div>
|
||
|
||
|
||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||
</div>
|
||
|
||
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
|
||
Back to top
|
||
</button>
|
||
|
||
</main>
|
||
|
||
<footer class="md-footer">
|
||
|
||
|
||
|
||
<nav class="md-footer__inner md-grid" aria-label="Footer" >
|
||
|
||
|
||
<a href="../assembly/riscv.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: RISC-V">
|
||
<div class="md-footer__button md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||
</div>
|
||
<div class="md-footer__title">
|
||
<span class="md-footer__direction">
|
||
Previous
|
||
</span>
|
||
<div class="md-ellipsis">
|
||
RISC-V
|
||
</div>
|
||
</div>
|
||
</a>
|
||
|
||
|
||
|
||
<a href="modules/argparse.html" class="md-footer__link md-footer__link--next" aria-label="Next: argparse">
|
||
<div class="md-footer__title">
|
||
<span class="md-footer__direction">
|
||
Next
|
||
</span>
|
||
<div class="md-ellipsis">
|
||
argparse
|
||
</div>
|
||
</div>
|
||
<div class="md-footer__button md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
|
||
</div>
|
||
</a>
|
||
|
||
</nav>
|
||
|
||
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-copyright">
|
||
|
||
<div class="md-copyright__highlight">
|
||
MIT
|
||
</div>
|
||
|
||
|
||
Made with
|
||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
Material for MkDocs
|
||
</a>
|
||
|
||
</div>
|
||
|
||
<div class="md-social">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://hachyderm.io/@m_lamonaca" target="_blank" rel="noopener me" title="hachyderm.io" class="md-social__link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>
|
||
</a>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://github.com/m-lamonaca" target="_blank" rel="noopener" title="github.com" class="md-social__link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
</div>
|
||
<div class="md-dialog" data-md-component="dialog">
|
||
<div class="md-dialog__inner md-typeset"></div>
|
||
</div>
|
||
|
||
|
||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.instant", "navigation.indexes", "navigation.tracking", "navigation.pruning", "navigation.sections", "navigation.top", "navigation.tabs", "navigation.tabs.sticky", "navigation.footer", "toc.follow", "content.code.copy"], "search": "../../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||
|
||
|
||
<script src="../../assets/javascripts/bundle.56dfad97.min.js"></script>
|
||
|
||
|
||
</body>
|
||
</html> |