Skip to content

Instantly share code, notes, and snippets.

@jpivarski
Created April 23, 2024 02:00
Show Gist options
  • Save jpivarski/a9a36973b850b928e55d5c3272343193 to your computer and use it in GitHub Desktop.
Save jpivarski/a9a36973b850b928e55d5c3272343193 to your computer and use it in GitHub Desktop.
python-skills-survey-list
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "093299e2-a202-46bc-8563-51012fae421d",
"metadata": {},
"source": [
"## Python language familiarity"
]
},
{
"cell_type": "markdown",
"id": "3c7731db-72b3-4719-95ee-b28d0d82a5a8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Comments"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "a7d02aa0-ef59-4ade-bc64-7c6e0a9c6eb3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"# This does nothing."
]
},
{
"cell_type": "markdown",
"id": "4c20d4ef-c491-4739-b729-922a5a73b943",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Basic math and assignment"
]
},
{
"cell_type": "markdown",
"id": "50951e65-71db-4664-a82f-689a1f78f959",
"metadata": {},
"source": [
"#### Mathematical formula"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "145b3c30-d3ce-4d32-9bf2-0068fac2af49",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"20"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(2 + 3) * 4"
]
},
{
"cell_type": "markdown",
"id": "e76301f2-5d54-4d29-abd2-7d86eade9661",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Modulo operator"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a6dfac9c-ff04-4454-baeb-e96701124100",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"123 % 10"
]
},
{
"cell_type": "markdown",
"id": "9be2ffeb-df5a-4530-9c03-36eae97739d0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Exponentiation operator"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4cc7e96c-bb80-47ec-9fcb-6c80d2e89075",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"5**2"
]
},
{
"cell_type": "markdown",
"id": "0326f893-6f34-49e8-bc77-f7f63740d1f2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Assigning to a variable"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "00a4e106-5a5b-47ab-a13e-0820afd1b44d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"21"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = (2 + 3) * 4\n",
"\n",
"x + 1"
]
},
{
"cell_type": "markdown",
"id": "6f1666ed-4168-4b26-8c69-6c3bedcc2de4",
"metadata": {},
"source": [
"#### `del` a variable"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6b66d843-28c4-4ac1-8482-a0bdb3ed3ccb",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'x' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[6], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m x\n\u001b[0;32m----> 3\u001b[0m \u001b[43mx\u001b[49m\n",
"\u001b[0;31mNameError\u001b[0m: name 'x' is not defined"
]
}
],
"source": [
"del x\n",
"\n",
"x"
]
},
{
"cell_type": "markdown",
"id": "1b5d9173-6ba6-4014-8826-4714f43f5ef7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Undefined variable versus `None`"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "e09f5304-9332-4e4f-947a-8a7f92182152",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [],
"source": [
"x = None\n",
"\n",
"x"
]
},
{
"cell_type": "markdown",
"id": "8ad3681d-a898-40a0-ad92-04aeeef622c1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Builtin math functions: `min` and `abs`"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "2e05444a-adee-44ea-9b11-b997d930320e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"-4"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = -5\n",
"\n",
"min(x + 1, abs(x) + 1)"
]
},
{
"cell_type": "markdown",
"id": "c31ea66f-8971-4b42-9992-65983d065e49",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Builtin math functions: `round`"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "6b539bdd-0eea-4343-9702-1d1faad697a6",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = 3.14\n",
"\n",
"round(x)"
]
},
{
"cell_type": "markdown",
"id": "121aad06-7d6f-4b5e-ab83-585f9a7df32a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Tuple-assignment (using swap as an example)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "73cd5796-e4f9-437c-b77a-c57fbb6d9b36",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = 5\n",
"y = 10\n",
"\n",
"x, y = y, x\n",
"\n",
"x"
]
},
{
"cell_type": "markdown",
"id": "77779b9a-5ba0-49de-b7e0-3ecd468a21f8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Nested tuple-assignment"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2d054f21-b4fc-4613-8e32-42da2f67a4e7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x, (y, z) = 1, (2, 3)\n",
"\n",
"z"
]
},
{
"cell_type": "markdown",
"id": "8b6c2259-c6ef-4836-9d60-15a63d5e8eb4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Assignment-assignment (two variables, one value)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "74dac7dc-b55c-46ae-aa4b-17f83a9d0d39",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = y = z = 10\n",
"\n",
"x"
]
},
{
"cell_type": "markdown",
"id": "ebf23bbe-fff7-4ffc-b970-178c852ce902",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Add-assignment `+=`"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "bdb5f539-cb11-44d9-ba3c-26b1322cd5df",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"20"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x += 10\n",
"\n",
"x"
]
},
{
"cell_type": "markdown",
"id": "b64863f1-e56f-4f00-8ad3-62f478304518",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Strings"
]
},
{
"cell_type": "markdown",
"id": "8e164c8e-569b-446a-9a75-ba59480f12e5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### String variable"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "4aac84ac-9edd-4bd3-80ac-7c21328a2d95",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'something'"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = \"something\"\n",
"\n",
"x"
]
},
{
"cell_type": "markdown",
"id": "4dce47b2-d8fe-4915-9d97-901f12f2d8c2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `len` of a string"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "055b5fda-0bda-4fe7-931f-e9c257b7f45e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"9"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(x)"
]
},
{
"cell_type": "markdown",
"id": "cb8c157c-400f-4392-9557-dd2598ed2416",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Slicing a string"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "c27f6577-a533-43f3-94df-87fa8ae681a8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'thing'"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x[4:len(x)]"
]
},
{
"cell_type": "markdown",
"id": "61afd5c2-1fd0-4905-89ca-315d6a778be4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Slicing a string with no end point"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "cec29d83-398d-4bd5-9ed4-e09d504820a9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'thing'"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x[4:]"
]
},
{
"cell_type": "markdown",
"id": "712356f1-9ac6-4e8b-bc6e-677d34d8e208",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `str.split`"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "522e8cc6-4349-41fc-bd62-1498d3246da2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"['These', 'are', 'some', 'words.\\n']"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sentence = \"These are some words.\\n\"\n",
"\n",
"words = sentence.split(\" \")\n",
"\n",
"words"
]
},
{
"cell_type": "markdown",
"id": "bda142ed-732b-4c08-9c1b-e4d637f17d27",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `str.join`"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "ae7081ee-78d1-4690-8dca-4934c2e8a9de",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'These::are::some::words.\\n'"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"::\".join(words)"
]
},
{
"cell_type": "markdown",
"id": "a1a4e065-77a5-4a48-9590-67c2e3cbfec9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `str.rstrip`"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "27c7ee13-aa2e-4dd0-ad20-1791f165b23a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'These are some words.'"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sentence.rstrip(\"\\n\")"
]
},
{
"cell_type": "markdown",
"id": "c5ffd3b5-6e4c-4dc9-b908-e88314d2f969",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `str.replace`"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "4a6f0b60-78b5-4098-a923-0e423c311730",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'These are s()me w()rds.\\n'"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sentence.replace(\"o\", \"()\")"
]
},
{
"cell_type": "markdown",
"id": "f299e8c0-a015-498c-9a68-354399f06791",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `str.startswith`"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "133c78cb-8257-4126-b576-91d89da283a3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sentence.startswith(\"The\")"
]
},
{
"cell_type": "markdown",
"id": "35bf1608-227f-456d-90d2-bd4972a1309d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `str.encode`"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "fbfe6674-6ad2-4045-b2b5-bfa9abe6a375",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"b'A = \\xcf\\x80r\\xc2\\xb2'"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"as_str = \"A = πr²\"\n",
"\n",
"as_bytes = as_str.encode(\"utf-8\")\n",
"\n",
"as_bytes"
]
},
{
"cell_type": "markdown",
"id": "664823fd-d691-4ef7-971d-cb4f0b8bcd95",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `bytes.decode`"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "7e57e5bd-a061-4c7f-b591-63efefa14be1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'A = πr²'"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"as_bytes.decode(\"utf-8\")"
]
},
{
"cell_type": "markdown",
"id": "0e4fc871-f557-4e05-aa06-1495d0a6cb29",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Multiline string"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "fee9e07e-55f9-46ab-a64e-db00a6929c17",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'This is the first line.\\nThis is the second line.\\nThis is the third line.\\nThe fourth line does not end with a newline.'"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"multiline = \"\"\"This is the first line.\n",
"This is the second line.\n",
"This is the third line.\n",
"The fourth line does not end with a newline.\"\"\"\n",
"\n",
"multiline"
]
},
{
"cell_type": "markdown",
"id": "cd276dbb-da99-4753-984d-f603873a73d8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Logical operators"
]
},
{
"cell_type": "markdown",
"id": "608d7709-c57a-49a7-bd85-6bc31404c737",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Boolean variable"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "1cb88303-a487-466a-981b-b0b9d7f64cdf",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"as_bool = (3 == 4)\n",
"\n",
"as_bool"
]
},
{
"cell_type": "markdown",
"id": "1150f538-db2b-482b-96f4-39c729a84f89",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `not`"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "627cc4ba-fdde-4288-8a2d-ef5d761a932a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"not False"
]
},
{
"cell_type": "markdown",
"id": "5482680b-f628-4cdf-9ddf-6f2edf17fa5b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `and`"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "50bdb7d7-a066-4262-b72e-ddc429e7bc47",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"True and False"
]
},
{
"cell_type": "markdown",
"id": "b5e7d152-333c-4e6b-b02d-fb430f610fce",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `or`"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "399dac95-ce14-4777-a060-159ba5f78f38",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"True or False"
]
},
{
"cell_type": "markdown",
"id": "a8dc3779-cae4-45a0-a8e8-313532af9461",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### I/O"
]
},
{
"cell_type": "markdown",
"id": "bc4b5cc0-0d9f-4bdc-8851-15a2294820de",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `print`"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "6ae13ca8-a6dd-46b8-98c8-5b62f68c71e2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Area of a circle: A = πr²\n"
]
}
],
"source": [
"print(\"Area of a circle:\", as_str)"
]
},
{
"cell_type": "markdown",
"id": "f300efd8-9a8c-4ee5-9450-927c622f2074",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `print` with an f-string"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "af0bedec-4d83-4ca1-81c8-02899e37bbb8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Area of a circle: A = πr²\n"
]
}
],
"source": [
"print(f\"Area of a circle: {as_bytes.decode()}\")"
]
},
{
"cell_type": "markdown",
"id": "4d06566b-5831-4831-ba14-d89d47521696",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `print` with an f-string that prints the expression, too"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "ce778217-d74f-4b8c-bac1-85c5f46bd1b3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"as_bytes.decode() = 'A = πr²'\n"
]
}
],
"source": [
"print(f\"{as_bytes.decode() = }\")"
]
},
{
"cell_type": "markdown",
"id": "52ea7db2-508b-40af-9377-3bcddbbc7d3c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `input`"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "80336c11-c52c-48ab-b639-8d945bbd86a1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdin",
"output_type": "stream",
"text": [
" hello\n"
]
},
{
"data": {
"text/plain": [
"'hello'"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"user_input = input()\n",
"\n",
"user_input"
]
},
{
"cell_type": "markdown",
"id": "abe76f19-f3ea-483b-9977-fa75c5614193",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `open` file and `write` strings"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "3d6d7926-e730-4036-beb4-f08fac6dea17",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"117"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file = open(\"/tmp/example.txt\", \"w\")\n",
"\n",
"file.write(multiline)"
]
},
{
"cell_type": "markdown",
"id": "5feb70d1-bc47-4d42-8398-ebb2b2737cb4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `open` file and `read` strings"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "5e4745b7-6ae9-4d3c-82ec-642c1eaf57d1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'This is the first line.\\nThis is the seco'"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file = open(\"/tmp/example.txt\")\n",
"\n",
"file.read(40)"
]
},
{
"cell_type": "markdown",
"id": "08fa6f44-905f-464c-a27b-a4b749e2c573",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `open` file and `write` bytes"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "8987d2cf-aade-4881-b043-1efd39d9c8fa",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"9"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file = open(\"/tmp/example.txt\", \"wb\")\n",
"\n",
"file.write(b\"A = \\xcf\\x80r\\xc2\\xb2\")"
]
},
{
"cell_type": "markdown",
"id": "174624a8-d569-4b93-8139-67aa7d697f69",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `open` file and `read` bytes"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "addcc03a-a6ed-4f0e-acd0-060071df92d3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"b'A = \\xcf\\x80r\\xc2\\xb2'"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file = open(\"/tmp/example.txt\", \"rb\")\n",
"\n",
"file.read(40)"
]
},
{
"cell_type": "markdown",
"id": "286613bd-1d6b-4178-8f61-30409cbc755d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Branching control flow"
]
},
{
"cell_type": "markdown",
"id": "b0c816d3-badc-4dda-ae99-3f523b7776ca",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `if` statement"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "19a9423e-7e82-4b54-a89b-f3d34ca56edc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"yes, x is 5\n"
]
}
],
"source": [
"x = 5\n",
"\n",
"if x == 5:\n",
" print(\"yes, x is 5\")\n",
"\n",
"if x == 6:\n",
" print(\"no, x is not 6\")"
]
},
{
"cell_type": "markdown",
"id": "319eff07-9b62-485d-8b4d-ffcbb313df07",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `if`-`else` statement"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "1158238a-343a-4ac4-9a9d-8ee68894da24",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"yes, x is something else\n"
]
}
],
"source": [
"if x == 4:\n",
" print(\"no, x is not 4\")\n",
"else:\n",
" print(\"yes, x is something else\")"
]
},
{
"cell_type": "markdown",
"id": "2305a2b8-d60b-4183-917a-c25ecba794ed",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `if`-`elif`-`else` statement"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "ff400eeb-7b36-4a84-8615-6bfb6ca79887",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"yes, x is less than 10\n"
]
}
],
"source": [
"if x < 0:\n",
" print(\"no, x is not less than zero\")\n",
"elif x < 10:\n",
" print(\"yes, x is less than 10\")\n",
"else:\n",
" print(\"no, x is not something else\")"
]
},
{
"cell_type": "markdown",
"id": "d018c6b4-fc46-4b1d-81ba-07e3716222b0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Looping control flow"
]
},
{
"cell_type": "markdown",
"id": "6f5fbdee-c9a4-4dab-bc67-3e28594c3646",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `for` loop with `range`"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "492f4272-b08b-405d-bd61-046a7b719af2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1\n",
"2\n",
"3\n",
"4\n",
"5\n",
"6\n",
"7\n",
"8\n",
"9\n"
]
}
],
"source": [
"for x in range(10):\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"id": "fb4a6fce-d252-45d9-81ab-8712442d8489",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### `for` loop with low-high `range`"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "138eb212-06a7-4909-8f3b-59330d856e69",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5\n",
"6\n",
"7\n",
"8\n",
"9\n"
]
}
],
"source": [
"for x in range(5, 10):\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"id": "77c59f66-cb15-42fb-a813-fa4c8d1ac936",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `for` loop over the lines of a file"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "5708fc1d-efb5-4318-b435-ffb2de1f140d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"line.rstrip() = 'This is the first line.'\n",
"line.rstrip() = 'This is the second line.'\n",
"line.rstrip() = 'This is the third line.'\n",
"line.rstrip() = 'The fourth line does not end with a newline.'\n"
]
}
],
"source": [
"open(\"/tmp/example.txt\", \"w\").write(multiline)\n",
"\n",
"for line in open(\"/tmp/example.txt\"):\n",
" print(f\"{line.rstrip() = }\")"
]
},
{
"cell_type": "markdown",
"id": "035b3cc5-db59-4c6c-bb57-47a5d271dce1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `while` loop"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "7909da7e-f91c-4d1e-804d-08554d6b5ee5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1\n",
"2\n",
"3\n",
"4\n",
"5\n",
"6\n",
"7\n",
"8\n",
"9\n"
]
}
],
"source": [
"x = 0\n",
"\n",
"while x < 10:\n",
" print(x)\n",
" x += 1"
]
},
{
"cell_type": "markdown",
"id": "99c3ea71-d17b-4e24-a1fb-792a5139994f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `break`"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "ddd3d651-520f-4ef8-8f5a-f1e1f0e01de7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1\n",
"2\n",
"3\n",
"4\n"
]
}
],
"source": [
"for x in range(10):\n",
" if x >= 5:\n",
" break\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"id": "c1fd52c6-19df-499d-b6ed-0554108379c7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `continue`"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "e0f20819-8b33-4b7d-a898-fd171f588076",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"3\n",
"5\n",
"7\n",
"9\n"
]
}
],
"source": [
"for x in range(10):\n",
" if x % 2 == 0:\n",
" continue\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"id": "ece7c9ad-c36f-4af1-8bb9-082fc07e13de",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Function definitions"
]
},
{
"cell_type": "markdown",
"id": "2857148e-3008-4906-8711-7420a82f9805",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Defining functions"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "bc183ee4-49c6-4977-8856-8edfd052c10a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f(x, y):\n",
" return x**2 + y**2\n",
"\n",
"f(3, 4)"
]
},
{
"cell_type": "markdown",
"id": "2a5b6dde-565d-44bd-b5e1-a18b1577792f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Multiple `return` statements"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "b9b2580e-a7f5-45ad-b119-11d932f9dd0e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'positive'"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f(x):\n",
" if x < 0:\n",
" return \"negative\"\n",
" elif x == 0:\n",
" return \"zero\"\n",
" else:\n",
" return \"positive\"\n",
"\n",
"f(3)"
]
},
{
"cell_type": "markdown",
"id": "5299ca0a-7035-40f9-b12d-b597729bbb4c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Recursive function"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "6d25b5e2-d825-46b0-a4fd-95bb48de9912",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"55"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def fibonacci(n):\n",
" if n == 0:\n",
" return 0\n",
" elif n == 1:\n",
" return 1\n",
" else:\n",
" return fibonacci(n - 1) + fibonacci(n - 2)\n",
"\n",
"fibonacci(10)"
]
},
{
"cell_type": "markdown",
"id": "65ca03fd-cb8a-44b2-a9cb-694a0e890324",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Keyword argument defaults"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "f2c44577-7797-43c3-984b-a15ba955a415",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x: 3, y: 4\n"
]
},
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f(x, y, debug=False):\n",
" if debug:\n",
" print(f\"x: {x}, y: {y}\")\n",
" return x**2 + y**2\n",
"\n",
"f(3, 4, debug=True)"
]
},
{
"cell_type": "markdown",
"id": "a682af46-c262-49aa-9fda-e3ac4f935b33",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Getting `*args` and `**kwargs`"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "e47b1486-5dfa-42f3-8ae1-6075b21e1ff1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"args: (1, 2)\n",
"kwargs: {'three': 3, 'four': 4}\n"
]
}
],
"source": [
"def dynamic(*args, **kwargs):\n",
" print(\"args:\", args)\n",
" print(\"kwargs:\", kwargs)\n",
"\n",
"dynamic(1, 2, three=3, four=4)"
]
},
{
"cell_type": "markdown",
"id": "1f3941fc-26fd-4890-9cc2-7c239c8c1849",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Function with a doc string"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "7faa6ebb-cb86-46a4-ac2f-a8b86094e071",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on function documented in module __main__:\n",
"\n",
"documented(x, y)\n",
" This function is well-documented.\n",
" \n",
" As all functions should be.\n",
"\n"
]
}
],
"source": [
"def documented(x, y):\n",
" \"\"\"\n",
" This function is well-documented.\n",
"\n",
" As all functions should be.\n",
" \"\"\"\n",
" return x**2 + y**2\n",
"\n",
"help(documented)"
]
},
{
"cell_type": "markdown",
"id": "d31b4757-5a4c-4565-817c-e6969c392554",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Using a variable defined outside the function"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "9d4d852f-8a97-459a-9238-e5584b2f487e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"250"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"defined_outside = 10\n",
"\n",
"def f(x, y):\n",
" return defined_outside * (x**2 + y**2)\n",
"\n",
"f(3, 4)"
]
},
{
"cell_type": "markdown",
"id": "f4960fcc-97e3-4981-992f-4c4629cd24b1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Changing a variable defined outside the function"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "0f0d9e4b-e413-4142-800f-37a3a23dde29",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"2500"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"defined_outside = 10\n",
"\n",
"def f(x, y):\n",
" global defined_outside\n",
"\n",
" defined_outside *= 10\n",
" \n",
" return defined_outside * (x**2 + y**2)\n",
"\n",
"f(3, 4)"
]
},
{
"cell_type": "markdown",
"id": "cc996b95-1179-4590-a385-5d1915fd036c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Nested function definitions"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "1e21fdb6-764b-4351-a98b-0b54f9e3a5e9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f(x, y):\n",
" def sqr(z):\n",
" return z**2\n",
"\n",
" def add(x, y):\n",
" return x + y\n",
"\n",
" return add(sqr(x), sqr(y))\n",
"\n",
"f(3, 4)"
]
},
{
"cell_type": "markdown",
"id": "02bd637d-3467-4007-a864-a3dfd9b70401",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Returning a function from a function"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "4d6a221a-5d3a-4891-a37f-5ee6dfe0cea3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"11"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def incrementor(by):\n",
" def increment(x):\n",
" return x + by\n",
"\n",
" return increment\n",
"\n",
"increment_by_one = incrementor(1)\n",
"\n",
"increment_by_one(10)"
]
},
{
"cell_type": "markdown",
"id": "cc49d9fd-902e-48d9-b0f8-eed95f8d79d6",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Passing a function to a function"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "30eae250-ffa9-4d8d-ac89-f23fda16e10c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"340"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def integrate(function, a, b):\n",
" result = 0\n",
" for x in range(a, b):\n",
" result += function(x)\n",
" return result\n",
"\n",
"def linear(x):\n",
" return 5 + 2*x\n",
"\n",
"integrate(linear, 10, 20)"
]
},
{
"cell_type": "markdown",
"id": "46ef77ee-88d0-408a-8760-ab72bae309d9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `lambda`"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "ddd0f1f9-95bc-411f-8675-b2d4dd0daf12",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"9"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"linear = lambda x: 5 + 2*x\n",
"\n",
"linear(2)"
]
},
{
"cell_type": "markdown",
"id": "83684ba5-9f8e-4da2-bb41-a5f8852587d9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Passing a `lambda` to a function"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "c6e3c7e7-fc7c-49e8-801b-c3c5a1daf95d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"340"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"integrate(lambda x: 5 + 2*x, 10, 20)"
]
},
{
"cell_type": "markdown",
"id": "d6691a36-0479-4aa7-991e-4a7893b07156",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Using modules"
]
},
{
"cell_type": "markdown",
"id": "10994164-d4e4-4713-9760-027fd714060e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Importing modules"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "5e753df2-d55e-4d7d-a977-775c9e8d4250",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5.0"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import math\n",
"\n",
"math.sqrt(25)"
]
},
{
"cell_type": "markdown",
"id": "e7033bd8-34f2-4bd3-95c0-d2292d07449a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Importing and renaming a module"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "b50919b1-9373-4958-9757-73babbb0d4b5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5.0"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"np.sqrt(25)"
]
},
{
"cell_type": "markdown",
"id": "c46fc922-5bcb-45b3-8cd5-26d6d560006a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Importing a function from a module"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "eafc43ed-5890-4aab-b2e4-fc7e1fb405b9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"120"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from math import factorial\n",
"\n",
"factorial(5)"
]
},
{
"cell_type": "markdown",
"id": "6794b83d-4840-4285-9049-012bef0d45ca",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Distinction between installing and importing"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "7c9a45ab-a48e-4393-9ed7-234dc277de76",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "ModuleNotFoundError",
"evalue": "No module named 'package_not_installed_on_this_system'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[63], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mpackage_not_installed_on_this_system\u001b[39;00m\n",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'package_not_installed_on_this_system'"
]
}
],
"source": [
"import package_not_installed_on_this_system"
]
},
{
"cell_type": "markdown",
"id": "d5c2d5aa-579d-4f01-a900-86ca104fc8aa",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Data types"
]
},
{
"cell_type": "markdown",
"id": "a7e762d5-bfa4-472d-bdb1-58505a6bafb0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Adding two strings"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "09bb11f7-bace-4e6c-a34a-00018c44fc00",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'strings can be added together'"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"strings can \" + \"be added together\""
]
},
{
"cell_type": "markdown",
"id": "a9c23687-61f3-4022-81f7-28dca55e9d3c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Adding an integer and a string (type error)"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "161dbdf0-3dea-482c-af60-3c29a61d0710",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "TypeError",
"evalue": "can only concatenate str (not \"int\") to str",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[65], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mbut not a string and \u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m123\u001b[39;49m\n",
"\u001b[0;31mTypeError\u001b[0m: can only concatenate str (not \"int\") to str"
]
}
],
"source": [
"\"but not a string and \" + 123"
]
},
{
"cell_type": "markdown",
"id": "34e0fb74-2b6f-4eea-8c9a-f2a21362caef",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `type`"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "276bc144-b301-4e29-8ded-f03ed75edd28",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"str"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(\"every value has a type\")"
]
},
{
"cell_type": "markdown",
"id": "f742833f-b0b9-4d08-84ee-2badf38a241b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Type objects as constructors (type coersion)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "a98d4029-eb2b-4031-9053-d3abc32479dc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'123'"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"str(123)"
]
},
{
"cell_type": "markdown",
"id": "02d217c1-6ae3-4d75-bc19-63eb039d5dd8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Using `float` to make infinity"
]
},
{
"cell_type": "code",
"execution_count": 68,
"id": "0338247b-06ce-4c36-bdab-2ab112db0f42",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"inf"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"123 + float(\"inf\")"
]
},
{
"cell_type": "markdown",
"id": "ce7856d2-5358-499a-8d85-0f60fa97e980",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `isinstance`"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "84b635e1-fa66-40e6-9357-15b150885a5d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"isinstance(123, int)"
]
},
{
"cell_type": "markdown",
"id": "6a657388-5130-45de-87b2-a4ab92f0a6c1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `issubclass`"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "fae4efc1-cf27-4e6f-8ffa-4ec1119e5f63",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"issubclass(np.int32, np.number)"
]
},
{
"cell_type": "markdown",
"id": "be4518b7-736f-49bf-b2ed-8fbbd91cf886",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `mro` to list all supertypes"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "f9c48f76-c06c-4d70-a7c7-9096ce397188",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[numpy.int32,\n",
" numpy.signedinteger,\n",
" numpy.integer,\n",
" numpy.number,\n",
" numpy.generic,\n",
" object]"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.int32.mro()"
]
},
{
"cell_type": "markdown",
"id": "9c027bf4-7e53-4b25-bde5-034d8b825cbc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Container types"
]
},
{
"cell_type": "markdown",
"id": "efae812f-bb6c-4cec-bd86-6ec026658c17",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Constructing a `list`"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "8df5a6a4-f2b3-416b-ab5a-abddcf8e03f5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list = [0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]\n",
"\n",
"some_list"
]
},
{
"cell_type": "markdown",
"id": "78a692a9-31ec-490a-a55d-4413f8ba817b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `type` of a `list`"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "17619a80-d62c-4a58-8b0e-4bcaecdde995",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"list"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(some_list)"
]
},
{
"cell_type": "markdown",
"id": "440d2caf-e70a-4842-8609-6f54afc9084d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `len` of a `list`"
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "5e750866-0819-4ba2-af32-7130a49ade41",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(some_list)"
]
},
{
"cell_type": "markdown",
"id": "0bdf4f0c-9d33-464f-8147-c2872ebca525",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `in` for a `list`"
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "46c3c3d3-240e-4ac1-8f94-5671a96b5f9b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"3.3 in some_list"
]
},
{
"cell_type": "markdown",
"id": "b157ed1e-2edb-43ee-ac0c-f4ad4fb98e44",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Extracting an item from a `list`"
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "15986537-3935-4763-8e67-e390acdc3add",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"3.3"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list[3]"
]
},
{
"cell_type": "markdown",
"id": "b4530d15-fd0a-4bf0-84bf-e244a72614c8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Extracting with a negative index"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "2e4ecb6c-e48c-4bb9-8393-27c112ad77db",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"9.9"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list[-1]"
]
},
{
"cell_type": "markdown",
"id": "c7c08273-0804-4d76-b473-a3d06181aa71",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Slicing a range from a `list`"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "3e3cbe5e-3cb8-4cb5-954a-12af7ea77f47",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[3.3, 4.4, 5.5, 6.6]"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list[3:-3]"
]
},
{
"cell_type": "markdown",
"id": "7acfb646-b67e-4a1e-b5b7-1458f2c0880d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Slicing a range with no starting point"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "05a89cd5-4c23-420b-a3bd-6dea3dfa4409",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0.0, 1.1, 2.2, 3.3, 4.4]"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list[:5]"
]
},
{
"cell_type": "markdown",
"id": "2843d76e-c539-4df0-9c7c-42c5e34d1b85",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Slicing a range that skips even items"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "231f6365-bbc6-4352-83f5-95e292693309",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0.0, 2.2, 4.4, 6.6, 8.8]"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list[0::2]"
]
},
{
"cell_type": "markdown",
"id": "5c55d1d9-4e34-4bb3-8ee3-53ac858e4839",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Using a slice to reverse a `list`"
]
},
{
"cell_type": "code",
"execution_count": 81,
"id": "bd1447ac-6878-4756-b76d-9b2ea042bdef",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[9.9, 8.8, 7.7, 6.6, 5.5, 4.4, 3.3, 2.2, 1.1, 0.0]"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list[::-1]"
]
},
{
"cell_type": "markdown",
"id": "f5762262-20bf-4880-912c-188784362ebe",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Slicing a sliced `list`"
]
},
{
"cell_type": "code",
"execution_count": 82,
"id": "827aca6f-3d6e-4c30-a741-d4c3146f6354",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5.5"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list[2:8][3]"
]
},
{
"cell_type": "markdown",
"id": "39dd590d-4bee-4618-ba5d-6ad48df57b35",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Assigning to a `list` item"
]
},
{
"cell_type": "code",
"execution_count": 83,
"id": "2915b2b5-ec0a-4b1c-9b4c-03e9fee5d7f6",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0.0, 1.1, 2.2, 33333, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list[3] = 33333\n",
"\n",
"some_list"
]
},
{
"cell_type": "markdown",
"id": "61c5e683-f32e-4e8e-b967-287c6fe2e1f4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `del` of a `list` item"
]
},
{
"cell_type": "code",
"execution_count": 84,
"id": "ad85e59c-cd03-4645-9104-834741f42a91",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0.0, 1.1, 2.2, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"del some_list[3]\n",
"\n",
"some_list"
]
},
{
"cell_type": "markdown",
"id": "f73fbe86-cb97-40e6-b324-78bd34899a73",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list.append` (with a different type)"
]
},
{
"cell_type": "code",
"execution_count": 85,
"id": "3214f8d7-dd1a-4caa-a8b8-c708d981022d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0.0, 1.1, 2.2, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 'mixed types']"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list.append(\"mixed types\")\n",
"\n",
"some_list"
]
},
{
"cell_type": "markdown",
"id": "522304de-11ee-4ec6-aacc-c586e817784f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list.extend`"
]
},
{
"cell_type": "code",
"execution_count": 86,
"id": "10a68ecf-10ce-4d68-b631-9f6567f50f15",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0.0,\n",
" 1.1,\n",
" 2.2,\n",
" 4.4,\n",
" 5.5,\n",
" 6.6,\n",
" 7.7,\n",
" 8.8,\n",
" 9.9,\n",
" 'mixed types',\n",
" 'more',\n",
" 'more',\n",
" 'more!']"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list.extend([\"more\", \"more\", \"more!\"])\n",
"\n",
"some_list"
]
},
{
"cell_type": "markdown",
"id": "36779e6d-fc7e-40e9-b46c-70bdc3a833a5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list.index`"
]
},
{
"cell_type": "code",
"execution_count": 87,
"id": "58ee78b3-e920-44a3-afba-811bbf82879d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list.index(\"more\")"
]
},
{
"cell_type": "markdown",
"id": "b9079b1a-c588-4274-afde-448850766955",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list.pop`"
]
},
{
"cell_type": "code",
"execution_count": 88,
"id": "2d55f43e-6dd1-47eb-b143-5e66d1a6faf1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"more!\n",
"more\n",
"more\n",
"mixed types\n"
]
},
{
"data": {
"text/plain": [
"[0.0, 1.1, 2.2, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(some_list.pop())\n",
"print(some_list.pop())\n",
"print(some_list.pop())\n",
"print(some_list.pop())\n",
"\n",
"some_list"
]
},
{
"cell_type": "markdown",
"id": "a49b0a0d-d6c7-4cdd-9393-e2df92a3467b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `sum` of a `list`"
]
},
{
"cell_type": "code",
"execution_count": 89,
"id": "d4314b7e-2b37-4df8-b1c3-e9fec0adae1b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"46.199999999999996"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum(some_list)"
]
},
{
"cell_type": "markdown",
"id": "2b4ae21a-262a-4c79-9c15-cb9669147f6f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `sorted`"
]
},
{
"cell_type": "code",
"execution_count": 90,
"id": "15f96a33-566f-4a12-91d2-5b493b115437",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[-6, -1, -1, 2, 3, 4, 5, 7]"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"another_list = [3, -6, 5, 7, -1, -1, 2, 4]\n",
"\n",
"sorted(another_list)"
]
},
{
"cell_type": "markdown",
"id": "d23a833b-4288-4602-b8a1-d56c46512ea5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `sorted` with a `key` (`lambda`)"
]
},
{
"cell_type": "code",
"execution_count": 91,
"id": "beb7ca6a-da07-4d8a-ac2b-00838597e214",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[7, -6, 5, 4, 3, 2, -1, -1]"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted(another_list, key=lambda x: -abs(x))"
]
},
{
"cell_type": "markdown",
"id": "e7e7f839-dd07-4152-9b32-c19c066e6515",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list` of `list`"
]
},
{
"cell_type": "code",
"execution_count": 92,
"id": "93e5a33d-4bc7-475a-8859-8d526487430d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[[1.1, 2.2, 3.3], [], [4.4, 5.5]]"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[[1.1, 2.2, 3.3], [], [4.4, 5.5]]"
]
},
{
"cell_type": "markdown",
"id": "6a6e6a73-07f8-4af7-bbdd-7d8b8de87c7a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `tuple`"
]
},
{
"cell_type": "code",
"execution_count": 93,
"id": "fc10024c-9c4c-4134-b085-2cbd0a16b558",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(1.1, 2.2, 3.3, 4.4, 5.5)"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"as_tuple = (1.1, 2.2, 3.3, 4.4, 5.5)\n",
"\n",
"as_tuple"
]
},
{
"cell_type": "markdown",
"id": "108ff825-2032-4da9-bf68-8706c95480db",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `type` of a `tuple`"
]
},
{
"cell_type": "code",
"execution_count": 94,
"id": "c83ef4fa-8c8d-4bba-b51c-5fa2a9b40a6f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"tuple"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(as_tuple)"
]
},
{
"cell_type": "markdown",
"id": "ec598736-14c1-40ce-b33b-e441e7dbf33d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Can't assign to a `tuple`"
]
},
{
"cell_type": "code",
"execution_count": 95,
"id": "a8ba8cf2-6d68-4354-aea1-799b556b99a1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "TypeError",
"evalue": "'tuple' object does not support item assignment",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[95], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mas_tuple\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m33333\u001b[39m\n",
"\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment"
]
}
],
"source": [
"as_tuple[3] = 33333"
]
},
{
"cell_type": "markdown",
"id": "20132eee-49bb-4321-abea-1d7e7e251d79",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `tuple` as an argument to a function"
]
},
{
"cell_type": "code",
"execution_count": 96,
"id": "0513f093-de68-409d-b396-fc9217a13fbf",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"4.4"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def function(takes_a_tuple):\n",
" return takes_a_tuple[3]\n",
"\n",
"function((1.1, 2.2, 3.3, 4.4, 5.5))"
]
},
{
"cell_type": "markdown",
"id": "142e6167-f09c-4a4c-b3e9-8c1e043a6d13",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `set`"
]
},
{
"cell_type": "code",
"execution_count": 97,
"id": "0ea7256b-bc9d-423a-94e1-451840d1667d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{1, 2, 3, 4, 5}"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"{1, 1, 1, 2, 3, 3, 4, 4, 5}"
]
},
{
"cell_type": "markdown",
"id": "fafa5221-a0cf-4cad-8edb-2cd8344524dc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Constructing a `dict`"
]
},
{
"cell_type": "code",
"execution_count": 98,
"id": "cb3854da-b596-47cc-996a-faef22264b64",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'one': 1.1, 'two': 2.2, 'three': 3.3, 'four': 4.4, 'five': 5.5}"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict = {\"one\": 1.1, \"two\": 2.2, \"three\": 3.3, \"four\": 4.4, \"five\": 5.5}\n",
"\n",
"some_dict"
]
},
{
"cell_type": "markdown",
"id": "4dff4df0-439d-4bfc-8153-de566fe193af",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `len` of a `dict`"
]
},
{
"cell_type": "code",
"execution_count": 99,
"id": "ba64c413-cff6-4210-8e44-e2d1516805eb",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(some_dict)"
]
},
{
"cell_type": "markdown",
"id": "4c7f4e46-c512-4a54-9a09-cceffbe48a16",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `in` for a `dict`"
]
},
{
"cell_type": "code",
"execution_count": 100,
"id": "f00da2e9-0c7b-4054-a6bb-4ff1c1513ea0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"two\" in some_dict"
]
},
{
"cell_type": "markdown",
"id": "ae5c3fd8-0be4-4ca7-a31b-e95a01d9fe5c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Extracting a key from a `dict`"
]
},
{
"cell_type": "code",
"execution_count": 101,
"id": "1d4970de-f132-45ba-b3f1-38c0776d0d49",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"2.2"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict[\"two\"]"
]
},
{
"cell_type": "markdown",
"id": "2afb409d-8b59-4ab7-844a-e6c47a3151df",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Extracting a key with `get`"
]
},
{
"cell_type": "code",
"execution_count": 102,
"id": "0d60fd55-5987-43b2-9daf-c70d9bbbd1b8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'default'"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict.get(\"doesn't exist\", \"default\")"
]
},
{
"cell_type": "markdown",
"id": "c2acff6c-9b2e-4460-ac57-7a49b62257a4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Assigning to a `dict` key"
]
},
{
"cell_type": "code",
"execution_count": 103,
"id": "fbeecc06-da7c-4a1a-b676-9da733e294ef",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'one': 1.1, 'two': 22222, 'three': 3.3, 'four': 4.4, 'five': 5.5}"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict[\"two\"] = 22222\n",
"\n",
"some_dict"
]
},
{
"cell_type": "markdown",
"id": "265f21f7-1cc0-4f5f-b84c-2528b68447ed",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `del` of a `dict` key"
]
},
{
"cell_type": "code",
"execution_count": 104,
"id": "85b1eabe-6df6-433b-9a43-8ca5dce930b9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'one': 1.1, 'three': 3.3, 'four': 4.4, 'five': 5.5}"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"del some_dict[\"two\"]\n",
"\n",
"some_dict"
]
},
{
"cell_type": "markdown",
"id": "6a1a65df-3d50-4c8b-bbcf-9a04823fdb63",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `keys`"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "5d87ff0b-aa6b-440e-afe5-6b17dde06cf8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['one', 'three', 'four', 'five'])"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict.keys()"
]
},
{
"cell_type": "markdown",
"id": "8d03cb39-9245-42c4-b22c-b58b0fdaca79",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `values`"
]
},
{
"cell_type": "code",
"execution_count": 106,
"id": "5e8b3789-fee4-4872-a353-5d5178203d77",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"dict_values([1.1, 3.3, 4.4, 5.5])"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict.values()"
]
},
{
"cell_type": "markdown",
"id": "d674ad03-c8d2-4fa9-b932-c3fa3f6839d2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `items`"
]
},
{
"cell_type": "code",
"execution_count": 107,
"id": "056b6207-237c-4f35-9f41-8cff5c91255a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"dict_items([('one', 1.1), ('three', 3.3), ('four', 4.4), ('five', 5.5)])"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict.items()"
]
},
{
"cell_type": "markdown",
"id": "abe1a236-845e-405e-abc6-9a35279f6578",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `dict.pop`"
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "3d4cfafe-a8aa-4c53-b9c9-52d15b81b05d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.3\n"
]
},
{
"data": {
"text/plain": [
"{'one': 1.1, 'four': 4.4, 'five': 5.5}"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(some_dict.pop(\"three\"))\n",
"\n",
"some_dict"
]
},
{
"cell_type": "markdown",
"id": "f068799f-7e43-4821-84eb-c9f1fbdb2853",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Passing `*` of `list` to a function"
]
},
{
"cell_type": "code",
"execution_count": 109,
"id": "1f850847-e42d-48f8-8bd2-aaf09ed40861",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f(x, y):\n",
" return x**2 + y**2\n",
"\n",
"some_list = [3, 4]\n",
"\n",
"f(*some_list)"
]
},
{
"cell_type": "markdown",
"id": "c059e020-bf2f-4a1c-a0f3-d35b98b4537f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Passing `**` of a `dict` to a function"
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "3408208f-7d79-4100-ad9e-6d2b861fb527",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict = {\"y\": 4, \"x\": 3}\n",
"\n",
"f(**some_dict)"
]
},
{
"cell_type": "markdown",
"id": "8382e482-aad8-4d32-9cf0-58e549c34213",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Unpacking assignment with `*`"
]
},
{
"cell_type": "code",
"execution_count": 111,
"id": "b9b25d03-f36f-4686-8799-37381069f4da",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[3.3, 4.4, 5.5]"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list = [1.1, 2.2, 3.3, 4.4, 5.5]\n",
"\n",
"first, second, *rest = some_list\n",
"\n",
"rest"
]
},
{
"cell_type": "markdown",
"id": "f736080c-19a2-468f-a924-bc01fad56ed4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Comprehensions"
]
},
{
"cell_type": "markdown",
"id": "977cdb29-f7f5-4193-a48b-0626587336c2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list` comprehension"
]
},
{
"cell_type": "code",
"execution_count": 112,
"id": "ec081ccd-b87c-4174-90c0-3a1055049414",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[x**2 for x in range(10)]"
]
},
{
"cell_type": "markdown",
"id": "e5ce2161-db6c-4926-a653-f8855795ce66",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list` comprehension with an `if`-clause"
]
},
{
"cell_type": "code",
"execution_count": 113,
"id": "d6afd2ae-d0e0-4697-ab32-f12ae5816eb1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0, 4, 16, 36, 64]"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[x**2 for x in range(10) if x % 2 == 0]"
]
},
{
"cell_type": "markdown",
"id": "b89d411a-2ad0-45a6-bccb-1d4bd6e5cbcd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list` comprehension with two `for`-clauses"
]
},
{
"cell_type": "code",
"execution_count": 114,
"id": "132ff9cb-bb8a-418e-92b6-b6990ff45eda",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nested_list = [[0, 1, 2], [], [3, 4], [5], [6, 7, 8, 9]]\n",
"\n",
"[inner for outer in nested_list for inner in outer]"
]
},
{
"cell_type": "markdown",
"id": "2fb71346-90e2-4cd4-99ca-22fcfeb7bb96",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list` comprehension on `dict` `items`"
]
},
{
"cell_type": "code",
"execution_count": 115,
"id": "57adec5a-5e7e-43b0-aed6-304dd08e3044",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[13, 23, 35, 44, 54]"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_dict = {\"one\": 10, \"two\": 20, \"three\": 30, \"four\": 40, \"five\": 50}\n",
"\n",
"[len(key) + value for key, value in some_dict.items()]"
]
},
{
"cell_type": "markdown",
"id": "3228c88f-8326-448f-beb8-239b80b49969",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list` comprehension with `zip`"
]
},
{
"cell_type": "code",
"execution_count": 116,
"id": "f531e299-21d8-4656-a79a-9380543cf2af",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[13, 22, 31]"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"first_list = [10, 20, 30, 40, 50]\n",
"second_list = [3, 2, 1]\n",
"\n",
"[x + y for x, y in zip(first_list, second_list)]"
]
},
{
"cell_type": "markdown",
"id": "2d21a622-9bde-489f-a3be-8c1d8d7f8984",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `list` comprehension with `enumerate`"
]
},
{
"cell_type": "code",
"execution_count": 117,
"id": "82b6c47b-fba6-4c50-85ee-196713cfde85",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[4, 103, 203, 305, 404, 504]"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list = [\"zero\", \"one\", \"two\", \"three\", \"four\", \"five\"]\n",
"\n",
"[100*i + len(word) for i, word in enumerate(some_list)]"
]
},
{
"cell_type": "markdown",
"id": "2003534d-30a2-47f4-864d-629705b24cdb",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `dict` comprehension"
]
},
{
"cell_type": "code",
"execution_count": 118,
"id": "1a1d54e9-9eaf-43a4-a404-60af1f457609",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five'}"
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"{i: word for i, word in enumerate(some_list)}"
]
},
{
"cell_type": "markdown",
"id": "6cacae58-20e0-4957-8e39-431a6c2abf5e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `set` comprehension"
]
},
{
"cell_type": "code",
"execution_count": 119,
"id": "9f776181-8936-4b56-9b4e-8db4ae516bb8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{1, 4, 9, 16, 25}"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_list = [1, 1, 1, 2, 3, 3, 4, 4, 5]\n",
"\n",
"{x**2 for x in some_list}"
]
},
{
"cell_type": "markdown",
"id": "b515a1a6-1963-4c12-ba43-8ed72636db3a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `sum` of an iterator comprehension"
]
},
{
"cell_type": "code",
"execution_count": 120,
"id": "7da29236-ded8-4960-9380-d2b5dd072ca4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 120,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum(x for x in range(5))"
]
},
{
"cell_type": "markdown",
"id": "2b1c3d19-480f-4e6c-add1-56e645539a4e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Iterators"
]
},
{
"cell_type": "markdown",
"id": "26c0bf3f-994b-4a3b-866f-9d7036b29f37",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Iterator comprehension, try to extract item"
]
},
{
"cell_type": "code",
"execution_count": 121,
"id": "2eeb649f-cf08-4b2f-b849-0fe730952f2b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "TypeError",
"evalue": "'generator' object is not subscriptable",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[121], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m iterator \u001b[38;5;241m=\u001b[39m (x\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m10\u001b[39m))\n\u001b[0;32m----> 3\u001b[0m \u001b[43miterator\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m3\u001b[39;49m\u001b[43m]\u001b[49m\n",
"\u001b[0;31mTypeError\u001b[0m: 'generator' object is not subscriptable"
]
}
],
"source": [
"iterator = (x**2 for x in range(10))\n",
"\n",
"iterator[3]"
]
},
{
"cell_type": "markdown",
"id": "0ed54460-ae43-454a-9ceb-920bd5f46b0c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Iterator comprehension, get `next`"
]
},
{
"cell_type": "code",
"execution_count": 122,
"id": "1bb94064-5494-4436-839c-e8860c14aa50",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1\n",
"4\n"
]
}
],
"source": [
"print(next(iterator))\n",
"print(next(iterator))\n",
"print(next(iterator))"
]
},
{
"cell_type": "markdown",
"id": "4c3f50c3-d437-4a13-b6f7-0a6d6520f72d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Iterator comprehension, use in `for` loop"
]
},
{
"cell_type": "code",
"execution_count": 123,
"id": "c757fcea-cde8-40ac-b5ea-6e39be604c32",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"9\n",
"16\n",
"25\n",
"36\n",
"49\n",
"64\n",
"81\n"
]
}
],
"source": [
"for x in iterator:\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"id": "ee3e2dde-8d83-430e-88a0-f8ef777c7061",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Create iterator with `yield`"
]
},
{
"cell_type": "code",
"execution_count": 124,
"id": "415d9971-f7f2-4b87-ada8-b3ffcbb7f581",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1\n",
"4\n"
]
}
],
"source": [
"def generator(n):\n",
" for x in range(n):\n",
" yield x**2\n",
"\n",
"iterator = generator(10)\n",
"\n",
"print(next(iterator))\n",
"print(next(iterator))\n",
"print(next(iterator))"
]
},
{
"cell_type": "markdown",
"id": "145d3305-bf37-4eb2-8a50-9924b4e83203",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Restarting iteration"
]
},
{
"cell_type": "code",
"execution_count": 125,
"id": "87fa4568-9307-4a03-b124-0d79b21bfa3c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[9, 16, 25, 36, 49, 64, 81]\n",
"[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\n"
]
}
],
"source": [
"print(list(iterator))\n",
"\n",
"iterator = generator(10)\n",
"\n",
"print(list(iterator))"
]
},
{
"cell_type": "markdown",
"id": "20f11117-d083-4500-b198-33afe344c084",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Example of `yield from`"
]
},
{
"cell_type": "code",
"execution_count": 126,
"id": "26311242-4123-426c-ba07-fc3de422ce66",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[0, 1, 4, 9, 16, 0, 1, 4, 9, 16, 0, 1, 4, 9, 16]"
]
},
"execution_count": 126,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def another_generator(n):\n",
" for x in range(3):\n",
" yield from generator(n)\n",
"\n",
"list(another_generator(5))"
]
},
{
"cell_type": "markdown",
"id": "6c9dac71-7c0a-4a52-8ce1-e15f369c0f21",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Exceptions"
]
},
{
"cell_type": "markdown",
"id": "2f3c8b82-daf5-45af-97a7-f83f9b888cc1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `raise` exception"
]
},
{
"cell_type": "code",
"execution_count": 127,
"id": "299365f9-6ea8-4f97-9da8-9c5bfe917385",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "Exception",
"evalue": "intentionally",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mException\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[127], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mintentionally\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"\u001b[0;31mException\u001b[0m: intentionally"
]
}
],
"source": [
"raise Exception(\"intentionally\")"
]
},
{
"cell_type": "markdown",
"id": "39724f30-bb8d-4ec3-a0b9-825d64aca395",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `assert` statement"
]
},
{
"cell_type": "code",
"execution_count": 128,
"id": "b0bbb75e-3cbb-45cf-a4f0-7b0aa34712ab",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "AssertionError",
"evalue": "oops, 3 != 4",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[128], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m expected_value \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m3\u001b[39m\n\u001b[1;32m 2\u001b[0m actual_value \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m4\u001b[39m\n\u001b[0;32m----> 4\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m expected_value \u001b[38;5;241m==\u001b[39m actual_value, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124moops, \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mexpected_value\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m != \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mactual_value\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n",
"\u001b[0;31mAssertionError\u001b[0m: oops, 3 != 4"
]
}
],
"source": [
"expected_value = 3\n",
"actual_value = 4\n",
"\n",
"assert expected_value == actual_value, f\"oops, {expected_value} != {actual_value}\""
]
},
{
"cell_type": "markdown",
"id": "3b22ebc3-b82a-4451-a71f-85155b262c0a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `try`-`except`"
]
},
{
"cell_type": "code",
"execution_count": 129,
"id": "129f1ba5-5b0a-4287-ae54-63c165872664",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ignoring <class 'TypeError'>(expected integer, not string)\n"
]
}
],
"source": [
"def expects_integer(x):\n",
" if not isinstance(x, int):\n",
" raise TypeError(f\"expected integer, not {x}\")\n",
" return x**2\n",
"\n",
"try:\n",
" expects_integer(\"string\")\n",
"except TypeError as err:\n",
" print(f\"ignoring {type(err)}({err})\")"
]
},
{
"cell_type": "markdown",
"id": "cb298623-c7d0-4716-a771-c0980c99b539",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `try`-`except`-`else`"
]
},
{
"cell_type": "code",
"execution_count": 130,
"id": "46943112-f3e9-4360-969f-f667845730ac",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"25\n"
]
}
],
"source": [
"try:\n",
" output = expects_integer(5)\n",
"except TypeError as err:\n",
" print(f\"ignoring {type(err)}({err})\")\n",
"else:\n",
" print(output)"
]
},
{
"cell_type": "markdown",
"id": "482607ed-eda6-429a-871e-d92ca36e1175",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `try`-`finally`"
]
},
{
"cell_type": "code",
"execution_count": 131,
"id": "29d3a4b7-3d55-4341-82a9-a4a2e1f689f7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"we get here anyway\n"
]
},
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: 'file/that/does/not/exist'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[131], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mfile/that/does/not/exist\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwe get here anyway\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"File \u001b[0;32m~/mambaforge/lib/python3.10/site-packages/IPython/core/interactiveshell.py:324\u001b[0m, in \u001b[0;36m_modified_open\u001b[0;34m(file, *args, **kwargs)\u001b[0m\n\u001b[1;32m 317\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m file \u001b[38;5;129;01min\u001b[39;00m {\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m}:\n\u001b[1;32m 318\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 319\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIPython won\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mt let you open fd=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfile\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m by default \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 320\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mas it is likely to crash IPython. If you know what you are doing, \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 321\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myou can use builtins\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m open.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 322\u001b[0m )\n\u001b[0;32m--> 324\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mio_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'file/that/does/not/exist'"
]
}
],
"source": [
"try:\n",
" open(\"file/that/does/not/exist\")\n",
"finally:\n",
" print(\"we get here anyway\")"
]
},
{
"cell_type": "markdown",
"id": "0f67fe60-6b65-470a-9724-f39173b27c35",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Class definitions"
]
},
{
"cell_type": "markdown",
"id": "82520684-7eab-437c-a4ca-9061e56d46fd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class as a bag"
]
},
{
"cell_type": "code",
"execution_count": 132,
"id": "b9d5e1d4-d891-4c3f-9837-2b3e6f4fd911",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Bag:\n",
" pass\n",
"\n",
"bag = Bag()\n",
"\n",
"bag.x = 5\n",
"\n",
"bag.x"
]
},
{
"cell_type": "markdown",
"id": "08eb0906-7d31-46f6-b66f-561424bebdba",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with method"
]
},
{
"cell_type": "code",
"execution_count": 133,
"id": "09460148-49c7-4f0e-adbe-08905bde5796",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5.0"
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def magnitude(self):\n",
" return math.sqrt(self.x**2 + self.y**2)\n",
"\n",
"point = Point()\n",
"\n",
"point.x = 3\n",
"point.y = 4\n",
"\n",
"point.magnitude()"
]
},
{
"cell_type": "markdown",
"id": "6ef9e2c7-45b7-4ba7-955b-e7f2ebe57270",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Private method (one `_`)"
]
},
{
"cell_type": "code",
"execution_count": 134,
"id": "fb01e4eb-13ec-4dae-9b9e-c643313d2d1d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5.0"
]
},
"execution_count": 134,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def _hidden(self):\n",
" return math.sqrt(self.x**2 + self.y**2)\n",
"point = Point()\n",
"\n",
"point.x = 3\n",
"point.y = 4\n",
"\n",
"point._hidden()"
]
},
{
"cell_type": "markdown",
"id": "0381bc74-2721-46f5-bfa1-2e828fc10542",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Really private method (two `_`)"
]
},
{
"cell_type": "code",
"execution_count": 135,
"id": "b0bce50e-d475-4853-93f5-6fc9c5044727",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'Point' object has no attribute '__hidden'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[135], line 9\u001b[0m\n\u001b[1;32m 6\u001b[0m point\u001b[38;5;241m.\u001b[39mx \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m3\u001b[39m\n\u001b[1;32m 7\u001b[0m point\u001b[38;5;241m.\u001b[39my \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m4\u001b[39m\n\u001b[0;32m----> 9\u001b[0m \u001b[43mpoint\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__hidden\u001b[49m()\n",
"\u001b[0;31mAttributeError\u001b[0m: 'Point' object has no attribute '__hidden'"
]
}
],
"source": [
"class Point:\n",
" def __hidden(self):\n",
" return math.sqrt(self.x**2 + self.y**2)\n",
"point = Point()\n",
"\n",
"point.x = 3\n",
"point.y = 4\n",
"\n",
"point.__hidden()"
]
},
{
"cell_type": "markdown",
"id": "712bec34-2b5e-4bc3-941e-fe76b143baad",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class method with an oddly named `self`"
]
},
{
"cell_type": "code",
"execution_count": 136,
"id": "72ab9fc5-33d8-4774-86aa-b9b6813651d5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5.0"
]
},
"execution_count": 136,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def magnitude(can_have_any_name):\n",
" return math.sqrt(can_have_any_name.x**2 + can_have_any_name.y**2)\n",
"\n",
"point = Point()\n",
"\n",
"point.x = 3\n",
"point.y = 4\n",
"\n",
"point.magnitude()"
]
},
{
"cell_type": "markdown",
"id": "bb20a9e8-8f6f-48fc-b1d7-4c0b164b0ece",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `__init__`"
]
},
{
"cell_type": "code",
"execution_count": 137,
"id": "f96c5b00-15ba-489b-a363-ec7da6b12cbf",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"5.0"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" def magnitude(self):\n",
" return math.sqrt(self.x**2 + self.y**2)\n",
"\n",
"point = Point(3, 4)\n",
"\n",
"point.magnitude()"
]
},
{
"cell_type": "markdown",
"id": "32586b14-df99-4a6d-9e02-f6165b7e3b27",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `__repr__`"
]
},
{
"cell_type": "code",
"execution_count": 138,
"id": "4a4c23c5-eac8-4ad6-8aeb-00a0658733ca",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Point(3, 4)"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" def __repr__(self):\n",
" return f\"Point({self.x}, {self.y})\"\n",
"\n",
"Point(3, 4)"
]
},
{
"cell_type": "markdown",
"id": "6616e035-7704-4df8-8c7c-53ea9bee8fea",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `__getattr__`"
]
},
{
"cell_type": "code",
"execution_count": 139,
"id": "71ec466a-783b-4315-a50e-6b452a2eb7e8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(3, 3, 5, 4, 4)"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class AttributeLength:\n",
" def __getattr__(self, name):\n",
" return len(name)\n",
"\n",
"obj = AttributeLength()\n",
"\n",
"obj.one, obj.two, obj.three, obj.four, obj.five"
]
},
{
"cell_type": "markdown",
"id": "20783b9a-55bb-4963-93a7-777e8d901436",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `__getitem__`"
]
},
{
"cell_type": "code",
"execution_count": 140,
"id": "42f8217d-6c29-4f51-a48f-a47757b48c5e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(1, 4, 9, 16, 25)"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Squaring:\n",
" def __getitem__(self, item):\n",
" return item**2\n",
"\n",
"obj = Squaring()\n",
"\n",
"obj[1], obj[2], obj[3], obj[4], obj[5]"
]
},
{
"cell_type": "markdown",
"id": "47e48041-5953-492b-acea-3184dadeb416",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `__call__`"
]
},
{
"cell_type": "code",
"execution_count": 141,
"id": "b1a58a7a-a8d4-4855-98de-73c78921ab41",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"11"
]
},
"execution_count": 141,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Incrementor:\n",
" def __init__(self, by):\n",
" self.by = by\n",
"\n",
" def __call__(self, x):\n",
" return x + self.by\n",
"\n",
"incrementor = Incrementor(1)\n",
"\n",
"incrementor(10)"
]
},
{
"cell_type": "markdown",
"id": "69de0f95-067f-4552-8f04-d0cb6eb6ef44",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `__eq__`"
]
},
{
"cell_type": "code",
"execution_count": 142,
"id": "07314889-9085-4cf6-a002-df700fe97951",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" def __eq__(self, other):\n",
" return type(self) == type(other) and self.x == other.x and self.y == other.y\n",
"\n",
"one = Point(3, 4)\n",
"two = Point(3, 4)\n",
"\n",
"one == two"
]
},
{
"cell_type": "markdown",
"id": "b02c0e8c-1f62-4802-b6f1-eb7c028b8393",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Equality versus `is`"
]
},
{
"cell_type": "code",
"execution_count": 143,
"id": "6f991db7-8c42-4bd2-a5bd-c262dc836f4d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"one is two"
]
},
{
"cell_type": "markdown",
"id": "74e33cda-cd6b-4807-92f0-44d31a4fab55",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `id`"
]
},
{
"cell_type": "code",
"execution_count": 144,
"id": "b593fa7f-93bf-457b-8732-c69eee6847f8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(133038784424896, 133038784422256)"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"id(one), id(two)"
]
},
{
"cell_type": "markdown",
"id": "cef32675-0bcb-479b-bc38-f702e5d358d7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Unhashable object"
]
},
{
"cell_type": "code",
"execution_count": 145,
"id": "bdcb1d39-4952-4557-b408-e1cc5ddb7020",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "TypeError",
"evalue": "unhashable type: 'list'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[145], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m list_is_not_hashable \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m]\n\u001b[0;32m----> 3\u001b[0m {list_is_not_hashable: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mone\u001b[39m\u001b[38;5;124m\"\u001b[39m}\n",
"\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'"
]
}
],
"source": [
"list_is_not_hashable = [1, 2, 3]\n",
"\n",
"{list_is_not_hashable: \"one\"}"
]
},
{
"cell_type": "markdown",
"id": "722b390e-9cfe-450d-8ede-4e3b9f7b7363",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Hashable object"
]
},
{
"cell_type": "code",
"execution_count": 146,
"id": "35e7bb2f-2636-4c29-8bf5-62f7e3011f71",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{Point(3, 4): 'two', Point(4, 5): 'three'}"
]
},
"execution_count": 146,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" def __repr__(self):\n",
" return f\"Point({self.x}, {self.y})\"\n",
"\n",
" def __eq__(self, other):\n",
" return type(self) == type(other) and self.x == other.x and self.y == other.y\n",
"\n",
" def __hash__(self):\n",
" return hash((type(self), self.x, self.y))\n",
"\n",
"{Point(3, 4): \"one\", Point(3, 4): \"two\", Point(4, 5): \"three\"}"
]
},
{
"cell_type": "markdown",
"id": "d214f42c-aa18-4cd0-add6-dda1f174947f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `@property`"
]
},
{
"cell_type": "code",
"execution_count": 147,
"id": "0406da1e-a43d-4044-ac48-341bde581999",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "AttributeError",
"evalue": "can't set attribute 'x'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[147], line 16\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_hidden_y\n\u001b[1;32m 14\u001b[0m point \u001b[38;5;241m=\u001b[39m Point(\u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m4\u001b[39m)\n\u001b[0;32m---> 16\u001b[0m \u001b[43mpoint\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mx\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m33333\u001b[39m\n",
"\u001b[0;31mAttributeError\u001b[0m: can't set attribute 'x'"
]
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self._hidden_x = x\n",
" self._hidden_y = y\n",
"\n",
" @property\n",
" def x(self):\n",
" return self._hidden_x\n",
"\n",
" @property\n",
" def y(self):\n",
" return self._hidden_y\n",
"\n",
"point = Point(3, 4)\n",
"\n",
"point.x = 33333"
]
},
{
"cell_type": "markdown",
"id": "9d1616f2-8351-4e69-983c-67619c292dbf",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with mutable `@property`"
]
},
{
"cell_type": "code",
"execution_count": 148,
"id": "81fc76ce-4e11-4423-86db-18166b3838c2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"33333"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" @property\n",
" def x(self):\n",
" return self._hidden_x\n",
"\n",
" @x.setter\n",
" def x(self, value):\n",
" assert isinstance(value, int)\n",
" self._hidden_x = value\n",
"\n",
" @property\n",
" def y(self):\n",
" return self._hidden_y\n",
"\n",
" @y.setter\n",
" def y(self, value):\n",
" assert isinstance(value, int)\n",
" self._hidden_y = value\n",
"\n",
"point = Point(3, 4)\n",
"\n",
"point.x = 33333\n",
"\n",
"point.x"
]
},
{
"cell_type": "markdown",
"id": "60ab4ce5-2822-4174-a48c-cf5a5f915707",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `@classmethod`"
]
},
{
"cell_type": "code",
"execution_count": 149,
"id": "7118c67c-dcfd-498d-a4ef-b995dbf53937",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Point(1, 0)"
]
},
"execution_count": 149,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" @classmethod\n",
" def unit(cls, axis):\n",
" if axis == \"x\":\n",
" return Point(1, 0)\n",
" else:\n",
" return Point(0, 1)\n",
"\n",
" def __repr__(self):\n",
" return f\"Point({self.x}, {self.y})\"\n",
"\n",
"Point.unit(\"x\")"
]
},
{
"cell_type": "markdown",
"id": "0d17040c-42ad-4f39-93e4-4a4404b0b8a6",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class with `@staticmethod`"
]
},
{
"cell_type": "code",
"execution_count": 150,
"id": "fce7b043-8cf0-4907-89bc-a93c325a19cb",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'whatever'"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" @staticmethod\n",
" def something_else():\n",
" return \"whatever\"\n",
"\n",
"Point.something_else()"
]
},
{
"cell_type": "markdown",
"id": "8dc43e3b-6fef-43c8-9c9b-e33545e559b0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Class object attributes"
]
},
{
"cell_type": "code",
"execution_count": 151,
"id": "b4d9a828-37dd-48d9-a198-ec849a4c1637",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'whatever'"
]
},
"execution_count": 151,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" something_else = \"whatever\"\n",
"\n",
"Point.something_else"
]
},
{
"cell_type": "markdown",
"id": "fe024885-9221-471c-b38e-30a78b1707f2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `@dataclass`"
]
},
{
"cell_type": "code",
"execution_count": 152,
"id": "5d34c01b-d4fe-4f7a-9523-d926970fc7d1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Point(x=3, y=4)"
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from dataclasses import dataclass\n",
"\n",
"@dataclass\n",
"class Point:\n",
" x: int\n",
" y: int\n",
"\n",
"Point(3, 4)"
]
},
{
"cell_type": "markdown",
"id": "89b3fe54-90d2-4300-ada1-5a3a3699b654",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Frozen `@dataclass`"
]
},
{
"cell_type": "code",
"execution_count": 153,
"id": "c4d4a28f-9f71-4edb-afc0-e316ebe9b8dd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "FrozenInstanceError",
"evalue": "cannot assign to field 'x'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFrozenInstanceError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[153], line 10\u001b[0m\n\u001b[1;32m 6\u001b[0m y: \u001b[38;5;28mint\u001b[39m\n\u001b[1;32m 8\u001b[0m point \u001b[38;5;241m=\u001b[39m Point(\u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m4\u001b[39m)\n\u001b[0;32m---> 10\u001b[0m \u001b[43mpoint\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mx\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m33333\u001b[39m\n",
"File \u001b[0;32m<string>:4\u001b[0m, in \u001b[0;36m__setattr__\u001b[0;34m(self, name, value)\u001b[0m\n",
"\u001b[0;31mFrozenInstanceError\u001b[0m: cannot assign to field 'x'"
]
}
],
"source": [
"from dataclasses import dataclass\n",
"\n",
"@dataclass(frozen=True)\n",
"class Point:\n",
" x: int\n",
" y: int\n",
"\n",
"point = Point(3, 4)\n",
"\n",
"point.x = 33333"
]
},
{
"cell_type": "markdown",
"id": "4c5ee2bc-4c7a-4f28-b3d6-c9f41d545dcd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Simple metaclass"
]
},
{
"cell_type": "code",
"execution_count": 154,
"id": "bf208b01-696c-4aca-a9dd-481e560136b7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"defining class Something\n"
]
}
],
"source": [
"class mytype(type):\n",
" def __new__(cls, name, base_classes, attributes):\n",
" print(f\"defining class {name}\")\n",
" return type.__new__(cls, name, base_classes, attributes)\n",
"\n",
"class Something(metaclass=mytype):\n",
" pass"
]
},
{
"cell_type": "markdown",
"id": "a6cec2e1-8100-4bdc-b21d-6191931afa45",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Inspecting classes"
]
},
{
"cell_type": "markdown",
"id": "64501cb1-17bd-495d-b3d4-f8a128a5b303",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `dir`"
]
},
{
"cell_type": "code",
"execution_count": 155,
"id": "3274f9aa-17f5-4c8d-9714-6497335a631b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"['something_else', 'x', 'y']"
]
},
"execution_count": 155,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" something_else = \"whatever\"\n",
"\n",
"point = Point(3, 4)\n",
"\n",
"[x for x in dir(point) if not x.startswith(\"_\")]"
]
},
{
"cell_type": "markdown",
"id": "38b3b7d4-3f96-4473-bd19-0a5544568555",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `hasattr`"
]
},
{
"cell_type": "code",
"execution_count": 156,
"id": "1f58f5a5-c3cf-47e5-b17b-0ce397e6cd8d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 156,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hasattr(point, \"z\")"
]
},
{
"cell_type": "markdown",
"id": "88d8e1af-8b32-45a6-bc2c-4e2a3f82f862",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `getattr`"
]
},
{
"cell_type": "code",
"execution_count": 157,
"id": "afc723c6-17ab-4eb9-b69f-b6121ea4e6c4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'Point' object has no attribute 'z'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[157], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mpoint\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mz\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
"\u001b[0;31mAttributeError\u001b[0m: 'Point' object has no attribute 'z'"
]
}
],
"source": [
"getattr(point, \"z\")"
]
},
{
"cell_type": "markdown",
"id": "0f4a7466-1bb0-439b-b467-b3127060b49d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `getattr` with default"
]
},
{
"cell_type": "code",
"execution_count": 158,
"id": "d0ff2624-07ad-4c2b-be51-a329f13e8bc7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'default'"
]
},
"execution_count": 158,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"getattr(point, \"z\", \"default\")"
]
},
{
"cell_type": "markdown",
"id": "059282c8-aae7-49c3-bf57-aeccacee2bf9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `__dict__`"
]
},
{
"cell_type": "code",
"execution_count": 159,
"id": "1a25d369-2048-4806-bfdf-eba621dc8f8d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'x': 3, 'y': 4}"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"point.__dict__"
]
},
{
"cell_type": "markdown",
"id": "7b18efef-e5b5-48ed-9cca-c7a23de439e2",
"metadata": {},
"source": [
"### Inheritance"
]
},
{
"cell_type": "markdown",
"id": "68b98be8-59cf-434b-8c13-d28b22ab602f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Defining a subclass, inheriting method"
]
},
{
"cell_type": "code",
"execution_count": 160,
"id": "1e125734-1ddc-4863-bd44-a2dbc5fd1bcc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(625, 5.0)"
]
},
"execution_count": 160,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Superclass:\n",
" def __init__(self, x):\n",
" self.x = x\n",
"\n",
" def square(self):\n",
" return self.x**2\n",
"\n",
"class Subclass(Superclass):\n",
" def square_root(self):\n",
" return math.sqrt(self.x)\n",
"\n",
"obj = Subclass(25)\n",
"\n",
"obj.square(), obj.square_root()"
]
},
{
"cell_type": "markdown",
"id": "e440cf91-59c5-4291-961e-3c5f1bf1e7b3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Defining a subclass, overloading method"
]
},
{
"cell_type": "code",
"execution_count": 161,
"id": "f89fced6-895b-40b0-ad05-9ca32850662f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'I am a square!'"
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class Superclass:\n",
" def __init__(self, x):\n",
" self.x = x\n",
"\n",
" def square(self):\n",
" return self.x**2\n",
"\n",
"class Subclass(Superclass):\n",
" def square(self):\n",
" return \"I am a square!\"\n",
"\n",
"obj = Subclass(25)\n",
"\n",
"obj.square()"
]
},
{
"cell_type": "markdown",
"id": "aada6068-84de-4f87-ae75-dd485fff750c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `isinstance` on custom classes"
]
},
{
"cell_type": "code",
"execution_count": 162,
"id": "d1d5bd96-038c-498d-85ce-7e55b2b64a8c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 162,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"isinstance(obj, Superclass)"
]
},
{
"cell_type": "markdown",
"id": "7095182a-6161-4035-ae5b-c5f3d285742d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `issubclass` on custom classes"
]
},
{
"cell_type": "code",
"execution_count": 163,
"id": "5e7a40d7-4a6a-4f78-af1a-279b283b7bd6",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 163,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"issubclass(Subclass, Superclass)"
]
},
{
"cell_type": "markdown",
"id": "1582e5e6-78d8-4ea3-acba-7e4c5a161546",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Multiple inheritance"
]
},
{
"cell_type": "code",
"execution_count": 164,
"id": "76dbe992-18d5-4b07-8427-8d5c219798a6",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"(625, 5.0)"
]
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class HasSquare:\n",
" def square(self):\n",
" return self.x**2\n",
"\n",
"class HasSquareRoot:\n",
" def square_root(self):\n",
" return math.sqrt(self.x)\n",
"\n",
"class ActualClass(HasSquare, HasSquareRoot):\n",
" def __init__(self, x):\n",
" self.x = x\n",
"\n",
"obj = ActualClass(25)\n",
"\n",
"obj.square(), obj.square_root()"
]
},
{
"cell_type": "markdown",
"id": "354d3045-586d-4d7d-a1ec-cc8a659e465b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Decorators"
]
},
{
"cell_type": "markdown",
"id": "1e0147c5-12c0-4cd1-97d6-c78c49c414e7",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Defining a decorator for a function"
]
},
{
"cell_type": "code",
"execution_count": 165,
"id": "f9c32e78-2756-4b20-b4c3-6034c1498743",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"9"
]
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def squareify(function):\n",
" return lambda x: function(x)**2\n",
"\n",
"@squareify\n",
"def f(x):\n",
" return x + 1\n",
"\n",
"f(2)"
]
},
{
"cell_type": "markdown",
"id": "d58deeda-ceed-4288-8610-ccd25a331035",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Defining a decorator for a class"
]
},
{
"cell_type": "code",
"execution_count": 166,
"id": "a1591d16-c99c-4d25-b515-58e0df28bba9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"625"
]
},
"execution_count": 166,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def mixin_square(cls):\n",
" class Output(cls):\n",
" def square(self):\n",
" return self.x**2\n",
"\n",
" Output.__name__ = cls.__name__\n",
" return Output\n",
"\n",
"@mixin_square\n",
"class ActualClass:\n",
" def __init__(self, x):\n",
" self.x = x\n",
"\n",
"obj = ActualClass(25)\n",
"\n",
"obj.square()"
]
},
{
"cell_type": "markdown",
"id": "c5166e8a-7235-444e-8389-00765250736f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Structural matching"
]
},
{
"cell_type": "markdown",
"id": "3fa90c46-c15f-4931-a1df-81facc7e18c0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Matching exactly"
]
},
{
"cell_type": "code",
"execution_count": 167,
"id": "4e8c9f69-6b90-405c-89e1-e4cd99d3eae3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"two\n"
]
}
],
"source": [
"item = 2\n",
"\n",
"match item:\n",
" case 1:\n",
" print(\"one\")\n",
" case 2:\n",
" print(\"two\")"
]
},
{
"cell_type": "markdown",
"id": "a7f074e6-540c-46a6-be7a-e48860bde6f9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Matching exactly with a default"
]
},
{
"cell_type": "code",
"execution_count": 168,
"id": "3f0a22fb-d5bc-4dc3-b1e8-db3d1e8e5dc0",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"I don't recognize 3\n"
]
}
],
"source": [
"item = 3\n",
"\n",
"match item:\n",
" case 1:\n",
" print(\"one\")\n",
" case 2:\n",
" print(\"two\")\n",
" case _:\n",
" print(f\"I don't recognize {item}\")"
]
},
{
"cell_type": "markdown",
"id": "bf58859e-28ea-40c4-aa0b-c96f2842cc38",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Matching with `tuple` unpacking"
]
},
{
"cell_type": "code",
"execution_count": 169,
"id": "c149e466-f099-4619-83b3-7ffea1da7b9c",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"two: 1 2\n"
]
}
],
"source": [
"item = 1, 2\n",
"\n",
"match item:\n",
" case (x, y, z):\n",
" print(f\"three: {x} {y} {z}\")\n",
" case (x, y):\n",
" print(f\"two: {x} {y}\")\n",
" case (x,):\n",
" print(f\"one: {x}\")"
]
},
{
"cell_type": "markdown",
"id": "a333c873-de26-4f03-84b6-93e663b01f73",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Matching with `dict` unpacking"
]
},
{
"cell_type": "code",
"execution_count": 170,
"id": "fe6ce3c1-df27-4f44-b35c-5d6d683ab9ad",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"two: 1 2\n"
]
}
],
"source": [
"item = {\"one\": 1, \"two\": 2}\n",
"\n",
"match item:\n",
" case {\"one\": x, \"two\": y, \"three\": z}:\n",
" print(f\"three: {x} {y} {z}\")\n",
" case {\"one\": x, \"two\": y}:\n",
" print(f\"two: {x} {y}\")\n",
" case {\"one\": x}:\n",
" print(f\"one: {x}\")"
]
},
{
"cell_type": "markdown",
"id": "3691821b-d113-4420-9890-c7b137b6b92b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Matching class with `__match_args__`"
]
},
{
"cell_type": "code",
"execution_count": 171,
"id": "86b20ff9-425f-4032-868a-4ca02b2942b8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Point with x: 3 y: 4\n"
]
}
],
"source": [
"class Point:\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
"\n",
" __match_args__ = (\"x\", \"y\")\n",
"\n",
"item = Point(3, 4)\n",
"\n",
"match item:\n",
" case Point(x, y):\n",
" print(f\"Point with x: {x} y: {y}\")"
]
},
{
"cell_type": "markdown",
"id": "4531238d-dfc1-45c9-b45b-8aa6731eff73",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Matching `@dataclass`"
]
},
{
"cell_type": "code",
"execution_count": 172,
"id": "f05949b7-a05b-4875-835c-ebffcd83e43d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Point with x: 3 y: 4\n"
]
}
],
"source": [
"@dataclass\n",
"class Point:\n",
" x: int\n",
" y: int\n",
"\n",
"item = Point(3, 4)\n",
"\n",
"match item:\n",
" case Point(x, y):\n",
" print(f\"Point with x: {x} y: {y}\")"
]
},
{
"cell_type": "markdown",
"id": "e9088cb6-90a9-4a3b-bf4a-f5225853feb5",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Matching with guards"
]
},
{
"cell_type": "code",
"execution_count": 173,
"id": "4a969ae5-e2a3-470e-8fbb-554e3b4272db",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Point with x: 3 y: 4\n"
]
}
],
"source": [
"match item:\n",
" case Point(x, y) if x == 0 and y == 0:\n",
" print(f\"zero Point\")\n",
"\n",
" case Point(x, y) if x == 1 and y == 0:\n",
" print(f\"unit Point in x\")\n",
"\n",
" case Point(x, y) if x == 0 and y == 1:\n",
" print(f\"unit Point in y\")\n",
"\n",
" case Point(x, y):\n",
" print(f\"Point with x: {x} y: {y}\")"
]
},
{
"cell_type": "markdown",
"id": "6bf5fa4b-f68e-48d6-8377-04bfa7b3e0d9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Matching multiple patterns"
]
},
{
"cell_type": "code",
"execution_count": 174,
"id": "1ba13870-1e8b-4e2f-86eb-e25d2fb01100",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.14 is either a float or an int\n"
]
}
],
"source": [
"item = 3.14\n",
"\n",
"match item:\n",
" case float(x) | int(x):\n",
" print(f\"{x} is either a float or an int\")"
]
},
{
"cell_type": "markdown",
"id": "dfe0e069-1ab3-4c04-b253-9ac1b0d2c7cc",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Executing quoted code"
]
},
{
"cell_type": "markdown",
"id": "89296f13-f73a-43bf-b9b5-e78e09b3bd06",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `exec`"
]
},
{
"cell_type": "code",
"execution_count": 175,
"id": "9428cce3-7bcb-427d-908a-e727001e8fa9",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 175,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scope = {\"x\": 5}\n",
"\n",
"code = \"y = x**2\"\n",
"\n",
"exec(code, scope)\n",
"\n",
"scope[\"y\"]"
]
},
{
"cell_type": "markdown",
"id": "9513b2ab-a2be-450b-83ac-c5a68dc2df11",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `eval`"
]
},
{
"cell_type": "code",
"execution_count": 176,
"id": "558d4a8a-07b9-4eec-9f91-8aa1d23e85cb",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 176,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scope = {\"x\": 5}\n",
"\n",
"code = \"x**2\"\n",
"\n",
"eval(code, scope)"
]
},
{
"cell_type": "markdown",
"id": "9a3d5073-769f-46e6-ad1c-f0b863a92066",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `ast.literal_eval`"
]
},
{
"cell_type": "code",
"execution_count": 177,
"id": "e4a12d0e-a192-48c4-9100-23a792c654c4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[1.1, 2.2, 3.3, 4.4, 5.5]"
]
},
"execution_count": 177,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import ast\n",
"\n",
"code = \"[1.1, 2.2, 3.3, 4.4, 5.5]\"\n",
"\n",
"ast.literal_eval(code)"
]
},
{
"cell_type": "markdown",
"id": "671bec9c-18f3-4647-a78e-655f3e7ddd40",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `ast.literal_eval` prevents execution"
]
},
{
"cell_type": "code",
"execution_count": 178,
"id": "df80c47a-83f1-40b8-b7b7-c997fee989ce",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"raises-exception"
]
},
"outputs": [
{
"ename": "ValueError",
"evalue": "malformed node or string on line 1: <ast.BinOp object at 0x78ff80d4d030>",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[178], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m code \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m[2 + 2]\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m----> 3\u001b[0m \u001b[43mast\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mliteral_eval\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcode\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/mambaforge/lib/python3.10/ast.py:110\u001b[0m, in \u001b[0;36mliteral_eval\u001b[0;34m(node_or_string)\u001b[0m\n\u001b[1;32m 108\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m left \u001b[38;5;241m-\u001b[39m right\n\u001b[1;32m 109\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _convert_signed_num(node)\n\u001b[0;32m--> 110\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_convert\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnode_or_string\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/mambaforge/lib/python3.10/ast.py:90\u001b[0m, in \u001b[0;36mliteral_eval.<locals>._convert\u001b[0;34m(node)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mtuple\u001b[39m(\u001b[38;5;28mmap\u001b[39m(_convert, node\u001b[38;5;241m.\u001b[39melts))\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(node, List):\n\u001b[0;32m---> 90\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mmap\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m_convert\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnode\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43melts\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(node, Set):\n\u001b[1;32m 92\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mset\u001b[39m(\u001b[38;5;28mmap\u001b[39m(_convert, node\u001b[38;5;241m.\u001b[39melts))\n",
"File \u001b[0;32m~/mambaforge/lib/python3.10/ast.py:109\u001b[0m, in \u001b[0;36mliteral_eval.<locals>._convert\u001b[0;34m(node)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 108\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m left \u001b[38;5;241m-\u001b[39m right\n\u001b[0;32m--> 109\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_convert_signed_num\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnode\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/mambaforge/lib/python3.10/ast.py:83\u001b[0m, in \u001b[0;36mliteral_eval.<locals>._convert_signed_num\u001b[0;34m(node)\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;241m-\u001b[39m operand\n\u001b[0;32m---> 83\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_convert_num\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnode\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/mambaforge/lib/python3.10/ast.py:74\u001b[0m, in \u001b[0;36mliteral_eval.<locals>._convert_num\u001b[0;34m(node)\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_convert_num\u001b[39m(node):\n\u001b[1;32m 73\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(node, Constant) \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mtype\u001b[39m(node\u001b[38;5;241m.\u001b[39mvalue) \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m (\u001b[38;5;28mint\u001b[39m, \u001b[38;5;28mfloat\u001b[39m, \u001b[38;5;28mcomplex\u001b[39m):\n\u001b[0;32m---> 74\u001b[0m \u001b[43m_raise_malformed_node\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnode\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m node\u001b[38;5;241m.\u001b[39mvalue\n",
"File \u001b[0;32m~/mambaforge/lib/python3.10/ast.py:71\u001b[0m, in \u001b[0;36mliteral_eval.<locals>._raise_malformed_node\u001b[0;34m(node)\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m lno \u001b[38;5;241m:=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(node, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlineno\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 70\u001b[0m msg \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m on line \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mlno\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m---> 71\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(msg \u001b[38;5;241m+\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnode\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n",
"\u001b[0;31mValueError\u001b[0m: malformed node or string on line 1: <ast.BinOp object at 0x78ff80d4d030>"
]
}
],
"source": [
"code = \"[2 + 2]\"\n",
"\n",
"ast.literal_eval(code)"
]
},
{
"cell_type": "markdown",
"id": "8632aa54-2ffc-45d7-b763-8babd8624d76",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Assignment in expressions `:=`"
]
},
{
"cell_type": "code",
"execution_count": 179,
"id": "ba2f59a3-beb3-48c7-ae5d-009b7d6457d1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"line = 'This is the first line.\\n'\n",
"line = 'This is the second line.\\n'\n",
"line = 'This is the third line.\\n'\n"
]
}
],
"source": [
"file = open(\"/tmp/example.txt\")\n",
"\n",
"while (line := file.readline()).endswith(\"\\n\"):\n",
" print(f\"{line = }\")"
]
},
{
"cell_type": "markdown",
"id": "6f361149-c089-4340-87f1-8c72f1e8e84a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Context manager"
]
},
{
"cell_type": "markdown",
"id": "df571612-7275-4ec8-af66-7b2973b7da95",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Using `with` with `open`"
]
},
{
"cell_type": "code",
"execution_count": 180,
"id": "d11fca8c-fcd4-42c1-ab0a-20beb8d108ac",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 180,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"with open(\"/tmp/example.txt\") as file:\n",
" text = file.read()\n",
"\n",
"file.closed"
]
},
{
"cell_type": "markdown",
"id": "c8943b03-1a66-42f5-b3cd-c17f435b7635",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Defining a context manager"
]
},
{
"cell_type": "code",
"execution_count": 181,
"id": "fcafadca-4cee-4c0f-972a-e79fe87ad1ce",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"starting the 'with' block\n",
"leaving the 'with' block with exception_type = None\n"
]
}
],
"source": [
"class Scoped:\n",
" def __enter__(self):\n",
" print(\"starting the 'with' block\")\n",
"\n",
" def __exit__(self, exception_type, exception_value, exception_traceback):\n",
" print(f\"leaving the 'with' block with {exception_type = }\")\n",
"\n",
"with Scoped() as obj:\n",
" pass"
]
},
{
"cell_type": "markdown",
"id": "45a730a5-ee60-4f74-b4e8-ce6ef60d5587",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Coroutines"
]
},
{
"cell_type": "markdown",
"id": "ac1b3d76-c632-4baf-8fe0-856b696b9c18",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Defining and using a function with `async`"
]
},
{
"cell_type": "code",
"execution_count": 182,
"id": "b3e70ebf-81d0-4068-b655-4442321f8311",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A\n",
"BB\n",
"CCC\n",
"DDDD\n",
"EEEEE\n"
]
},
{
"data": {
"text/plain": [
"['A', 'EEEEE', 'DDDD', 'BB', 'CCC']"
]
},
"execution_count": 182,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import asyncio\n",
"\n",
"async def fake_read_file(filename):\n",
" await asyncio.sleep(len(filename))\n",
" print(filename)\n",
" return filename\n",
"\n",
"async def get_all_files(filenames):\n",
" coroutines = [fake_read_file(filename) for filename in filenames]\n",
"\n",
" return await asyncio.gather(*coroutines)\n",
"\n",
"await get_all_files([\"A\", \"EEEEE\", \"DDDD\", \"BB\", \"CCC\"])"
]
},
{
"cell_type": "markdown",
"id": "ba8db85d-6ec2-4792-bcf3-ee4b787e903f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Threading and multiprocessing"
]
},
{
"cell_type": "markdown",
"id": "23025c6e-983d-4ca5-a797-057c41180fc8",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### Running a thread, order of execution"
]
},
{
"cell_type": "code",
"execution_count": 183,
"id": "be33db7d-c82d-4cf3-881f-3cc6188ef656",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"starting all threads\n",
"waiting for all threads to finish\n",
"A\n",
"BB\n",
"CCC\n",
"DDDD\n",
"EEEEE\n"
]
}
],
"source": [
"import time\n",
"import threading\n",
"\n",
"def fake_read_file(filename):\n",
" time.sleep(len(filename))\n",
" print(filename)\n",
" return filename\n",
"\n",
"filenames = [\"A\", \"EEEEE\", \"DDDD\", \"BB\", \"CCC\"]\n",
"threads = [threading.Thread(target=fake_read_file, args=(filename,)) for filename in filenames]\n",
"\n",
"print(\"starting all threads\")\n",
"for thread in threads:\n",
" thread.start()\n",
"\n",
"print(\"waiting for all threads to finish\")\n",
"for thread in threads:\n",
" thread.join()"
]
},
{
"cell_type": "markdown",
"id": "8a46382f-d036-4317-b51a-808af3d35399",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `multiprocessing.Process`"
]
},
{
"cell_type": "code",
"execution_count": 184,
"id": "e137e97f-385b-4b2b-bb8a-29c0de37f518",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"starting all processes\n",
"waiting for all processes to finish\n",
"A\n",
"BB\n",
"CCC\n",
"DDDD\n",
"EEEEE\n"
]
}
],
"source": [
"import multiprocessing\n",
"\n",
"processes = [multiprocessing.Process(target=fake_read_file, args=(filename,)) for filename in filenames]\n",
"\n",
"print(\"starting all processes\")\n",
"for process in processes:\n",
" process.start()\n",
"\n",
"print(\"waiting for all processes to finish\")\n",
"for process in processes:\n",
" process.join()"
]
},
{
"cell_type": "markdown",
"id": "5e55113d-3aef-4f40-b750-9cb3be36a986",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Python standard library"
]
},
{
"cell_type": "markdown",
"id": "50e49857-1933-4fb6-b63f-a9926a38ba12",
"metadata": {},
"source": [
"### Module `re`"
]
},
{
"cell_type": "markdown",
"id": "6175253a-fafe-4ab1-be6d-f027f68803ad",
"metadata": {},
"source": [
"#### `re.match`"
]
},
{
"cell_type": "markdown",
"id": "3d814ef0-a23a-484d-9ba7-9425915f7e67",
"metadata": {},
"source": [
"#### `re.finditer`"
]
},
{
"cell_type": "markdown",
"id": "0b0aef5a-2751-4687-9d14-ca472e56c306",
"metadata": {},
"source": [
"#### `re.findall`"
]
},
{
"cell_type": "markdown",
"id": "c9f43769-ab32-420b-a15d-b7c6ef92b0f9",
"metadata": {},
"source": [
"### Module `json`"
]
},
{
"cell_type": "markdown",
"id": "0c57f695-541c-4810-ac97-5094a5fe72bf",
"metadata": {},
"source": [
"#### `json.loads`"
]
},
{
"cell_type": "markdown",
"id": "a2e7a958-8943-4cc8-8bfc-4b5899b854eb",
"metadata": {},
"source": [
"#### `json.dumps`"
]
},
{
"cell_type": "markdown",
"id": "0f0cf913-6ae8-4864-a74e-370abdd5c5bf",
"metadata": {},
"source": [
"### Module `pickle`"
]
},
{
"cell_type": "markdown",
"id": "2f42b63a-4a2d-4aa6-9014-85793e663af3",
"metadata": {},
"source": [
"#### `pickle.load`"
]
},
{
"cell_type": "markdown",
"id": "ec40582e-ee99-4831-a26d-2ef272c3eee3",
"metadata": {},
"source": [
"#### `pickle.dump`"
]
},
{
"cell_type": "markdown",
"id": "4b3a6959-78b7-4288-908c-01b2ff6ceb73",
"metadata": {},
"source": [
"### Module `shelve`"
]
},
{
"cell_type": "markdown",
"id": "b95c4d08-10fa-4159-af30-f0935351992e",
"metadata": {},
"source": [
"#### `shelve.open` in a `with` statement"
]
},
{
"cell_type": "markdown",
"id": "7a74bffc-2654-4563-9587-bb311e10834d",
"metadata": {},
"source": [
"### Module `collections`"
]
},
{
"cell_type": "markdown",
"id": "a8614d1e-c7ed-441c-bd24-2e77ca337203",
"metadata": {},
"source": [
"#### `collections.Counter`"
]
},
{
"cell_type": "markdown",
"id": "52414f7f-34bf-43d1-92be-ab579ac4c15d",
"metadata": {},
"source": [
"### Module `itertools`"
]
},
{
"cell_type": "markdown",
"id": "e84c0481-0c09-4874-91a8-8373409ee40b",
"metadata": {},
"source": [
"#### `itertools.chain`"
]
},
{
"cell_type": "markdown",
"id": "ad88b272-3c8a-4e7e-8154-37b1655bffe5",
"metadata": {},
"source": [
"#### `itertools.combinations`"
]
},
{
"cell_type": "markdown",
"id": "599e5922-9233-4d70-852f-7f92f05b10f9",
"metadata": {},
"source": [
"#### `itertools.permutations`"
]
},
{
"cell_type": "markdown",
"id": "5627f7e7-a160-435a-8717-586cb8084fa4",
"metadata": {},
"source": [
"### Module `random`"
]
},
{
"cell_type": "markdown",
"id": "eb79ace3-1333-414e-81bd-26ca68c29614",
"metadata": {},
"source": [
"#### `random.choice`"
]
},
{
"cell_type": "markdown",
"id": "d955017f-9a7e-4633-ac49-069097eb1494",
"metadata": {},
"source": [
"#### `random.shuffle`"
]
},
{
"cell_type": "markdown",
"id": "f43c01eb-1762-496b-a733-a647d668e3ad",
"metadata": {},
"source": [
"### Module `logging`"
]
},
{
"cell_type": "markdown",
"id": "9c14199e-b088-4a2f-97ab-1c433499e116",
"metadata": {},
"source": [
"#### `logging.basicConfig`"
]
},
{
"cell_type": "markdown",
"id": "a8464352-70f5-41cc-8297-7714999ba4e9",
"metadata": {},
"source": [
"#### `logging.getLogger`"
]
},
{
"cell_type": "markdown",
"id": "1f1e1c9d-75f3-49a6-8422-1c8b1476f043",
"metadata": {},
"source": [
"#### `Logger.debug`, `Logger.info`, `Logger.warning`"
]
},
{
"cell_type": "markdown",
"id": "f46ad307-7bf2-4085-9f04-b457de337494",
"metadata": {},
"source": [
"### Module `sys`"
]
},
{
"cell_type": "markdown",
"id": "e96b2829-e74c-459c-8dfc-903c5adf39c1",
"metadata": {},
"source": [
"#### `sys.argv`"
]
},
{
"cell_type": "markdown",
"id": "6a253388-420a-41f6-9dad-fcd82dd1c115",
"metadata": {},
"source": [
"#### `sys.exit`"
]
},
{
"cell_type": "markdown",
"id": "3ee3b851-b46e-483f-b5ac-1984a8449f2b",
"metadata": {},
"source": [
"#### `sys.path`"
]
},
{
"cell_type": "markdown",
"id": "fb8e6244-3b8e-43c0-b445-2996d62ed6a6",
"metadata": {},
"source": [
"#### `sys.stderr`"
]
},
{
"cell_type": "markdown",
"id": "f804c976-06bd-45c0-be30-d54cfa4c92a0",
"metadata": {},
"source": [
"### Module `atexit`"
]
},
{
"cell_type": "markdown",
"id": "15ad2f9c-3d38-4633-aa8c-f984cc68715c",
"metadata": {},
"source": [
"#### `atexit.register`"
]
},
{
"cell_type": "markdown",
"id": "b6492f8c-f20c-459d-8628-d38f6b84e162",
"metadata": {},
"source": [
"### Module `os`"
]
},
{
"cell_type": "markdown",
"id": "087b96ea-82e8-41fe-a30f-557d9d0972e6",
"metadata": {},
"source": [
"#### `os.environ`"
]
},
{
"cell_type": "markdown",
"id": "b2b3b067-877e-4bdd-acd5-bdb66e46d0b9",
"metadata": {},
"source": [
"#### `os.path.exists`"
]
},
{
"cell_type": "markdown",
"id": "050ba75c-d40d-4cb2-b66f-d60ad3391607",
"metadata": {},
"source": [
"#### `os.getcwd`"
]
},
{
"cell_type": "markdown",
"id": "d42cbdfa-4993-4f1b-910c-323e20c6f2e2",
"metadata": {},
"source": [
"#### `os.listdir`"
]
},
{
"cell_type": "markdown",
"id": "37fb22d3-0786-4ade-b5fd-fcbf3a2ea57c",
"metadata": {},
"source": [
"#### `os.mkdir`"
]
},
{
"cell_type": "markdown",
"id": "5c0ddf5e-3fb7-4aa3-8c3e-e9c8a43b2fe0",
"metadata": {},
"source": [
"#### `os.rename`"
]
},
{
"cell_type": "markdown",
"id": "59325ac1-6700-46e0-9fa9-13cf077a8374",
"metadata": {},
"source": [
"#### `os.remove`"
]
},
{
"cell_type": "markdown",
"id": "9fcea55e-9666-4df6-9fb7-8f7d85939bb2",
"metadata": {},
"source": [
"### Module `shutil`"
]
},
{
"cell_type": "markdown",
"id": "913c78bb-279c-4147-97ec-0fdf650dfd8b",
"metadata": {},
"source": [
"#### `shutil.copy`"
]
},
{
"cell_type": "markdown",
"id": "63c1fb5d-8bf6-4def-9eb1-abae9186d691",
"metadata": {},
"source": [
"#### `shutil.copytree`"
]
},
{
"cell_type": "markdown",
"id": "280bbc60-5537-406c-82ea-a0364728c079",
"metadata": {},
"source": [
"#### `shutil.rmtree`"
]
},
{
"cell_type": "markdown",
"id": "9316669c-dd90-48b1-a988-57b631b36e57",
"metadata": {},
"source": [
"### Module `glob`"
]
},
{
"cell_type": "markdown",
"id": "f85c89a2-9a60-431a-bc4c-b57ce848f54a",
"metadata": {},
"source": [
"#### `glob.glob`"
]
},
{
"cell_type": "markdown",
"id": "f2a81de8-d11f-422a-b894-5f14d494c09e",
"metadata": {},
"source": [
"### Module `subprocess`"
]
},
{
"cell_type": "markdown",
"id": "fd181521-980a-4d1a-a755-7b9aba375ea7",
"metadata": {},
"source": [
"#### `subprocess.run`"
]
},
{
"cell_type": "markdown",
"id": "0fcb2876-4f60-43ba-8c11-d8020c937c66",
"metadata": {},
"source": [
"### Module `time`"
]
},
{
"cell_type": "markdown",
"id": "51375bfb-eacd-43dd-83ed-20e81c8f4e17",
"metadata": {},
"source": [
"#### `time.sleep`"
]
},
{
"cell_type": "markdown",
"id": "9316fe8a-32a9-4507-b915-1fa3f8582341",
"metadata": {},
"source": [
"#### `time.time`"
]
},
{
"cell_type": "markdown",
"id": "5e1e2590-f52b-4aa5-8687-1c9fcb41f4b8",
"metadata": {},
"source": [
"#### `time.perf_counter`"
]
},
{
"cell_type": "markdown",
"id": "469c909f-e1eb-40fb-ba2f-b6296d90a7d7",
"metadata": {},
"source": [
"### Module `datetime`"
]
},
{
"cell_type": "markdown",
"id": "1e328ee9-5f75-40d5-9f12-aa3812f6c4e3",
"metadata": {},
"source": [
"#### `datetime.datetime.now`"
]
},
{
"cell_type": "markdown",
"id": "a7a8965f-5959-4e50-842a-b12f39afc43c",
"metadata": {},
"source": [
"#### `datetime.datetime.fromtimestamp`"
]
},
{
"cell_type": "markdown",
"id": "fe82a8a5-ff89-4193-9f41-94e19fe3b6f3",
"metadata": {},
"source": [
"#### `datetime.datetime.fromisoformat`"
]
},
{
"cell_type": "markdown",
"id": "fa65b8cc-57ce-49f4-97c0-ba97b555fba4",
"metadata": {},
"source": [
"#### `datetime.datetime.strptime`"
]
},
{
"cell_type": "markdown",
"id": "31b4fadf-1c40-429d-a32b-3f44b5ff1f0c",
"metadata": {},
"source": [
"#### `datetime.datetime.strftime`"
]
},
{
"cell_type": "markdown",
"id": "95893e4c-41b5-47d2-88ad-645a587ba35f",
"metadata": {},
"source": [
"### Module `sqlite3`"
]
},
{
"cell_type": "markdown",
"id": "aa7a9eca-a765-41e1-915a-4f188a3d4075",
"metadata": {},
"source": [
"#### `sqlite3.connect`"
]
},
{
"cell_type": "markdown",
"id": "06a12602-56b3-4d93-bd3f-2c49916779de",
"metadata": {},
"source": [
"#### `Connection.execute`"
]
},
{
"cell_type": "markdown",
"id": "b4eeab73-f0d4-4a93-935f-8e8b3aa67fee",
"metadata": {},
"source": [
"#### `Connection.executemany`"
]
},
{
"cell_type": "markdown",
"id": "db96987d-838a-4c12-b942-935a9de7b190",
"metadata": {},
"source": [
"#### `Connection.fetchall`"
]
},
{
"cell_type": "markdown",
"id": "991215e7-b606-4932-8ac2-3376de5fe49a",
"metadata": {},
"source": [
"## Static type hinting"
]
},
{
"cell_type": "markdown",
"id": "f2e9313a-a53c-4076-a2bc-a7a87f9ff1b5",
"metadata": {},
"source": [
"### Annotations"
]
},
{
"cell_type": "markdown",
"id": "94d00012-335f-43c2-910d-223c694fdb95",
"metadata": {},
"source": [
"#### Annotating arguments and return types of functions"
]
},
{
"cell_type": "markdown",
"id": "349d107c-1576-4cbb-9137-13fa0325f61a",
"metadata": {},
"source": [
"#### Annotating variables"
]
},
{
"cell_type": "markdown",
"id": "0c8a9c55-2a98-4d32-80e1-71ecae3f1277",
"metadata": {},
"source": [
"#### Annotating class members"
]
},
{
"cell_type": "markdown",
"id": "e304a552-ecc7-4fab-8d9f-353d0afdb1b9",
"metadata": {},
"source": [
"### Common types"
]
},
{
"cell_type": "markdown",
"id": "86057347-d87e-421e-a8b8-ab17a98b4b8e",
"metadata": {},
"source": [
"#### `Any`"
]
},
{
"cell_type": "markdown",
"id": "824d9f9f-d328-438e-b600-c4f3f3d0da61",
"metadata": {},
"source": [
"#### `None`"
]
},
{
"cell_type": "markdown",
"id": "853fca58-46cb-4d9e-9256-3cef9ba98c94",
"metadata": {},
"source": [
"#### `int`"
]
},
{
"cell_type": "markdown",
"id": "d9309bb5-49a0-4d97-ab80-7b2bc202bce6",
"metadata": {},
"source": [
"#### `str`"
]
},
{
"cell_type": "markdown",
"id": "29c88184-b955-4fc0-8e58-def08595b3a0",
"metadata": {},
"source": [
"#### `list[T]`"
]
},
{
"cell_type": "markdown",
"id": "33ac2743-4170-4a34-9464-4395a7e836c6",
"metadata": {},
"source": [
"#### `dict[K, V]`"
]
},
{
"cell_type": "markdown",
"id": "bce4bf19-1792-4ced-a03a-12cc96309ddd",
"metadata": {},
"source": [
"#### `callable[[T1, T2], T3]`"
]
},
{
"cell_type": "markdown",
"id": "0d8a922e-e397-4d7a-b972-80c9f323bc71",
"metadata": {},
"source": [
"#### `Optional[T]`"
]
},
{
"cell_type": "markdown",
"id": "8238e8a1-d243-4f7b-96f2-951f7124acb4",
"metadata": {},
"source": [
"#### `Union[T1, T2, T3]`"
]
},
{
"cell_type": "markdown",
"id": "0c735365-b079-4dbc-adf6-080dfe0274ea",
"metadata": {},
"source": [
"### Advanced typing features"
]
},
{
"cell_type": "markdown",
"id": "4e1795b4-ba86-4a2d-8835-d0159024d56a",
"metadata": {},
"source": [
"#### `Self`"
]
},
{
"cell_type": "markdown",
"id": "c9bb7bf7-55d5-45e8-8aca-dc655cb3e22a",
"metadata": {},
"source": [
"#### `TypeVar`"
]
},
{
"cell_type": "markdown",
"id": "bc83d6f1-466f-405f-83b9-ed712f5afe48",
"metadata": {},
"source": [
"#### `TypeVar` with constraints"
]
},
{
"cell_type": "markdown",
"id": "51e3fd40-d272-4fc2-b478-d0c29f21c470",
"metadata": {},
"source": [
"#### `Generic`"
]
},
{
"cell_type": "markdown",
"id": "3008e300-779a-4867-a0e4-06237f3881b2",
"metadata": {},
"source": [
"#### Forward references"
]
},
{
"cell_type": "markdown",
"id": "4cea46bc-19b6-4e95-bb9c-5d51c45fa51b",
"metadata": {},
"source": [
"### Protocols"
]
},
{
"cell_type": "markdown",
"id": "5cd6191a-5f92-4a65-be9c-08fd6f63f45f",
"metadata": {},
"source": [
"#### Example protocol and instantiation"
]
},
{
"cell_type": "markdown",
"id": "58a4d630-23cd-46f6-a933-17bd85f43b2d",
"metadata": {},
"source": [
"## NumPy"
]
},
{
"cell_type": "markdown",
"id": "41af9e11-e886-4c64-9ec2-0c2b270c7073",
"metadata": {},
"source": [
"### Array creation"
]
},
{
"cell_type": "markdown",
"id": "bfcc72f0-30d8-4e16-ba3a-cd0d218cc047",
"metadata": {},
"source": [
"#### One-dimensional `np.array`"
]
},
{
"cell_type": "markdown",
"id": "20c702e3-24e5-4db7-9058-49cea793277c",
"metadata": {},
"source": [
"#### Two-dimensional `np.array`"
]
},
{
"cell_type": "markdown",
"id": "0f0a3ac3-9b75-4fb6-8c57-57d93cb10289",
"metadata": {},
"source": [
"#### Three-dimensional `np.zeros`"
]
},
{
"cell_type": "markdown",
"id": "5dd74deb-e3ec-44fa-a089-cef59e495500",
"metadata": {},
"source": [
"#### `np.linspace`"
]
},
{
"cell_type": "markdown",
"id": "770702ce-215f-45df-8c08-89682b2986d4",
"metadata": {},
"source": [
"#### `np.meshgrid`"
]
},
{
"cell_type": "markdown",
"id": "9f6aed39-f204-4e77-a6fe-73a2c5f2217b",
"metadata": {},
"source": [
"#### `np.arange`"
]
},
{
"cell_type": "markdown",
"id": "aa7f9acf-2614-4a89-a794-5cb4961e2c98",
"metadata": {},
"source": [
"### Random array creation"
]
},
{
"cell_type": "markdown",
"id": "c830da2c-e564-466e-9b83-71fc8f30abfa",
"metadata": {},
"source": [
"#### `np.random.randint`"
]
},
{
"cell_type": "markdown",
"id": "b7b6ae74-1dbe-4f9c-bbd5-79878d924293",
"metadata": {},
"source": [
"#### `np.random.normal`"
]
},
{
"cell_type": "markdown",
"id": "5ac75c01-5a7f-46a3-9fca-00d0e4c36c02",
"metadata": {},
"source": [
"#### `np.random.poisson`"
]
},
{
"cell_type": "markdown",
"id": "a537ff5f-ba85-43cf-a6dc-f24d4e155bbe",
"metadata": {},
"source": [
"### Array math"
]
},
{
"cell_type": "markdown",
"id": "20ff0d0e-2a8e-4ee0-8d74-ac58043aedb1",
"metadata": {},
"source": [
"#### Mathematical formula"
]
},
{
"cell_type": "markdown",
"id": "0155e5c5-a0d7-49cf-875b-daf6b91be42b",
"metadata": {},
"source": [
"#### Universal functions (ufuncs)"
]
},
{
"cell_type": "markdown",
"id": "f48b4205-bd17-42a0-80bc-8b504ca1e97f",
"metadata": {},
"source": [
"#### Elementwise comparison"
]
},
{
"cell_type": "markdown",
"id": "990bbfa6-e83d-4a77-bb84-5504caca8a70",
"metadata": {},
"source": [
"#### Boolean operators `&`, `|`, `~`"
]
},
{
"cell_type": "markdown",
"id": "311538a7-9492-4ffc-ba0f-102b6bb240bf",
"metadata": {},
"source": [
"#### Statistics"
]
},
{
"cell_type": "markdown",
"id": "dcf4164f-0d4c-4441-948c-e0c1b030e4b8",
"metadata": {},
"source": [
"### Array slicing"
]
},
{
"cell_type": "markdown",
"id": "942902e9-044c-4216-876a-dfd18bf34937",
"metadata": {},
"source": [
"#### One-dimensional range slicing"
]
},
{
"cell_type": "markdown",
"id": "01e48f90-8de4-4ea6-962d-a9e5b0880e11",
"metadata": {},
"source": [
"#### Three-dimensional range slicing"
]
},
{
"cell_type": "markdown",
"id": "e64cfc63-ac5b-4dc6-a20c-9b431bb7e3c2",
"metadata": {},
"source": [
"#### Boolean array slicing"
]
},
{
"cell_type": "markdown",
"id": "55ced44d-8745-48eb-a4c6-3d837b381b63",
"metadata": {},
"source": [
"#### Integer array slicing"
]
},
{
"cell_type": "markdown",
"id": "168a0362-30ee-46e6-a443-929a98503ce2",
"metadata": {},
"source": [
"### Array manipulation"
]
},
{
"cell_type": "markdown",
"id": "fa3c6747-d519-4ead-b617-fe587ec68499",
"metadata": {},
"source": [
"#### Changing `shape`"
]
},
{
"cell_type": "markdown",
"id": "5b163111-04ea-491c-9c52-a46fc491f81c",
"metadata": {},
"source": [
"#### Converting `dtype`"
]
},
{
"cell_type": "markdown",
"id": "1f9c49db-4540-4f77-a571-64fea437f1dc",
"metadata": {},
"source": [
"#### Reinterpreting `dtype`"
]
},
{
"cell_type": "markdown",
"id": "f4b1fa45-7a95-4792-aa27-6b2aef498c44",
"metadata": {},
"source": [
"#### `np.ravel`"
]
},
{
"cell_type": "markdown",
"id": "ccc81a1e-0176-4011-a396-cc41d5be3bf0",
"metadata": {},
"source": [
"#### `np.concatenate`"
]
},
{
"cell_type": "markdown",
"id": "e6d8af66-a760-4e5b-b365-4176810ec596",
"metadata": {},
"source": [
"#### `np.where`"
]
},
{
"cell_type": "markdown",
"id": "6155df89-aecd-4edf-9c6e-2ff8711db139",
"metadata": {},
"source": [
"#### `np.unique`"
]
},
{
"cell_type": "markdown",
"id": "04f5b497-a4ef-401c-be47-f5c9c18f5e5f",
"metadata": {},
"source": [
"## Pandas"
]
},
{
"cell_type": "markdown",
"id": "08558d9a-fba3-4f84-8df0-ca3f6885252c",
"metadata": {},
"source": [
"### DataFrame I/O"
]
},
{
"cell_type": "markdown",
"id": "f6bb2a7e-07f1-48b7-90a4-153ada553ac2",
"metadata": {},
"source": [
"#### `pd.DataFrame` constructor"
]
},
{
"cell_type": "markdown",
"id": "38d94bff-01ca-4e06-bba4-c231cb2de07e",
"metadata": {},
"source": [
"#### `pd.read_csv`"
]
},
{
"cell_type": "markdown",
"id": "1d77c9c4-ff31-4584-8e65-0c13d3160509",
"metadata": {},
"source": [
"#### `pd.to_csv`"
]
},
{
"cell_type": "markdown",
"id": "3fdf92f8-550f-4b34-a392-8b2914d85967",
"metadata": {},
"source": [
"### Data summary"
]
},
{
"cell_type": "markdown",
"id": "25050549-428a-4fc5-b374-36119d833998",
"metadata": {},
"source": [
"#### `DataFrame.describe`"
]
},
{
"cell_type": "markdown",
"id": "b0b30961-a289-44f3-a090-7906a2eb47bc",
"metadata": {},
"source": [
"### Data math"
]
},
{
"cell_type": "markdown",
"id": "6e620c3c-6b07-4702-a786-39a37820d9c0",
"metadata": {},
"source": [
"#### Mathematical formula"
]
},
{
"cell_type": "markdown",
"id": "5b8d81f5-997f-418d-81e9-b56f05d746db",
"metadata": {},
"source": [
"#### Universal functions (ufuncs)"
]
},
{
"cell_type": "markdown",
"id": "fb0b4b24-6308-48a4-81bc-845faffdd411",
"metadata": {},
"source": [
"#### Elementwise comparison"
]
},
{
"cell_type": "markdown",
"id": "1b817364-6c1d-40f4-a4e8-b169e8a59389",
"metadata": {},
"source": [
"#### Boolean operators `&`, `|`, `~`"
]
},
{
"cell_type": "markdown",
"id": "da369b5e-9eb3-42f2-894a-e8d2d339176d",
"metadata": {},
"source": [
"### Data cleaning"
]
},
{
"cell_type": "markdown",
"id": "df435c4b-14b9-466b-a2d6-b6efcdac6a05",
"metadata": {},
"source": [
"#### `DataFrame.dropna`"
]
},
{
"cell_type": "markdown",
"id": "ca41ce45-6747-42ce-b571-fe1e1ea410eb",
"metadata": {},
"source": [
"#### `DataFrame.fillna`"
]
},
{
"cell_type": "markdown",
"id": "8acbbefd-3d9b-4beb-ad99-d0b68c293c8f",
"metadata": {},
"source": [
"#### `DataFrame.drop_duplicates`"
]
},
{
"cell_type": "markdown",
"id": "7c31991a-8700-4f10-a203-989ff02758da",
"metadata": {},
"source": [
"#### `DataFrame.sort_values`"
]
},
{
"cell_type": "markdown",
"id": "74544688-abb9-4900-bb6a-66f75e1a6149",
"metadata": {},
"source": [
"### Data access"
]
},
{
"cell_type": "markdown",
"id": "dca43ed6-b757-43b2-8a85-5386b0c19e4a",
"metadata": {},
"source": [
"#### `DataFrame.loc`"
]
},
{
"cell_type": "markdown",
"id": "355a826d-08cf-4fd0-93ec-ed3dfde91d25",
"metadata": {},
"source": [
"#### `DataFrame[\"column_name\"]`"
]
},
{
"cell_type": "markdown",
"id": "a2439e24-1380-4dd2-bc20-4523df2ae74d",
"metadata": {},
"source": [
"### Adding and removing columns"
]
},
{
"cell_type": "markdown",
"id": "0bfd8f53-4d96-4ec9-973d-c0a6065d5725",
"metadata": {},
"source": [
"#### `DataFrame[\"column_name\"]` assignment"
]
},
{
"cell_type": "markdown",
"id": "f0e8297c-883d-4a24-98d3-7a6b017a9aa2",
"metadata": {},
"source": [
"#### `DataFrame.drop`"
]
},
{
"cell_type": "markdown",
"id": "1efe6e5d-5c76-44ad-8823-30fd0d5c8a73",
"metadata": {},
"source": [
"### Joining and concatenating"
]
},
{
"cell_type": "markdown",
"id": "59cef7f3-b36f-49e9-ad80-67b791a4bd46",
"metadata": {},
"source": [
"#### Inner-join `pd.merge`"
]
},
{
"cell_type": "markdown",
"id": "0c7c682d-95bc-450b-b324-ef5ff2b93712",
"metadata": {},
"source": [
"#### Outer-join `pd.merge`"
]
},
{
"cell_type": "markdown",
"id": "e8d0f72c-8600-4346-b4b6-95c49926d75d",
"metadata": {},
"source": [
"#### Row `pd.concat`"
]
},
{
"cell_type": "markdown",
"id": "075a0722-1c8b-4397-88dc-2af3fcfb8086",
"metadata": {},
"source": [
"### Group by"
]
},
{
"cell_type": "markdown",
"id": "7a71ca75-8d07-4a81-87bc-98efa76dcc00",
"metadata": {},
"source": [
"#### `DataFrame.groupby` with `sum`"
]
},
{
"cell_type": "markdown",
"id": "6063fd17-7214-41ce-b6b2-940c27925671",
"metadata": {},
"source": [
"#### `DataFrame.groupby` with `max`"
]
},
{
"cell_type": "markdown",
"id": "feded4e6-e48e-41dc-829a-f1febfab3ad8",
"metadata": {},
"source": [
"#### `DataFrame.groupby` with `first`"
]
},
{
"cell_type": "markdown",
"id": "40bcab00-a7ed-4b8b-bce9-87eb87d6756d",
"metadata": {},
"source": [
"### Plotting"
]
},
{
"cell_type": "markdown",
"id": "2d0af4e5-7fe5-4d1e-9f81-a7fe657e5cdf",
"metadata": {},
"source": [
"#### `DataFrame.plot`"
]
},
{
"cell_type": "markdown",
"id": "0fa9f4cf-dd8c-40e3-808b-e3df496f2ef5",
"metadata": {},
"source": [
"#### `DataFrame.plot.scatter`"
]
},
{
"cell_type": "markdown",
"id": "baa0a18f-8587-4315-b1a5-f83105bd4e54",
"metadata": {},
"source": [
"## Matplotlib"
]
},
{
"cell_type": "markdown",
"id": "a7217e2e-f9ea-46c5-bd9a-5f82f62edc7c",
"metadata": {},
"source": [
"### Setting up a plot"
]
},
{
"cell_type": "markdown",
"id": "f2a34cbd-7273-400f-adad-bafee3ee6c34",
"metadata": {},
"source": [
"#### `plt.subplots`"
]
},
{
"cell_type": "markdown",
"id": "8728b01d-1c4d-4a13-a4af-ae978603d19f",
"metadata": {},
"source": [
"#### `plt.subplots` with `figsize`"
]
},
{
"cell_type": "markdown",
"id": "9390a6ea-c015-489d-822c-69b1e85987d9",
"metadata": {},
"source": [
"#### Splitting the frame with `plt.subplots`"
]
},
{
"cell_type": "markdown",
"id": "55e55509-93d6-4553-970d-79168675f81c",
"metadata": {},
"source": [
"#### Overlay with `ax`"
]
},
{
"cell_type": "markdown",
"id": "57d7f5cd-fe62-4440-93bd-c96fcf0b5f31",
"metadata": {},
"source": [
"### Basic plots"
]
},
{
"cell_type": "markdown",
"id": "ad0d550e-125d-41ed-afb7-bf508ec55eca",
"metadata": {},
"source": [
"#### `plot`"
]
},
{
"cell_type": "markdown",
"id": "e44c9c78-37cc-4060-af36-22c5a08faba3",
"metadata": {},
"source": [
"#### `scatter`"
]
},
{
"cell_type": "markdown",
"id": "a92cabee-2a0f-4bcb-aa62-868c4f59d527",
"metadata": {},
"source": [
"#### `imshow` with `plt.gca().invert_yaxis()`"
]
},
{
"cell_type": "markdown",
"id": "01843f73-9637-4093-bee5-6fcdd6109816",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Styles"
]
},
{
"cell_type": "markdown",
"id": "355ec252-9e40-4d72-a7f3-cb0c0ebd2e41",
"metadata": {},
"source": [
"#### Line style"
]
},
{
"cell_type": "markdown",
"id": "7697693a-8ea0-4fe1-ba81-939130f29775",
"metadata": {},
"source": [
"#### Line color"
]
},
{
"cell_type": "markdown",
"id": "6313fe35-b56a-4066-9428-ea3fb3cea3c2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Plot coordinates"
]
},
{
"cell_type": "markdown",
"id": "8ce24b88-9ffc-4adf-a634-affc1dbb2556",
"metadata": {},
"source": [
"#### `set_xlim`, `set_ylim`"
]
},
{
"cell_type": "markdown",
"id": "6b595ff4-fd1e-4d8e-90e0-89395d6522c0",
"metadata": {},
"source": [
"#### `set_xscale`, `set_yscale`"
]
},
{
"cell_type": "markdown",
"id": "d2dfb2b1-6f9a-42a7-bab3-f1788f26f7a4",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Labeling"
]
},
{
"cell_type": "markdown",
"id": "1887a98c-f338-4c62-b9a9-b7cdd741f8af",
"metadata": {},
"source": [
"#### `set_xticks`, `set_yticks`"
]
},
{
"cell_type": "markdown",
"id": "a89abbe6-8fbd-4a43-804e-c6a01b558ea7",
"metadata": {},
"source": [
"#### `set_xlabel`, `set_ylabel`"
]
},
{
"cell_type": "markdown",
"id": "b5c235d8-0300-487a-9d40-ebe069282af3",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"#### `legend`"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.14"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment