staging.inyokaproject.org

Zuweisungsausdrücke mit Python

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 22.04 (Jammy Jellyfish)
Antworten |

CarstenHa

Avatar von CarstenHa

Anmeldungsdatum:
1. Mai 2020

Beiträge: 154

Ich brauche Mal Eure Hilfe. Mir ist folgender Python-Code unter die Finger gekommen:

1
2
3
4
5
6
>>> (c := 5, 8)
(5, 8)
>>> (c, d := 15, 18)
(5, 15, 18)
>>> print(f"{c=} {d=}")
c=5 d=15

Warum ist d=15 und nicht d=18?

Viele Grüße

Carsten

CarstenHa

(Themenstarter)
Avatar von CarstenHa

Anmeldungsdatum:
1. Mai 2020

Beiträge: 154

Ahh, ich glaube ich habe mich von einer Zuweisung in die Irre führen lassen:

1
2
3
4
5
>>> c, d = 15, 18
>>> c
15
>>> d
18

Scheint so, als hätte ich mir die Frage damit selbst beantwortet. 😀

CarstenHa

(Themenstarter)
Avatar von CarstenHa

Anmeldungsdatum:
1. Mai 2020

Beiträge: 154

Wer mehr solch lustiger (und fieser 😛 ) Beispiele haben möchte, der sollte am Python Pop Quiz teilnehmen:

https://mastodon.social/@driscollis

Macht echt Spaß.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

in dem 1. Beispiel wird der Walrus Operator 🇬🇧 verwendet, was in dem Kontext nicht so richtig sinnvoll und notwendig ist, sondern wohl eher der "Verwirrung" dient.

Gruß, noisefloor

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2136

CarstenHa schrieb:

Ahh, ich glaube ich habe mich von einer Zuweisung in die Irre führen lassen

Wenn du die Klammern anders setzt, dann klappt es so wie du es erwartest:

1
2
3
4
>>> (c := 15, d := 18)
(15, 18)
>>> print(f"{c=} {d=}")
c=15 d=18

Ist dann natürlich kein Tuple Unpacking mehr, aber anders geht es wohl nicht.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@snafu: Das war ja nie „tuple unpacking“. Das ist ja gerade der Witz an der Frage/dem Quiz, dass man wissen musste das bei := auf der linken Seite nur ein Name steht, und nicht wie bei herkömmlichen Zuweisungen = auch eine Namensliste stehen kann.

Ich persönlich finde den :=-Operator obskur und habe den noch nie ernsthaft verwendet. Man kann damit vielleicht mal eine Zeile einsparen, aber oft auf Kosten der Lesbarkeit. Und man kann damit echt schwer verständliches schreiben wenn man es darauf anlegt. Vielleicht ist der nützlich beim Code-Golf, das habe ich schon länger nicht mehr gespielt. 🤓

Antworten |