Skip to main content
CF

Python 3: Deep Dive (Part 1 - Functional)

45h 50m 55s
English
Paid

This is Part 1 of a series of courses intended to dive into the inner mechanics and more complicated aspects of Python 3. This is not a beginner course - if you've been coding Python for a week or a couple of months, you probably should keep writing Python for a bit more before tackling this series.

On the other hand, if you're now starting to ask yourself questions like:

  • I wonder how this works?

  • is there another way of doing this?

  • what's a closure? is that the same as a lambda?

  • I know how to use a decorator someone else wrote, but how does it work? Can I write my own?

  • why isn't this boolean expression returning a boolean value?

  • what does an import actually do, and why am I getting side effects?

  • and similar types of question...

then this course is for you.

Please make sure you review the pre-requisites for this course - although I give a brief refresh of basic concepts at the beginning of the course, those are concepts you should already be very comfortable with as you being this course.

In this course series, I will give you a much more fundamental and deeper understanding of the Python language and the standard library.

Python is called a "batteries-included" language for good reason - there is a ton of functionality in base Python that remains to be explored and studied.

So this course is not about explaining my favorite 3rd party libraries - it's about Python, as a language, and the standard library.

In particular this course is based on the canonical CPython. You will also need Jupyter Notebooks to view the downloadable fully-annotated Python notebooks.

It's about helping you explore Python and answer questions you are asking yourself as you develop more and more with the language.

In Python 3: Deep Dive (Part 1) we will take a much closer look at:

  • Variables - in particular that they are just symbols pointing to objects in memory

  • Namespaces and scope

  • Python's numeric types

  • Python boolean type - there's more to a simple or statement than you might think!

  • Run-time vs compile-time and how that affects function defaults, decorators, importing modules, etc

  • Functions in general (including lambdas)

  • Functional programming techniques (such as map, reduce, filter, zip, etc)

  • Closures

  • Decorators

  • Imports, modules and packages

  • Tuples as data structures

  • Named tuples

To get the most out of this course, you should be prepared to pause the coding videos, and attempt to write code before I do! Sit back during the concept videos, but lean in for the code videos!

And after you have seen a code video, pause the course, and try things out yourself - explore, experiment, play with code, and see how things work (or don't work! - that's also a great way to learn!)

Requirements:
  • Basic introductory knowledge of Python programming (variables, conditional statements, loops, functions, lists, tuples, dictionaries, classes).
  • You will need Python 3.6 or above, and a development environment of your choice (command line, PyCharm, Jupyter, etc.)
Who this course is for:
  • Anyone with a basic understanding of Python that wants to take it to the next level and get a really deep understanding of the Python language and its data structures.
  • Anyone preparing for an in-depth Python technical interview.

What you'll learn:

  • An in-depth look at variables, memory, namespaces and scopes
  • A deep dive into Python's memory management and optimizations
  • In-depth understanding and advanced usage of Python's numerical data types (Booleans, Integers, Floats, Decimals, Fractions, Complex Numbers)
  • Advanced Boolean expressions and operators
  • Advanced usage of callables including functions, lambdas and closures
  • Functional programming techniques such as map, reduce, filter, and partials
  • Create advanced decorators, including parametrized decorators, class decorators, and decorator classes
  • Advanced decorator applications such as memoization and single dispatch generic functions
  • Use and understand Python's complex Module and Package system
  • Idiomatic Python and best practices
  • Understand Python's compile-time and run-time and how this affects your code
  • Avoid common pitfalls

About the Author: Udemy

Udemy thumbnail

Udemy is the largest open marketplace for online courses on the internet. Founded in 2010 by Eren Bali, Oktay Caglar, and Gagan Biyani and headquartered in San Francisco, the company went public on the Nasdaq in 2021 under the ticker UDMY. The platform hosts well over two hundred thousand courses across software development, IT and cloud, data science, design, business, marketing, and creative skills, taught by tens of thousands of independent instructors. Roughly seventy million learners use it worldwide, and the corporate arm — Udemy Business — supplies a curated subset of that catalog to enterprise customers.

Because Udemy is a marketplace rather than a single editorial publisher, the catalog is uneven by design. The strongest material lives in the long-form, project-based courses authored by working engineers — full-stack JavaScript, React, Node.js, Python data science, AWS, Docker and Kubernetes, mobile development with Flutter and React Native, and cloud certification preparation. The CourseFlix listing under this source is the slice of that catalog that has been mirrored here for offline-friendly viewing, organized by topic and updated as new releases land. Pricing on Udemy itself swings dramatically with the site's near-permanent sales, which is why the platform is best treated as a deep reference catalog: pick instructors with strong reviews and a track record of updating their material rather than buying on the headline price alone.

Watch Online 158 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 158 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: 1.1. Course Overview
All Course Lessons (158)
#Lesson TitleDurationAccess
1
1.1. Course Overview Demo
18:09
2
2.1. Introduction
01:44
3
2.2. The Python Type Hierarchy
05:52
4
2.3. Multi-Line Statements and Strings
22:52
5
2.4. Variable Names
11:01
6
2.5. Conditionals
07:39
7
2.6. Functions
12:28
8
2.7. The While Loop
14:26
9
2.8. Break, Continue and the Try Statement
10:25
10
2.9. The For Loop
17:21
11
2.10. Classes
40:18
12
3.1. Introduction
02:55
13
3.2. Variables are Memory References
08:22
14
3.3. Reference Counting
14:22
15
3.4. Garbage Collection
26:40
16
3.5. Dynamic vs Static Typing
05:29
17
3.6. Variable Re-Assignment
04:49
18
3.7. Object Mutability
15:23
19
3.8. Function Arguments and Mutability
17:29
20
3.9. Shared References and Mutability
09:37
21
3.10. Variable Equality
14:23
22
3.11. Everything is an Object
13:59
23
3.12. Python Optimizations Interning
09:15
24
3.13. Python Optimizations String Interning
19:12
25
3.14. Python Optimizations Peephole
20:10
26
4.1. Introduction
02:59
27
4.2. Integers Data Types
18:07
28
4.3. Integers Operations
24:26
29
4.4. Integers Constructors and Bases - Lecture
29:35
30
4.5. Integers Constructors and Bases - Coding
20:24
31
4.6. Rational Numbers - Lecture
14:27
32
4.7. Rational Numbers - Coding
12:34
33
4.8. Floats Internal Representations - Lecture
19:53
34
4.9. Floats Internal Representations - Coding
04:57
35
4.10. Floats Equality Testing - Lecture
18:43
36
4.11. Floats Equality Testing - Coding
14:41
37
4.12. Floats Coercing to Integers - Lecture
09:40
38
4.13. Floats Coercing to Integers - Coding
05:04
39
4.14. Floats Rounding - Lecture
25:22
40
4.15. Floats Rounding - Coding
13:34
41
4.16. Decimals - Lecture
16:50
42
4.17. Decimals - Coding
10:27
43
4.18. Decimals Constructors and Contexts - Lecture
10:06
44
4.19. Decimals Constructors and Contexts - Coding
10:29
45
4.20. Decimals Math Operations - Lecture
09:33
46
4.21. Decimals Math Operations - Coding
13:31
47
4.22. Decimals Performance Considerations
10:30
48
4.23. Complex Numbers - Lecture
11:29
49
4.24. Complex Numbers - Coding
14:17
50
4.25. Booleans
21:01
51
4.26. Booleans Truth Values - Lecture
09:09
52
4.27. Booleans Truth Values - Coding
14:48
53
4.28. Booleans Precedence and Short-Circuiting - Lecture
21:11
54
4.29. Booleans Precedence and Short-Circuiting - Coding
13:38
55
4.30. Booleans Boolean Operators - Lecture
18:01
56
4.31. Booleans Boolean Operators - Coding
14:46
57
4.32. Comparison Operators
20:54
58
5.1. Introduction
01:06
59
5.2. Argument vs Parameter
03:44
60
5.3. Positional and Keyword Arguments - Lecture
13:06
61
5.4. Positional and Keyword Arguments - Coding
06:22
62
5.5. Unpacking Iterables - Lecture
13:01
63
5.6. Unpacking Iterables - Coding
21:10
64
5.7. Extended Unpacking - Lecture
17:51
65
5.8. Extended Unpacking - Coding
29:05
66
5.9. args - Lecture
06:01
67
5.10. args - Coding
11:48
68
5.11. Keyword Arguments - Lecture
09:24
69
5.12. Keyword Arguments - Coding
14:19
70
5.13. kwargs
10:29
71
5.14. Putting it all Together - Lecture
13:26
72
5.15. Putting it all Together - Coding
17:26
73
5.16. Application A Simple Function Timer
19:09
74
5.17. Parameter Defaults - Beware!!
18:45
75
5.18. Parameter Defaults - Beware Again!!
19:23
76
6.1. Introduction
04:06
77
6.2. Docstrings and Annotations - Lecture
15:59
78
6.3. Docstrings and Annotations - Coding
15:03
79
6.4. Lambda Expressions - Lecture
12:10
80
6.5. Lambda Expressions - Coding
15:00
81
6.6. Lambdas and Sorting
15:57
82
6.7. Challenge - Randomize an Iterable using Sorted!!
02:56
83
6.8. Function Introspection - Lecture
19:31
84
6.9. Function Introspection - Coding
28:37
85
6.10. Callables
14:47
86
6.11. Map, Filter, Zip and List Comprehensions - Lecture
21:44
87
6.12. Map, Filter, Zip and List Comprehensions - Coding
21:15
88
6.13. Reducing Functions - Lecture
25:52
89
6.14. Reducing Functions - Coding
21:11
90
6.15. Partial Functions - Lecture
11:13
91
6.16. Partial Functions - Coding
25:33
92
6.17. The operator Module - Lecture
15:35
93
6.18. The operator Module - Coding
32:44
94
7.1. Introduction
01:32
95
7.2. Global and Local Scopes - Lecture
34:55
96
7.3. Global and Local Scopes - Coding
15:41
97
7.4. Nonlocal Scopes - Lecture
22:18
98
7.5. Nonlocal Scopes - Coding
14:38
99
7.6. Closures - Lecture
38:36
100
7.7. Closures - Coding
32:06
101
7.8. Closure Applications - Part 1
15:38
102
7.9. Closure Applications - Part 2
18:41
103
7.10. Decorators (Part 1) - Lecture
21:07
104
7.11. Decorators (Part 1) - Coding
20:59
105
7.12. Decorator Application (Timer)
35:17
106
7.13. Decorator Application (Logger, Stacked Decorators)
23:48
107
7.14. Decorator Application (Memoization)
29:15
108
7.15. Decorator Factories - Lecture
11:45
109
7.16. Decorator Factories - Coding
25:58
110
7.17. Decorator Application (Decorator Class)
09:41
111
7.18. Decorator Application (Decorating Classes)
48:24
112
7.19. Decorator Application (Dispatching) - Part 1
31:46
113
7.20. Decorator Application (Dispatching) - Part 2
35:46
114
7.21. Decorator Application (Dispatching) - Part 3
26:51
115
8.1. Introduction
03:19
116
8.2. Tuples as Data Structures - Lecture
19:02
117
8.3. Tuples as Data Structures - Coding
25:25
118
8.4. Named Tuples - Lecture
27:50
119
8.5. Named Tuples - Coding
35:15
120
8.6. Named Tuples - Modifying and Extending - Lecture
14:26
121
8.7. Named Tuples - Modifying and Extending - Coding
21:47
122
8.8. Named Tuples - DocStrings and Default Values - Lecture
13:31
123
8.9. Named Tuples - DocStrings and Default Values - Coding
15:47
124
8.10. Named Tuples - Application - Returning Multiple Values
06:23
125
8.11. Named Tuples - Application - Alternative to Dictionaries
28:46
126
9.1. Introduction
03:03
127
9.2. What is a Module
24:31
128
9.3. How does Python Import Modules
49:33
129
9.4. Imports and importlib
27:40
130
9.5. Import Variants and Misconceptions - Lecture
14:01
131
9.6. Import Variants and Misconceptions - Coding
27:04
132
9.7. Reloading Modules
18:30
133
9.8. Using __main__
27:02
134
9.9. Modules Recap
13:03
135
9.10. What are Packages - Lecture
20:25
136
9.11. What are Packages - Coding
27:12
137
9.12. Why Packages
13:08
138
9.13. Structuring Packages - Part 1
36:42
139
9.14. Structuring Packages - Part 2
27:28
140
9.15. Namespace Packages
10:39
141
9.16. Importing from Zip Archives
03:29
142
10.1. Python 3.10
25:18
143
10.2. Python 3.9
28:47
144
10.3. Python 3.8 3.7
34:26
145
10.4. Python 3.6 Highlights
07:50
146
10.5. Python 3.6 - Dictionary Ordering
19:46
147
10.6. Python 3.6 - Underscores in Numeric Literals
03:39
148
10.7. Python 3.6 - Preserved Order of kwargs and Named Tuple Application
05:34
149
10.8. Python 3.6 - f-Strings
09:20
150
11.1. Introduction
03:41
151
11.2. Additional Resources
12:54
152
11.3. Random Seeds
17:27
153
11.4. Random Choices
26:08
154
11.5. Random Samples
07:03
155
11.6. Timing code using timeit
16:18
156
11.7. Don't Use args and kwargs Names Blindly
07:36
157
11.8. Command Line Arguments
01:00:08
158
11.9. Sentinel Values for Parameter Defaults
11:03
Unlock unlimited learning

