Created
April 23, 2024 02:00
-
-
Save jpivarski/a9a36973b850b928e55d5c3272343193 to your computer and use it in GitHub Desktop.
python-skills-survey-list
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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