[Python-ideas] Implicit string literal concatenation considered harmful?
Ethan Furman
ethan at stoneleaf.us
Mon May 20 19:07:49 CEST 2013
On 05/11/2013 11:37 AM, Christian Tismer wrote:
> On 11.05.13 19:24, M.-A. Lemburg wrote:
>> On 11.05.2013 19:05, Christian Tismer wrote:
>>> I think a simple stripping of white-space in
>>>
>>> text = s"""
>>> leftmost column
>>> two-char indent
>>> """
>>>
>>> would solve 95 % of common indentation and concatenation cases.
>>> I don't think provision for merging is needed very often.
>>> If text occurs deeply nested in code, then it is also quite likely to
>>> be part of an expression, anyway.
>>> My major use-case is text constants in a class or function that
>>> is multiple lines long and should be statically ready to use without
>>> calling a function.
>>>
>>> (here an 's' as a strip prefix, but I'm not sold on that)
>> This is not a good solution for long lines where you don't want to
>> have embedded line endings. Taken from existing code:
>>
>> _litmonth = ('(?P<litmonth>'
>> 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|'
>> 'mär|mae|mrz|mai|okt|dez|'
>> 'fev|avr|juin|juil|aou|aoû|déc|'
>> 'ene|abr|ago|dic|'
>> 'out'
>> ')[a-z,\.;]*')
>>
>> or
>> raise errors.DataError(
>> 'Inconsistent revenue item currency: '
>> 'transaction=%r; transaction_position=%r' %
>> (transaction, transaction_position))
>>
>
> Your first example is a regex, which could be used as-is.
If implicit string concatenation goes away, how can the regex be used as-is?
> Your second example is indented five levels deep. That is a coding
> style which I would propose to write differently for better readability.
> And if you stick with it, why not use the "+"?
>
> I want to support constant strings, which should not be somewhere
> in the middle of code. Your second example is computed, anyway,
> not the case that I want to solve.
You may not want to solve it, but it needs solving if ISC goes away.
--
~Ethan~
More information about the Python-ideas
mailing list