תיאור הקורס

קורס פייתון מעמיק, מתקדם, המיועד לכאלה שהם כבר מקצוענים.
מכיל קבוצה נבחרת של תכנים שמעמיקים בשפה עצמה וביכולות שלה.
מתאים למי שפייתון היא הכלי המקצועי המרכזי שלו, מפתחי תוכנה מקצועיים הכותבים בפייתון, ורוצים להעצים את היכולת שלהם "לעשות קסמים" בשפה.
קהל היעד
מהנדסי תוכנה מנוסים, עם שנת ניסיון אחת לפחות בפיתוח באמצעות פייתון.
קצב הקורס יהיה מהיר, ובכל נושא רק "נסיר את המכסה", ונשאיר ללומדים את האפשרות לחזור לחומר עפ"י בחירתם. הרעיון הבסיסי הוא להבהיר את הרעיונות המרכזיים, תוך שימוש בדוגמאות קוד טובות.
ידע קודם נדרש
ידע טוב בפייתון, ובמיוחד:
- סוגי מידע בפייתון (int, float, bool, str, dict, tuple, set, bytes, bytearray..) וכל ה syntax הנדרש לטיפול בהם.
- בקרת זרימה:
(if, for, while, break, continue, pass, range() function and type, else for if and for loops) - ההבדל בין True, ל – truthy
- יכולת הגדרה וקריאה לפונקציות, כולל כל האפשרויות להעברת פרמטרים (* **), כל הנושא של namespaces (כולל global ו – nonlocal)
- הגדרת classes, כולל ירושה, ההבדל בין class variable ל – instance variable, ההבדל בין פונקציה למתודה.
תוכן הקורס
Lesson1 – Doing things in python
Doing things in python
- types-values-references-variables
-
indexes/slicing/comprehensions
-
context managers
-
Common python pitfalls
Lesson2 – clean code
clean code:
-
virtual environments
-
pep-20: the zen of python
-
pep-8
-
docstrings
-
annotations/static typing/mypy
Lesson3 – basic and advanced collections
-
basic collections: list, tuple, set dict
-
advanced collections:
dqueue, ChainMap, counter, defaultdict, enum, heapq…
Lesson4 – the use of functions
use of functions
-
review of parameters
-
inner-functions and closures
-
function decorators
-
functools and itertools
Lesson5 – advanced OO
-
special methods
-
decorating methods and classes (with arguments)
-
metaclasses – dynamically creating classes
-
ABC (Abstract Base Classes) and collections.ABC
-
automatic registering of plugins
Lesson6 – generators, coroutines and asyncio
-
generators (with uses)
-
coroutines
-
async and await keywords
-
asyncio library
-
asyncio server and client
-
aiohttp
Lesson7 – Performance
profiling code
-
timing apps
-
profiling with cProfile and the line_profiler
optimizing code
-
use the right algorithm
-
hash and sets
-
heaps
-
list and deques
-
try vs if
-
Lists versus generators
-
caching
-
Lazy imports
-
Using optimized libraries
-
Just-in-time compiling (numba)
-
Converting parts of your code to C