We may earn an affiliate commission when you visit our partners.
Course image
Dr. Fred Baptiste

Hello.

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 longer before tackling this series.

On the other hand, if you've been studying or programming in Python for a while, and are now starting to ask yourself questions such as:

Read more

Hello.

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 longer before tackling this series.

On the other hand, if you've been studying or programming in Python for a while, and are now starting to ask yourself questions such as:

  • I wonder how this works?

  • is there another, more pythonic, 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? How do I write my own?

  • why do some boolean expressions not return a boolean value? How can I use that to my advantage?

  • how does the import mechanism in Python work, and why am I getting side effects?

  • and similar types of question...

then this course is for you.

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/theory videos, but lean in for the code videos.

Please make sure you review the pre-requisites for this course (below)  - 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 (references)

  • Namespaces and scopes

  • 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

Course Prerequisites

This is an intermediate to advanced Python course.

To have the full benefit of this course you should be comfortable with the basic Python language including:

  • variables and simple types such as str , bool , int  and float  types

  • for  and while  loops

  • if...else...  statements

  • using simple lists , tuples , dictionaries  and sets

  • defining functions (using the def  statement)

  • writing simple classes using the class  keyword and the init  method, writing instance methods, creating basic properties using @property decorators

  • importing modules from the standard library (e.g. import math)

You should also:

  • have Python 3.6 (or higher) installed on your system

  • be able to write and run Python programs using either:

    • the command line, or

    • a favorite IDE (such as PyCharm),

  • have Jupyter Notebooks installed (which I use throughout this course so as to provide you fully annotated Python code samples)

Enroll now

What's inside

Learning objectives

  • 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
  • Show more
  • Show less

Syllabus

An overview of the course content, and pre-requisites for getting the most out of this course.
Course Overview
Pre-Requisites
Code Projects and Notebooks
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores Python's memory management and optimizations, which can help developers write more efficient and performant code, especially when dealing with large datasets or complex algorithms
Covers advanced usage of callables, including functions, lambdas, and closures, which are essential concepts for writing concise and expressive code in Python and other functional languages
Teaches functional programming techniques such as map, reduce, filter, and partials, which are valuable tools for writing declarative and maintainable code, especially in data processing and analysis pipelines
Requires familiarity with Python 3.6 or higher, which may exclude learners using older versions, but ensures compatibility with modern language features and libraries, as well as recent security updates
Requires Jupyter Notebooks, which may require learners to install additional software, but provides fully annotated Python code samples that can be easily executed and experimented with
Assumes familiarity with basic Python concepts, such as variables, loops, and functions, which means that beginners may need to take introductory courses before tackling this material

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Deep dive into python fundamentals

According to students, this course offers a deep dive into Python's internal mechanics, going far beyond the basics. Learners particularly praise the instructor's ability to explain complex concepts like variables, memory management, namespaces, closures, and decorators with great clarity. Many found it instrumental in solidifying their understanding of how Python works under the hood. It is consistently noted that this course is not for beginners and requires a solid foundation in Python beforehand. While highly theoretical and conceptual, it's seen as providing a strong base, although some mention wishing for more hands-on projects.
More theoretical understanding than hands-on projects.
"Provides a strong conceptual base, less focus on real-world apps."
"Great for understanding theory, but wish there were more larger projects."
"If you want deep knowledge, it's perfect; for practical skills, maybe supplement."
"Mostly theoretical with coding examples, not project-based."
Explains the inner workings of the language.
"Helped me understand the 'why' behind many Python behaviors."
"Focuses on the mechanisms under the hood, which is invaluable."
"Finally understand how decorators and closures function internally."
"Gives insight into Python's memory model and optimizations."
Instructor is excellent at explaining complex topics.
"The instructor is brilliant, making difficult concepts easy to grasp."
"His explanations are clear, concise, and very logical."
"Found the lectures engaging and the coding demos helpful."
"He has a knack for breaking down complex subjects effectively."
Offers an incredibly detailed and deep dive.
"This course gives you a deep understanding of Python internals."
"I learned how Python manages memory and variables at a fundamental level."
"Explains concepts like namespaces and scopes with impressive detail."
"Goes way beyond just using features, explaining how they work internally."
Definitely not suitable for Python beginners.
"As stated, this course is not for beginners. Have your fundamentals solid."
"If you don't meet the prerequisites, you will struggle."
"This is a serious deep dive, requiring significant prior Python experience."
"It builds on existing knowledge, don't expect a basic Python intro."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Python 3: Deep Dive (Part 1 - Functional) with these activities:
Review Basic Python Syntax
Reinforce your understanding of fundamental Python syntax to ensure a smooth transition into the more advanced topics covered in this course.
Browse courses on Python Syntax
Show steps
  • Review variables, data types, and operators.
  • Practice writing simple functions and control flow statements.
  • Work through basic Python tutorials or exercises.
Review 'Python Cookbook'
Explore practical solutions and best practices for common Python programming challenges, expanding your toolkit and improving your coding style.
Show steps
  • Browse the table of contents for relevant recipes.
  • Study the code examples and explanations.
  • Adapt the recipes to your own projects.
Review 'Fluent Python'
Supplement your learning with a comprehensive guide to Python's advanced features, reinforcing concepts like functions, decorators, and data structures.
Show steps
  • Read chapters related to functions, decorators, and data structures.
  • Experiment with the code examples provided in the book.
  • Compare the book's explanations with the course material.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement Functional Programming Exercises
Solidify your understanding of functional programming concepts by implementing practical exercises using map, filter, reduce, and lambda functions.
Show steps
  • Find functional programming exercises online.
  • Implement solutions using map, filter, reduce, and lambda.
  • Test your solutions thoroughly.
Write a Blog Post on Python Decorators
Deepen your understanding of decorators by explaining their functionality and use cases in a blog post, solidifying your knowledge through teaching.
Show steps
  • Research different types of Python decorators.
  • Write a clear and concise explanation of decorators.
  • Provide practical examples of decorator usage.
  • Publish your blog post online.
Build a Memoization Decorator Library
Apply your knowledge of decorators and functional programming to create a reusable library for memoizing function results, enhancing performance and efficiency.
Show steps
  • Design the API for your memoization library.
  • Implement the memoization decorator.
  • Write unit tests to ensure correctness.
  • Document your library for others to use.
Create a Python Optimization Guide
Consolidate your understanding of Python's optimizations by creating a comprehensive guide that summarizes key techniques and best practices.
Show steps
  • Research Python optimization techniques.
  • Organize your findings into a structured guide.
  • Provide code examples and explanations.
  • Share your guide with the Python community.

Career center

