Nøgleord er de reserverede ord i Python. Vi kan ikke bruge et nøgleord som et variabelnavn, funktionsnavn eller en anden identifikator.
Her er en liste over alle nøgleord i Python-programmering
False | await | else | import | pass | |
None | None | break | except | in | raise |
True | class | finally | is | return | |
and | fortsætte | for | lambda | prøve | |
som | def | fra | ikke-lokal | undertiden | |
assert | del | global | global | not | with |
async | elif | if | or | yield |
Ovenstående nøgleord kan blive ændret i forskellige versioner af Python. Nogle ekstra kan blive tilføjet, eller nogle kan blive fjernet. Du kan altid få listen over nøgleord i din aktuelle version ved at skrive følgende i prompten.
>>> import keyword>>> print(keyword.kwlist)
Beskrivelse af nøgleord i Python med eksempler
True, False
True
og False
er sandhedsværdier i Python. De er resultaterne af sammenligningsoperationer eller logiske (boolske) operationer i Python. For eksempel:
>>> 1 == 1True>>> 5 > 3True>>> True or FalseTrue>>> 10 <= 1False>>> 3 > 7False>>> True and FalseFalse
Her kan vi se, at de tre første udsagn er sande, så fortolkeren returnerer True
og returnerer False
for de resterende tre udsagn. True
og False
i python er det samme som 1
og 0
. Dette kan begrundes med følgende eksempel:
>>> True == 1True>>> False == 0True>>> True + True2
None
None
er en særlig konstant i Python, der repræsenterer fraværet af en værdi eller en nulværdi.
Det er et objekt af sin egen datatype, NoneType
. Vi kan ikke oprette flere None
-objekter, men vi kan tildele den til variabler. Disse variabler vil være lig hinanden.
Vi skal være særligt opmærksomme på, at None
ikke indebærer False
, 0
eller en tom liste, ordbog, streng osv. For eksempel:
>>> None == 0False>>> None == False>>> None == FalseFalse>>> x = None>>> y = None>>> x == yTrue
Void-funktioner, der ikke returnerer noget, returnerer automatisk et None
-objekt. None
returneres også af funktioner, hvor programflowet ikke støder på en returanvisning. For eksempel:
def a_void_function(): a = 1 b = 2 c = a + bx = a_void_function()print(x)
Output
None
Dette program har en funktion, som ikke returnerer en værdi, selv om den udfører nogle operationer indeni. Så når vi udskriver x, får vi None
, som returneres automatisk (implicit). På samme måde er her et andet eksempel:
def improper_return_function(a): if (a % 2) == 0: return Truex = improper_return_function(3)print(x)
Output
None
Og selv om denne funktion har en return
-anvisning, nås den ikke i alle tilfælde. Funktionen returnerer kun True
, når input er lige.
Hvis vi giver funktionen et ulige tal, returneres None
implicit.
og, eller , eller , ikke
and
, or
, not
er de logiske operatorer i Python. and
resulterer kun i True
, hvis begge operander er True
. Sandhedstabellen for and
er angivet nedenfor:
A | B | A og B |
---|---|---|
True | True | True |
True | Falsk | Falsk |
Falsk | True | Falsk |
Falsk | Falsk | Falsk |
or
vil resultere i True
, hvis en af operanderne er True
. Sandhedstabellen for or
er angivet nedenfor:
A | B | A eller B | |
---|---|---|---|
True | True | True | |
True | Falsk | True | |
Falsk | True | True | |
Falsk | Falsk | Falsk | Falsk |
not
operatoren bruges til at invertere sandhedsværdien. Sandhedstabellen for not
er angivet nedenfor:
A | ikke A |
---|---|
Sandt | Falsk |
Falsk | |
Falsk | True |
nogle eksempler på deres anvendelse er angivet nedenfor
>>> True and FalseFalse>>> True or FalseTrue>>> not FalseTrue
as
as
bruges til at oprette et alias under import af et modul. Det betyder, at man giver et andet navn (brugerdefineret) til et modul, mens man importerer det.
Som for eksempel har Python et standardmodul, der hedder math
. Antag, at vi ønsker at beregne, hvad cosinus pi er ved hjælp af et alias. Vi kan gøre det på følgende måde ved hjælp af as
:
>>> import math as myAlias>>>myAlias.cos(myAlias.pi)-1.0
Her importerede vi modulet math
ved at give det navnet myAlias
. Nu kan vi henvise til modulet math
med dette navn. Ved hjælp af dette navn beregnede vi cos(pi) og fik -1.0
som svar.
assert
assert
bruges til fejlfinding.
Ved programmering ønsker vi nogle gange at kende den interne tilstand eller at kontrollere, om vores antagelser er sande. assert
hjælper os med at gøre dette og med at finde fejl på en mere bekvem måde. assert
er efterfulgt af en betingelse.
Hvis betingelsen er sand, sker der intet. Men hvis betingelsen er falsk, bliver AssertionError
udløst. For eksempel:
>>> 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
For vores bedre forståelse kan vi også angive en meddelelse, der skal udskrives sammen med AssertionError
.
>>> 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
På dette tidspunkt kan vi bemærke, at,
assert condition, message
svarer til,
if not condition: raise AssertionError(message)
async, await
Nøgleordene async
og await
leveres af asyncio
-biblioteket i Python. De bruges til at skrive samtidig kode i Python. F.eks.
import asyncioasync def main(): print('Hello') await asyncio.sleep(1) print('world')
For at køre programmet bruger vi
asyncio.run(main())
I ovenstående program angiver nøgleordet async
, at funktionen skal udføres asynkront.
Her bliver først Hello udskrevet. Nøgleordet await
får programmet til at vente i 1 sekund. Og derefter udskrives verden.
break, continue
break
og continue
bruges inde i for
– og while
-sløjfer for at ændre deres normale opførsel.
break
afslutter den mindste sløjfe, den befinder sig i, og kontrollen flyder til den angivelse, der ligger umiddelbart under sløjfen. continue
bevirker, at den aktuelle iteration af løkken afsluttes, men ikke hele løkken.
Dette kan illustreres med følgende to eksempler:
for i in range(1,11): if i == 5: break print(i)
Output
1234
Her har for
-løkken til hensigt at udskrive tal fra 1 til 10. Men betingelsen if
er opfyldt, når i er lig med 5, og vi bryder ud af løkken. Derfor udskrives kun intervallet 1 til 4.
for i in range(1,11): if i == 5: continue print(i)
Output
1234678910
Her bruger vi continue
til det samme program. Så når betingelsen er opfyldt, springes denne iteration over. Men vi forlader ikke løkken. Derfor udskrives alle værdier undtagen 5.
Lær mere om Python break- og continue-erklæringen.
class
class
bruges til at definere en ny brugerdefineret klasse i Python.
Klasse er en samling af relaterede attributter og metoder, der forsøger at repræsentere en situation i den virkelige verden. Denne idé om at samle data og funktioner i en klasse er central for begrebet objektorienteret programmering (OOP).
Klasser kan defineres hvor som helst i et program. Men det er en god praksis at definere en enkelt klasse i et modul. Følgende er et eksempel på brug:
class ExampleClass: def function1(parameters): … def function2(parameters): …
Lær mere om Python-objekter og klasse.
def
def
bruges til at definere en brugerdefineret funktion.
Funktion er en blok af relaterede sætninger, som tilsammen udfører en bestemt opgave. Den hjælper os med at organisere kode i håndterbare bidder og også med at udføre nogle gentagne opgaver.
Anvendelsen af def
er vist nedenfor:
def function_name(parameters): …
Lær mere om Python-funktioner.
del
del
bruges til at slette referencen til et objekt. Alt er objekt i Python. Vi kan slette en variabelreference ved hjælp af 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
Her kan vi se, at referencen til variablen a blev slettet. Så den er ikke længere defineret. Men b eksisterer stadig.
del
bruges også til at slette elementer fra en liste eller en ordbog:
>>> a = >>> del a>>> a
if, else, elif
if, else, elif
bruges til betinget forgrening eller beslutningstagning.
Når vi ønsker at teste en bestemt betingelse og kun udføre en blok, hvis betingelsen er sand, bruger vi if
og elif
. elif
er en forkortelse for else if. else
er den blok, der udføres, hvis betingelsen er falsk. Dette vil fremgå tydeligt af følgende eksempel:
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)
Output
TwoSomething elseOne
Her kontrollerer funktionen det indtastede tal og udskriver resultatet, hvis det er 1 eller 2. Ethvert andet input end dette medfører, at else
-delen af koden udføres.
Lær mere om Python if og if…else Statement.
except, raise, try
except, raise, try
bruges med undtagelser i Python.
Exceptions er grundlæggende fejl, der antyder, at noget gik galt under udførelsen af vores program. IOError
, ValueError
, ZeroDivisionError
, ImportError
, NameError
, TypeError
osv. er få eksempler på undtagelser i Python. try...except
blokke bruges til at fange undtagelser i Python.
Vi kan udløse en undtagelse eksplicit med nøgleordet raise
. Følgende er et eksempel:
def reciprocal(num): try: r = 1/num except: print('Exception caught') return return rprint(reciprocal(10))print(reciprocal(0))
Output
0.1Exception caughtNone
Her returnerer funktionen det reciprokke af det indtastede tal.
Når vi indtaster 10, får vi det normale output på 0,1. Men når vi indtaster 0, opstår der automatisk en ZeroDivisionError
.
Dette bliver fanget af vores try…except
-blok, og vi returnerer None
. Vi kunne også have rejst ZeroDivisionError
eksplicit ved at kontrollere indtastningen og håndteret den et andet sted som følger:
if num == 0: raise ZeroDivisionError('cannot divide')
slutteligt
finally
bruges sammen med try…except
-blokken til at lukke ressourcer eller filstrømme.
Brug af finally
sikrer, at blokken af kode indeni den bliver udført, selv hvis der er en ubehandlet undtagelse. For eksempel:
try: Try-blockexcept exception1: Exception1-blockexcept exception2: Exception2-blockelse: Else-blockfinally: Finally-block
Her, hvis der er en undtagelse i Try-block
, bliver den håndteret i blokken except
eller else
. Men uanset i hvilken rækkefølge udførelsen flyder, kan vi være sikre på, at Finally-block
bliver udført, selv om der er en fejl. Dette er nyttigt ved oprydning af ressourcerne.
Lær mere om undtagelseshåndtering i Python-programmering.
for
for
bruges til looping. Generelt bruger vi for
, når vi kender antallet af gange, vi ønsker at lave en løkke.
I Python kan vi bruge det med alle typer sekvenser som f.eks. en liste eller en streng. Her er et eksempel, hvor for
bruges til at gennemløbe en liste af navne:
names = for i in names: print('Hello '+i)
Output
Hello JohnHello MonicaHello StevenHello Robin
Lær mere om Python for loop.
from, import
import
nøgleordet bruges til at importere moduler til det aktuelle namespace. from…import
bruges til at importere specifikke attributter eller funktioner til det aktuelle namespace. For eksempel:
import math
vil importere modulet math
. Nu kan vi bruge cos()
-funktionen inde i det som math.cos()
. Men hvis vi kun ville importere cos()
-funktionen, kan dette gøres ved hjælp af from
as
from math import cos
nu kan vi bruge funktionen simpelthen som cos()
, uden at vi behøver at skrive math.cos()
.
Lær mere om Python-moduler og import-erklæring.
global
global
bruges til at erklære, at en variabel inde i funktionen er global (uden for funktionen).
Hvis vi har brug for at læse værdien af en global variabel, er det ikke nødvendigt at definere den som global
. Dette er forstået.
Hvis vi har brug for at ændre værdien af en global variabel inde i en funktion, skal vi deklarere den med global
. Ellers oprettes der en lokal variabel med dette navn.
Følgende eksempel vil hjælpe os med at afklare dette.
globvar = 10def read1(): print(globvar)def write1(): global globvar globvar = 5def write2(): globvar = 15read1()write1()read1()write2()read1()
Output
1055
Her læser read1()
-funktionen blot værdien af globvar
. Så vi behøver ikke at deklarere den som global
. Men write1()
-funktionen ændrer værdien, så vi skal deklarere variablen som global
.
Vi kan se i vores output, at ændringen fandt sted (10 er ændret til 5). write2()
forsøger også at ændre denne værdi. Men vi har ikke deklareret den som global
.
Der oprettes således en ny lokal variabel globvar
, som ikke er synlig uden for denne funktion. Selv om vi ændrer denne lokale variabel til 15, forbliver den globale variabel uændret. Dette er tydeligt synligt i vores output.
in
in
bruges til at teste, om en sekvens (liste, tupel, streng osv.) indeholder en værdi. Den returnerer True
, hvis værdien er til stede, ellers returnerer den False
. Eksempel:
>>> a = >>> 5 in aTrue>>> 10 in aFalse
Den sekundære anvendelse af in
er at gennemløbe en sekvens i en for
løkke.
for i in 'hello': print(i)
Output
hello
is
is
bruges i Python til at teste objektets identitet. Mens ==
-operatoren bruges til at teste, om to variabler er ens eller ej, bruges is
til at teste, om de to variabler henviser til det samme objekt.
Den returnerer True
, hvis objekterne er identiske, og False
, hvis de ikke er det.
>>> True is TrueTrue>>> False is FalseTrue>>> None is NoneTrue
Vi ved, at der kun er én instans af True
, False
og None
i Python, så de er identiske.
>>> == True>>> is False>>> {} == {}True>>> {} is {}False
En tom liste eller ordbog er lig med en anden tom liste eller ordbog. Men de er ikke identiske objekter, da de befinder sig hver for sig i hukommelsen. Det skyldes, at list og dictionary er mutable (værdien kan ændres).
>>> '' == ''True>>> '' is ''True>>> () == ()True>>> () is ()True
I modsætning til list og dictionary er string og tuple uforanderlige (værdien kan ikke ændres, når de først er defineret). Derfor er to ens string eller tuple også identiske. De henviser til den samme hukommelsesplacering.
lambda
lambda
bruges til at oprette en anonym funktion (funktion uden navn). Det er en inline-funktion, som ikke indeholder en return
-anvisning. Den består af et udtryk, der evalueres og returneres. For eksempel:
a = lambda x: x*2for i in range(1,6): print(a(i))
Output
246810
Her har vi oprettet en inline-funktion, der fordobler værdien, ved hjælp af lambda
-erklæringen. Vi har brugt dette til at fordoble værdierne i en liste, der indeholder 1 til 5.
Lær mere om Python lamda-funktionen.
nonlocal
Brugen af nøgleordet nonlocal
minder meget om nøgleordet global
. nonlocal
bruges til at erklære, at en variabel inde i en indlejret funktion (funktion i en funktion) ikke er lokal for den, hvilket betyder, at den ligger i den ydre indlejrede funktion. Hvis vi har brug for at ændre værdien af en ikke-lokal variabel inde i en indlejret funktion, skal vi deklarere den med nonlocal
. Ellers oprettes der en lokal variabel med dette navn inde i den indlejrede funktion. Følgende eksempel vil hjælpe os med at tydeliggøre dette.
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
Her er inner_function()
nested inden for outer_function
.
Variablen a er i outer_function()
. Så hvis vi ønsker at ændre den i inner_function()
, skal vi deklarere den som nonlocal
. Bemærk, at a ikke er en global variabel.
Dermed kan vi se på outputtet, at det er lykkedes at ændre variablen inde i den indlejrede inner_function()
. Resultatet af ikke at bruge nøgleordet nonlocal
er som følger:
def outer_function(): a = 5 def inner_function(): a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a)outer_function()
Output
Inner function: 10Outer function: 5
Her erklærer vi ikke, at variablen a inde i den indlejrede funktion er nonlocal
. Derfor oprettes der en ny lokal variabel med samme navn, men den ikke-lokale a ændres ikke, som det ses i vores output.
pass
pass
er en null-erklæring i Python. Der sker ikke noget, når det udføres. Det bruges som en pladsholder.
Sæt, at vi har en funktion, som ikke er implementeret endnu, men som vi ønsker at implementere i fremtiden. Hvis vi blot skriver,
def function(args):
midt i et program, får vi IndentationError
. I stedet konstruerer vi en tom krop med pass
-erklæringen.
def function(args): pass
Vi kan også gøre det samme i en tom class
.
class example: pass
return
return
-erklæringen bruges inde i en funktion til at afslutte den og returnere en værdi.
Hvis vi ikke returnerer en værdi eksplicit, returneres None
automatisk. Dette verificeres med følgende eksempel.
def func_return(): a = 10 return adef no_return(): a = 10print(func_return())print(no_return())
Output
10None
while
while
bruges til looping i Python.
Ordningerne inden for en while
-loop fortsætter med at blive udført, indtil betingelsen for while
-loopet evalueres til False
, eller der støder på en break
-erklæring. Følgende program illustrerer dette.
i = 5while(i): print(i) i = i – 1
Output
54321
Bemærk, at 0 er lig med False
.
Læs mere om Python while-loop.
with
with
-erklæringen bruges til at indpakke udførelsen af en kodeblok i metoder, der er defineret af konteksthåndteringen.
Konteksthåndteringen er en klasse, der implementerer __enter__
og __exit__
-metoder. Brug af with
-erklæringen sikrer, at __exit__
-metoden kaldes i slutningen af den indlejrede blok. Dette koncept svarer til brugen af try…finally
-blokken. Her, er et eksempel.
with open('example.txt', 'w') as my_file: my_file.write('Hello world!')
Dette eksempel skriver teksten Hello world!
til filen example.txt
. Filobjekter har __enter__
– og __exit__
-metoden defineret i dem, så de fungerer som deres egen konteksthåndtering.
Først kaldes __enter__
-metoden, derefter udføres koden i with
-anvisningen, og til sidst kaldes __exit__
-metoden. __exit__
-metoden kaldes, selv hvis der er en fejl. Den lukker i princippet filstrømmen.
yield
yield
bruges inde i en funktion som en return
-erklæring. Men yield
returnerer en generator.
Generator er en iterator, der genererer et element ad gangen. En stor liste med værdier vil optage meget hukommelse. Generatorer er nyttige i denne situation, da den kun genererer én værdi ad gangen i stedet for at lagre alle værdierne i hukommelsen. F.eks. vil
>>> g = (2**x for x in range(100))
skabe en generator g, som genererer potenser af 2 op til tallet to hævet til potensen 99. Vi kan generere tallene ved hjælp af next()
-funktionen som vist nedenfor.
>>> next(g)1>>> next(g)2>>> next(g)4>>> next(g)8>>> next(g)16
Og så videre… Denne type generator returneres af yield
-anvisningen fra en funktion. Her er et eksempel.
def generator(): for i in range(6): yield i*ig = generator()for i in g: print(i)
Output