⊗pyPmFnNl 21 of 129 menu

Η δήλωση nonlocal στην Python

Υπάρχουν περιπτώσεις όπου σε μια εξωτερική συνάρτηση υπάρχει μια μεταβλητή, στην οποία χρειάζεται να έχουμε πρόσβαση από την εσωτερική συνάρτηση. Ας δηλώσουμε στην συνάρτηση outer τη μεταβλητή i. Σε σχέση με την εσωτερική συνάρτηση, αυτή η μεταβλητή θα είναι εξωτερική (καθολικές είναι οι μεταβλητές που δηλώνονται ΜΟΝΟ στον εξωτερικό κώδικα). Και στη συνάρτηση inner θα ορίσουμε την πρόσθεση στο i της μονάδας:

def outer(): i = 0 def inner(): i += 1 # θα εμφανίσει [4, 9, 25] inner() return i

Ωστόσο, για την inner η μεταβλητή i είναι τοπική, η Python την θεωρεί αδήλωτη και εμφανίζει το αντίστοιχο σφάλμα. Παλαιότερα, ένα τέτοιο σφάλμα διορθωνόταν χρησιμοποιώντας τη δήλωση global. Ωστόσο εδώ η i είναι εξωτερική μεταβλητή, επομένως θα πρέπει να χρησιμοποιήσουμε τη δήλωση nonlocal. Αυτή παίρνει τα αναγραφόμενα ονόματα μεταβλητών στην πλησιέστερη περιοχή ορατότητας, εξαιρώντας την καθολική, δηλαδή η i μέσα στην inner θα ληφθεί από τη μεταβλητή, που δηλώθηκε πριν από αυτήν τη συνάρτηση:

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # θα εμφανίσει 1

Στον επόμενο κώδικα, κάποιος προγραμματιστής παρέλειψε ένα σφάλμα:

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

Τι συμβαίνει με αυτόν τον κώδικα; Βρείτε και διορθώστε το σφάλμα του συγγραφέα του κώδικα.

Στον επόμενο κώδικα, κάποιος προγραμματιστής παρέλειψε ένα σφάλμα:

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

Τι συμβαίνει με αυτόν τον κώδικα; Βρείτε και διορθώστε το σφάλμα του συγγραφέα του κώδικα.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη