[Python-ideas] Custom string prefixes
Göktuğ Kayaalp
goktug.kayaalp at gmail.com
Mon May 27 16:30:15 CEST 2013
> ... but ISTM you're talking about something very similar
> to the C++11 standard's new feature of user-defined literals ...
I did not know this until now, but it looks like a fine idea. I wonder
how people would react to the idea of having this in Python. I can also
add that this is far better than what I propose.
> In fact, I'd recommend you join python-list regardless, if only
> because we have awesome fun there :) You sound like you'd be the
> perfect sort to join in.
I've just started to get into the community, and even though I haven't
posted anything to python-list, I'm trying to read every message. Python
community is really awesome!
Thanks for your input!
Göktuğ
Chris Angelico <rosuav at gmail.com> writes:
> On Mon, May 27, 2013 at 8:41 PM, Göktuğ Kayaalp
> <goktug.kayaalp at gmail.com> wrote:
>> - I know that there is a library called `decimal`, which provides
>> facilities for finer floating point arithmetic. A `Decimal`
>> class is used to express these numbers and operations, resulting in
>>
>> >>> decimal.Decimal ("1.6e-9") * decimal.Decimal ("1.0e9")
>>
>> which is a little bit messy. This can easily be cured by
>>
>> >>> from decimal import Decimal as D
>> >>> D ("1.6e-9") * D ("1.0e9")
>>
>> but I'd enounce that the following is more concise and readable:
>>
>> >>> D"1.6e-9" * D"1.0e9"
>>
>> with removed parens.
>
> Your wording is a little confusing, as you're no longer talking about
> a string literal; but ISTM you're talking about something very similar
> to the C++11 standard's new feature of user-defined literals:
>
> http://en.wikipedia.org/wiki/C%2B%2B11#User-defined_literals
>
> This may be a little too complex for what you're proposing, but it is
> along the same lines. I suspect a generic system for allowing Decimal
> and other literals would be welcomed here.
>
>> Even though `str.format (*, **)` is cool, I think using an
>> 'interpolated string' prefix can help clean up stuff a little bit:
>>
>> # ...
>> def build ():
>> t0 = _build.CompilationTask ([...], I"{OUTDIR}/{progn}", ...)
>>
>> def clean ():
>> shell.sh (I"rm -fr {OUTDIR} *.o .pokedb")
>
> Please no. It's far too easy to make extremely messy code this way. If
> you want it, spell it like this:
>
> shell.sh ("rm -fr {OUTDIR} *.o .pokedb".format(**globals()))
>
> (or locals() perhaps) so it's sufficiently obvious that you're just
> casually handing all your names to the format function. It's like
> avoiding Python 2's input() in favour of explicitly spelling it out as
> eval(raw_input()) - put the eval call right there where it can be
> seen. The system of interpolations as found in other languages (I'm
> most familiar with the PHP one as I have to work with it on a daily
> basis) is inevitably a target for more and more complexity and then
> edge cases; being explicit is the Python way, so unless there's a
> really good reason to make all your global names easily available, I
> would be strongly inclined to not.
>
>> I'm looking forward to your criticisms and advices. I've searched this
>> online and asked in the chatroom (#python) and I'm nearly sure that I'm
>> not asking for a feature that is already present. Being a beginner, I
>> can say that I'm kind of nervous to post here, where really experienced
>> people discuss the features of an internationally-adopted language.
>
> I'd recommend python-list at python.org or comp.lang.python rather than
> #python; you get much better responses when there's no requirement for
> people to be online simultaneously. But in this case you're right,
> there's no feature quite as you describe.
>
> In fact, I'd recommend you join python-list regardless, if only
> because we have awesome fun there :) You sound like you'd be the
> perfect sort to join in.
>
> ChrisA
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
--
Göktuğ Kayaalp <goktug.kayaalp at gmail.com>
More information about the Python-ideas
mailing list