Skip to content

Instantly share code, notes, and snippets.

View mikeckennedy's full-sized avatar

Michael Kennedy mikeckennedy

View GitHub Profile
@mikeckennedy
mikeckennedy / switch_in_python_example.py
Last active August 21, 2019 04:55
Could we easily add switch to the Python language? I think the answer is maybe yes!
# Here is an example of some syntax I'm proposing:
# See the github repo at https://github.com/mikeckennedy/python-switch
def test_switch():
num = 7
val = input("Enter a key. a, b, c or any other: ")
with Switch(val) as s:
s.case('a', process_a)
s.case('b', process_b)
@mikeckennedy
mikeckennedy / run_unsync.py
Created August 31, 2018 17:38
An example of asyncio, standard io, and process-based parallelism using unsync
# Requirements:
# aiohttp
# aiodns
# cchardet
# requests
# unsync
import asyncio
from unsync import unsync
@mikeckennedy
mikeckennedy / urlify.py
Last active December 25, 2019 22:44
Short script to take a string in the clipboard and replace it with something appropriate for a folder, file, or URL name.
# Make sure to pip install pyperclip and colorama.
# Because output is better with color!
import pyperclip
from colorama import Fore
def main():
print(Fore.WHITE + "-----------------------------")
print(Fore.WHITE + " URLIFY ")
print(Fore.WHITE + "-----------------------------")
@mikeckennedy
mikeckennedy / rss.xml.pt
Created December 18, 2019 20:37
RSS Feed template for Talk Python
<?xml version="1.0" encoding="UTF-8"?>
<rss
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
version="2.0"
xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Talk Python To Me - Python conversations for passionate developers</title>
<description>Talk Python to Me is a weekly podcast hosted by Michael Kennedy.
The show covers a wide array of Python topics as well as many related
@mikeckennedy
mikeckennedy / speedy.py
Created January 20, 2020 22:46
Compare the speed of a complex multiple if test and set containment replement.
import datetime
def main():
count = 1000
run_sets(count)
run_ifs(count)
def run_sets(times):
@mikeckennedy
mikeckennedy / markdown-subtemplate-example.md
Created February 19, 2020 01:35
This is the subtemplate in markdown with imports for https://talkpython.fm/beginners - notice the md imports of other templates.

What's this course about and how is it different?

Most courses teach you the facts of programming and Python. Here is how a loop is constructed. Here is how you test a condition and make your program choose one path or another. Often they assume that you are familiar with programming concepts such as data types, loops, functions, and so on and that you just need to learn the details of how to do this in Python.

This course is not most courses. If you want ground up coverage of

import asyncio
import time
async def heartbeat():
while True:
start = time.time()
await asyncio.sleep(1)
delay = time.time() - start - 1
print(f'heartbeat delay = {delay:.3f}s')
import asyncio
import time
from unsync import unsync
@unsync
async def heartbeat():
while True:
start = time.time()
@mikeckennedy
mikeckennedy / speed_of_exceptions.py
Created July 9, 2020 18:02
Simple example to test how much faster or slower it is to simply try and convert then catch an error vs. testing up front.
import datetime
import random
from typing import List
def main():
random.seed(172)
count = 1_000_000
data = build_data(count)
run_with_except(data)
@mikeckennedy
mikeckennedy / watch_this.py
Last active June 30, 2021 06:30
Add C# += / -= event subscriptions to Python using the Events package
from events import Events # Note you must pip install events
class Person:
def __init__(self, name: str, age: int, city: str):
self.__events = Events(('on_name_changed', 'on_age_changed', 'on_location_changed'))
self.on_name_changed = self.__events.on_name_changed
self.on_age_changed = self.__events.on_age_changed
self.on_location_changed = self.__events.on_location_changed