Python course structured in 3 big bocks: basic, advanced and utilities
# Course content
- 00: What is Python?
- 01: Python history and versions
- 02: Tools and environment
- 03: Numbers
- 04: Strings
- 05: Collections
- 06: Dictionaries
- 07: Booleans
- 08: Flow control
- 09: Functions
- 10: Iterators, comprehension and generators
- 11: Functional programming and iterables tools
- 12: Classes
- 13: Modules and packages
- 14: Duck typing
- 15: Mutables vs. immutables
- 16: Way of working
- 01: Namespaces and scopes
- 02: Globals and locals and global
- 03: Decorators
- 04: Advanced decorators
- 05: Attributes look up
- 06: Objects data model customisation
- 07: Cooperative super call pattern: MRO and super
- 08: Descriptors protocol
- 09: Slots and properties
- 10: Constructors and metaclasses
- 11: Common Java developers errors (getters and setters, abuse of staticmethod and classmethod, single class per module, fear to multiple inheritance, importing...) ?
## UTILITIES BLOCK (6 - 8h)
-
Standatd library: most useful modules
- ABC?
- itertools
- functools
- contextlibs
- datetime + tz, time
- sys
- os
- json, ujson
- inspect + _getframe
- cmd
- logging
- Files access: os.path, copy2, shutil, mkdir
- argparse, configparser
- Commands execution: popen
- Paralelism: thread, multiprocessing, GIL
- traceback
- …
-
Unit testing, mocking (dependency injection vs. mocking abuse)
-
Debugging and profiling: ipdb, timeit, profile & cprofile, plop
-
Packaging and distribution: setuptools and distutils
-
Rremote access: fabric and paramiko
-
3rd parties:
- virtualenv
- Web development: Django, Django rest fwk, Tastypie
- Asynch processing: gevent and Twisted
- HTTP requests: requests
- DB access: pymongo, redis, python-mysql, SQLAlchemy
- …
DONE:
- Standatd library: useful functions: map, reduce, zip, globals, locals, all, filter…
- collections