مطالب پیشنهادی از سراسر وب

دوره شیرجه عمیق به پایتون 3 - بخش 2 - Iteration و Generators

دسته بندی ها: آموزش های ویژه ، آموزش های یودمی (Udemy) ، آموزش پایتون (Python)

توالی ها، Iterables ،Iterators، ژنراتورها، مدیران متن و Coroutines مبتنی بر ژنراتور

توضیحات دوره

این دوره به بررسی عمیق موضوعات زیر می پردازد:

  • توالی ها
  • Iterables
  • Iterators
  • ژنراتورها
  • comprehensions 
  • مدیران متن
  • کوروتین های مبتنی بر ژنراتور

این دوره دقیقاً به شما نشان خواهد داد که تکرار در پایتون چگونه کار می کند - از پروتکل توالی، تا پروتکل های iterable و iterator و اینکه چگونه می توان ترتیب و نوع داده های قابل تکرار خود را نوشت. 

ما به توضیح جزئیاتی درمورد برش توالی و چگونگی ارتباط برش با دامنه ها می پردازیم.

به بررسی دقیق comprehensions می پردازیم و متوجه می شویم که چگونه comprehensions لیست درواقع همان closures است که مقیاس خودشان را دارند و دلایل باگ های ثابت که گاهید comprehensions لیست به وجود می آید را درک می کنید.

 همچنین با توابع ژنراتور و رابطه آنها با iterators آشنا می شوید و همتایان comprehensions (عبارت های ژنراتورها) یاد خواهید گرفت.

مدیران متن، ساختاری که اغلب در پایتون نادیده گرفته می شود، به تفصیل نیز پوشش داده شده  است. در آنجا خواهیم آموخت که چگونه مدیران متناسب با خود را ایجاد و استفاده کنیم و ارتباط بین مدیران متن و توابع ژنراتور را درک کنیم.

در آخر، خواهیم دید که چگونه می توانیم از ژنراتورها برای ایجاد coroutines استفاده کنیم.

هر بخش توسط یک پروژه طراحی شده است تا آنچه را که شما در طول دوره یاد می گیرید عملی کنید.

این سری دوره بر زبان پایتون و کتابخانه استاندارد متمرکز شده است. فقط در توزیع استاندارد CPython بسیاری از قابلیت ها و چیزهایی وجود دارد که می توان فهمید، بنابراین این دوره کتابخانه های شخص ثالث را پوشش نمی دهد - این یک شیرجه عمیق به سوی درک پایتون است، نه اکتشافی در مورد بسیاری از کتابخانه های بسیار مفید شخص ثالث که در اطراف پایتون رشد کرده اند. - این موارد اغلب به اندازه کافی موضوعات بزرگ هستند که یک دوره کامل را برای خودشان اختصتص دهند! در واقع ، بسیاری از آنها قبلاً ایجاد شده اند!

***** پیش نیازها*****

لطفاً توجه داشته باشید که این یک دوره نسبتاً پیشرفته پایتون است و دانش قوی در مورد برخی از موضوعات در پایتون لازم است. 

به ویژه، شما باید درک عمیقی از موضوعات زیر داشته باشید:

  • توابع و آرگومان های توابع
  • بسته بندی و باز کردن بسته های iterables و نحوه استفاده از آن با آرگومان های توابع (یعنی با استفاده از *)
  • closures
  • دکوراتور
  • مقادیر حقیقی بولین و نحوه داشتن مقدار حقیقی هر آبجکت 
  • زیپ، مپ، فیلتر، مرتب شده، توابع کاهش
  • لامبدا
  • وارد کردن ماژول ها و بسته ها

شما همچنین باید دانش اساسی در مورد موضوعات زیر داشته باشید:

  • انواع داده مختلف (عددی، رشته، لیست ها، tuples، دیکشنری ها، تنظیمات و غیره)
  • for loops، while loops، break, continue و else clause
  • if statements
  • try...except...else...finally...
  • دانش اولیه نحوه ایجاد و استفاده از کلاس ها ( __init__, __eq__, __lt__)

این دوره برای چه کسی مناسب است؟

توسعه دهندگان Python که می خواهند درک عمیقی از توالی ها، iterables ، iterators ، ژنراتورها و مدیران متن داشته باشند.

آنچه یاد خواهید گرفت...

  • شما قادر خواهید بود مفاهیم را در این دوره به کار بگیرید تا مهارت های برنامه نویسی پایتون را به سطح بعدی برسانید.
  • انواع توالی و پروتکل توالی
  • Iterables و پروتکل iterable
  • Iterators و پروتکل Iterator
  • List comprehensions و رابطه آنها با closures
  • توابع ژنراتور
  • مدیران متن
  • ایجاد مدیران متن با توابع ژنراتور
  • استفاده از ژنراتورها به عنوان Coroutines

پیش نیازهای دوره...

این دوره نسبتاً پیشرفته ای است، بنابراین باید از قبل با مفاهیم اساسی پایتون و همچنین برخی از دانش عمیق که در پیش نیازهای شرح دوره توضیح داده شده است، آشنا شوید. لطفاً آنها را بررسی کرده و مطمئن شوید!

شما به پایتون 3.6 یا بالاتر نیاز دارید ، و یک محیط توسعه به انتخاب شما (خط فرمان ، PyCharm ، Jupyter و غیره) نیاز دارید.

سایر بخش های دوره:

سرفصل های دوره:

  • مقدمه
    • بررسی دوره
    • پیش نیازها
    • ابزارهای مورد نیاز پایتون
  • انواع توالی ها
    • مقدمه
    • انواع توالی - لکچر
    • انواع توالی - کدنویسی 
    • انواع توالی قابل تغییر - لکچر
    • انواع توالی قابل تغییر - کدنویسی
    • لیست ها درمقابل Tuples
    • Index Base و Slice Bounds - بررسی Rationale
    • کپی کردن توالی ها - لکچر
    • کپی کردن توالی ها - کدنویسی 
    • برش کردن - لکچر
    • برش کردن - کدنویسی
    • توالی های سفارشی - بخش 1 - لکچر
    • توالی های سفارشی - بخش 1 - کدنویسی 
    • تکرار و الحاق در محل - لکچر
    • تکرار و الحاق در محل - کدنویسی
    • وظایف در توالی های قابل تغییر - لکچر
    • وظایف در توالی های قابل تغییر - کدنویسی
    • توالی های سفارشی - بخش 2 - لکچر
    • توالی های سفارشی - بخش  2A - کدنویسی 
    • توالی های سفارشی - بخش 2B - کدنویسی
    • توالی های سفارشی - بخش 2C - کدنویسی
    • مرتب سازی توالی ها - لکچر
    • مرتب سازی توالی ها - کدنویسی 
    • List Comprehensions - لکچر
    • List Comprehensions - کدنویسی
  • پروژه 1
    • توضیح پروژه
    • راه حل پروژه - هدف 1
    • راه حل پروژه - هدف 2
  • Iterables و Iterators
    • مقدمه
    • تکرار مجموعه ها - لکچر
    • تکرار مجموعه ها - کدنویسی
    • Iterators - لکچر
    • Iterators - کدنویسی
    • Iterators و Iterables - لکچر
    • Iterators و Iterables - کدنویسی
    • مثال 1 - استفاده از Iterators به صورت دستی
    • مثال 2 - Cyclic Iterators
    • Lazy Iterables - لکچر
    • Lazy Iterables - کدنویسی
    • Iterables و Iterators داخلی پایتون - لکچر
    • Iterables و Iterators داخلی پایتون - کدنویسی
    • مرتب سازی Iterables
    • تابع ()iter - لکچر
    • تابع ()iter - کدنویسی 
    • تکرار کردن Callables - لکچر
    • تکرار کردن Callables - کدنویسی 
    • مثال 3 - Delegating Iterators
    • Reversed Iteration - لکچر
    • Reversed Iteration - کدنویسی
    • Caveat - استفاده از Iterators به عنوان آرگومان های تابع
  • پروژه 2
    • توضیح پروژه
    • راه حل پروژه - هدف 1
    • راه حل پروژه - هدف 2
  • ژنراتورها
    • مقدمه
    • Yielding و توابع ژنراتور - لکچر
    • Yielding و توابع ژنراتور - کدنویسی 
    • مثال - توالی Fibonacci
    • ساخت iterable از یک ژنراتور - لکچر
    • ساخت iterable از یک ژنراتور - کدنویسی
    • مثال - Card Deck
    • عملکرد و عبارت های ژنراتور - لکچر
    • عملکرد و عبارت های ژنراتور - کدنویسی
    • Yield From - لکچر
    • Yield From - کدنویسی
  • پروژه 3
    • توضیحات پروژه
    • راه حل پروژه - هدف 1
    • راه حل پروژه - هدف 2
  • ابزارهای Iteration
    • ​​​​مقدمه
    • Aggregators - لکچر
    • Aggregators - کدنویسی 
    • Slicing - لکچر
    • Slicing - کدنویسی
    • انتخاب کردن و فیلتر کردن - لکچر
    • انتخاب کردن و فیلتر کردن - کدنویسی 
    • Infinite Iterators - لکچر
    • Infinite Iterators - کدنویسی 
    • زنجیر زدن و Teeing - لکچر
    • زنجیر زدن و Teeing - کدنویسی
    • Mapping و Reducing - لکچر
    • Mapping و Reducing - کدنویسی
    • Zipping - لکچر
    • Zipping - کدنویسی
    • Grouping - لکچر
    • Grouping - کدنویسی
    • Combinatorics - لکچر
    • Combinatorics - کدنویسی (محصول)
    • Combinatorics - کدنویسی (جایگشت، ترکیب)
  • پروژه 
    • توضیحات پروژه
    • راه حل پروژه - هدف 1
    • راه حل پروژه - هدف 2
    • راه حل پروژه - هدف 3
    • راه حل پروژه - هدف 4
  • مدیران متن
    • مقدمه
    • مدیران متن - لکچر
    • مدیران متن - کدنویسی 
    • Caveat زمانی که با Lazy Iterators 
    • نه فقط مدیران متن
    • کاربردهای اضافی - لکچر
    • کاربردهای اضافی - کدنویسی 
    • ژنراتورها و مدیران متن - لکچر
    • ژنراتورها و مدیران متن - کدنویسی
    • contextmanager Decorator - لکچر
    • contextmanager Decorator - کدنویسی 
    • Nested Context Managers
  • پروژه 5
    • توضیحات پروژه
    • راه حل پروژه - هدف 1
    • راه حل پروژه - هدف 2
  • ژنراتورها و Coroutines
    • مقدمه
    • Coroutines - لکچر
    • Coroutines - کدنویسی
    • Generator States - لکچر
    • Generator States - کدنویسی
    • ​​​​​​ارسال به ژنراتورها - لکچر 
    • ​​​​​​ارسال به ژنراتورها - کدنویسی
    • بستن ژنراتورها - لکچر
    • بستن ژنراتورها - کدنویسی 
    • ارسال استثنائات به Generators - لکچر
    • ارسال استثنائات به Generators - کدنویسی 
    • استفاده از Decorators در Prime Coroutines - لکچر
    • استفاده از Decorators در Prime Coroutines - کدنویسی
    • Yield From - دو راه ارتباط - لکچر
    • Yield From - دو راه ارتباط - کدنویسی
    • Yield From - ارسال داده - لکچر
    • Yield From -  ارسال داده - کدنویسی
    • Yield From - بستن و بازگشت - لکچر 
    • Yield From - بستن و بازگشت - کدنویسی
    • Yield From - پرتاب استثنائات - لکچر
    • Yield From - پرتاب استثنائات - کدنویسی
    • اپلیکیشن - خطوط ارتباطی - لکچر
    • اپلیکیشن - خطوط ارتباطی - Pulling Data
    • اپلیکیشن - خطوط ارتباطی - Pushing Data
    • اپلیکیشن - خطوط ارتباطی - Broadcasting Data
  • پروژه 6
    • توضیح دوره
    • راه حل دوره

