|
248 | 248 | }, |
249 | 249 | { |
250 | 250 | "cell_type": "code", |
251 | | - "execution_count": 12, |
| 251 | + "execution_count": 26, |
252 | 252 | "id": "52b6f924", |
253 | 253 | "metadata": {}, |
254 | 254 | "outputs": [], |
|
263 | 263 | }, |
264 | 264 | { |
265 | 265 | "cell_type": "code", |
266 | | - "execution_count": 13, |
| 266 | + "execution_count": 27, |
267 | 267 | "id": "a2055780", |
268 | 268 | "metadata": {}, |
269 | 269 | "outputs": [ |
|
273 | 273 | "'6-card deals: 20,358,520'" |
274 | 274 | ] |
275 | 275 | }, |
276 | | - "execution_count": 13, |
| 276 | + "execution_count": 27, |
277 | 277 | "metadata": {}, |
278 | 278 | "output_type": "execute_result" |
279 | 279 | } |
|
284 | 284 | }, |
285 | 285 | { |
286 | 286 | "cell_type": "code", |
287 | | - "execution_count": 14, |
| 287 | + "execution_count": 28, |
288 | 288 | "id": "0915bccf", |
289 | 289 | "metadata": {}, |
290 | 290 | "outputs": [], |
|
299 | 299 | }, |
300 | 300 | { |
301 | 301 | "cell_type": "code", |
302 | | - "execution_count": 15, |
| 302 | + "execution_count": 29, |
303 | 303 | "id": "7a113558", |
304 | 304 | "metadata": {}, |
305 | 305 | "outputs": [ |
|
309 | 309 | "'6-card deals: 20,358,520'" |
310 | 310 | ] |
311 | 311 | }, |
312 | | - "execution_count": 15, |
| 312 | + "execution_count": 29, |
313 | 313 | "metadata": {}, |
314 | 314 | "output_type": "execute_result" |
315 | 315 | } |
|
320 | 320 | }, |
321 | 321 | { |
322 | 322 | "cell_type": "code", |
323 | | - "execution_count": 16, |
| 323 | + "execution_count": 31, |
| 324 | + "id": "0f452305", |
| 325 | + "metadata": {}, |
| 326 | + "outputs": [ |
| 327 | + { |
| 328 | + "data": { |
| 329 | + "text/plain": [ |
| 330 | + "CacheInfo(hits=0, misses=1, maxsize=64, currsize=1)" |
| 331 | + ] |
| 332 | + }, |
| 333 | + "execution_count": 31, |
| 334 | + "metadata": {}, |
| 335 | + "output_type": "execute_result" |
| 336 | + } |
| 337 | + ], |
| 338 | + "source": [ |
| 339 | + "binom.cache_info()" |
| 340 | + ] |
| 341 | + }, |
| 342 | + { |
| 343 | + "cell_type": "code", |
| 344 | + "execution_count": 32, |
| 345 | + "id": "c6c71dd3", |
| 346 | + "metadata": {}, |
| 347 | + "outputs": [], |
| 348 | + "source": [ |
| 349 | + "# let's look into memoized fib function\n", |
| 350 | + "@lru_cache(maxsize=None)\n", |
| 351 | + "def fib(n):\n", |
| 352 | + " if n < 2:\n", |
| 353 | + " return n\n", |
| 354 | + " return fib(n-1) + fib(n-2)" |
| 355 | + ] |
| 356 | + }, |
| 357 | + { |
| 358 | + "cell_type": "code", |
| 359 | + "execution_count": 33, |
| 360 | + "id": "a700c86a", |
| 361 | + "metadata": {}, |
| 362 | + "outputs": [ |
| 363 | + { |
| 364 | + "data": { |
| 365 | + "text/plain": [ |
| 366 | + "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]" |
| 367 | + ] |
| 368 | + }, |
| 369 | + "execution_count": 33, |
| 370 | + "metadata": {}, |
| 371 | + "output_type": "execute_result" |
| 372 | + } |
| 373 | + ], |
| 374 | + "source": [ |
| 375 | + "[fib(n) for n in range(16)]" |
| 376 | + ] |
| 377 | + }, |
| 378 | + { |
| 379 | + "cell_type": "code", |
| 380 | + "execution_count": 34, |
| 381 | + "id": "7d5897e4", |
| 382 | + "metadata": {}, |
| 383 | + "outputs": [ |
| 384 | + { |
| 385 | + "data": { |
| 386 | + "text/plain": [ |
| 387 | + "CacheInfo(hits=28, misses=16, maxsize=None, currsize=16)" |
| 388 | + ] |
| 389 | + }, |
| 390 | + "execution_count": 34, |
| 391 | + "metadata": {}, |
| 392 | + "output_type": "execute_result" |
| 393 | + } |
| 394 | + ], |
| 395 | + "source": [ |
| 396 | + "fib.cache_info()" |
| 397 | + ] |
| 398 | + }, |
| 399 | + { |
| 400 | + "cell_type": "code", |
| 401 | + "execution_count": 35, |
324 | 402 | "id": "5d5badb2", |
325 | 403 | "metadata": {}, |
326 | 404 | "outputs": [], |
327 | 405 | "source": [ |
328 | 406 | "# class decorators\n", |
329 | | - "# run the named_logger.py file to see the log being generated\n", |
330 | | - "# demo.log is not generated from the Jupyter Notebook\n", |
| 407 | + "# Generates demo.log when applied to a function\n", |
| 408 | + "# __call__ overrides when the class is called like a function\n", |
| 409 | + "\n", |
| 410 | + "from functools import wraps\n", |
| 411 | + "from typing import Callable, Any\n", |
331 | 412 | "import logging\n", |
332 | 413 | "import time\n", |
333 | 414 | "\n", |
|
364 | 445 | }, |
365 | 446 | { |
366 | 447 | "cell_type": "code", |
367 | | - "execution_count": 17, |
| 448 | + "execution_count": 36, |
368 | 449 | "id": "1a4223d8", |
369 | 450 | "metadata": {}, |
370 | 451 | "outputs": [], |
|
376 | 457 | }, |
377 | 458 | { |
378 | 459 | "cell_type": "code", |
379 | | - "execution_count": 18, |
| 460 | + "execution_count": 37, |
380 | 461 | "id": "2c7eb728", |
381 | 462 | "metadata": {}, |
382 | 463 | "outputs": [ |
|
386 | 467 | "6" |
387 | 468 | ] |
388 | 469 | }, |
389 | | - "execution_count": 18, |
| 470 | + "execution_count": 37, |
390 | 471 | "metadata": {}, |
391 | 472 | "output_type": "execute_result" |
392 | 473 | } |
|
397 | 478 | }, |
398 | 479 | { |
399 | 480 | "cell_type": "code", |
400 | | - "execution_count": 19, |
| 481 | + "execution_count": 38, |
401 | 482 | "id": "5757b477", |
402 | 483 | "metadata": {}, |
403 | 484 | "outputs": [ |
404 | 485 | { |
405 | 486 | "name": "stdout", |
406 | 487 | "output_type": "stream", |
407 | 488 | "text": [ |
408 | | - "2024-04-09 16:28:18,423 test4, 2.0μs\n" |
| 489 | + "2024-11-14 09:10:02,286 test4, 0.9μs\r\n", |
| 490 | + "2024-11-14 10:36:01,177 test4, 0.9μs\r\n" |
409 | 491 | ] |
410 | 492 | } |
411 | 493 | ], |
|
458 | 540 | }, |
459 | 541 | { |
460 | 542 | "cell_type": "code", |
461 | | - "execution_count": 20, |
| 543 | + "execution_count": 13, |
462 | 544 | "id": "b0845c87", |
463 | 545 | "metadata": {}, |
464 | 546 | "outputs": [], |
|
504 | 586 | }, |
505 | 587 | { |
506 | 588 | "cell_type": "code", |
507 | | - "execution_count": 21, |
| 589 | + "execution_count": 15, |
508 | 590 | "id": "60c907d5", |
509 | 591 | "metadata": {}, |
510 | 592 | "outputs": [], |
|
515 | 597 | " \"\"\" Updates the Hexviewer. \"\"\"\n", |
516 | 598 | " \n", |
517 | 599 | " def update(self, subject):\n", |
518 | | - " print('HexViewer: Subject {} has data 0x{:x}'.format(subject.name, subject.data))\n", |
| 600 | + " print(f'HexViewer: Subject {subject.name} has data 0x{subject.data:x}')\n", |
519 | 601 | " \n", |
520 | 602 | "\n", |
521 | 603 | "class OctalViewer:\n", |
|
534 | 616 | }, |
535 | 617 | { |
536 | 618 | "cell_type": "code", |
537 | | - "execution_count": 22, |
| 619 | + "execution_count": 16, |
538 | 620 | "id": "970c60ec", |
539 | 621 | "metadata": {}, |
540 | 622 | "outputs": [], |
|
544 | 626 | }, |
545 | 627 | { |
546 | 628 | "cell_type": "code", |
547 | | - "execution_count": 23, |
| 629 | + "execution_count": 17, |
548 | 630 | "id": "cf9b10df", |
549 | 631 | "metadata": {}, |
550 | 632 | "outputs": [], |
|
556 | 638 | }, |
557 | 639 | { |
558 | 640 | "cell_type": "code", |
559 | | - "execution_count": 24, |
| 641 | + "execution_count": 18, |
560 | 642 | "id": "600cabe8", |
561 | 643 | "metadata": {}, |
562 | 644 | "outputs": [], |
|
568 | 650 | }, |
569 | 651 | { |
570 | 652 | "cell_type": "code", |
571 | | - "execution_count": 25, |
| 653 | + "execution_count": 19, |
572 | 654 | "id": "9dac70cf", |
573 | 655 | "metadata": {}, |
574 | 656 | "outputs": [ |
|
747 | 829 | }, |
748 | 830 | { |
749 | 831 | "cell_type": "code", |
750 | | - "execution_count": null, |
| 832 | + "execution_count": 20, |
751 | 833 | "id": "e7dccd47", |
752 | 834 | "metadata": {}, |
753 | 835 | "outputs": [], |
|
860 | 942 | }, |
861 | 943 | { |
862 | 944 | "cell_type": "code", |
863 | | - "execution_count": null, |
| 945 | + "execution_count": 21, |
864 | 946 | "id": "eb74083e", |
865 | 947 | "metadata": {}, |
866 | 948 | "outputs": [], |
|
875 | 957 | }, |
876 | 958 | { |
877 | 959 | "cell_type": "code", |
878 | | - "execution_count": null, |
| 960 | + "execution_count": 22, |
879 | 961 | "id": "84f930e9", |
880 | 962 | "metadata": {}, |
881 | 963 | "outputs": [], |
|
887 | 969 | }, |
888 | 970 | { |
889 | 971 | "cell_type": "code", |
890 | | - "execution_count": null, |
| 972 | + "execution_count": 23, |
891 | 973 | "id": "e07cf19c", |
892 | 974 | "metadata": {}, |
893 | | - "outputs": [], |
| 975 | + "outputs": [ |
| 976 | + { |
| 977 | + "name": "stdout", |
| 978 | + "output_type": "stream", |
| 979 | + "text": [ |
| 980 | + "Invoker: Does anybody want something done before I begin?\n", |
| 981 | + "SimpleCommand: See, I can do simple things like printing(Say Hi!)\n", |
| 982 | + "Invoker: ...doing something really important...\n", |
| 983 | + "Invoker: Does anybody want something done after I finish?\n", |
| 984 | + "ComplexCommand: Complex stuff should be done by a receiver object\n", |
| 985 | + "Receiver: Working on (Send email.)\n", |
| 986 | + "Receiver: Also working on (Save report.)" |
| 987 | + ] |
| 988 | + } |
| 989 | + ], |
894 | 990 | "source": [ |
895 | 991 | "invoker.do_something_important()" |
896 | 992 | ] |
|
1538 | 1634 | "name": "python", |
1539 | 1635 | "nbconvert_exporter": "python", |
1540 | 1636 | "pygments_lexer": "ipython3", |
1541 | | - "version": "3.12.2" |
| 1637 | + "version": "3.10.8" |
1542 | 1638 | } |
1543 | 1639 | }, |
1544 | 1640 | "nbformat": 4, |
|
0 commit comments