Python NameError on yksi yleisimmistä Python-poikkeuksista. Ja "NameError: nimeä ei ole määritetty
Python Error" tapahtuu Pythonissa, kun yritämme käyttää Python-muuttujaa ennen sen alustamista tai määrittelyä.
Tässä Python-oppaassa käymme läpi tämän Python-virheen ja keskustelemme sen ratkaisemisesta. Korostamme myös joitain esimerkkejä osoittaaksemme, kuinka tämä virhe ilmenee (sen syyt) ja kuinka se ratkaistaan.
Python Error: NameError nimeä ei ole määritetty
Ennen kuin siirrymme varsinaiseen virheeseen, keskustellaan ensin Nimivirheestä.
Mikä on NameError?
NameError tapahtuu, kun käytämme virheellistä muuttujaa tai funktiota ohjelmassa.
Python-tulkki suorittaa koodin ylhäältä alas. Siksi sinun on ilmoitettava muuttuja ennen sen käyttöä. Jos käytät sitä ilman ilmoitusta, saat NameError-ilmoituksen. Yleisin NameError-tyyppi on NameError: nimi ei ole määritelty.
Tässä on esimerkki, joka auttaa sinua ymmärtämään, miten virhe ilmenee.
Esimerkiksi
viesti = "Hei maailma!"print(viesti)
Lähtö
Traceback (viimeisin puhelu viimeisin):Tiedosto "main.py", rivi 3, kohdassa print(Message)NameError: nimeä 'Viesti' ei ole määritetty
Riko Koodi
Python on isot ja pienet kirjaimet huomioiva ohjelmointikieli, eli jos kahden muuttujan tapaukset ovat erilaiset, Python käsittelee niitä eri muuttujina.
Yllä olevan ohjelman rivillä 1 olemme määrittäneet muuttujan, jolla on nimiviesti
mutta rivillä 3 käytimme muuttujaaViesti
, joka on eri muuttuja ja jota ei ole määritelty ohjelmassa.
Siksi saimme virheen - NameError: nimi Viestiä ei ole määritetty
, joka kertoo meille, että muuttujaViesti
ei ollut määritelty ohjelmassa.
Voit myös saada samanlaisen virheilmoituksen seuraavalla virhesanomalla:
- nameerror: nimeä 'data' ei ole määritetty : Kun yritetään käyttää tietomuuttujaa määrittelemättä sitä.
- nameerror: nimeä 'X' ei ole määritetty:Kun yrität käyttää mitä tahansa X-muuttujaa määrittelemättä sitä.
Huomautus:"Nimivirheen nimeä ei ole määritelty" on hyvin yleinen virhe, ja se voidaan helposti ratkaista analysoimalla koodi tai rivi, jolta se vastaanotetaan.
Ratkaisu
Ratkaisu yllä olevaan esimerkkiin on suoraviivainen. Meidän on vain varmistettava, että käyttämämme muuttuja on sama nimi kuin määritimme aiemmin ohjelmassa.
Esimerkkiratkaisu
viesti = "Hei maailma!"print(viesti)
Lähtö
Hei maailma!
Nimivirheen syyt: nimeä ei ole määritetty
Seuraavat ovat yleisimmät syyt, joiden vuoksi saat NameError:n: nimi ei määritetty:
- Väärin kirjoitettu muuttujan tai funktion nimi
- Yritä kutsua muuttuja tai funktio ennen ilmoitusta
- Unohda määrittää muuttuja
- Yritä käyttää paikallista muuttujaa
- Yritä tulostaa yksi sana
Syy 1: Väärin kirjoitettu muuttujan tai funktion nimi
Meillä ihmisillä on kyky tulkita sanoja, joissa on kirjoitusvirheitä, mutta Pythonilla ei. Saatat usein kirjoittaa väärin määritetyn muuttujan tai funktion nimen, kun käytät sitä ohjelmassa.
Python on isot ja pienet kirjaimet huomioiva ohjelmointikieli, ja jopa yksittäinen kirjain väärin kirjoitettu tai kirjainkoon muutos käsitellään täysin erilaisena muuttujan tai funktion nimenä. Tämä johtaa NameError: nimi ei määritetty.
Esimerkki
def say_hello(message): print(viesti)# the message to printmessage = "Tervetuloa techgeekbuzziin"# errorsayhello(viesti)
Lähtö
Traceback (viimeisin puhelu viimeisin):Tiedosto "main.py", rivi 8, kohdassa sayhello(message)NameError: nimeä 'sayhello' ei ole määritetty
Riko Koodi
Yllä olevassa ohjelmassa yritimme kutsua funktiotasayhello()
, jota ei ole määritelty. Määritimme sen seuraavastisano Hei
. Joten kun kutsumme funktiotasayhello
, Python heittää NameErrorin.
Ratkaisu
Yllä olevan ongelman ratkaisemiseksi meidän on varmistettava, että funktion nimi funktiokutsun aikana on sama kuin funktiolla määritetty funktion nimi.def
avainsana.
def say_hello(message): print(message)# the message to printmessage = "Tervetuloa techgeekbuzziin"# tulosta viestitsay_hello(message)
Lähtö
Tervetuloa techgeekbuzziin
Syy 2: Kutsu muuttuja tai funktio ennen sen ilmoittamista
Python on tulkittu ohjelmointikieli, joka suorittaa koodin rivi riviltä, ylhäältä alas. Joten ennen funktion kutsumista tai muuttujan arvon käyttämistä sinun on ilmoitettava tai määritettävä se. Funktiomäärittely ja muuttujan alustus on tehtävä ennen funktion kutsumista tai muuttujan käyttöä. Muussa tapauksessa saamme NameError-ilmoituksen.
Esimerkki
# the message to printmessage = "Tervetuloa techgeekbuzziin"# function callsay_hello(viesti)# ilmoittaa funktio funktion calldef jälkeen say_hello(message): print(viesti)
Lähtö
Traceback (viimeisin puhelu viimeisin):Tiedosto "main.py", rivi 5, kohdassa say_hello(message)NameError: nimeä 'say_hello' ei ole määritetty
Riko Koodi
Yllä olevassa ohjelmassa saamme NameError for thesano_hei(viesti)
funktiokutsulause. Tämä johtuu siitä, että Python-tulkki aloittaa suorituksensa ohjelman yläriviltä ja suorittaa sen rivi riviltä, kunnes se kohtaa poikkeuksen tai virheen.
Kun Python-tulkki saavuttaa rivin 5 ja suorittaasano_hei(viesti)
lauseessa, se havaitsee, että funktiota ei ole ilmoitettu. Siten Python nostaa alla olevan koodin suorittamisen sijasta NameError: namesano Hei
ei ole määritelty.
Ratkaisu
Siirrämme funktion määrittelyosan funktiokutsulauseen yläpuolelle ongelman ratkaisemiseksi. Joten Python-tulkki voisi tallentaasano Hei()
funktio keon muistissa ja suorita se, kun funktiota kutsutaan.
# the message to printmessage = "Tervetuloa techgeekbuzziin"# ilmoittaa funktio ennen funktiota calldef say_hello(message): print(viesti)# function callsay_hello(message)
Lähtö
Tervetuloa techgeekbuzziin
Syy 3: Unohda määrittää muuttuja
Usein meillä on mielessä muuttuja, mutta unohdamme määritellä sen ohjelmassa. Kun yritämme käyttää sitä, saamme NameError-ilmoituksen.
Esimerkki
nimi = "Rahul"print("Nimi:",nimi, "\nIkä:", ikä )
Lähtö
Traceback (viimeisin puhelu viimeisin):Tiedosto main.py", rivi 3, print("Nimi:",nimi, "\nIkä:", ikä )NimiError: nimeä 'ikä' ei ole määritetty
Riko Koodi
Yllä olevassa ohjelmassa yritimme tulostaaikä
muuttuja, jota ei ole määritelty. Tästä syystä saamme NameError-ilmoituksen.
Ratkaisu
Ennen tulostamista meidän on määritettävä ikämuuttuja ja sen arvo yllä olevan virheen ratkaisemiseksi.
nimi = "Rahul"ikä = 30print("Nimi:",nimi, "\nIkä:", ikä )
Lähtö
Nimi: Rahul Ikä: 30
Syy 4: Yritä käyttää paikallista muuttujaa
Pythonissa on kaksi muuttujalaajuutta -paikallista ja globaalia. Toiminnon ulkopuolella olevaa ohjelmatilaa kutsutaan globaaliksi laajuudeksi ja funktion sisällä olevaa ohjelmatilaa paikalliseksi laajuudeksi.
Globaalissa laajuudessa määritellyt muuttujat tunnetaan globaaleina muuttujina ja paikallisen laajuuden sisällä määritellyt muuttujat paikallisina muuttujina.
Globaalia muuttujaa voidaan käyttää koko ohjelman aikana, mutta paikallista muuttujaa voidaan käyttää vain sen paikallisessa laajuudessa (funktion sisällä). Jos yritämme päästä paikalliseen laajuusmuuttujaan sen ulkopuolellatoiminnon laajuus, saamme Nimivirheen.
Esimerkki
names = ["rahul", "rajesh", "aman", "vikash"]def add_name(name): # paikallinen muuttuja yhteensä = len(names) # lisää uusi nimi nimiin names.append(name)# lisää uusi nimi nimiin listadd_name("ravi")# access all namesprint(names)# pääsy paikalliseen muuttujaan totalprint(total)
Lähtö
['rahul', 'rajesh', 'aman', 'vikash', 'ravi']Traceback (viimeisin puhelu viimeisin):Tiedosto "main.py", rivi 17, kohdassa print(total)NameError: name 'yhteensä' ei ole määritelty
Riko Koodi
Yllä olevassa ohjelmassa kohtasimme NameError-ilmoituksen rivillä 17 vartentulosta (yhteensä)
lausunto. Syynä on se, että yritimme tulostaakaikki yhteensä
muuttujan arvo, joka on paikallinen muuttuja, globaalissa laajuudessa.
Ratkaisu
Emme voi käyttää paikallista muuttujaa funktion ulkopuolella. Silti, jos haluamme paikallisen muuttujan arvon, voimme palauttaa sen käyttämällä funktion return -lausetta ja tallentaa sen arvon globaaliin muuttujaan samalla nimellä.
names = ["rahul", "rajesh", "aman", "vikash"]def add_name(name): # lisää uusi nimi nimiin names.append(name) # paikallinen muuttuja yhteensä yhteensä = len(names) # palauttaa kokonaistuoton arvo yhteensä# lisää uusi nimi nimiin listtotal = add_name("ravi")# access all namesprint(names)# tulosta totalprint(yhteensä) arvo
Lähtö
['rahul', 'rajesh', 'aman', 'vikash', 'ravi']5
Syy 5: Yritä tulostaa yksi sana
Jos haluat tulostaa minkä tahansa yksittäisen sanan Pythonissa, meidän on lisättävä se lainausmerkkeihin. Python-tulkki käsittelee lainausmerkkien sisällä olevaa sanaa merkkijonona ja tulostaa sen näytölle
Jos et käytä lainausmerkkejä sanasta, Python-tulkki pitää sitä osana ohjelmaa ja heittää NameError-ilmoituksen.
Esimerkki
tulosta (techgeekbuzz)
Lähtö
Traceback (viimeisin puhelu viimeisin): Tiedosto "/home/main.py", rivi 1, print(techgeekbuzzNameError: nimeä 'techgeekbuzz' ei ole määritetty
Ratkaisu
Ratkaisu on sulkea techgeekbuzz lainausmerkkien sisään. Python-tulkki tulostaa sitten konsolille "techgeekbuzz".
print ("techgeekbuzz")
Lähtö
techgeekbuzz
Käärimistä!
Tämä kaikki koski Python NameError: nimi ei määritetty. Se tapahtuu, kun käytämme muuttujaa tai funktiota ennen sen ilmoittamista ohjelmassa. Tämän virheen viisi tärkeintä syytä ovat väärin kirjoitetut muuttujat tai funktiot, funktion tai muuttujan kutsuminen ennen ilmoittamista, yksittäisen sanan tulostaminen tai paikallisen muuttujan käyttäminen.
Olemme yrittäneet mainita kaikki NameErrorin syyt ja niitä vastaavat esimerkit ratkaisuineen. Toivottavasti tämä artikkeli on voinut auttaa sinua ymmärtämään virheen yksityiskohtaisesti.
Jos saat edelleen tämän virheen, jaa koodisi kommenttiosiossa; yritämme auttaa sinua koodin virheenkorjauksessa.
Ihmiset lukevat myös:
- Python TypeError: 'float' -objekti ei ole tilattavissa Ratkaisu
- Python TypeError: luetteloindeksien tulee olla kokonaislukuja tai viipaleita, ei monikkoa Ratkaisu
- Python TypeError: 'float' -objektia ei voi kutsua Ratkaisu
- Python TypeError: 'builtin_function_or_method' -objekti ei ole tilattavissa Ratkaisu
- Python TypeError: "int" -objektia ei voi kutsua Ratkaisu
- Python indexerror: luettelon määritysindeksi alueen ulkopuolella Ratkaisu
- Python-arvovirhe: merkkijonoa ei voitu muuntaa kelluvaksi Ratkaisu
- Pythonin paikallinen muuttuja, johon viitattiin ennen tehtävää Ratkaisu
- Python-tyyppivirhe: merkkijonoindeksien on oltava kokonaislukuja Ratkaisu
- Python-arvovirhe: liian monta arvoa purettavaksi (odotettu 2) Ratkaisu
FAQs
Mikä on python tulkki? ›
Python on ns. tulkittava (interpreted) kieli: Python-kielisen ohjelman suorittamiseksi käynnistetään erityinen Python-tulkki eli ohjelma, joka lukee Python-kielisen koodin ja suoraan toteuttaa sen käskyt. Python-kielestä on runsaasti erityyppisiä kuvauksia Web-sivustossa Python Language Website .
Mikä on muuttuja Python? ›Muuttuja on tietokoneohjelmissa käytetty tietovarasto, johon voidaan tallentaa tietoa. Muuttujaan tallennettua tietoa voidaan myös lukea ja tulostaa. Kun suoritat eli ajat ylläolevan esimerkin näet tulostuksen "5". Huomaa että muuttuja esitellään yhtäsuuruusmerkin vasemmalla puolella, eikä siellä ole mitään muuta.
Mikä on funktio Python? ›Funktio on käytännössä koodinpätkä, jota voi kutsua muualta ohjelmakoodista. Pythonin valmiita funktioita on käytetty jo oikeastaan ensimmäisestä ohjelmasta lähtien.
Miksi valita Python? ›Pythonia voi käyttää todella monipuolisesti eri asioiden toteuttamiseen. Melko useiden yliopistojen introkurssit ohjelmointiin nykyään toteutetaan Pythonilla. Python on avoimen lähdekoodin tuote, eli sen käyttö on ilmaista ja se ei tarvitse erillisiä lisenssejä edes kaupalliseen käyttöön.
Mikä on yleisin ohjelmointikieli? ›Python on tällä hetkellä suosituin ohjelmointikieli, kertoo huhtikuun 2023 TIOBE Index. Listan kärjessä huhtikuussa 2023 ovat Python, C, Java ja C++, joilla kaikilla on yli 10 prosentin markkinaosuus.
Mikä ohjelmointikieli kannattaa opetella? ›Suosittelen aloittelevalle ohjelmoijalle JavaScript-ohjelmointikieltä, sillä se on tällä hetkellä yksi eniten käytetyimpiä ohjelmointikieliä, ja täyttää edellä mainitut kriteerit. Ensimmäiseksi ohjelmointikieleksi sopivat JavaScript, Python ja C#. JavaScript on laajalti tuettu ohjelmointikieli.
Mikä on riippuva muuttuja? ›Riippuva muuttuja liittyy muuttujien välisten riippuvuussuhteiden mallittamiseen. Riippuvan muuttujan (y) arvot vaihtelevat riippumattoman muuttujan (x) arvojen mukaan. Riippuva muuttuja voi olla esim. poliittinen asenne mielipidetutkimuksessa, jota selitetään taustamuuttujien, kuten ikä, koulutus tai alue, avulla.
Mikä on muuttujan nimi arvo? ›Muuttujan arvo tarkoittaa muuttujan sisältöä tietyllä ohjelman suorituksen hetkellä. Nimensä mukaisesti muuttujan arvo voi muuttua.
Mikä on Dikotominen muuttuja? ›Usein muuttujaa kutsutaan dikotomiseksi, millä tarkoitetaan, että se voi saada vain kaksi arvoa. Tällaiset muuttujat voivat kuvata esimerkiksi jonkin ominaisuuden olemassaoloa tai puuttumista (esimerkiksi omistaa auton – ei omista autoa). Myös sukupuoli on dikotominen muuttuja.
Millä arvolla funktio ei ole määritelty? ›Raja-arvon määritelmä
[ Lyhenne lim tulee latinan kielen sanasta limes, joka tarkoittaa rajaa. ] Huom! Raja-arvo kuvaa funktion käyttäytymistä tietyn kohdan läheisyydessä, ei tässä kohdassa. Jos funktion raja-arvo kohdassa on , funktio ei välttämättä ole edes määritelty tässä kohdassa.
Miksi funktio ei ole jatkuva? ›
Funktio on jatkuva , jos sen kuvaaja on yhtenäinen, katkeamaton käyrä. Jos funktion kuvaaja katkeaa jossakin määrittelyjoukkonsa pisteessä, sanotaan funktion olevan epäjatkuva tässä kohdassa.
Miksi funktio f ei ole jatkuva millään arvolla a? ›Funktio f on jatkuva kohdassa a, jos limx→af(x)=f(a). Määritelmän mukaan funktio f on siis jatkuva kohdassa a, jos sillä on kohdassa a raja-arvo, joka on sama kuin funktion arvo kohdassa a. Jos funktiolla ei ole raja-arvoa kohdassa a, funktio ei ole siinä jatkuva.
Onko ohjelmointi vaikeaa? ›Ohjelmointi on todella laaja ala, joten se on ennemminkin laaja kattokäsite, joka voidaan jakaa moniin pienempiin aloihin. Kaikessa ohjelmoinnissa on yksi yhteinen asia – koodarit kommunikoivat tietokoneiden kanssa ohjelmointikielten välityksellä.
Mistä koodaus kannattaa aloittaa? ›Helpointa on aloittaa HTML-, Python- tai Ruby-ohjelmointikielien opettelusta, sillä niitä pidetään yksinkertaisimpina ja myös helpoiten opittavina ohjelmointikielinä. Kun olet oppinut nämä kielet, on helpompi siirtyä JavaScriptiin, C# ja C++ -kieliin, jotka vaativat hieman edistyneempiä ohjelmointitaitoja.
Onko Python ilmainen? ›Python on tulkattava ohjelmointikieli, joka on saatavilla ilmaiseksi usealle alustalle. Python muistuttaa paljon yleisimpiä ohjelmointikieliä, mutta kielessä on lukuisia omintakeisia – monesti kekseliäitä ja nerokkaitakin – piirteitä.
Mitä pythonilla koodataan? ›Käyttöaiheet. Python on yksi suosituimmista ohjelmointikielistä, joten sille on kehitetty runsaasti suosittuja kirjastoja, ohjelmistokehyksiä ja rajapintoja, joiden avulla voidaan luoda paljon erilaisia sovelluksia esim. numeerisen laskennan, grafiikan ja web-kehityksen alueilla.
Mitä maksaa tulkki? ›Läsnäolotulkkaus | 78 € / 1 h |
---|---|
Oikeustulkkaus | 85 € / 1 h |
Käännökset (Sivuhinnoittain á 1560merkkiä) | alk. 59,00€ / sivu |
Toimistokulu | 7 € / lasku |
Kiireellisyyslisä (edellisenä tai samana arkipäivänä tehdyt tilaukset) | 42 € / krt |
Ohjelmoinnin alkeissa on tärkeintä ymmärtää yksityiskohtaisten ohjelmointikäskyjen muodostaminen ja kuinka yksittäiset käskyt muodostavat käskysarjan eli ohjelman. Tämä edellyttää loogista päättelykykyä ja sen kehittämistä.
Paljonko viittomakielen tulkki tienaa? ›Palkka oli kuntasektorilla 2 601 € (16 yksittäistä palkkaa) ja yksityisellä sektorilla 3 386 € (710 yksittäistä palkkaa). Keskipalkka perustuu koko maan palkkatietoihin vuodelta 2020. Keskipalkka kasvoi 154 € (4,8 %) vuodesta 2019 vuoteen 2020. Palkkatiedot tilastoidaan useimmiten tehtävän sisältöön perustuen.