ice2k3 hat geschrieben:String-Konkatenation sollte in Python nie mit +-Operator gemacht werden
Naja, die Aussage steht für mich persönlich in etwa auf einer Ebene mit "es sollte nie gegen PEP 8 verstoßen werden". Ich hatte kürzlich selber ein Snippet gepostet, wo es darum ging, einen String solange mit einer unbekannten Anzahl an Zeichen zu erweitern bis er eine bestimmte Mindestlänge hat. Es wäre da unnötig kompliziert gewesen, bei jedem Durchlauf der `while`-Schleife die Anzahl der Zeichen in allen Elementen einer Liste zusammen zu zählen.
Was entscheidenden Grund angeht, wieso man in dem Beispiel aus diesem Thread keine Konkatenation machen sollte, so schließe ich mich meinen Vorrednern an: Es geht vor allem um die Lesbarkeit. Wenn man es so sagen will, ist problembärs Vorschlag, der die Werte erstmal von Hand "zurechtcasten" muss und dann mit dem +-Operator zusammensetzt, quasi der Lowlevel-Ansatz, während man ab Python 2.6 nur noch seine geschweiften Klammern setzt, die Python dann mit den gewünschten Werten füllt. Ab Python 2.7 bzw. 3.1 (glaub ich) ist dann nicht mal mehr eine Zahl in dem Klammernpaar für den Index notwendig, wenn man das nicht braucht.
Sehr praktisch wird String Formatting in solchen Fällen:
Code: Alles auswählen
>>> class McOrder(object):
... def __init__(self, burger, side, drink):
... self.burger = burger
... self.side = side
... self.drink = drink
...
>>> order = McOrder('Cheeseburger', 'French Fries', 'Coke')
>>> 'Your order was a {0.burger} with {0.side} and {0.drink}'.format(order)
'Your order was a Cheeseburger with French Fries and Coke'