ویدئوهای دوره:

پیش نیازها

 

ابزارهای مورد نیاز در پایتون

 

آیا این نوشته را دوست داشتید؟
Python 3: Deep Dive (Part 2 - Iteration, Generators) Publisher:Udemy Author:Fred Baptiste Duration:34.5 H Level:Advanced

Sequences, Iterables, Iterators, Generators, Context Managers and Generator-based Coroutines


Description

Part 2 of this Python 3: Deep Dive series is an in-depth look at:

  • sequences
  • iterables
  • iterators
  • generators
  • comprehensions
  • context managers
  • generator based coroutines

I will show you exactly how iteration works in Python - from the sequence protocol, to the iterable and iterator protocols, and how we can write our own sequence and iterable data types.

We'll go into some detail to explain sequence slicing and how slicing relates to ranges.

We look at comprehensions in detail as well and I will show you how list comprehensions are actually closures and have their own scope, and the reason why subtle bugs sometimes creep in to list comprehensions that we might not expect.

We'll take a deep dive into the itertools module and look at all the functions available there and how useful (but overlooked!) they can be.

We also look at generator functions, their relation to iterators, and their comprehension counterparts (generator expressions).

Context managers, an often overlooked construct in Python, is covered in detail too. There we will learn how to create and leverage our own context managers and understand the relationship between context managers and generator functions.

Finally, we'll look at how we can use generators to create coroutines.

Each section is followed by a project designed to put into practice what you learn throughout the course.

This course series is focused on the Python language and the standard library. There is an enormous amount of functionality and things to understand in just the standard CPython distribution, so I do not cover 3rd party libraries - this is a Python deep dive, not an exploration of the many highly useful 3rd party libraries that have grown around Python - those are often sufficiently large to warrant an entire course unto themselves! Indeed, many of them already do!

***** Prerequisites *****

Please note that this is a relatively advanced Python course, and a strong knowledge of some topics in Python is required.

In particular, you should already have an in-depth understanding of the following topics:

functions and function arguments

packing and unpacking iterables and how that is used with function arguments (i.e. using *)

  • closures
  • decorators
  • Boolean truth values and how any object has an associated truth value
  • named tuples
  • the zip, map, filter, sorted, reduce functions
  • lambdas
  • importing modules and packages

You should also have a basic knowledge of the following topics:

  • various data types (numeric, string, lists, tuples, dictionaries, sets, etc)
  • for loops, while loops, break, continue, the else clause
  • if statements
  • try...except...else...finally...
  • basic knowledge of how to create and use classes (methods, properties) - no need for advanced topics such as inheritance or metaclasses
  • understand how certain special methods are used in classes (such as __init__, __eq__, __lt__, etc)

Who this course is for:

Python developers who want a deeper understanding of sequences, iterables, iterators, generators and context managers.

What you'll learn

  • You'll be able to leverage the concepts in this course to take your Python programming skills to the next level.
  • Sequence Types and the sequence protocol
  • Iterables and the iterable protocol
  • Iterators and the iterator protocol
  • List comprehensions and their relation to closures
  • Generator functions
  • Generator expressions
  • Context managers
  • Creating context managers using generator functions
  • Using Generators as Coroutines

Requirements

This is a relatively advanced course, so you should already be familiar with basic Python concepts, as well as some in-depth knowledge as described in the prerequisites in the course description. Please be sure you check those and make sure!
You will need Python 3.6 or above, and a development environment of your choice (command line, PyCharm, Jupyter, etc.)

Course content

  • Introduction
    • Course Overview
    • Pre-Requisites
    • Python Tools Needed
  • Sequence Types
    • Introduction
    • Sequence Types - Lecture
    • Sequence Types - Coding
    • Mutable Sequence Types - Lecture
    • Mutable Sequence Types - Coding
    • Lists vs Tuples
    • Index Base and Slice Bounds - Rationale
    • Copying Sequences - Lecture
    • Copying Sequences - Coding
    • Slicing - Lecture
    • Slicing - Coding
    • Custom Sequences - Part 1 - Lecture
    • Custom Sequences - Part 1 - Coding
    • In-Place Concatenation and Repetition - Lecture
    • In-Place Concatenation and Repetition - Coding
    • Assignments in Mutable Sequences - Lecture
    • Assignments in Mutable Sequences - Coding
    • Custom Sequences - Part 2 - Lecture
    • Custom Sequences - Part 2A - Coding
    • Custom Sequences - Part 2B - Coding
    • Custom Sequences - Part 2C - Coding
    • Sorting Sequences - Lecture
    • Sorting Sequences - Coding
    • List Comprehensions - Lecture
    • List Comprehensions - Coding
  • Project 1
    • Project Description
    • Project Solution: Goal 1
    • Project Solution: Goal 2
  • Iterables and Iterators
    • Introduction
    • Iterating Collections - Lecture
    • Iterating Collections - Coding
    • Iterators - Lecture
    • Iterators - Coding
    • Iterators and Iterables - Lecture
    • Iterators and Iterables - Coding
    • Example 1 - Consuming Iterators Manually
    • Example 2 - Cyclic Iterators
    • Lazy Iterables - Lecture
    • Lazy Iterables - Coding
    • Python's Built-In Iterables and Iterators - Lecture
    • Python's Built-In Iterables and Iterators - Coding
    • Sorting Iterables
    • The iter() Function - Lecture
    • The iter() Function - Coding
    • Iterating Callables - Lecture
    • Iterating Callables - Coding
    • Example 3 - Delegating Iterators
    • Reversed Iteration - Lecture
    • Reversed Iteration - Coding
    • Caveat: Using Iterators as Function Arguments
  • Project 2
    • Project Description
    • Project Solution: Goal 1
    • Project Solution: Goal 2
  • Generators
    • Introduction
    • Yielding and Generator Functions - Lecture
    • Yielding and Generator Functions - Coding
    • Example - Fibonacci Sequence
    • Making an Iterable from a Generator - Lecture
    • Making an Iterable from a Generator - Coding
    • Example - Card Deck
    • Generator Expressions and Performance - Lecture
    • Generator Expressions and Performance - Coding
    • Yield From - Lecture
    • Yield From - Coding
  • Project 3
    • Project Description
    • Project Solution: Goal 1
    • Project Solution: Goal 2
  • Iteration Tools
    • Introduction
    • Aggregators - Lecture
    • Aggregators - Coding
    • Slicing - Lecture
    • Slicing - Coding
    • Selecting and Filtering - Lecture
    • Selecting and Filtering - Coding
    • Infinite Iterators - Lecture
    • Infinite Iterators - Coding
    • Chaining and Teeing - Lecture
    • Chaining and Teeing - Coding
    • Mapping and Reducing - Lecture
    • Mapping and Reducing - Coding
    • Zipping - Lecture
    • Zipping - Coding
    • Grouping - Lecture
    • Grouping - Coding
    • Combinatorics - Lecture
    • Combinatorics - Coding (Product)
    • Combinatorics - Coding (Permutation, Combination)
  • Project 4
    • Project - Description
    • Project Solution: Goal 1
    • Project Solution: Goal 2
    • Project Solution: Goal 3
    • Project Solution: Goal 4
  • Context Managers
    • Introduction
    • Context Managers - Lecture
    • Context Managers - Coding
    • Caveat when used with Lazy Iterators
    • Not just a Context Manager
    • Additional Uses - Lecture
    • Additional Uses - Coding
    • Generators and Context Managers - Lecture
    • Generators and Context Managers - Coding
    • The contextmanager Decorator - Lecture
    • The contextmanager Decorator - Coding
    • Nested Context Managers
  • Project 5
    • Project - Description
    • Project Solution: Goal 1
    • Project Solution: Goal 2
  • Generators as Coroutines
    • Introduction
    • Coroutines - Lecture
    • Coroutines - Coding
    • Generator States - Lecture
    • Generator States - Coding
    • Sending to Generators - Lecture
    • Sending to Generators - Coding
    • Closing Generators - Lecture
    • Closing Generators - Coding
    • Sending Exceptions to Generators - Lecture
    • Sending Exceptions to Generators - Coding
    • Using Decorators to Prime Coroutines - Lecture
    • Using Decorators to Prime Coroutines - Coding
    • Yield From - Two-Way Communications - Lecture
    • Yield From - Two-Way Communications - Coding
    • Yield From - Sending Data - Lecture
    • Yield From - Sending Data - Coding
    • Yield From - Closing and Return - Lecture
    • Yield From - Closing and Return - Coding
    • Yield From - Throwing Exceptions - Lecture
    • Yield From - Throwing Exceptions - Coding
    • Application - Pipelines - Lecture
    • Application - Pipelines - Pulling Data
    • Application - Pipelines - Pushing Data
    • Application - Pipelines - Broadcasting Data
  • Project 6
    • Project Description
    • Project Solution

پیشنهاد آموزش مرتبط در فرادرس

خرید لینک های دانلود
  • حجم فایل: 19.57GB
  • زبان: انگلیسی
  • زیرنویس انگلیسی: ندارد
  • قیمت: 10000 تومان
  • دوره شیرجه عمیق به پایتون 3 - بخش 2 - Iteration و Generators یک محصول ویژه است و دریافت لینک های دانلود آن با پرداخت هزینه امکان پذیر است. اطلاعات بیشتر