On Mon, Mar 6, 2023 at 12:51 AM David Mertz, Ph.D. <[email protected]>
wrote:
> Is it really that much longer to write `f"{s1} {s2}"` when you want that?
>
As for being that much longer: yes it is.
The more important factor is, I think, the increase in complexity +
readabiity for default strings is worth it in this case.
One nice thing to think about might be how to make string subclassing to be
more useful - so this kind of thing could be done for whoever needs it in
one more idiomatic project. The drawback is how cumbersome it is to
instantiate a string subclass compared to a string literal. (I just got an
idea, but it would be too offtopic here - if I think it is worth, I will
post it in a new thread later)
>
> Maybe a couple characters more total, but once you are in an f-string, you
> can also do a zillion other things at the same time.
>
> On Sun, Mar 5, 2023 at 10:42 PM Rob Cliffe via Python-ideas <
> [email protected]> wrote:
>
>> Tl;dr: Join strings together with exactly one space between non-blank
>> text where they join.
>>
>> I propose a meaning for
>> s1 & s2
>> where s1 and s2 are strings.
>> Namely, that it should be equivalent to
>> s1.rstrip() + (' ' if (s1.strip() and s2.strip()) else '') +
>> s2.lstrip()
>> Informally, this will join the two strings together with exactly one space
>> between the last non-blank text in s1 and the first non-blank text in s2.
>> Example: " bar " & " foo " == " bar
>> foo "
>>
>> This operator is associative, so there is no ambiguity in expressions
>> such as
>> s1 & s2 & s3
>> There *is* a possible ambiguity in expressions such as
>> s1 & s2 + s3
>> where the relative precedence of `&` and `+` matters when s2 consists
>> solely of white space. E.g.
>> " A " & " " + " C" would evaluate
>> to " A C"
>> not to " A C"
>> because `+` has a higher precedence than '&'.
>>
>> Utility:
>> In decades of experience with another language which had such an
>> operator
>> (spelt differently) I have frequently found it useful for
>> constructing
>> human-readable output (e.g. log output, debug/error messages,
>> on-screen labels).
>>
>> Cognitive burden:
>> This would of course be one more thing to learn.
>> But I suggest that it is fairly intuitive that
>> s1 + s2
>> s1 & s2
>> both suggest that two strings are being combined in some way.
>>
>> Bars to overcome:
>> This change would require no fundamental change to Python;
>> just adding an `__and__ function to the str class.
>>
>> Backward compatibility:
>> Given that `str1 & str2` currently raises TypeError,
>> this change would be close to 100% backward-compatible.
>>
>> Alternative meanings:
>> As far as I know nobody has ever suggested an alternative meaning
>> for `&` on strings.
>>
>> Bikeshedding:
>> (1) I don't think it is important for the utility of this change
>> whether `&` strips off all whitespace, or just spaces.
>> I think it is better if it strips off all whitespace,
>> so that it can be understood as working similarly to strip().
>> (2) The definition could be simplified to
>> s1.rstrip() + ' ' + s2.lstrip()
>> (leave an initial/final space when one string is whitespace
>> only).
>> Again the operator would be associative.
>> Again I don't think this is important.
>>
>> Rob Cliffe
>> _______________________________________________
>> Python-ideas mailing list -- [email protected]
>> To unsubscribe send an email to [email protected]
>> https://mail.python.org/mailman3/lists/python-ideas.python.org/
>> Message archived at
>> https://mail.python.org/archives/list/[email protected]/message/66XP7GY56XU7H3P52IJENLSWJFW53XIN/
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
>
> --
> The dead increasingly dominate and strangle both the living and the
> not-yet born. Vampiric capital and undead corporate persons abuse
> the lives and control the thoughts of homo faber. Ideas, once born,
> become abortifacients against new conceptions.
> _______________________________________________
> Python-ideas mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/[email protected]/message/M7H3VZFEUJFZDO3BAAVUGXNKBH6WF4NA/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/2XXY57LCSNNS6SVRUIYBSA6QT2P7RH4F/
Code of Conduct: http://python.org/psf/codeofconduct/