Python Zero to Heros

Online Absolute Beginner Python TutorialsΒ 

Every Sunday 2pm (UK time/ BST)

Get this slide deck:


Beginner topics:

Python objects - int, float, str, list, dict, bool

Control flows - if-else, for loop, while loop

Functions, modeuls, classes and decorators

strings operations and regex with re


pytest with fixtures and mock

property-based testing

python linters & auto-formatters


Intermedite topics:

Iterators, generators

Let's continue our story...

Once upon a time there are Generators

Sending to generator


The send() method resumes the generator and sends a value that will be used to continue with the next yield. The method returns the new value yielded by the generator.


def numberGenerator(n):
     number = yield
     while number < n:
         number = yield number 
         number += 1

g = numberGenerator(10)    # Create our generator
next(g)                    # 

Python 3.3 : yield from

def generator1():
    for item in generator2():
        yield item
def generator1():
    yield from generator2()

Python 3.3+ : yield from

def bottom():
    # Returning the yield lets the value
    # that goes up the call stack
    # to come right back down.
    return (yield 42)

def middle():
    return (yield from bottom())

def top():
    return (yield from middle())

# Get the generator.
gen = top()
value = next(gen)
print(value)  # Prints '42'.
    value = gen.send(value * 2)
except StopIteration as exc:
    value = exc.value
print(value)  # Prints '84'.

Event Loop πŸ™†πŸ»β€β™€οΈ


Coroutine πŸ™‹πŸ»β€β™€οΈ

Event Loop πŸ™†πŸ»β€β™€οΈ


An event loopΒ is a loop that can register tasks to be executed, execute them, delay or even cancel them and handle different events related to these operations.


Β a

Task manager πŸ‘©πŸ»β€πŸ’Ό

Coroutine πŸ™‹πŸ»β€β™€οΈ


CoroutinesΒ are computer program components that generalize subroutines for nonpreemptive multitasking, by allowing multiple entry points for suspending and resuming execution at certain locations

- wikipedia

Β a

YouTube video 🎬

Python 3.4: asyncio

import asyncio

# Borrowed from
def countdown(number, n):
    while n > 0:
        print('T-minus', n, '({})'.format(number))
        yield from asyncio.sleep(1)
        n -= 1

loop = asyncio.get_event_loop()
tasks = [
    asyncio.ensure_future(countdown("A", 2)),
    asyncio.ensure_future(countdown("B", 3))]

Python 3.5: asyn await

async def py35_coro():
    await stuff()

Python 3.4: asyncio

def py34_coro():
    yield from stuff()

Can we rewrite our code with async await?Β 



Big thanks to
Brett Cannon


Please read his blog post:

Next week:
docstring magics

Sunday 2pm (UK time/ BST)

There are also Mid Meet Py every Wednesday 1pm

Python Async

By Cheuk Ting Ho

Python Async

  • 1,007