Ngo-Okthoba 2019, iPython 3.8 yethula opharetha wakwaWalrus (:=) nge Idatha ye-PEP572 – futhi ngalokho kwabangela izingxabano ezinkulu emlandweni wolimi lohlelo. Inkulumompikiswano yayimuncu kangangokuba umsunguli wePython UGuido van Rossum ngoJulayi 2018 - ngisho nangaphambi kokukhululwa - isikhundla sakhe njenge-BDFL (Umashiqela Onomusa For Life). Kusukela ekuqaleni kuka-2019, iPython esikhundleni salokho ibibuswa uMkhandlu Ophethe okhethiwe.
if (n := len(items)) > 10:
print(f"List is too long ({n} elements)")
Ukuhlukana kwezokuphatha kwavela ngokushesha ngemva kwengxoxo kaWalrus—indaba eyivelakancane lapho isici solimi olulodwa saba nemiphumela yesakhiwo. Esitatimendeni sakhe, u-van Rossum wachaza: "Isihluthulelo sokugcina kwaba isiphakamiso sePython Enhancement Proposal esinempikiswano. Ngemva kokusamukela, abantu bangena ezinkundleni zokuxhumana njenge-Twitter basho izinto ezingizwise ubuhlungu."
Uqhube wathi: "Manje njengoba i-PEP 572 isiphelile, angifuni ukuphinde ngilwe kanzima kangaka nge-PEP futhi ngithole ukuthi abantu abaningi bayazenyanya izinqumo zami. Ngifuna ukuzikhipha ngokuphelele ekuthathweni kwezinqumo." Ukugxekwa akuvelanga kuphela emphakathini obanzi, kodwa nakubathuthukisi abayinhloko.
Baphikisa ngokuthi isisebenzisi siphikisana nezimiso eziyisisekelo zePython ezivela kuZen of Python —ikakhulukazi ukukhetha kokulula kunokuyinkimbinkimbi. Cishe ngemva kweminyaka engamashumi amathathu njengomklami wolimi ongenambangi, lokhu kwaphawula ukuphela kwenkathi. Kepha ngenkathi iPython bekumele yethule u-opharetha omusha we-Walrus, ehlukanisa umphakathi wayo kule nqubo, kuphakama umbuzo: Ezinye izilimi ziyiphatha kanjani imiqondo efanayo?
Umsebenzisi wePython := (I-Assignment Expression alias "Walrus") ayikho ku-PHP - ngoba ayidingeki. Ku-PHP, u-opharetha wesabelo = njalo Isitatimende kanye nenkulumo ngesikhathi esifanayo: Umsebenzi ozokwenziwa ubuyisela inani elinikeziwe. Yingakho nje amaphethini e-idiomatic afana nokuthi "assign-and-test" asebenza kuwo if-izimo ngaphandle kolimi lwazo.
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() ukwabela nokuhlola ohlangothini lwesokudla. Uma lokhu “kuyiqiniso”, ufaka i- if-Vimba. Ingemuva: Ku-Python, := (PEP 572) ngoba izabelo ezilula azizona izinkulumo. Ku-PHP, lokhu bekulokhu kuhlukile, ngakho-ke asikho isidingo esilinganayo. Zimbili izinto ezivame ukuholela ezinambuzaneni.: = (Umsebenzi) unokuza kuqala okuphansi kuneningi labaqhubi abahlobene; abakaki banquma ukuhlola.
Ngezinkulumo eziyinkimbinkimbi, kufanele usebenzise abakaki njalo ukuze ukhulise ukufundeka nokucaca. ?? inokwayo, akubalulekile kangako. Lokhu kuchaza izimanga ezimweni ezifana nalezi $x ?? null === null. Ngaphandle kobakaki, okokuqala null === null kuhlolisisiwe. Kungcono ukuhlala ubakaki ocacile: ($x ?? null) === null. $a futhi ikhona ngaphandle if-Amabhulokhi – okungenzeka anevelu engamanga.
function get_some_field() {
return 'bar';
}
if ( ($a = get_some_field()) === 'bar' ) {
echo $a; // bar
}
Ngakho kusobala ukuthi === 'bar' isetshenziswa kunani elinikeziwe. Abakaki babalulekile lapha ukuze bafundeke futhi babekwe kuqala. Empeleni, le phethini igwema izingcingo eziyimpinda ezingadingekile (isb., zomakhi wemibuzo) ngokugcina umphumela wombuzo bese uyawuhlola. Kuzinhlelo zokusebenza ezikhiqizayo, njengamaphrojekthi asekelwe ku-Laravel, iphethini elandelayo ingabonwa kaningi.:
if ( ($foo = Foo::where('foo', 'bar')) && $foo->count() > 0 ) {
dd($foo->get());
}
&& i-short-circuiting: Ingxenye yesokudla ihlolwa kuphela uma ingxenye yesobunxele iyiqiniso. Ngokunikeza isitatimende phezulu, ugwema ukunikeza isitatimende ngaphandle kwesitatimende uma. Ukuthi lokhu kuwumkhuba omuhle yini kuncike kukhodi yeqembu lakho namathuluzi okuhlaziya; ngokwezibalo, ilungile. Okungenani, kufanele wazi ukuthi ikhodi yenzani uma uhlangana nayo endle.
I-PHP ayimdingi "u-opharetha wakwa-Walrus" ngoba imisebenzi ezokwenziwa isivele iyizinkulumo. Lokhu kwenza amaphethini e-idiomatic afana nokuthi "assign-and-test" enzeke - asebenze futhi afinyeze. Ngesikhathi esifanayo, izimfuno zokuziphatha ziyakhula: abakaki, ukuqhathanisa okuqinile, ukuqaphela iqiniso/amanga, nezivumelwano zeqembu ezicacile ziyisibopho. Labo abalandela le mihlahlandlela bathola izinzuzo zombono wakwa-Walrus ngaphandle kokudinga isici solimi esingeziwe.