Get instant access to all 157 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Books

Read Book Python 3: Deep Dive (Part 1 - Functional)

#TitleTypeOpen
11.1. Section 1 - Intro PDF
21.4. Python Deep Dive 1 PDF
32.1. Quick Refresher Introduction PDF
42.2. Python Type Hierarchy PDF
52.3. Multi-Line Statements and Strings PDF
62.4. Variable Names PDF
73.2. 02 - Variables are Memory References PDF
83.3. 03 - Reference Counting PDF
93.4. 04 - Garbage Collection PDF
103.5. 05 - Dynamic vs Static Typing PDF
113.6. 06 - Variable Re-Assignment PDF
123.7. 07 - Object Mutability PDF
133.8. 08 - Function Arguments and Mutability PDF
143.9. 09 - Shared References and Mutability PDF
153.10. 10 - Variable Equality PDF
163.11. 11 - Everything is an Object PDF
173.12. 12 - Python Optimizations - Interning PDF
183.13. 13 - Python Optimizations String Interning PDF
193.14. 14 - Python Optimizations - Peephole PDF
204.2. 02 - Integers Data Type PDF
214.3. 03 - Integers - Operations PDF
224.4. 04 - Integers - Constructors and Bases PDF
234.6. 06 - Rational Numbers PDF
244.8. 08 - Floats - Internal Representation PDF
254.10. 10 - Floats - Equality Testing PDF
264.12. 12 - Floats to Integers PDF
274.14. 14 - Floats - Rounding PDF
284.16. 16 - Decimals PDF
294.18. 18 - Decimals - Constructors and Contexts PDF
304.20. 20 - Decimals - Math Operations PDF
314.22. 22 - Decimals - Performance Considerations PDF
324.23. 23 - Complex Numbers PDF
334.25. 25 - Booleans PDF
344.26. 26 - Booleans - Truth Values - Lecture PDF
354.28. 28 - Boolean - Precedence and Short-Circuiting PDF
364.30. 30 - Boolean - Boolean Operators PDF
374.32. 32 - Comparison Operators PDF
385.2. 02 - Argument vs Parameter PDF
395.3. 03 - Positional Arguments PDF
405.5. 05 - Unpacking Iterables PDF
415.7. 07 - Extended Unpacking PDF
425.9. 09 - star-args PDF
435.11. 11 - Keyword Arguments PDF
445.13. 13 - kwargs PDF
455.14. 14 - Putting it all together PDF
465.17. 17 - Default Values PDF
476.2. 02 - Docstrings and Annotations PDF
486.4. 04 - Lambda Expressions PDF
496.8. 08 - Function Introspection PDF
506.10. 10 - Callables PDF
516.11. 11 - Map, Filter, Zip PDF
526.13. 13 - Reducing Functions PDF
536.15. 15 - Partial Functions PDF
546.17. 17 - The operator Module PDF
557.2. 02 - Global and Local Scopes PDF
567.4. 04 - NonLocal Sopes PDF
577.6. 06 - Closures PDF
587.10. 10 - Decorators 1 PDF
597.15. 15 - Decorators 2 PDF
608.2. 02 - Tuples PDF
618.4. 04 - Named Tuples PDF
628.6. 06 - Named Tuples - Modifying and Extending PDF
638.8. 08 - Named Tuples - DocStrings and Default Values PDF
649.5. 05 - Import Variants PDF
659.9. 08 - Modules Recap PDF
669.10. 09 - What are Packages PDF
679.12. 11 - Why Packages PDF
689.15. 14 - Namespace Packages PDF
6911.2. Additional Resources PDF

