Dass das folgende syntaktisch korrekt ist, war mir zwar schon vorher klar, aber ich hatte mir nie darüber Gedanken gemacht und es auch nie verwendet. Als ich
dies hier gerade gelesen habe, ist mir aufgefallen, dass man zB. sowas machen kann:
Code: Alles auswählen
>>> names = ['Hans', 'Klaus', 'Marie']
>>> some_dict = {}
>>> i = 0
>>> for some_dict[i] in names:
... i += 1
...
>>> some_dict
{0: 'Hans', 1: 'Klaus', 2: 'Marie'}
Das geht, weil zwischen
for und
in eine
target_list steht, genau wie bei einer Zuweisung. Da bei Zuweisungen sowohl l-values als auch r-values von links nach rechts ausgewertet werden, kann man es noch weiter treiben:
Code: Alles auswählen
>>> n, some_dict[n] = 3, 'Ute'
>>> some_dict
{0: 'Hans', 1: 'Klaus', 2: 'Marie', 3: 'Ute'}
Folglich geht auch sowas:
Code: Alles auswählen
>>> names = ['Hans', 'Klaus', 'Marie']
>>> some_dict = {}
>>> for i, some_dict[i] in enumerate(names):
... pass
...
>>> some_dict
{0: 'Hans', 1: 'Klaus', 2: 'Marie'}
Wieder eine neue Methode zur Code Obfuscation...
In specifications, Murphy's Law supersedes Ohm's.