<div dir="ltr">One thing that could solve both this proposal and the aforementioned<br>SI-proposition by Ken Kundert, could be supporting user-defined<br>literals.  Suppose that __litXXX___ would make XXX a literal one could<br>use as a suffix for numbers and strings (and lists, dicts, sets?).<br><br>A user-defined literal could be defined as __lit<insert literal>__,<br>though I don't know how to import it.<br><br>Anything without leading underscore could be preserved for the standard<br>library:<br><br># In the standard library:<br><br>def __litj__(x):<br>    return complex(0, x)<br><br># The above example would make 2+3j work as expected<br><br><br><br># In the datetime module<br>def __lit_h__(x):<br>    return timedelta(hours=x)<br><br>def __lit_min__(x):<br>    return timedelta(minutes=x)<br><br><br># In the Pint (units) module for dimensional analysis<br>def __lit_km__(x):<br>    return x * pint.UnitRegistry().km<br><br><br># It wouldn't be limited to numbers<br><br>def __lit_up__(x):<br>    return x.upper()<br><br>s = 'literal'_up  # s = LITERAL<br><br><br># The _(x) from Django could be written<br><br>def __lit_T__(x):<br>    return translate(x)<br><br>s = 'literal'_T  # s = translate('literal')<br><br># Heck, it could even be written as (abusing(?) notation)<br>def __lit___(x):<br>    return translate(x)<br><br>s = 'literal'_  # s = translate('literal')<br><br><br>If we want to abuse the literals more, one could make<br><br>def __lit_s__(lst):<br>    """Makes a list into a sorted list"""<br>    return sortedlist(lst)<br><br>heap = []_s  # heap is of type sortedlist<br><br>- Pål</div>