Learners who complete Python 3: Deep Dive (Part 1 - Functional) will develop knowledge and skills that may be useful to these careers:
Python Instructor
A Python instructor teaches others how to program in Python. This course is highly relevant to a Python instructor because it helps develop an in-depth understanding of the language, including advanced topics like closures, decorators, and the import mechanism. A Python instructor should take this course to deepen their knowledge of Python. The course's exploration of Python's numeric types, boolean operators, and functional programming techniques can be useful to an instructor looking to explain these topics to students. The course is especially useful because it focuses on the inner workings of the language.
Software Developer
A software developer writes and tests code to create software applications. This course helps a software developer deeply understand Python, especially memory management, which is crucial for writing efficient and performant code. This course also covers Python's functional programming techniques, which may be useful in some applications. A software developer should take this course to better understand how Python works at a lower level, and to understand Python design patterns, and become a better, more confident coder. The course's discussions of closures and decorators, as well as run-time versus compile time, are important for any serious Python developer.
Backend Developer
A backend developer focuses on the server-side logic, databases, and APIs of applications. This course can be useful for a backend developer using Python by building their understanding of Python. This course covers important topics for any Python developer, including memory management and function defaults. A backend developer should consider this course to gain a deeper understanding of the Python language. The course provides insights into Python's implementation details, which can help write more efficient and robust backend services, especially the discussion of run-time versus compile-time.
Algorithm Developer
An algorithm developer designs and implements algorithms, often in Python. This course may be useful to an algorithm developer because a deep understanding of Python helps them optimize their code for performance. The course is especially useful because it focuses on the inner workings of Python. The functional programming techniques and the discussion of Python's numeric types, combined with a better understanding of Python's memory management techniques, may be useful. An algorithm developer should consider this course to maximize the impact of their implementations by leveraging a more fundamental understanding of Python.
Data Engineer
A data engineer focuses on building and maintaining data pipelines and infrastructure. This course may be useful to a data engineer using Python because it helps them understand the intricacies of the language. This allows them to write more efficient data-processing scripts. This course's discussion of functional programming may also be beneficial in some contexts. A data engineer should take this course to strengthen their understanding of advanced Python and become more confident when writing complex programs. The course covers topics that are useful for a data engineer, such as memory management and module imports.
DevOps Engineer
A DevOps engineer manages an organization's build, test, and deployment pipelines; they often write scripts to automate these processes using Python. This course may be useful to a DevOps engineer because it helps them understand the more complex aspects of Python, including the import mechanism and modules. The course may be helpful in writing more efficient code that makes better use of Python's built-in features. This course may help a DevOps engineer develop their skills and write more reliable scripts. A DevOps engineer with a deeper knowledge of Python, especially its inner workings, will be more effective in their work.
Machine Learning Engineer
A machine learning engineer builds and deploys machine learning models, often using Python. This course may be useful to a machine learning engineer because it helps build a deeper understanding of how Python works, including memory management. This course also covers functional programming techniques which are sometimes used in machine learning tasks. The topics of closures and decorators are often used in machine learning, so this course may be useful. A machine learning engineer should consider this course to strengthen their core Python skills and move towards mastery of the language by understanding its inner workings.
Data Scientist
A data scientist analyzes large datasets to extract insights and make predictions, often using Python. This course may help a data scientist optimize their code for performance. Understanding how Python’s memory management works and other low-level mechanics, as covered in this course, helps a data scientist write more efficient code. The functional programming techniques, like map, reduce, and filter, explored in this course, are also frequently used in data science. A data scientist might find the discussions of Python's numeric types, such as integers, floats, and decimals, helpful for their work. While this course does not focus on data analysis, it may improve the quality, speed, and reliability of any data science project.
Quantitative Analyst
A quantitative analyst develops and implements mathematical and statistical models for financial markets. Python is a frequently used language. This course may help a quantitative analyst understand how to write more efficient code by better understanding the inner workings of Python, including Python's memory management. Understanding Python's numeric types, and their associated considerations as explored in this course, may be helpful in financial applications. The course's discussion of functional programming may provide the quantitative analyst with new perspectives and tools for their work. A quantitative analyst should take this course to gain an understanding of the finer details of the language.
Research Scientist
A research scientist conducts research in various fields, often using programming to analyze data and build models. This course may be useful for a research scientist using Python because it provides a deeper understanding of the language's inner mechanisms. This course's discussions of Python's memory management, functional programming techniques like map, reduce and filter, and advanced topics like closures and decorators, are all useful for a research scientist. This course can be useful in building a better, stronger, platform for scientific work in Python. A research scientist might benefit from a deeper understanding of how Python works, and what considerations go into the design of Python, as provided in this course.
Web Developer
A web developer designs and builds websites and web applications. Though this course is not explicitly focused on web development, it may be useful by providing a deeper understanding of how Python operates. Web developers may use Python in backend development or for scripting. This course's focus on the inner workings of Python can contribute to writing more performant code. This course's exploration of functional programming techniques may be beneficial in some situations. Topics such as closures and decorators, discussed in the course, are sometimes used in web development. A web developer may benefit from the more in-depth exploration of the language to improve coding skills.
Software Architect
A software architect designs the structure of software systems. This course may be useful to a software architect because it helps them better understand the finer details of Python, including memory management and functional programming techniques. Although the course does not focus on architecture directly, understanding Python's constructs at a lower level may help an architect make more informed decisions about the technologies to use. A software architect should take this course to better understand the complexities and implications of choosing Python for a project. The course's exploration of modules, imports, and runtime may also prove helpful.
Game Developer
A game developer designs and builds computer games. Python is sometimes used in game development, often for tooling or scripting. This course may be useful to a game developer who uses Python. This course helps build a deep understanding of Python, including memory management and functional programming techniques, which can be useful for performance optimization. Although this course does not focus on game development directly, the deep dive into Python internals is useful to any Python programmer. A game developer should look into this course to gain a better understanding of the language, especially if using Python for game tooling or scripting.
Technical Writer
A technical writer creates documentation for software, including Python. This course may be useful to a technical writer because it gives them a deep understanding of the language. A technical writer who is familiar with the inner workings of Python may be better at writing documentation about the language. The discussions of memory management and functional programming techniques may also be useful when documenting Python. A technical writer should consider this course to better understand nuances of Python, and to write better documentation.
Embedded Systems Engineer
An embedded systems engineer designs and develops software for embedded systems. Python is sometimes used in such systems. This course may be helpful as it helps build a solid understanding of Python, and memory management in particular, which may be useful when working with embedded systems. Although the course does not focus on embedded systems, its exploration of Python's inner workings can help prepare an embedded systems engineer to program using Python. Understanding the complexities of Python, as covered in this course, may be useful when working in a constrained embedded environment. The discussions of decorators, namespaces, and closures may also prove helpful. A deep understanding of Python can lead to a better understanding of its performance and limitations.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Python 3: Deep Dive (Part 1 - Functional).
Provides a comprehensive tour of Python's core features, making it an excellent resource for deepening your understanding of the language. It covers many of the topics discussed in the course, such as data structures, functions, and decorators, in great detail. It useful reference for understanding Python's more advanced features. It is commonly used by intermediate to advanced Python programmers.
Offers practical recipes for solving a wide range of programming problems in Python. It is particularly useful for understanding idiomatic Python and best practices. It provides alternative approaches to solving problems. It valuable resource for both beginners and experienced Python developers.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser