Listenelemente mit 'Trennzeichen' trennen...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Ja, sorry, natürlich list, könnte auf einem tuple auch nicht funktionieren :oops: .
Für alle iterables wäre ja auch überhaupt nicht möglich und IMHO nicht nötig.
Ich kann mich täuschen, aber außer auf Listen würde das doch sowieso nicht klappen, außer ein neues Objekt würde zurückgegeben...

Je mehr ich darüber nachdenke: 'join' ist wohl als string-Methode doch ganz gut untergebracht... :wink:
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
BlackJack

@Xynon1: Es geht nicht darum `_` oder `_foo` zu übergeben sondern entgegen zu nehmen. Das heisst man schreibt Funktionen die bestimmte Parameter entgegen nehmen, die aber nie verwenden. Und da ist es eben ganz nett, dass man diese kennzeichnen kann, damit der Leser nicht sucht wo es denn nun verwendet wird und gleichzeitig weiss, dass es Absicht ist und kein versehen.
deets

mutetella hat geschrieben:Ja, sorry, natürlich list, könnte auf einem tuple auch nicht funktionieren :oops: .
Für alle iterables wäre ja auch überhaupt nicht möglich und IMHO nicht nötig.
Ich kann mich täuschen, aber außer auf Listen würde das doch sowieso nicht klappen, außer ein neues Objekt würde zurückgegeben...
Natuerlich ist es fuer alle iterables moeglich (sofern sie strings zurueckgeben in jedem Element).

Und so funktioniert auch sowas hier (auf nicht-listen und nicht-tupeln:

Code: Alles auswählen

print "|".join("abcde")
print ";".join(dict(a="foo", b="bar"))
Und ob es noetig ist? Na, nix ist "noetig", aber konsistent und nuetzlich so manches.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@BlackJack
Werde ich mir merken. Klang halt nur komisch
deets hat geschrieben:auch fuer nicht genutzte Parameter usw.
Parameter sind für mich, die Variablen die im Kopf der Funktion definiert werden und nicht die Rückgabewerte welche ich erhalte.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
BlackJack

@Xynon1: Ich habe ein bisschen die Befürchtung wir reden aneinander vorbei. Parameter sind für mich genau das selbe. Und genau da kann ein (führender) `_` nützlich sein um dem Leser klar zu machen, dass man einen davon innerhalb der Funktion absichtlich nicht verwendet. Also auch nicht einen Default-Wert sondern *gar nicht*. Typisches Beispiel sind Callback-Funktionen die eine bestimmte Anzahl von Argumenten entgegen nehmen müssen, bei denen man aber nicht alle braucht.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

:? Offensichtlich.
Ich fasse mal kurz zusammen. Ein führender _ sollte überall dahin wo kenntlich gemacht werden soll das diese Variable, wie bei den Methoden in Klassenobjekten, nicht von außen genutzt werden sollten. Bisher kannte ich das halt nur bei Methoden die im Prinzip nur intern verwndet werden und bei Modulweiten Variablen die nicht nach außen gehen sollten, zwecks Sauberhaltung von Namensräumen. Neu für mich wäre dann also das man das auch bei Parametern so macht sollte(falls es wirklich mal vorkommt) und das man nicht benutzte Variablen, für die man zwar Werte über eine Schleife oder durch eine Funktion bekommt mit einem einfachen _ kenntlich machen sollte.
Habe ich das jetzt richtig so?

Dann stellt sich mir noch die Frage hast du mal ein konkretes Beispiel für eine solche Callback-Funktion?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
BlackJack

@Xynon1: Typisches Beispiel wären Eventhandler bei GUIs.

Code: Alles auswählen

def on_return(_event):
    print 'Die Eingabetaste wurde betaetigt.'
`Tk` würde diese Funktion ja grundsätzlich immer mit einem `Event`-Objekt aufrufen. Das interessiert michin diesem Fall aber nicht. Wenn der Unterstrich da nicht wäre, würde `pylint` vor einem ungenutzen Argument warnen.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Wieder was gelernt :D
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten