Cheuk Ting Ho
Developer advocate / Data Scientist - support open-source and building the community.
Online Absolute Beginner Python TutorialsΒ
Every Sunday 2pm (UK time/ BST)
by Cheuk Ting Ho
Get this slide deck:
slides.com/cheukting_ho/python-async
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
Testing:
pytest with fixtures and mock
property-based testing
python linters & auto-formatters
TDD
Intermedite topics:
Iterators, generators
Β
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) #
print(g.send(5))
def generator1():
for item in generator2():
yield item
def generator1():
yield from generator2()
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'.
try:
value = gen.send(value * 2)
except StopIteration as exc:
value = exc.value
print(value) # Prints '84'.
Β
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.
Β
Β
...like a
Β
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
Β
...like a
import asyncio
# Borrowed from http://curio.readthedocs.org/en/latest/tutorial.html.
@asyncio.coroutine
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))]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
async def py35_coro():
await stuff()
@asyncio.coroutine
def py34_coro():
yield from stuff()
Β
Sunday 2pm (UK time/ BST)
There are also Mid Meet Py every Wednesday 1pm
By Cheuk Ting Ho
Developer advocate / Data Scientist - support open-source and building the community.