<div dir="ltr">For the general user-defined literals, here are some example use cases:<br><br>Here is how to expose literals:<br><br>__literals__ = ['__literal_h__', '__literal_min__', '__literal_s__']<br><br>And here is how to import them:<br><br>from mymodule import _*  # imports all literals from mymodule<br># could also be *_ or ** or ~ or __literals__ ?<br><br>90_deg  # 1.0 in rad<br>20_°C   # 293.15 Kelvin<br><br><a href="http://units.to">units.to</a>(20.0_mi, 'km')<br><br>e = 1_X + 4_G + 13_M + 180_k  # SI scale factors can easily be implemented<br><br>p = 3_x - 2_y + 1_z  # Coordinate in 3D<br><br>M = 4_I  # The 4x4 Identity Matrix<br><br>p * 2_pi  # because it's simpler than 2 * np.pi<br>p * 11_π   # why not<br><br>d = 2_sqrt  # sqrt(2), or simply 2**(1/2), not a killer argument<br><br>h1 = 30_px<br>h2 = 4_em  # sizes for typography<br>c = 'ffff00'_color  # the color yellow<br>h = 'My header'_h3  # renders <h3>My header</h3> or something<br><br>g = 9.81_m_div_ss  # that was ugly ...<br><br>'More weird examples'_info  # <a href="http://log.info">log.info</a>(msg)<br><br>'2018-06-04'_AD  # is a date<br><br>'192.168.0.42'_ip4  # why not?<br><br>'USER'_os  # = os.environ.get(x, '')<br><br># Can have state?<br>initialize(80)  # set default string width to 80 chars<br>'my string'_c  # will now be centralized in 80 chars<br>'my string'_l  # will now be left aligned in 80 chars<br>'my string'_r  # will now be right aligned in 80 chars<br><br><br>If we used, e.g. tilde, we could even use it on function calls<br><br>y = fun(x)~dx  # differentiations!  Like decorators, but on "call time"<br><br>I accept that introducing a new symbol has a very high threshold, and<br>will not go through.  I just wanted to mention it.<br><br><br>Yes, we could write all these as easily as function calls,<br><br>deg(90)<br>celsius(20)<br>center('my string')  # or 'my string'.center(80)<br><br>But somehow it seems nicer to write 42_km than 12 * pint.UnitRegistry().km<br><br><br>- Pål</div>