Related courses

Frequently asked questions

What are the prerequisites for enrolling in this course?
This course is not designed for beginners. Prospective students should have experience coding in Python for at least a few months. Familiarity with basic concepts such as loops, functions, classes, and conditionals is expected to fully grasp the more advanced topics covered.
What specific topics are covered in this course?
The course covers advanced topics in Python 3, focusing on functional aspects. Key lessons include Python's type hierarchy, memory management through reference counting and garbage collection, variable mutability, Python optimizations like interning and peephole, and detailed exploration of data types such as integers, floats, decimals, and complex numbers.
Who is the target audience for this course?
The course is intended for intermediate to advanced Python users who have a foundational understanding of the language and seek to deepen their knowledge of Python's functional and internal mechanics. It is particularly suited for developers interested in exploring Python's more complex features and optimizations.
How does the depth of this course compare to other Python courses?
This course dives into the intricate details of Python 3, such as memory references, object mutability, and internal optimizations. Unlike many introductory or general Python courses, it focuses on the inner workings of Python, making it more suitable for those who wish to understand the language beyond surface-level syntax and functionality.
What tools or platforms are specifically covered in the course?
The course does not focus on specific external tools or platforms but rather on Python's internal mechanisms and data type handling. It provides insights into Python's memory management, optimizations, and data type operations, which are crucial for writing efficient Python code.
What is not covered in this course that I might need to learn separately?
This course does not cover introductory Python programming concepts, web development frameworks, or Python libraries like NumPy or pandas. It also does not address Python GUI frameworks or deployment strategies. Students may need to explore these topics separately if they are relevant to their goals.
How much time should I expect to dedicate to this course?
While the total runtime of the course is not specified, students should be prepared for an intensive study due to the advanced and detailed nature of the topics. With 158 lessons, substantial time will be required for both watching the lectures and practicing the coding exercises to ensure thorough understanding.