Les variables

Les variables sont des emplacements mémoires associés à un nom.

Pour créer une variable, on procède à une affectation.

In [1]:
i = 4 + 1

Comme vous le voyez, Python ne répond rien. En arrière-plan :

  1. Python a d'abord évalué le terme de droite ;
  2. puis il a réservé une emplacement en mémoire dans laquelle il a mis cette valeur ;
  3. ensuite il a réservé le nom qui est à gauche pour la nouvelle variable ;
  4. enfin il a associé le nom et la case.

La variable est ensuite accessible directement par son nom.

In [2]:
from math import sqrt
In [3]:
sqrt(i)/10**6
Out[3]:
2.23606797749979e-06
In [4]:
i**27900
Out[4]:
18328248939155682926785427744790821366143467407698232028641097457621571267834715894774900840211866831687181853956170859094978627550456129948677473974355691006388660146928100872214688897959242996837595239342913399281872858690522285438300111203196434787632158431491744059900698687869571773060744386587734701655420928815234747193524564549198069787580890818037061674481437032501369761821770918831076503236948293384628067505004217003061507915160642125606909221947218560051133845082349757983575973155661599910751731755720783958624085171930784409464367101096559006934581389884577919983761841321117189212004145628964212098287011753025489951098920186765207089404710535275694983874419483461137808157452421800344662652602176365006170047652340870539682916822783209653041571336894099761027223753707141893799975265668756789743539983910830055704597677146587549495192682428661677034847961473916851683833433020356443736498089437742347491779667893560545039126803778171300306764951724651901758597343846995036704411077762388045625890692355050989792549153878644210204674505963640935763163640703509352495547761679198800141968160082316712671197675683188769842166636481437855827957752846604510767128325254874240361692865574717507355509728525981269565942493260215122967218091955437115672954153969918937407795699418931969086259109175395358800202226027822124525578469673654009214541604085633669534870354240310518024722772596636293322864778122675695156262378239167454723771907811621911689277892383198660519595147995107977022830111846472533693282761370488642957801907343189840620304709481187728304369638134177876970982547615524468471420577676573794938959952324698482861611032064632397843997106953376506006364077233580499185423908466917686784447486851388963287738531318199064627915082231490801096446203570586368505087929179663312224025489112223091173412725281503622367640678096061582750444053589166826019203989833183786116395922119021067006213541213488453257798286029601544660360865529730201973507471470010880428270926263504688313874551361549422730254229400532753882493938461453485414314902126126455441637755849197028964137741206787191566666754257910417151373103272601603527112427662931656326866671705340196179677209672457255807525940085228329248651451111292664376487918308799479198153736367973307612790364806919686449482109549362390740197215665682427802529906141844131678031268556621634005707118107571362667320599275356200661237392777807880819942511657617923339652211247095118834298544144011363885395951038082964163338786210703387804241649639229963714424602905918596239091058486418584373251208033865660854251721930937486891498085772850966244707460609879245290477427958877838263163433256740501822091444915127985412861918691743392960659718440899928945114431462638367501446011849434424137618925594556298717318860670961401577591779413493484657905956882619178163005097070715205066571228088252689147244368387740544741686777766496741697039325489132262751059997068928214072208185082904787648505072248618556030529422083247225593729446264554957770882451584202386666559990618381542643141331007607494175367638371423767210368126329015313723317820006862587905901443020839813639541652808103918050972423388891817570037814423955736833640172693364418993435438669565518054787893168645721405850553991433437357905743967160809358760676664521412109862069344845447687584394609633427790192743350016809804448523104182681800960488894849368448082198342742526920807445192081250651600980548323060613388892432243891794165402775639092138627720542267659240279540917578579999523670646562776092939500350686414183354253716093501654842631860114359266073069493953217431075769140455994854223524545207088881843317049217579928234637396522587382234479131896996449783827311751605722563300734556771150968079871080499162885952969685419663115875986734615341346759164084023884475970350892630252408200492364050996770272233101322770023041899397582789107093912909511174779100003723269514110499722037765940328896952281469236185232692867785756082154341506585565702227137628945882047875563879892332473699961842976137503743096991840590001940328734718487543958257086536395348796425708096027838177272206107952547452315532339902242599077640405474332168498415542066471245958563164371634024056877166206337267663820040959727524523946369938935423426319045949082965389729337719509214961056797079976106904460006596318590726650846937438620311946623324506862686780642787399036211558374843010189111396505686761589382184567751816566391509923798135263621548021636649799255977363629531152329956784839742713498176422732976378051462397347999999011908061104785205053600928844796335627613058930491599345642856663102447715048628847850169421870207954628944426652426517582524250332657108335638143356279119087787943452905336452755857960989293542628766908665998427013466868456750068870570293926629233476288963341806362083628038856085245849365170155335864087986757339192621406046656632474132041944117859871582782454453650961346378241025504484446744307541425919566061159157142516430135018048432542783090871923304012559593961666350318173119985562029815084449299111733459356255483249451997557506670436672976114515007438611480709214700588561557727311313474972808314905048968600498136059480478270484871352737582640074749900508094179438370773319937194060641031228604910103463708730335641256821328388770162268657133846167549331851385021098371852271085997153238050426776024176746346598415112656249661424369346333745445209756492947006966254422090124709441595334915670819896601824774499733948532663215154363064989816402388387446541076915251985108527927822158271642699373517854033237482152934588995847505577563215318003907859378701442870262416588360910487398272928675910575547815489966097022241832835552824669903903135755526160849472154024619746318253697476680397736715195831745433527509868932000160107901608140840710717690758322317329451879704474499478603626007756184746056798018462066436026488805291955174318951460867614962824337917659335231482085694637886220923564118776222374189191432191062771867188624674193023955812078422357716179118886522252138317921349479434076634289053888689951058735078084633134429777255314996593014951576429971335448246411993954965637161950425673912371086529091091492948118930832367522402390334949569995683043457280600094913232738188808023231601949808235868197970455773783803916585000041373094592491709739637951199777687175810119947150898705231777487290050869992463952769755095661987982032367386195934043174261600638570025014298276041488495522172671398609372239797363394570398470393119477164729379305633792504530349540433708612140039354638851185586385792789494951414804504558523350837596893576545657126448889712237722819476882187214363340381699999452927174695789720018011351446727908694059071359053181173500621493107434564740586371708564599308847564476480757466731047461828183728612899460821346046475562146407633617304671350597459368052843661331172068249865950200942083874047923883054829632386945199241268562915937909579995862169676364113253428748697960133122031653963598718275337997126144655746029913422655218360552623306577557683586596040322071817104674654984081989181391267438933136474990874666759132407005301414589113278847802673106866584418293938412428069271019649055322290259262982980985616396876463161713432315126003878569963967706115560638505028016915451458420923359517755644172505133226392917370041812513548789704731592736481822342385463433203385228334354834791903483482709610733449747423001850083382301413338039676749133692080640175185915350775905689073099954047761390090028140248663177105996323627322672145566177128285354137812338808203795710287151723885892079534684081654362502964691264096088675432180905954920514450954466350415525312228908727350164478225574671638435252459338291446022898228014107890547551563348152797206691567653477466751602439282051599047675496538236282016330465573158708131123867332636700754949740304579668631013526751737246134844335143958581734970296812289429814495541552959169202160170902640754089853312823297868534530343045799038706462704289484667304435981125989242265753171225147133952942199373731340486034344663921285153251263735306841309673170682721375591637479336051709718123313733059943863096186071781919093938021805283215252541757636062070939643262209670157719960486049025522222552845232697855081974562421950520767713806642774185428911704136595923686661750822221192490668088490244378214788293287310745528367020177236185205889400728191439865885209934011489497011927014449146598110738848186847176465296429612674743012574973111583259806638183697929012157319398178452534176272590943651391413019187173875027723631267406920784082790683055862104273315319776561030883951744249255716246256105294480919386367423565110088757960652120592376479411274196132494505140746024306861225166882739281463796282027972200541750200905780897568975592858290728557137798424151229215818633914724463752341005855033099826030391926156680640856026078936372240445358153974147422281638750137334931005989095603845011176391289892468906819359133520600389345291477032879625653898144110798231603017305147532773818150601206731537692580577488674439088827746583109137469690344809317479850106615200738457849434896653767912912335995557872395610526172316524093129067227027035399516739046425935246995704999049849071256805087429974814894013274266419731978427052305753071759938882455559895708054769060516050929545602988055246995917855708911034333342975045327848980598612519335821450811360809985276424761424579003934823619247108030825832167436576357282903386526218915873396425075195672715041934537299035240783135626144449180980545639287940932039138933497657365381062354733867814734778054000974404216331168131243539482244727966444535629849749319690088613671487963638889506634375705383741678878255053614392577103155351607796326246887499194339361218250563700934113713968220562216572306810031914694027095068654692931718576278702526603055098947481537276899769979748089684533307280245131265657752997551738787270324660713444168922353404250429233232193204589023342882320011066424301287487259708069657376527431579296672714426597840381271845151638235635178901834941570275559815168856955363418246528743963624634512466893056631235630592754907772165050259670748591156196835579527293402149662473231555686043224196784942789310251852243905541618606030260951200208684419319799410326481851746434416909130616368553608631689145446374179648984707440097654286035809151854396942094034050354961199122195769820312078880275736940313434355845549868482386519123129753701441098322473588187183972249818831657556168674530578769827442663662743593317488982219740578878750281534150226329896027471835383506807233156624763364695549965776374215474397311770402710141099880632818195631789872651369515519212365488626232999783445580501864601069526877346057048168062204570445169028614814710268795567167175187296643911355002547527778424338838037790710131767750582113202183383525022944500519847901704973852529161872751627999367188275426426091874651850081509447183367511877520018846259576155727803241657699264980776339282810476351985757438563229912492697210473732102801526951872870278776099186626853515113436489647630459398279737094850991763457023476395252496413083363001111438432137097236127598541743979079292317781117242440190419828368380933685126440597020905081837831893338666745100619771840609265507014400186759917744731312989910587326993874149701212063297515832561910694244597078396376170654029841818204185714218503240002192742704710823305267457657226010534242084514477066267915913285503472719940317698517258464152204945610621144633139194126219204172555993637609335110550468511211747014904051260608143630369726035188659779509671591891392172585898876038221812246661639220862970797709766849437970511386672658960543463534506517566678147653157783491666476404198024776594648155125734380366194964398342715617809077027828872582542557329685295577601587666952891842671652405569880987456119796179045674603095404607528201762914177983005573111701470564527603059037037548249190967052024198255897940144164650957941000495213429733557161823587682891481974206058170066018205198627003914445165617308797842398897614022212740315648622084352574150961596632936428517907859571177133416580453715300866831591734248073259755839015372675689069483725392709099356329200136723098780203478735809684235125271299191619387691896952553883093854487661058775550489432913007563971346967463756708830337987356705510473610325040313965565672789722218809046706158341400546187638340908298603408810156746280755644128552715339503730228510349346448045433635694050959783767095642748190171767779025128672381770709695921812855539831457253783152531417592273925835134533944575652992450730625342753431426737981723841745338266385027873190717976645014154435549195989609517084212140336326842302731174511101353366123780747726113988369125868545812603372432622018844420249650834625901398072317570840240882474488202795828360088743793516076475522246907291835079167464209872897611145754453653201979320881128222800163362838483792270278450367772045743630698124540138112004494322179073082068014902604693928433976631914839919146443128356245069874369345272667328375152325944512755147771472397064659901952423065503682934245876982789149002313645474114721682841950241626031326822150707065146243316386717419503412353497499167907647539378203389917030168007737159233196762907401484278167027740550482343406765422101891678620695432193056316289455213756083973175627473845828714904523334909692833181028927349788243867355402075551303889337949965287774185241353922254585828077132333468089713444927881216781737852802145598967499523127008190372737734859292919176017175238442333913293608042891472930824068665074526500259337594343902036337568325447353698636814554766570610762935506282912011339726555180892511637763973977308730643160240438120155002234832498368371538994867487030406711611528254449994491559426362263569010475639571775684732875429451578516750971549565791611805884913654422363675436004571446996042868521488286541661772189669083047630022610469249418143421461537396209437622746690949477740293474864515091100339687740568720754773672106794882491162294136706005227072818969880417861163641136216712108653234694925888024398876551904072037415318591870137327181915994894473853097564901941893861831438817659747101099452903300583745701363798912668634731708642886123304962690591665921937964561092097492117017031472313979016763852524417584113472574060109310153134151830817054301743057864844597089519616740032507285877462005055482413820703378108549326405015851670320909316139636270017907405305182064805597836830753513747772702039300474660233261226273585101654578263857928011524884394767742984409344552465699949774339111677939172324136148136776124949879570029231643966257556036213739751695973665085573477349252687594200225324308173659528170440845361370082640431975854303317701618051885770676387299143307417702331754101948635996006308985088215139198401334313447435912244070669860292075868555205315818029386949335665243611195846651117160272413937585386620983299318029446479950572980588603586667877394920743179128935753444102829207871907950577934878570012678109520046884208500424824315098925775954629674992038070955292777808182556580982557986713045867618309797643989836884701516959029585968009098918358935843692999036162645547375120450343831623961702131379116015944947279310447737524787068197595388138179416018663731617645272862516014398618609731936879143553338984795835270877485683088054783359818729034234657141804236387159682598092651730029739988219671503078348972933231134199704672064694924454591186845494057809278083942340889321698654302167354610333530441821300448909712533281710856719331538038011096342502522280599259696212571103224054847710173620595065919845623294144488351222785969433116400271769192412755951408830427910881534867892674376806220880198569420145263679027163459377251496292694210295234749879935030361919495451792164093251637823294143930120326804651362757773455126283398278382767354307414013591881291659753556599781416859533590770345108941101110820179346396099791396879670711180053023364755641895442014251718503439572514023722032380361190058460141730067701448116585357693474232372421055029275013388209914176212853664316641334476109298764707086276053390312563133805001234849810715473711073887996341728656590866894997723928048074827136534317456376413444974779214648588020091051117733002805372069414839173007636968247264483311256868349876986126893047867934883396657342463731267090763480739377886915504097927036911168167347208701750840411850148618620880581543360664909131471803766187090722635897348450418774328801870696050844613416978597200891054577612480428392623375775043987464666405609453009667910143922346390770105224528007706635038201714059530383228269530155308029677343563817301667847683665362165577275128351073698238650250563322891990660961536618093575369540482697489886295070761179082330500084284052685172126776524910602749114609348988575999269548861619691152105521603638790416861418064773338688130550515761633336745446641558030912081210691522785458022256868596165413332110552858639650063372131631219733248897756957904815398525294269745655644309651557898943118605370438000715334467978563519231424650932108611571564934758618527534848421841043652586871841073973626378335978421406419634329491646830917055018481989847809017326305045828282702762328650428233662750582247392768322118010191909853695551891107319356515176425272941902500804912844002362974779390650437900280688567180810224036410404837441973761948892409313277718950334187498420963693224584158012279099890435940503457792196132848692135019568860791428252514706605125401614068603901260747151199596619339981856730468342699136114037908175157026610967658237392974182591325834284128276989805450385961598283789200827960665580080518415956496476468859794178624123821193739610185722184091230479266096666798671721312365858493358693025361235612766114632506732778898260925303821889608934598606256767651265692505291808806750990868548747194088537414013475725890376937090201613727214632550418182040678609174211955992200056171639824330341068731665416120303547689255134884913580360272077494588707137839351001015379114513968791895441931965854975174798477731093244444430029691047805487467566333269887767320836725205560051675443965790457893066857603881004938819553643852122126713635509827224849799224305313587673105589552193042411383937949623534272089395864478328643390123301152806244739475168659076503692891834446028757920982592496901849235109929646481334443864222716589473967866659559309342267432649818771034367054642540698251694095947901565545339171777922884393963592038914743594153366913047163266384042001643816933056505274296726561966528304925980788625141858762412218420120224418276178074014584128024349859164004347711033755376560433853103965946287878965453130244300545169632211746022794835714522473678633169006312663292683192642686288890526897284663785624934398036518156581446135664914601255952668499208471345574977822593824171470867871018872183270685131959995130916985831875151452248997627401228369777100146525568848138552324346419446432757745666981262279340485820311384955429131929674554347464477038607347883782701731022718972550381121964734868895849080823535184480177758135761640392483896624701118306537092419593735872512842343076291912752867007525073757386189359516174421541430807717334046004824742637225362038354117903677888665751955116358597100521198414410199012070298788457236992195047309834118873490895890380394439723888503853181323441139024827274079973516791930946739881290482539689026155820490618912227338252040549138911773585647324580349959433078765869140625

On peut ensuite réaffecter une nouvelle valeur à i.

In [5]:
i = 8
In [6]:
i
Out[6]:
8
In [7]:
i = i + 5
In [8]:
i
Out[8]:
13

La dernière ligne est très intéressante : on constate que Python a d'abord utilisé l'ancienne valeur de ipour évaluer le terme de droite, et qu'ensuite il a affecté cette nouvelle valeur à la variable.

Retenez qu'en général il y a d'abord évaluation avant exécution.

Exercices

À votre avis, que va-t-il se passer ?

In [9]:
j
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-9-ddd5752b5fe6> in <module>()
----> 1 j

NameError: name 'j' is not defined

On dispose de deux variables a et b. Comment intervertir leurs contenus ?

In [10]:
a = -10
In [11]:
b = 12

Par exemple :

In [12]:
c = a
a = b
b = c
In [13]:
a,b
Out[13]:
(12, -10)

Mais aussi

In [14]:
a,b = b,a

Type

Les variables ne sont pas gérées et manipulées de la même manière selon leur type. Il existe plusieurs types en Python, que nous verrons au fur et à mesure de l'année. Les plus importants sont

  • Les entiers, en abrégé int;
  • Les réels, en abrégé float (on parle parfois de nombres en virgule flottante, d'où ce nom) ;
  • Les chaînes de caractères, en abrégé str(pour l'anglais "string") ;
  • Les booléens, en abrégé bool.
In [15]:
t = 4
In [16]:
type(t)
Out[16]:
int
In [17]:
s = "Bonjour tout le monde !"
In [18]:
type(s)
Out[18]:
str
In [19]:
x = 2.4
In [20]:
type(x)
Out[20]:
float
In [21]:
x = float(5)
In [22]:
type(x)
Out[22]:
float
In [23]:
x
Out[23]:
5.0
In [24]:
int("3")
Out[24]:
3
In [25]:
int("3.14")
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-25-88f7c0ad76f6> in <module>()
----> 1 int("3.14")

ValueError: invalid literal for int() with base 10: '3.14'

Opérations

Chaque type de variable a ses opérations propres. Voici quelques exemples.

Sur les entiers et les flottants, toutes les opérations arithmétiques sont possibles. Elles renvoient des entiers ou des flottants selon le contexte.

In [26]:
i = 2
In [27]:
i = i/3
In [28]:
i
Out[28]:
0.6666666666666666
In [29]:
i = 4
In [30]:
i = i *(-1)   # i*-1 renvoie une erreur
In [31]:
i
Out[31]:
-4
In [32]:
i = i**4   # Puissance
In [33]:
i
Out[33]:
256

Les opérations les plus complexes, comme les fonctions mathématiques usuelles ne sont pas implémentées par défaut dans Python. On les trouve dans une librairie annexe qu'il faut explicitement importer.

In [34]:
import math as m
In [35]:
m.sin(i)
Out[35]:
-0.9992080341070627

Il est important de connaître le type d'une variable, car les opérations agissent différement selon le type de la variable.

In [36]:
s = 40
s + s
Out[36]:
80
In [37]:
s = '40'
s+s
Out[37]:
'4040'

Conversion

Il est possible de convertir une variable d'un type dans un autre. Le plus fréquente consiste à passer d'un entier à une chaine de caractère et vice-versa.

In [38]:
s = "3"
a = int(s)
a
Out[38]:
3
In [39]:
a = 5
str(a) * 5
Out[39]:
'55555'