Dacă ați studiat limbajul C/C++, utilizați atribuirea în cod folosind operatorul “:=“, însă precum ați observat în limbajul Python, folosim aici pur și simplu semnul egal (“=“). Începând cu versiunea 3.8 a limbajului de programare Python a fost introdus operatorul numit walrus (în română, morsa):
considerându-se a fi una dintre cele mai mari îmbunătățiri ale versiunii deoarece au fost introduse expresiile de atribuire (assignment expressions).
ESENȚA
Operatorul walrus permite atribuirea de valori în interiorul unei expresii.
EXEMPLU
Citirea valorilor de la tastatură. Să presupunem că dorim să citim valori întregi până la introducerea lui 0, reținându-le într-o simplă listă. Putem scrie de acum și astfel în Python:
Foarte important! Exemplele găsite pe Internet adesea nu sunt analizate în profunzime… Operatorul walrus este foarte puternic, iar tipul datelor reținute de valoare depinde foarte mult de modul în care am creat codul. Mai sus, deoarece am folosit parantezele în cadrul expresiei booleene, tipul variabilei valoare este int, ceea ce îmi și doream:
Dacă eliminăm parantezele pentru expresia de atribuire, variabila valoare va reține o valoare booleană (True / False), ceea ce nu este necesar în acest caz și obțin date total eronate. De ce se întâmplă asta? Atribuirea fiind efectuată la nivelul comparației logice dintre expresia de atribuire și valoarea 0, este considerată tot de tip boolean deoarece 0 este interpretat ca False – atenție la prioritatea operatorilor din Python!
Două paranteze rotunde … cât de fin este Python, nu este așa? Așadar, foarte mare atenție! Am scris 5 linii de cod și deja puteam greși.
Trebuie să aveți în vedere că operatorul walrus poate simplifica și optimiza codul într-un mod considerabil în anumite situații, însă poate genera o complexitate crescută și o dificultate de înțelegere a acestuia. De aceea, este recomandat să utilizați cu precauție acest operator și să nu exagerați cu includerea lui.