On 11 February 2016 at 11:12, Chris Angelico <ros...@gmail.com> wrote: > On Thu, Feb 11, 2016 at 7:22 PM, Georg Brandl <g.bra...@gmx.net> wrote:
The following extensions are open for discussion: >> * Allowing underscores in string arguments to the ``Decimal`` constructor. >> It >> could be argued that these are akin to literals, since there is no Decimal >> literal available (yet). >> >> * Allowing underscores in string arguments to ``int()`` with base argument 0, >> ``float()`` and ``complex()``. > > I'm -0.5 on both of these, with the caveat that if either gets done, > both should be. Decimal() shouldn't be different from int() just > because there's currently no way to express a Decimal literal; if > Python 3.7 introduces such a literal, there'd be this weird rule > difference that has to be maintained for backward compatibility, and > has no justification left. I would be weakly in favour of all relevant constructors being updated to match the new syntax. The main reason is just consistency, and that the documentation already kind of guarantees that the literal syntax is supported (definitely for int and float; for complex it is too vague). To be consistent, the following minor extensions of the syntax should be allowed, which are not legal Python literals: int("0_001"), int("J_00", 20), float("0_001"), complex("0_001"). Maybe also with non-ASCII digits. However I tried writing Arabic-Indic digits (U+0600 etc) and my web browser split the number apart when I inserted an underscore. Maybe a right-to-left thing. But using Devangari digits U+0966, U+0967: int("१_०००") (= 1_000). Non-ASCII digits are apparently intentionally supported, but not documented: <https://bugs.python.org/issue10581>. > (As a side point, I would be fully in favour of Decimal literals. I'd > also be in favour of something like "from __future__ import > fraction_literals" so 1/2 would evaluate to Fraction(1,2) rather than > 0.5. Hence I'm inclined *not* to support underscores in Decimal().) Seems more like an argument to have the support in Decimal() consistent with float() etc, i.e. all or nothing. _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com