[Python-de] Zuweisungen bei if?
Thomas Rachel
nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de
Di Apr 10 16:24:10 CEST 2012
Am 10.04.2012 13:28 schrieb Hartmut Goebel:
> Am 10.04.2012 12:30, schrieb Diez B. Roggisch:
>> Aber sei's drum. Nur solltest du mit dem _ aufpassen - afaik wird das als temporärer Name in List comprehensions verwandt - und damit könntest du in Probleme kommen, weil da was anderes drin ist als du erwartest.
>
> *Dieses* Problem besteht allerdings nicht, da die temporärer Namen in
> List Comprehensions `_[0]`, `_[1]`, usw. lauten.
Versteh ich jetzt nicht ganz. Wenn ich folgendes mache:
def f(x):
global _
_ = []
und dann
def g():
l = [a for a, _ in pairs]
print _
(ist jetzt frei erfunden, Kontext bitte passend dazudenken)
dann habe ich in g() ein potentiell unerwartetes Ergebnis, nämlich den
Wert des zweiten Elements des letzten pairs-Elements, nicht etwa die
global definierte list.
Ganz böse wird es bei
def h():
global _
l = [a for a, _ in pairs]
weil da das global definierte _ durch etwas ganz anderes ersetzt wird
(zumindest in 2.x).
> Diese Namen sind in
> Python gar nicht zulässig. Ein Namenskonflikt ist daher ausgeschlossen.
Hä? Wenn ein Objekt, das unter _ angesprochen wird, __getitem__()
implementiert, ist _[1] doch einwandfrei gültig, wenn auch nicht als
Bezeichner, sondern als Ausdruck?
Oder verstehe ich Dich grade komplett miß?
Thomas
Mehr Informationen über die Mailingliste python-de