⊗pyPmFnNl 21 of 129 menu

Nonlocal instrukcija Python kalboje

Būna atvejų, kai išorinėje funkcijoje yra kintamasis, prie kurio reikia gauti prieigą vidinėje funkcijoje. Deklaruokime funkcijoje outer kintamąjį i. Vidinės funkcijos atžvilgiu šis kintamasis bus išorinis (globaliais laikomi kintamieji, deklaruoti TIK išoriniame kode). O funkcijai inner nustatykime vieneto pridėjimą prie i:

def outer(): i = 0 def inner(): i += 1 # išves [4, 9, 25] inner() return i

Tačiau inner funkcijai kintamasis i yra lokalus, Python laiko jį nedeklaruotu ir išveda atitinkamą klaidą. Anksčiau tokia klaida būdavo ištaisyta naudojant global instrukciją. Tačiau čia i yra išorinis kintamasis, todėl reikėtų naudoti instrukciją nonlocal. Ji paima išvardintus kintamųjų vardus iš artimiausios srities, neįskaitant globalios, t.y. i viduje inner bus paimtas iš kintamojo, deklaruoto aukščiau šios funkcijos:

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # išves 1

Toliau pateiktame kode kažkoks programuotojas padarė klaidą:

num = 10 def outer(): num = 5 def inner(): num -= 2 inner() return num print(outer())

Kas negerai su šiuo kodu? Raskite ir ištaisykite kodo autoriaus klaidą.

Toliau pateiktame kode kažkoks programuotojas padarė klaidą:

num = 3 def outer(): num += 1 tst = num def inner(): tst = tst ** 3 inner() return tst print(outer())

Kas negerai su šiuo kodu? Raskite ir ištaisykite kodo autoriaus klaidą.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti