Bishii Oktoobar 2019, Python 3.8 waxay soo bandhigtay hawlwadeenka Walrus (:=) iyada oo loo marayo PEP 572 - oo markaas kiciyay mid ka mid ah khilaafyadii ugu waaweynaa ee soo mara taariikhda luuqadda barnaamijka. Dooddu waxay ahayd mid aad u qadhaadh oo uu sameeyay Python Guido van Rossum bishii Luulyo 2018 - xitaa ka hor inta aan la sii deyn - booskiisa BDFL (Kelitaliyihii Nolol Wanaagsan). Tan iyo bilowgii 2019, Python taa beddelkeeda waxaa maamula Golaha Hagidda ee la doortay.
if (n := len(items)) > 10:
print(f"List is too long ({n} elements)")
Khilaafkii dawladnimo ayaa isla markiiba kacay dooddii Walrus ka dib - kiis naadir ah oo sifo luuqad keliya ahi ay cawaaqib dhismeed ku yeelatay. Hadalkiisa, van Rossum wuxuu ku sharaxay: "Cuska ugu dambeeya wuxuu ahaa Soo jeedinta Kobcinta Python oo muran badan dhalisay. Kadib markii aan aqbalay, dadku waxay qaateen baraha bulshada sida Twitter waxayna dhaheen waxyaabo aniga shaqsi ahaan i dhaawacay."
Wuxuu sii waday: "Hadda PEP 572 waa dhamaatay, marnaba ma doonayo inaan si adag ugu dagaallamo PEP mar labaad oo aan ogaado in dad badani ay neceb yihiin go'aannadayda. Waxaan rabaa inaan gebi ahaanba naftayda ka saaro habka go'aan qaadashada." Dhaleecayntu kama iman oo keliya bulshada ballaadhan, laakiin sidoo kale waxa ay ka timi horumariyeyaasha asaasiga ah.
Waxay ku doodeen in hawlwadeenku uu khilaafay mabaadi'da Python aasaasiga ah ee Zen of Python - gaar ahaan doorbididda fududaynta kakanaanta. Ka dib ku dhawaad 30 sano oo ah naqshadeeyaha luqadda ee aan la isku khilaafin, tani waxay calaamadisay dhammaadka xilli. Laakiin halka Python ay ahayd inay soo bandhigto hawlwadeen cusub oo Walrus ah, oo u qaybinaya bulshadeeda habka, su'aashu waxay soo baxaysaa: Sidee luqadaha kale u maareeyaan fikrado la mid ah?
Hawlwadeenka Python := (Assignment Expression alias "Walrus") kama jiraan PHP - sababtoo ah looma baahna. Gudaha PHP, hawlwadeenka meelaynta = had iyo jeer Odhaah iyo hadal isku mar: Meelayntu waxay soo celinaysaa qiimihii loo qoondeeyay. Tani waa sababta saxda ah ee qaababka sarbeebtu sida "aqoonsiga-iyo-tijaabadu" u shaqeeyaan if-Shuruudaha aan lahayn muuqaalkooda luqadeed.
function get_some_field() {
return 'foo';
}
if ($a = get_some_field()) {
echo $a; // foo
}
// Hinweis: $a ist *gesetzt*, selbst wenn die Bedingung falsy wäre.
$a = get_some_field() u qoondeeya oo u qiimeeya dhinaca midig. Hadday tani tahay "run", waxaad gelisaa if- xannibid. Taariikhda: Python gudaha, := (PEP 572) sababtoo ah hawlaha fudud maaha tibaaxo. PHP, tani had iyo jeer way ka duwan tahay, markaa ma jirto baahi u dhigma. Laba shay ayaa inta badan keena kutaan.: = (Aqoonsigu) ayaa ka horrayn hoose ka leh inta badan hawl-wadeennada xidhiidhka; qaws ayaa go'aamiya qiimeynta.
Tibaaxaha kakan, waa inaad had iyo jeer isticmaashaa jaantusyo si aad u kordhiso akhrinta iyo caddaynta. ?? waxay leedahay mudnaanteeda gaarka ah, halkii ay mudnaan lahayd. Tani waxay sharraxaysaa waxyaabaha la yaabka leh ee tibaaxaha sida $x ?? null === null. Qandalo la'aan, marka hore null === null la qiimeeyay. Way fiicantahay in had iyo jeer si cad loo xidho: ($x ?? null) === null. $a sidoo kale ka jira dibadda ah if-Blocks - laga yaabee qiimo been abuur ah.
function get_some_field() {
return 'bar';
}
if ( ($a = get_some_field()) === 'bar' ) {
echo $a; // bar
}
Markaa taasi way caddahay === 'bar' waxaa lagu dabaqaa qiimaha loo qoondeeyay. Xirmooyinka ayaa muhiim u ah halkan akhrinta iyo mudnaanta. Ficil ahaan, qaabkani wuxuu ka fogaanayaa wicitaanada nuqul ka mid ah ee aan loo baahnayn (tusaale, su'aasha wax dhisaha) adoo kaydinaya natiijada waydiinta ka dibna hubinaysa. Codsiyada wax soo saarka leh, sida mashaariicda ku salaysan Laravel, qaabkan soo socda ayaa si joogto ah loo arki karaa.:
if ( ($foo = Foo::where('foo', 'bar')) && $foo->count() > 0 ) {
dd($foo->get());
}
&& waa wareeg gaaban: Qaybta saxda ah waxaa la qiimeeyaa oo kaliya haddii qaybta bidix ay run tahay. Markaad u meelayso bayaanka kor u kaca, waxaad iska ilaalinaysaa inaad qoraalka ku meelayso meel ka baxsan bayaanka. Haddii ay tani tahay dhaqan wanaagsan waxay ku xidhan tahay koodka kooxdaada iyo agabka falanqaynta; macno ahaan, waa sax. Ugu yaraan, waa inaad ogaataa waxa code-ku sameeyo haddii aad la kulanto duurka.
PHP uma baahna "Walrus operator" sababtoo ah hawl-gudbiyeedyadu waa tibaaxo. Tani waxay ka dhigaysaa habab sarbeeb ah sida "ku-meelaynta-iyo-imtixaanka" suurtagal - wax qabad iyo kooban. Isla mar ahaantaana, dalabaadka edbinta ayaa kor u kacaya: qawlka, isbarbardhigga adag, ka warqabka runta/beenta, iyo heshiisyada kooxda cad waa qasab. Kuwa raacaya tilmaamahan waxay gurtaan faa'iidooyinka fikradda Walrus iyaga oo aan u baahnayn muuqaal luqadeed oo dheeri ah.