Colourising terminal output in Python scripts

Based on the source code for click.termui.style() and the Wikipedia article ANSI escape code

styles = {
    "bold":    1,
    "italic":  3,
    "red":    31,
    "green":  32,
    "blue":   34,
    "grey":   90,
}

def apply_style(s, style):
    code = lambda i: f"\033[{i}m"
    reset_code = code(0)
    style_code = code(styles.get(style, 0))
    return style_code + s + reset_code

bold = lambda s: apply_style(s, "bold")
blue = lambda s: apply_style(s, "blue")
green = lambda s: apply_style(s, "green")

print(bold(green("hello") + ","), blue("world") + "!")