Avainsanat ovat varattuja sanoja Pythonissa. Emme voi käyttää avainsanaa muuttujan nimenä, funktion nimenä tai muuna tunnisteena.
Tässä on luettelo kaikista avainsanoista Python-ohjelmoinnissa
False | await | else | import | pass |
None | break | except | in | raise |
True | class | finally | is | return |
ja | continue | for | lambda | try |
as | def | from | nonlocal | while |
assert | del | global | not | with |
async | elif | if | or | yield |
Ylläolevat avainsanat saattavat muuttua Pythonin eri versioissa. Joitakin ylimääräisiä voi tulla lisää tai joitakin voi poistua. Voit aina saada luettelon avainsanoista nykyisessä versiossasi kirjoittamalla kehotteeseen seuraavaa.
>>> import keyword>>> print(keyword.kwlist)
Asanojen kuvaus Pythonissa esimerkkeineen
True, False
True
ja False
ovat Pythonissa totuusarvoja. Ne ovat vertailuoperaatioiden tai loogisten (Boolen) operaatioiden tuloksia Pythonissa. Esimerkiksi:
>>> 1 == 1True>>> 5 > 3True>>> True or FalseTrue>>> 10 <= 1False>>> 3 > 7False>>> True and FalseFalse
Tässä näemme, että kolme ensimmäistä lauseketta ovat totta, joten tulkki palauttaa True
ja palauttaa False
lopuille kolmelle lausekkeelle. True
ja False
on pythonissa sama kuin 1
ja 0
. Tämä voidaan perustella seuraavalla esimerkillä:
>>> True == 1True>>> False == 0True>>> True + True2
None
None
on Pythonissa erityinen vakio, joka edustaa arvon puuttumista tai nolla-arvoa.
Se on oman tietotyyppinsä NoneType
oma objekti. Emme voi luoda useita None
-objekteja, mutta voimme määrittää sen muuttujiin. Nämä muuttujat ovat keskenään yhtä suuria.
Meidän on erityisesti huolehdittava siitä, että None
ei tarkoita False
, 0
tai mitään tyhjää listaa, sanakirjaa, merkkijonoa jne. Esimerkiksi:
>>> None == 0False>>> None == False>>> None == FalseFalse>>> x = None>>> y = None>>> x == yTrue
Tyhjät funktiot, jotka eivät palauta mitään, palauttavat automaattisesti None
-olion. None
-objektin palauttavat myös funktiot, joissa ohjelmavirta ei kohtaa return-lauseketta. Esimerkiksi:
def a_void_function(): a = 1 b = 2 c = a + bx = a_void_function()print(x)
Tulostus
None
Tässä ohjelmassa on funktio, joka ei palauta arvoa, vaikka se tekee joitakin operaatioita sisällä. Kun siis tulostamme x:n, saamme None
, joka palautetaan automaattisesti (implisiittisesti). Vastaavasti tässä on toinen esimerkki:
def improper_return_function(a): if (a % 2) == 0: return Truex = improper_return_function(3)print(x)
Tulos
None
Vaikka tässä funktiossa on return
-lauseke, sitä ei saavuteta joka tapauksessa. Funktio palauttaa True
vain silloin, kun tulo on parillinen.
Jos annamme funktiolle parittoman luvun, palautetaan implisiittisesti None
.
ja, tai , ei
and
, or
, not
ovat loogisia operaattoreita Pythonissa. and
saa tulokseksi True
vain, jos molemmat operandit ovat True
. Alla on esitetty totuustaulukko and
:lle:
A | B | A ja B | |
---|---|---|---|
True | True | True | |
True | True | False | True |
True | True | True | |
True | True | ||
False | False | False |
or
johtaa tulokseen True
, jos jokin operandeista on True
. Totuustaulukko or
:lle on esitetty alla:
A | B | A tai B | |
---|---|---|---|
True | True | True | |
True | True | False | True |
False | True | True | |
False | False | False |
not
operaattoria käytetään totuusarvon kääntämiseen. Alla on esitetty totuustaulukko not
:lle:
A | ei A |
---|---|
True | False |
False | True |
esimerkkejä niiden käytöstä on annettu alla
>>> True and FalseFalse>>> True or FalseTrue>>> not FalseTrue
as
as
käytetään aliaksen luomiseen moduulia tuotaessa. Se tarkoittaa, että moduulille annetaan eri nimi (käyttäjän määrittelemä), kun sitä tuodaan.
Esimerkiksi Pythonissa on vakiomoduuli nimeltä math
. Oletetaan, että haluamme laskea, mikä on kosinus pi käyttäen aliasta. Voimme tehdä sen seuraavasti käyttämällä as
:
>>> import math as myAlias>>>myAlias.cos(myAlias.pi)-1.0
Tässä tuotiin math
-moduuli antamalla sille nimi myAlias
. Nyt voimme viitata math
-moduuliin tällä nimellä. Tällä nimellä laskimme cos(pi):n ja saimme vastaukseksi -1.0
.
assert
assert
käytetään virheenkorjaustarkoituksiin.
Ohjelmoidessamme haluamme joskus tietää sisäisen tilan tai tarkistaa, ovatko oletuksemme totta. assert
auttaa meitä tekemään tämän ja löytämään virheitä helpommin. assert
seuraa ehtoa.
Jos ehto on tosi, mitään ei tapahdu. Mutta jos ehto on väärä, syntyy AssertionError
. Esimerkiksi:
>>> a = 4>>> assert a < 5>>> assert a > 5Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>AssertionError
Paremman ymmärryksemme vuoksi voimme myös antaa viestin, joka tulostetaan AssertionError
:n kanssa.
>>> a = 4>>> assert a > 5, "The value of a is too small"Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>AssertionError: The value of a is too small
Tässä vaiheessa voimme todeta,
assert condition, message
vastaa,
if not condition: raise AssertionError(message)
async, await
Avainsanat async
ja await
ovat Pythonin asyncio
-kirjaston tarjoamia. Niitä käytetään samanaikaisen koodin kirjoittamiseen Pythonissa. Esimerkiksi
import asyncioasync def main(): print('Hello') await asyncio.sleep(1) print('world')
Ohjelman suorittamiseen käytetään
asyncio.run(main())
Yllä olevassa ohjelmassa async
-avainsana määrittää, että funktio suoritetaan asynkronisesti.
Tässä tulostetaan ensin Hello. Avainsana await
saa ohjelman odottamaan 1 sekunnin ajan. Ja sitten tulostetaan maailma.
break, continue
break
ja continue
käytetään for
– ja while
-silmukoiden sisällä muuttamaan niiden normaalia käyttäytymistä.
break
lopettaa pienimmän silmukan, jossa se on, ja ohjaus siirtyy välittömästi silmukan alapuolella olevaan lausekkeeseen. continue
saa aikaan sen, että silmukan nykyinen iteraatio lopetetaan, mutta ei koko silmukkaa.
Tätä voidaan havainnollistaa seuraavilla kahdella esimerkillä:
for i in range(1,11): if i == 5: break print(i)
Tulostus
1234
Tässä for
-silmukassa on tarkoitus tulostaa numerot 1-10. Mutta if
-ehto täyttyy, kun i on yhtä suuri kuin 5, ja katkaisemme silmukan. Näin ollen tulostetaan vain alue 1-4.
for i in range(1,11): if i == 5: continue print(i)
Tulostus
1234678910
Tässä käytämme continue
samaa ohjelmaa. Kun ehto siis täyttyy, kyseinen iteraatio ohitetaan. Mutta emme poistu silmukasta. Näin ollen kaikki arvot paitsi 5 tulostetaan.
Opi lisää Pythonin break- ja continue-lausekkeista.
class
class
määritellään uusi käyttäjän määrittelemä luokka Pythonissa.
Luokka on kokoelma toisiinsa liittyviä ominaisuuksia ja metodeja, jotka pyrkivät kuvaamaan todellista tilannetta. Tämä ajatus tietojen ja toimintojen kokoamisesta luokkaan on keskeinen oliopohjaisen ohjelmoinnin (OOP) käsitteelle.
Luokkia voidaan määritellä missä tahansa ohjelmassa. On kuitenkin hyvä käytäntö määritellä yksi luokka moduulissa. Seuraavassa on esimerkkikäyttö:
class ExampleClass: def function1(parameters): … def function2(parameters): …
Opi lisää Python-objekteista ja -luokasta.
def
def
käytetään käyttäjän määrittelemän funktion määrittelyyn.
Funktio on toisiinsa liittyvien lausekkeiden muodostama lohko, jotka yhdessä suorittavat jonkin tietyn tehtävän. Se auttaa meitä järjestämään koodia hallittaviin lohkoihin ja myös tekemään joitakin toistuvia tehtäviä.
def
:n käyttö on esitetty alla:
def function_name(parameters): …
Opi lisää Python-funktioista.
del
del
käytetään poistamaan viittaus objektiin. Pythonissa kaikki on objekteja. Voimme poistaa muuttujan viitteen käyttämällä del
>>> a = b = 5>>> del a>>> aTraceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>NameError: name 'a' is not defined>>> b5
Tässä näemme, että muuttujan a viite poistettiin. Sitä ei siis enää määritellä. Mutta b on edelleen olemassa.
del
käytetään myös poistamaan kohteita listasta tai sanakirjasta:
>>> a = >>> del a>>> a
if, else, elif
if, else, elif
käytetään ehdolliseen haarautumiseen tai päätöksentekoon.
Kun haluamme testata jotakin ehtoa ja suorittaa lohkon vain, jos ehto pitää paikkansa, käytämme apuna if
ja elif
. elif
on lyhenne sanoista else if. else
on lohko, joka suoritetaan, jos ehto on epätosi. Tämä selviää seuraavan esimerkin avulla:
def if_example(a): if a == 1: print('One') elif a == 2: print('Two') else: print('Something else')if_example(2)if_example(4)if_example(1)
Tulos
TwoSomething elseOne
Tässä funktio tarkistaa syötetyn luvun ja tulostaa tuloksen, jos se on 1 tai 2. Kaikki muut syötteet aiheuttavat koodin else
osan suorittamisen.
Opi lisää Pythonissa if- ja if…else-lausekkeista.
except, raise, try
except, raise, try
käytetään Pythonissa poikkeusten yhteydessä.
Periaatteessa poikkeukset ovat virheitä, jotka viittaavat siihen, että jotakin on mennyt pieleen ohjelmamme suorittamisen aikana. IOError
, ValueError
, ZeroDivisionError
, ImportError
, NameError
, TypeError
jne. ovat muutamia esimerkkejä poikkeuksista Pythonissa. try...except
lohkoja käytetään Pythonissa poikkeusten pyydystämiseen.
Voidaan nostaa poikkeus eksplisiittisesti avainsanalla raise
. Seuraavassa on esimerkki:
def reciprocal(num): try: r = 1/num except: print('Exception caught') return return rprint(reciprocal(10))print(reciprocal(0))
Tulos
0.1Exception caughtNone
Tässä funktio reciprocal()
palauttaa syötetyn luvun käänteisarvon.
Kun syötämme 10, saamme normaalin tuloksen 0.1. Mutta kun syötämme 0, syntyy automaattisesti ZeroDivisionError
.
Lohkomme try…except
ottaa tämän kiinni ja palautamme None
. Olisimme voineet myös herättää ZeroDivisionError
eksplisiittisesti tarkistamalla syötteen ja käsitellä sen muualla seuraavasti:
if num == 0: raise ZeroDivisionError('cannot divide')
finally
finally
käytetään try…except
-lohkon kanssa resurssien tai tiedostovirtojen sulkemiseen.
Käyttämällä finally
-ohjelmaa varmistetaan, että sen sisällä oleva koodilohko tulee suoritetuksi myös silloin, kun tulee käsittelemätön poikkeus. Esimerkiksi:
try: Try-blockexcept exception1: Exception1-blockexcept exception2: Exception2-blockelse: Else-blockfinally: Finally-block
Tässä jos Try-block
-lohkossa on poikkeus, se käsitellään except
– tai else
-lohkossa. Mutta riippumatta siitä, missä järjestyksessä suoritus kulkee, voimme olla varmoja siitä, että Finally-block
suoritetaan, vaikka siinä olisi virhe. Tästä on hyötyä resurssien siivoamisessa.
Opi lisää poikkeusten käsittelystä Python-ohjelmoinnissa.
for
for
käytetään silmukointiin. Yleensä käytämme for
, kun tiedämme kuinka monta kertaa haluamme silmukoida.
Pythonissa voimme käyttää sitä minkä tahansa tyyppisten sekvenssien kuten listan tai merkkijonon kanssa. Tässä on esimerkki, jossa for
käytetään nimilistan läpikäymiseen:
names = for i in names: print('Hello '+i)
Output
Hello JohnHello MonicaHello StevenHello Robin
Opi lisää Pythonissa silmukan tekemisestä.
from, import
import
avainsanaa käytetään moduulien tuomiseen nykyiseen nimiavaruuteen. from…import
käytetään tiettyjen attribuuttien tai funktioiden tuomiseen nykyiseen nimiavaruuteen. Esimerkiksi:
import math
tuo moduulin math
. Nyt voimme käyttää cos()
-funktiota sen sisällä math.cos()
. Mutta jos haluaisimme tuoda vain cos()
-funktion, tämä voidaan tehdä käyttämällä from
as
from math import cos
jatkossa voimme käyttää funktiota yksinkertaisesti cos()
, ei tarvitse kirjoittaa math.cos()
.
Oppaa lisää Python-moduuleista ja import-lauseesta.
global
global
ilmoitetaan, että funktion sisällä oleva muuttuja on globaali (funktion ulkopuolella).
Jos haluamme lukea globaalin muuttujan arvon, sitä ei tarvitse määritellä global
. Tämä on ymmärretty.
Jos meidän on muutettava globaalin muuttujan arvoa funktion sisällä, meidän on ilmoitettava se global
:llä. Muuten luodaan paikallinen muuttuja kyseisellä nimellä.
Seuraava esimerkki auttaa meitä selventämään tätä.
globvar = 10def read1(): print(globvar)def write1(): global globvar globvar = 5def write2(): globvar = 15read1()write1()read1()write2()read1()
Output
1055
Tässä read1()
-funktio vain lukee globvar
:n arvon. Meidän ei siis tarvitse ilmoittaa sitä global
:ksi. Mutta write1()
-funktio muuttaa arvoa, joten meidän on ilmoitettava muuttuja global
:ksi.
Tulosteesta näemme, että muutos on tapahtunut (10 on muuttunut 5:ksi). Myös write2()
yrittää muuttaa tätä arvoa. Mutta emme ole ilmoittaneet sitä global
.
Siten luodaan uusi paikallinen muuttuja globvar
, joka ei näy tämän funktion ulkopuolella. Vaikka muutamme tämän paikallisen muuttujan arvoksi 15, globaali muuttuja pysyy muuttumattomana. Tämä näkyy selvästi tulostuksessamme.
in
in
testataan, sisältääkö jono (lista, tuple, merkkijono jne.) arvon. Se palauttaa True
, jos arvo on olemassa, muuten se palauttaa False
. Esimerkiksi:
>>> a = >>> 5 in aTrue>>> 10 in aFalse
in
:n toissijainen käyttö on jakson läpikäyminen for
-silmukassa.
for i in 'hello': print(i)
Tulosta
hello
is
is
käytetään Pythonissa objektien identiteetin testaamiseen. Kun ==
-operaattoria käytetään testaamaan, ovatko kaksi muuttujaa yhtä suuret vai eivät, is
-operaattoria käytetään testaamaan, viittaavatko kaksi muuttujaa samaan objektiin.
Se palauttaa True
, jos objektit ovat identtisiä, ja False
, jos eivät ole.
>>> True is TrueTrue>>> False is FalseTrue>>> None is NoneTrue
Tiedämme, että Pythonissa on vain yksi instanssi True
:stä, False
:sta ja None
:stä, joten ne ovat identtisiä.
>>> == True>>> is False>>> {} == {}True>>> {} is {}False
Tyhjä lista tai sanakirja on yhtä suuri kuin toinen tyhjä. Mutta ne eivät ole identtisiä objekteja, koska ne sijaitsevat erikseen muistissa. Tämä johtuu siitä, että lista ja sanakirja ovat muuttuvia (arvoa voidaan muuttaa).
>>> '' == ''True>>> '' is ''True>>> () == ()True>>> () is ()True
Toisin kuin lista ja sanakirja, merkkijono ja tuple ovat muuttumattomia (arvoa ei voi muuttaa, kun se on määritelty). Näin ollen kaksi samanlaista merkkijonoa tai tuplea ovat myös identtisiä. Ne viittaavat samaan muistipaikkaan.
lambda
lambda
käytetään anonyymin funktion (funktio, jolla ei ole nimeä) luomiseen. Se on inline-funktio, joka ei sisällä return
-lauseketta. Se koostuu lausekkeesta, joka arvioidaan ja palautetaan. Esimerkiksi:
a = lambda x: x*2for i in range(1,6): print(a(i))
Output
246810
Tässä olemme luoneet inline-funktion, joka kaksinkertaistaa arvon käyttämällä lambda
-lauseketta. Käytimme tätä kaksinkertaistamaan arvot listassa, joka sisältää arvot 1-5.
Opi lisää Pythonin lamda-funktiosta.
nonlocal
Avainsanan nonlocal
käyttö on hyvin samankaltaista kuin avainsanan global
. nonlocal
:n avulla ilmoitetaan, että sisäkkäisen funktion (funktio funktion sisällä) sisällä oleva muuttuja ei ole paikallinen, eli se sijaitsee ulommassa sisäkkäisessä funktiossa. Jos meidän on muutettava ei-lokaalin muuttujan arvoa sisäkkäisen funktion sisällä, meidän on ilmoitettava se nonlocal
:llä. Muuten sisäkkäisen funktion sisälle luodaan paikallinen muuttuja kyseisellä nimellä. Seuraava esimerkki auttaa meitä selventämään tätä.
def outer_function(): a = 5 def inner_function(): nonlocal a a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a)outer_function()
Output
Inner function: 10Outer function: 10
Tässä inner_function()
on sisäkkäin outer_function
:n sisällä.
Muuttuja a on outer_function()
:ssä. Jos siis haluamme muuttaa sitä inner_function()
:ssä, meidän on ilmoitettava se nonlocal
:ksi. Huomaa, että a ei ole globaali muuttuja.
Tulosteesta näemme siis, että muuttujaa muutettiin onnistuneesti sisäkkäisen inner_function()
:n sisällä. Jos avainsanaa nonlocal
ei käytetä, tulos on seuraava:
def outer_function(): a = 5 def inner_function(): a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a)outer_function()
Tulos
Inner function: 10Outer function: 5
Tässä tapauksessa emme ilmoita, että muuttuja a sisäkkäisen funktion sisällä on nonlocal
. Näin ollen luodaan uusi samanniminen paikallinen muuttuja, mutta ei-lokaalia a:ta ei muuteta, kuten tulosteessamme näkyy.
pass
pass
on Pythonissa nolla-lauseke. Mitään ei tapahdu, kun se suoritetaan. Sitä käytetään paikanhaltijana.
Esitellään, että meillä on funktio, jota ei ole vielä toteutettu, mutta haluamme toteuttaa sen tulevaisuudessa. Yksinkertaisesti kirjoittamalla,
def function(args):
keskellä ohjelmaa saamme IndentationError
. Sen sijaan rakennamme tyhjän rungon pass
-lausekkeella.
def function(args): pass
Voidaan tehdä sama asia myös tyhjällä class
-lausekkeella.
class example: pass
return
return
-lauseketta käytetään funktion sisällä, jotta funktiosta voidaan poistua ja palauttaa arvo.
Jos emme palauta eksplisiittisesti arvoa, palautetaan automaattisesti None
. Tämä todennetaan seuraavalla esimerkillä.
def func_return(): a = 10 return adef no_return(): a = 10print(func_return())print(no_return())
Output
10None
while
while
käytetään Pythonissa silmukoiden tekemiseen.
Silmukan while
sisällä olevat lausekkeet jatkavat suoritustaan, kunnes while
-silmukan ehto evaluoituu arvoksi False
tai break
-lausekkeen break
tuloon törmätään. Seuraava ohjelma havainnollistaa tätä.
i = 5while(i): print(i) i = i – 1
Tulos
54321
Huomaa, että 0 on yhtä kuin False
.
Opi lisää Python while-silmukasta.
with
with
-lauseen avulla koodilohkon suoritus paketoidaan kontekstinhallitsijan määrittelemien metodien sisään.
Kontekstinhallitsija on luokka, joka toteuttaa __enter__
– ja __exit__
-metodit. with
-lauseen käyttö varmistaa, että __exit__
-metodia kutsutaan sisäkkäisen lohkon lopussa. Tämä käsite on samanlainen kuin try…finally
-lohkon käyttö. Tässä on esimerkki.
with open('example.txt', 'w') as my_file: my_file.write('Hello world!')
Tämä esimerkki kirjoittaa tekstin Hello world!
tiedostoon example.txt
. Tiedosto-objekteissa on määritelty __enter__
– ja __exit__
-metodi, joten ne toimivat omina kontekstinhallitsijoinaan.
Ensin kutsutaan __enter__
-metodia, sitten suoritetaan with
-lauseen sisällä oleva koodi ja lopuksi kutsutaan __exit__
-metodia. __exit__
-metodia kutsutaan, vaikka tapahtuisi virhe. Se periaatteessa sulkee tiedostovirran.
yield
yield
käytetään funktion sisällä kuten return
-lauseessa. Mutta yield
palauttaa generaattorin.
Generator on iteraattori, joka tuottaa yhden elementin kerrallaan. Suuri arvolista vie paljon muistia. Generaattorit ovat hyödyllisiä tässä tilanteessa, koska ne tuottavat vain yhden arvon kerrallaan sen sijaan, että kaikki arvot tallennettaisiin muistiin. Esimerkiksi
>>> g = (2**x for x in range(100))
luo generaattorin g, joka tuottaa potensseja 2 aina lukuun kaksi potenssiin 99 asti. Voimme generoida luvut käyttämällä next()
-funktiota alla esitetyllä tavalla.
>>> next(g)1>>> next(g)2>>> next(g)4>>> next(g)8>>> next(g)16
Ja niin edelleen… Tämän tyyppinen generaattori palautetaan yield
-lauseella funktiosta. Tässä on esimerkki.
def generator(): for i in range(6): yield i*ig = generator()for i in g: print(i)
Tulos