Lådor i RAM & datatyper
Vad händer i datorn när du skapar en variabel?
Din dator innehåller en minneskrets som kallas RAM (Random Access Memory) Datorns arbetsminne, ett minneskrets där alla aktiva variabler och program lagras under körning. Flyktigt: innehållet försvinner när strömmen bryts. . Tänk dig det som ett gigantiskt rutnät av miljarder små lådor, var och en med en unik adress. Varje låda kan hålla en liten elektrisk laddning: laddad betyder 1, oladdad 0.
När du skriver namn = "Kalle" ber Python om lediga lådor i rutnätet, lägger i bytes som representerar K-a-l-l-e och klistrar etiketten namn på platsen. Nästan som magi, men det är fysik. Drar du ut strömsladden försvinner laddningarna, och med dem allt som bodde i lådorna.
Bilden är förenklad, men den bär tre saker som stämmer. Varje låda har en adress som Python håller reda på åt dig. Ett värde kan behöva flera lådor, en per tecken i det här fallet, medan etiketten namn är ett enda namn på hela raden. Och lådorna däremellan står tomma tills något annat behöver dem.
Det är vad som menas med att RAM är flyktigt. Variabel Ett namn kopplat till en adress i RAM. Python sköter adresserna, du väljer namnet. existerar bara medan programmet körs.
Det du lär dig nu är den första av de tre förmågor som bär hela kursen: att spara. De andra två, att välja och att upprepa, kommer längre fram.
Variabler, prova direkt
Kör koden nedan och se vad som skrivs ut. Ändra sedan värdena till dina egna och kör igen.
Redo.
type() är en inbyggd funktion som berättar vilken datatyp en variabel har. Du kommer använda den mycket när du felsöker.
De fyra grundläggande datatyperna
En låda i RAM vet inte om den håller text, ett tal eller ett logiskt värde, den håller bara ettor och nollor. Det är Datatyp Talar om för Python hur ett värde ska tolkas. De fyra grundläggande: str (text), int (heltal), float (decimaltal), bool (sant/falskt). som talar om hur Python ska tolka bitmönstret.
En sträng (str) är text. Strängar skrivs inom citationstecken, enkla eller dubbla spelar ingen roll.
namn = "Elvis"
stad = 'Stockholm' Ett heltal (int) är ett helt tal utan decimaler, utan citationstecken.
ålder = 25
antal_liv = 3 Ett decimaltal (float) har en decimalpunkt. Python använder punkt, inte komma.
pris = 14.90
hastighet = 98.6 Ett booleskt värde (bool) är antingen True eller False, exakt så stavat, med stor begynnelsebokstav.
är_inloggad = True
spelet_slut = False true och false med små bokstäver ger NameError, Python tolkar dem som okända variabelnamn, inte booleska värden.
Citationstecknens kritiska roll
25 och "25" ser identiska ut för ögat. För Python är de fundamentalt olika. Testa:
Redo.
Den första utskriften fungerar: a är ett heltal och 35 skrivs ut. Den andra kraschar: b är en sträng, och + mellan en sträng och ett heltal är inte tillåtet.
Titta noga på utskriften: c syns aldrig. När Python stöter på ett fel avbryts programmet omedelbart, ingen kod efter felet körs. Ta bort raden print(b + 10) och kör igen, först då får sista raden chansen.
Namnge dina lådor
Python låter dig döpa variabler nästan hur du vill. Men bland Pythonprogrammerare finns en stark Konvention En överenskommelse som ingen tvingar dig till men som alla ändå följer. Python stoppar dig inte om du bryter mot en konvention, men den som läser din kod förväntar sig att du håller dig till den. , alltså en överenskommelse som ingen tvingar dig till men som alla ändå följer: snake_case Pythons namnkonvention för variabler: gemener med understreck. Definierad i PEP 8. , gemener med understreck som separator.
antal_spelare = 4
spelare_namn = "Kalle"
är_spelet_aktivt = True Bra variabelnamn beskriver vad lådan innehåller. x säger ingenting. poäng säger allt. Och ibland räcker inte ens namnet: hastighet = 98.6 är tydligt först när alla vet om det är km/h eller mph.
Det låter petigt, men oklarhet om vad ett värde betyder har fällt större saker än en skoluppgift. 1999 brann NASA:s rymdsond Mars Climate Orbiter upp: ett team räknade i newton, ett annat i amerikanska pound-force. Samma tal betydde olika saker i två delar av systemet, och sonden kom in mot Mars på fel höjd.
En variabel kan uppdatera sig själv
En variabel behöver inte ha samma värde hela programkörningen. En rad med ett likhetstecken är en Tilldelning En rad med ett likhetstecken, som ger variabeln ett nytt värde. Körs raden om, till exempel inuti en loop, sätts värdet om varje gång. För en lista betyder det en helt ny lista, till skillnad från en metod som .append() som ändrar den lista variabeln redan har. , och den kan köras om med ett nytt värde som räknats fram ur det gamla. Etiketten sitter kvar, innehållet i lådan byts ut.
Redo.
poäng += 10 är kortform för poäng = poäng + 10. Det kallas Utökad tilldelning +=, -=, *= med flera. Kortform för variabel = variabel + värde. poäng += 10 är identiskt med poäng = poäng + 10. och finns för alla räknesätt: -=, *=, /=. Du kommer använda += mycket när du räknar saker i loopar.
Uppgift: Från sandlådan till VS Code
Nu tar du det du testat i sandlådan och gör det i VS Code.
Skapa filen
variabler.py. Skriv fyra variabler i korrektsnake_case, enstr, enint, enfloatoch enbool. Välj värden som beskriver dig.Skriv ut varje variabels värde med
print(). Lägg till en rad per variabel som också skriver ut dess typ medtype(). Totalt åtta rader utskrift.Lägg till tre rader som testar
+=: skapapoäng = 0, öka med+=två gånger och skriv ut poängen efter varje ökning.Kör filen i terminalen med
python variabler.pyoch kontrollera utskriften.Gå till Source Control-panelen i VS Code. Stagea
variabler.py, skriv ett commit-meddelande och pusha.
Vad händer om
Skriv print(True + True) och kör. Vad skriver Python ut, och varför är det svaret?
Motivera & reflektera
Välj en av dina variabler och motivera i en kommentar varför du valde just den datatypen. Vad hade gått fel med en annan typ?