dive into python3

495
!"#$%&' ()* +  "# %, - .& + / . 01 / 2 & / .% 3 $  4 % "3. 5 6  !"#$% %&'" (&)*) () +,-) '#.    / 0'#1 234567 8&) 9,33 ()*)*  !"  # "  !" 0 %"& 7/.8- 9&2&9 6 !                       !            #):)*    

Upload: rohit-kondekar

Post on 06-Mar-2016

254 views

Category:

Documents


0 download

DESCRIPTION

python

TRANSCRIPT

  • CHAPTER -1. WHATS NEW IN DIVE INTO PYTHON3

    Isnt this where we came in?

    Pink Floyd, The Wall

    -1.1. A.K.A. THE MINUS LEVEL

    A K> RHN :EK>:=R : ,RMAHG IKH@K:FF>K B= RHN K>:= MA> HKB@BG:E \ BO> %GMH ,RMAHG] B= RHN ;NR BMHG I:I>K %? LH MA:GDL K> RHN K>:=R MH M:D> MA> IENG@> BGMH ,RMAHG Y %? LH K>:= HG %? GHG> H? MA:MBL MKN> RHN^= ;> ;>MM>K H?? LM:KMBG@ :M MA> ;>@BGGBG@

    ,RMAHG L PBMA : L:KG BM (HO> BM 1L> BM ,HKMBG@ H=> MH ,RMAHG PBMA UP BL :K>?>K>G H? :EE MA> MABG@L MA:M MA> UP MHHE LRGM:QL BM^L : @HH= LM:KMBG@ IHBGM MH E>:KG :;HNM : EHM H? MA> LRGM:Q L BG ,RMAHG QSJOU BL GHP :?NGLG^M PHKD & /MN=R ,HKMBG@ DIBSEFU MH ,RMAHG =HGML FR NEMBF:M>ER LN??HKM MH IHKM : GHGMKBOB:EEB;K:KR ?KHF ,RMAHG MH ,RMAHG %M F:R A>EI RHN BM F:R GHM 0A>K>^L : ?:BKER LM>>I E>:KGBG@ LBGRHN G>>= MH DBG= H? NG=>KLM:G= MA> EB;K:KR ?BKLM LH RHN KLM:G= PAR BM ;KHD> :G= AHP % ?BQ>= BM EHM H? MA> ;K>:D:@> GM>KL :KHNG= LMKBG@L /I>:DBG@ H? PABP 3A>K> MH LM:KM ,RMAHG A:= \LMKBG@L] :G= \1GB LMKBG@L] ,RMAHG A:L \;RM>L] :G=\LMKBG@L] 0A:M BL :EE LMKBG@L :K> GHP 1GB LMKBG@L :G= B? RHN P:GM MH =>:E PBMA : ;:@ H? ;RM>L RHN NL>MA> G>P CZUFT MRI> ,RMAHG PBEE never BFIEBMP>>G LMKBG@L :G= ;RM>L LH B? RHN^K> GHM LNK>PAB RHN A:O> :M :GR @BO>G FHF>GM RHNK PBEE :EFHLM KM:BGER ;K>:D .>:= MA> /MKBG@L K?HK FHK> =>M:BEL

    RM>L OL LMKBG@L L NI :@:BG :G= :@:BG MAKHN@AHNM MA> ;HHD

    www.princexml.comThis document was created with Prince, a great way of getting web content onto paper.

  • V %G "BE>L RHN^EE E>:KG MA> =B??>K>G ;>MP>>G K>:=BG@ ?BE>L BG \;BG:KR] :G= \M>QM] FH=> .>:=BG@ :G= PKBMBG@?BE>L BG M>QM FH=> K>JNBK>L :G FODPEJOH I:K:F>M>K /HF> M>QM ?BE> F>MAH=L MAH=L L %? RHNK :LLNF>L MA:M HG> ;RM> BM will ;K>:D HG FNEMB;RM>; />KOBL MA> IUUQMJC FH=NE> ?>ML A>:=>KL :G= =:M: HO>K $00, $00, A>:=>KL :K>K>MNKG>= :L LMKBG@L ;NM MA> $00, ;H=R BL K>MNKG>= :L ;RM>L

    V %G />KB:EBSBG@ ,RMAHG +;C>:KG PAR MA> QJDLMF FH=NE> BG ,RMAHG =>?BG>L : G>P =:M: ?HKF:M MA:MBL ;: H? ;RM>L :G= LMKBG@L ELH ,RMAHG LNIIHKMLL>KB:EBSBG@ H;C>O>G A:O> : CZUFT MRI> %^EE LAHP RHN AHP MH A: LMN=R IHKMBG@ DIBSEFU MH ,RMAHG BM^L CNLM : ;EHH=R F>LL H? ;RM>L :G= LMKBG@L >O>KRPA>K>

    !O>G B? RHN =HG^M :;HNM 1GB HA ;NM RHN PBEE RHN^EE P:GM MH K>:= :;HNM LMKBG@ ?HKF:MMBG@ BG ,RMAHG PABER =B??>K>GM ?KHF ,RMAHG

    %M>K:MHKL :K> >O>KRPA>K> BG ,RMAHG :G= % NG=>KLM:G= MA>F : EHM ;>MM>K MA:G % =B= ?BO> R>:KL :@H PA>G %PKHM> \ BO> %GMH ,RMAHG] 5HN G>>= MH NG=>KLM:G= MA>F MHH ;> EHML H? ?NG= MH K>MNKGEBLML BG ,RMAHG PBEE GHP K>MNKG BM>K:MHKL BG ,RMAHG M : FBGBFNF RHN LAHNE= K>:= MA> L> %M>K:MHKL K :G= MA> L> =O:G= %M>K:MHKL K

    R IHINE:K K>JN>LM %^O> :==>= :G :II>G=BQ HG /I>MAH= *:F>L PAB MA> ,RMAHG =HE] K ;NM PBMA FHK> LG:KD

    3A>G % P:L PKBMBG@ \ BO> %GMH ,RMAHG] :EE H? MA> :O:BE:;E> 4)( EB;K:KB>L LN= 0A>G "K>=KBD (NG=A PKHM>!E>F>GM0K>> PABLG^M LN ,RMAHG @H=L PBL>ER BG= !E>F>GM0K>> BGMH MA> LM:G=:K=EB;K:KR :G= GHP BM ?HKFL MA> ;:LBL ?HK FR G>P 4)( K 0A> HE= P:RL H? I:KLBG@ 4)( :K> LMBEE :KHNG=;NM RHN LAHNE= :OHB= MA>F ;> MA>R LNP BG ,RMAHG [ GHM BG MA> E:G@N:@> ;NM BG MA> >F>K@>G H? K>IHLBMHKB>LEBD> 0A> ,RMAHG ,: %G=>Q ,R,% ,RMAHG L PBMA NMBEBMB>L MH I: RHNK BG LM:G=:K= ?HKF:ML:G= =BLMKB;NM> MAHL> I:L HG ,R,% .>:= ,:L ?HK =>M:BEL

  • CHAPTER 0. INSTALLING PYTHON

    Tempora mutantur nos et mutamur in illis. (Times change, and we change with them.)

    ancient Roman proverb

    0.1. DIVING IN

    B >?HK> RHN >= MH BGLM:EE BM +K =H RHN0.2. WHICH PYTHON IS RIGHT FOR YOU?

    %? RHNK> NLBG@ :G :KO>K RHNK %/, F:R A:O> :EK>:=R BGLM:EE>= ,RMAHG %? RHN^K> KNGGBG@(BGNQ :M AHF> RHN F:R :EK>:=R A:O> ,RMAHG MHH )HLM IHINE:K #*1(BGNQ =BLMKB;NMBHGL PBMA,RMAHG BG MA> =>?:NEM BGLM:EE:MBHG : LF:EE ;NM @KHPBG@ GNF;>K H? =BLMKB;NMBHGL :ELH BG ,RMAHG ):KLBHG H? ,RMAHG ;NM :L H? MABL PKBMBG@ BM =H>L GHM BG ,RMAHG )BL GHM PBMA :GR O>KLBHG H? ,RMAHG NM =HG^M =>LI:BK 5HN K:MBG@ LRLM>F RHN A:O>

    0A> >:LB>LM P:R MH F BL ?KHF MA> +GRHN^K> :M : IKHFIM CNLM MRI> QZUIPO :EE EHP>K GH LI:L IK>LL &/5&3 :G= L>> PA:M

    A:II>GL +G FR AHF> (BGNQ LRLM>F ,RMAHG BL :EK>:=R BGLM:EE>= :G= MABL ML F> BGMH MA>Python interactive shell

    NBSL!BUMBOUJT_ QZUIPO

    1ZUIPOS+VM

    POMJOVY

    5ZQFIFMQDPQZSJHIUDSFEJUTPSMJDFOTFGPSNPSFJOGPSNBUJPO

    0RI> FYJU :G= IK>LL &/5&3 MH >QBM MA> ,RMAHG BGM>K: LA>EE

  • )R P>; AHLMBG@ IKHOB=>K :ELH KNGL (BGNQ :G= IKHOB=>L :KO>K =H>L GHM A:O>,RMAHG BGLM:EE>= HH

    NBSL!NBOHBOFTF_ QZUIPO

    CBTIQZUIPODPNNBOEOPUGPVOE

    /H ;: JN>LMBHG MA:M LM:KM>= MABL L> KNGL HGMA> K RHN :EK>:=R A:O>

    7.>:= HG ?HK 3BG=HPL BGLMKNK ,E:M?HKFL8

    0.3. INSTALLING ONMICROSOFTWINDOWS

    3BG=HPL L BG MPH :KL MA>L> =:RL ;BM :G= ;BM +? MA>K> :K> EHML H? =B??>K>GMversions H? 3BG=HPL [ 4, 2BLM: 3BG=HPL [ ;NM ,RMAHG KNGL HG :EE H? MA>F 0A> FHK> BFIHKM:GM=BLMBG GH B=>: PA:M :K RHN^K> KNGGBG@ BM^L IKH;:;ER ;BM

    2BLBM QZUIPOPSHEPXOMPBE :G= =HPGEH:= MA> :IIKHIKB:M> ,RMAHG 3BG=HPL BGLM:EE>K ?HK RHNK:K 5HNK MABG@ EBD> MABL

    V Python 3.1 Windows installer 3BG=HPL ;BG:KR [ =H>L GHM BG LHNKV Python 3.1 Windows AMD64 installer 3BG=HPL ) ;BG:KR [ =H>L GHM BG LHNK

    % =HG^M P:GM MH BG =BK>K> ;> FBGHK NI=:M>L H? ,RMAHG A:II>G :EE MA> MBF> :G=% =HG^M P:GM MH ;> K>LIHGLB;E> ?HK RHN FBLLBG@ BFIHKM:GM NI=:M>L 5HN LAHNE= :EP:RL BGLM:EE MA> FHLM K>GMO>KLBHG H? ,RMAHG Q NGE>LL RHN A:O> LHF> >LHM>KB< K>:LHG GHM MH

  • +G RHNK =HPGEH:= BL M> =HN;E>

    3BG=HPL PBEE IHI NI :L>KM LBG RHN^K> :;HNM MH ;>KNGGBG@ >Q> 0A> H??BK BL =B@BM:EER LB@G>= ;R MA> ,RMAHG/H?MP:K> "HNG=:MBHG MA> GHGIKH?BMKL>>L ,RMAHG=>O>EHIF>GM HG^M :K

    0A> ?BKLM JN>LMBHG MA> BGLM:EE>KPBEE :LD RHN BL PA>MA>K RHNP:GM MH BGLM:EE ,RMAHG ?HK :EENL>KL HK CNLM ?HK RHN 0A>=>?:NEM KL] PAB ;>LMLL RHN A:O> : @HH=K>:LHG MH HMA>KPBL>+G> IHLLB;E> K>:LHG PAR RHNPHNE= P:GM MH \BGLM:EE CNLM ?HKF>] BL MA:M RHN :K> BGLM:EEBG@,RMAHG HG RHNK :=FBGBLMK:MBO> KB@AML HG RHNK3BG=HPL : RHN BGLM:EEBG@ ,RMAHGPBMAHNM I>KFBLLBHG ?KHF RHNK M F> BG MKHN;E> A>K>

    EB /FYU ;NMMHG MH :

  • *>QM MA> BGLM:EE>K PBEE IKHFIMRHN MH : =>LMBG:MBHG=BK> =>?:NEM ?HK :EEO>KLBHGL H? ,RMAHG Q BL$=1ZUIPO= PABEE ?HK FHLM NL>KLNGE>LL RHN A:O> : LI>:LHG MH BM %? RHNF:BGM:BG : L>I:K:M> =KBO> E>MM>K?HK BGLM:EEBG@ :IIEB>F;>==>= MA> I:MAG:F> BG MA> ;HQ;>EHP 5HN :K> GHM EBFBM>= MHBGLM:EEBG@ ,RMAHG HG MA> $=KBO> RHN BG :GR ?HE=>K

    EB /FYU ;NMMHG MH :

  • 0A> G>QM I:@> EHHDL:EER(BD> F:GR BGLM:EE>KL RHN A:O>MA> HIMBHG GHM MH BGLM:EE >O>KRLBG@E> GM H? ,RMAHG %? =BLD LI: BL >LI>G=>= ;NM GHMK>JNBK>= 0ABL HIMBHG =H>LG^MK>JNBK> :GR =BLD LI: LHMA>K> BL EBMME> IHBGM BG>Q @K:IAB= ;R MA> ,RMAHG /A>EE PAB MAKHN@AHNM MABL ;HHD % LMKHG@ERK>G= D>>IBG@ MABL HIMBHG

    Documentation BGLM:EEL : A>EI ?BE> MA:M G=>= B? RHN :K> HG =B:ENI HK A:O> EBFBM>= %GM>KG>M : UPQZ LK BG MABL ;HHD .>JNBK>= B? RHN P:GMMH E>:KG :;HNM FB@K:MBG@ >QBLMBG@ ,RMAHG MH ,RMAHG %? RHN A:O> GH >QBLMBG@ ,RMAHG RHN ,RMAHG BGM>KIK>M>K BML>E? 3> PBEE GHM NL> BM BG MABL;HHD GHK A:O> % >O>K NL>= BM BG MA> H? IKH@K:FFBG@ BG ,RMAHG HFIE>M>ER HIMBHG:E

  • %? RHN^K> NGLNK> AHP FN BGLM:EE>K PBEE EBLM RHNK =KBO>E>MM>KL AHP FN HG >: :G= ?M :?M>K BGLM:EE:MBHG

    EB 0, ;NMMHG MH K>MNKGMH MA> \NLMHFBSBG@ ,RMAHG]I:@>

    %? RHN => MH >Q :GHIMBHG L>E> =KHI=HPG;NMMHG ;>?HK> MA> HIMBHG :G=L>E> ?>:MNK> PBEE ;>NG:O:BE:;E>] "HK >Q:FIE>>Q M>LM LNBM> PBEEL:O> RHN : PAHIIBG@ 'H? =BLD LI:

    EB /FYU ;NMMHG MH:

  • 0A> BGLM:EE>K PBEE G>LL:KR ?BE>L MH RHNK G=>LMBG:MBHG =BK>GL LH JNB> MBF>L MH >O>G @>M: L>GLAHM H? BM

    EB 'JOJTI ;NMMHG MH>QBM MA> BGLM:EE>K

  • %GRHNK

    4UBSU F>GN MA>K> LAHNE= ;> : G>P BM>F = 1ZUIPO 3BMABG MA:M MA>K> BL : IKH@K:F = % (! />E>F MH KNG MA> BGM>K: ,RMAHG /A>EE

    7/DBI MH NLBG@ MA> ,RMAHG /A>EE8

  • 0.4. INSTALLING ONMAC OS X

    EE FH=>KG ): MA> %GM>E FHLM 3BG=HPL ,L +E=>K ):= ,HP>K,>= MH NG=>KLM:G= MA> =B??>K>G ;> MA>K>^L CNLM HG> ):< ,RMAHG BGLM:EE>K ?HK :EE): ):< BGLM:EE>K %M PBEE ;> = LHF>MABG@ EBD> Python 3.1Mac Installer Disk Image :EMAHN@A MA> O>KLBHG GNF;>K F:R O:KR > LNK> MH =HPGEH:= O>KLBHG Q GHMQ

    5HNK ;KHPL>K LAHNE= :NMHF:MB =BLD BF:@> :G= HI>G : "BG=>K PBG=HP MH LAHP RHN MA>GML %? MABL =H>LG^M A:II>G RHN^EE G>>= MH ?BG= MA> =BLD BF:@> BG RHNK =HPGEH:=L ?HE=>K :G= =HN;E>= LHF>MABG@ EBD> QZUIPOENH 0A> =BLD BF:@> K H? M>QM?BE>L #VJMEUYU -JDFOTFUYU 3FBE.FUYU :G= MA> :K I: 1ZUIPONQLH

    HN;E>K I: MH E:NG ):< ,RMAHG BGLM:EE>K

  • 0A> ?BKLMI:@> H? MA>BGLM:EE>K@BO>L : ;KB>?=>LE? MA>GK>?>KL RHNMH MA>3FBE.FUYU

    ?BE> PAB:= =B=RHN ?HKFHK> =>M:BEL

    EB$POUJOVF

    ;NMMHG MH FHO> :EHG@

  • 0A> G>QMI:@> :JNBK>L):< +/ 4 HKE:M>K %? RHN:K> LMBEEKNGGBG@ )::EERNI@K:=>IIE> GHEHG@>K IKHOB=>L L>L ?HK RHNK HI>K:MBG@ LRLM>F :G= RHNK K BL IKH;:;ER :M KBLD B? RHN>O>K @H HGEBG> ELH RHN
  • (BD> :EE @HH=BGLM:EE>KLMA> ,RMAHGBGLM:EE>K=BLIE:RL MA>LH?MP:K>EBGL>:@K>>F>GM,RMAHG BLHI>GLHNK :G=BML EBGL> BL:IIKHO>= ;RMA> +I>G/HNK%GBMB:MBO>,RMAHG A:LA:= :GNF;>K H? HPG>KL :G= LIHGLHKL MAKHN@AHNM BML ABLMHKR >: LH?MP:K>EBGL> NM MA> >G= K>LNEM BL MABL ,RMAHG BL HI>G LHNK :G= RHN F:R NL> BM HG :GR IE:M?HKF ?HK :GRINKIHL> PBMAHNM ?>> HK H;EB@:MBHG H? K>
  • N> MHJNBKDL BG MA>LM:G=:K=IIE>BGLM:EE>K?K:F>PHKDRHN FNLM\:@K>>] MHMA> LH?MP:K>EBGL> BGHK=>K MHM>MA>BGLM:EE:MBHG/BG ,RMAHGBL HI>GLHNK RHN:K> K>:EER\:@K>>BG@] MA:M MA> EBGL> BL @K:GMBG@ RHN :==BMBHG:E KB@AML K:MA>K MA:G M:DBG@ MA>F :P:R

    EB "HSFF ;NMMHG MH

  • 0A> G>QML>G:EEHPL RHNMH RHNK BGLM:EEEH ;NM=N> MHEBFBM:MBHGL H?MA> BGLM:EE>KBM =H>L GHM>G?HK MABL%G MKNMA %A:O> G>O>KA:= MA> G>>= MH MA> BGLM:EE EH
  • %? RHN :NLMHF%GLM:EE MA>BGLM:EE>K PBEEIK>L>GM RHNPBMA MA>?HEEHPBG@ EBLMH? ?>:MNK>L

    Python

    Framework 0ABL BL MA> @NML H? ,RMAHG :G= BL ;HMA L>E>= :G= =BL:;E>= ;> BM FNLM ;> BGLM:EE>= GUI Applications BGL % (! MA> @K:IABEE PAB MAKHN@AHNM MABL ;HHD %

    LMKHG@ER K>G= D>>IBG@ MABL HIMBHG L>E>= UNIX command-line tools BGL MA> QZUIPO :IIEBG= D>>IBG@

    MABL HIMBHG MHH Python Documentation G=>= B? RHN :K>

    HG =B:ENI HK A:O> EBFBM>= %GM>KG>M :K MH NI=:M> RHNK LA>EE IKH?BE> NL>= BG 5FSNJOBMBQQ MH >GLNK> MA:M

    MABL O>KLBHG H? ,RMAHG BL HG MA> L>:KEE 5HN IKH;:;ER =HG^M G>>= MH MABL Fix system Python LAHNE= GHM ;> = %M M>EEL RHNK ):< MH NL> ,RMAHG :L MA> =>?:NEM ,RMAHG ?HK :EE

    L O>KR ;:= LBG FHLM H? MAHL> LPKBMM>G ?HK ,RMAHG :G= MA>R PHNE= ?:BE MH KNG IKHI>KER NG=>K ,RMAHG

    EB *OTUBMM ;NMMHG MH

  • > BMBGLM:EELLRLM>FPB=>?K:F>PHKDL:G= ;BG:KB>LBG VTSMPDBMCJOMA> BGLM:EE>KPBEE :LD RHN?HK :G

    :=FBGBLMK:MBO> I:LLPHK= 0A>K> BL GH P:R MH BGLM:EE ):< ,RMAHG PBMAHNM :=FBGBLMK:MHK IKBOBE>@>L

    EB 0, ;NMMHG MH ;>@BG MA> BGLM:EE:MBHG

  • 0A> BGLM:EE>KPBEE =BLIE:R :IKH@K>LLF>M>K PABE>BM BGLM:EEL MA>?>:MNK>LRHN^O>L>E>=

    LLNFBG@ :EEP>GM P>EEMA> BGLM:EE>KPBEE @BO> RHN: ;B@ @K>>GEE RHNMA:M MA>BGLM:EE:MBHGM>=LN

  • EB $MPTF ;NMMHG MH >QBM MA> BGLM:EE>K

    LLNFBG@ RHN =B=G^M MA>BGLM:EE EHPER BGLM:EE>= ?BE>L BG MA>1ZUIPO ?HE=>K PBMABG RHNK"QQMJDBUJPOT ?HE=>K 0A>FHLM BFIHKM:GM IB> BL % (! MA> @K:IABEE

    HN;E>

  • 0A> ,RMAHG /A>EE BL PA>K>RHN PBEE LI>G= FHLM H?RHNK MBF> >QIEHKBG@,RMAHG !Q:FIE>LMAKHN@AHNM MABL ;HHD PBEE:LLNF> MA:M RHN ,RMAHG/A>EE

    7/DBI MH NLBG@ MA> ,RMAHG/A>EE8

    0.5. INSTALLING ON UBUNTU LINUX

    )H=>KG (BGNQ =BLMKB;NMBHGL :K> ;:= ;R O:LM K>IHLBMHKB>L H? IK>= :IIEB:=R MH BGLM:EE 0A>>Q:M:BEL O:KR ;R =BLMKB;NMBHG %G 1;NGMN (BGNQ MA> >:LB>LM P:R MH BGLM:EE ,RMAHG BL MAKHN@A MA> "EE3FNPWF :IIEB

  • 3A>G RHN ?BKLM E:NG "EE3FNPWF :IIEBL>E>= :IIEBK>GM @HKB>L /HF> :K> :EK>:=R BGLM:EE>= FHLM :K> GHM > MA> K>IHLBMHKR K :IIEBK> :K> =B??>K>GM ?BEM>KL RHN > LF:EE I:KML H? MA> K>IHLBMHKR 0A> =>?:NEM ?BEM>K BL\:GHGB= :IIEB MHM:E GNF;>K H? :IIEBH??B= ;R :GHGB L :G= F:BGM:BGL 1;NGMN (BGNQ

  • ,RMAHG BL GHM F:BGM:BG>= ;R :GHGB ?BKLM LM>I BL MH =KHI =HPG MABL ?BEM>K F>GN :G= L>E>G /HNK :IIEB PB=>G>= MA> ?BEM>K MH BG :EE HI>G LHNK :IIEB MA> />:K=B:M>ER :?M>KMA> ?BEM>K F>GN MH L>:K
  • *HP MA> EBLM H? :IIEB F:M @HBG@ MH ?BKLM BL 1ZUIPO W

    0ABL ,RMAHG BGM>KIK>M>K BML>E?

    0A> L>=B:M>ER :;HO> *%-& VTJOH 1ZUIPO

    0ABL BL : @K:IABEE MA:M RHN PBEE NL> MAKHN@AHNM MABL ;HHD

    ?M>K RHN^O> = MAHL> MPH I:L

  • 0A>I:F:G:@>KPBEE :LDRHN MH
  • +G MA> I:L :K>=HPGEH:=>= MA> I:F:G:@>K PBEE :NMHF:MB@BGBGLM:EEBG@ MA>F

    %? :EE P>GM P>EEMA> I:F:G:@>K PBEEK> LN= "KHFA>K> RHN I: F:G:@>K

    5HN E:NG ,RMAHG /A>EE ;R @HBG@ MH RHNK "QQMJDBUJPOT F>GN MA>G MA> 1SPHSBNNJOHLN;F>GN :G= L>E>

  • 0A>

    ,RMAHG /A>EE BL PA>K> RHN PBEE LI>G= FHLM H? RHNK MBF> >QIEHKBG@ ,RMAHG !Q:FIE>L MAKHN@AHNM MABL ;HHDPBEE :LLNF> MA:M RHN ,RMAHG /A>EE

    7/DBI MH NLBG@ MA> ,RMAHG /A>EE8

  • 0.6. INSTALLING ON OTHER PLATFORMS

    ,RMAHG BL :O:BE:;E> HG : GNF;>K H? =B??>K>GM IE:M?HKFL %G I:KMB BG OBKMN:EER >O>KR (BGNQ/ :G= /HE:KBL;:L>= =BLMKB;NMBHG "HK >Q:FIE> .>=$:M (BGNQ NL>L MA> ZVN I: F:G:@>K "K>>/ A:LBML IHKML :G= I:L :KEE RHN PA>MA>K : ,RMAHG I: BL :O:BE:;E> :G= B? LH AHP MH BGLM:EE BM

    0.7. USING THE PYTHON SHELL

    0A> ,RMAHG /A>EE BL PA>K> RHN QIEHK> ,RMAHG LRGM:Q @>M BGM>K: A>EI HG ;N@LAHKM IKH@K:FL 0A> @K:IABEE G:F>= % (! :ELH GM M>QM >=BMHK MA:M LNIIHKML,RMAHG LRGM:Q @K:M>L PBMA MA> ,RMAHG /A>EE %? RHN =HG^M :EK>:=R A:O> : ?:OHKBM> M>QM >=BMHKRHN LAHNE= @BO> % (! : MKR

    "BKLM MABG@L ?BKLM 0A> ,RMAHG /A>EE BML>E? BL :G :F:SBG@ BGM>K: IE:R@KHNG= 0AKHN@AHNM MABL ;HHD RHN^EE L>>>Q:FIE>L EBD> MABL

    0A> MAK>> :G@E> ;K:ML =>GHM> MA> ,RMAHG /A>EE IKHFIM HG^M MRI> MA:M I:KM 0A:M^L CNLM MH E>M RHNDGHP MA:M MABL >Q:FIE> BL F>:GM MH ;> ?HEEHP>= BG MA> ,RMAHG /A>EE

    BL MA> I:KM RHN MRI> 5HN :GR O:EB= ,RMAHG >QIK>LLBHG HK ,RMAHG /A>EE

    HG^M ;> LAR BM PHG^M ;BM> 0A> PHKLM MA:M PBEE A:II>G BL RHN^EE @>M :G >KKHK F>LL:@> HFF:G=L @>M>Q>= BFF>=B:M>ER HG RHN IK>LL &/5&3 >QIK>LLBHGL @>M >O:EN:M>= BFF>=B:M>ER :G= MA> ,RMAHG /A>EE

    IKBGML HNM MA> K>LNEM

    BL MA> K>LNEM H? >O:EN:MBG@ MABL >QIK>LLBHG L BM A:II>GL BL : O:EB= ,RMAHG >QIK>LLBHG 0A> K>LNEM H?

    BL

  • (>M^L MKR :GHMA>K HG>

    QSJOU)FMMPXPSME

    )FMMPXPSME

    ,K>MMR LBFIE> GH NM MA>K>^L EHML FHK> RHN ,RMAHG LA>EE %? RHN >O>K @>M LMNF;>K : F;>K MA> IKHI>K :K@NF>GML MH I:LL : KM:BG ?NGK: A>EI BG MA> ,RMAHG /A>EE &NLM MRI> IFMQ :G= IK>LL &/5&3

    IFMQ

    5ZQFIFMQGPSJOUFSBDUJWFIFMQPSIFMQPCKFDUGPSIFMQBCPVUPCKFDU

    0A>K> :K> MPH FH=>L H? A>EI 5HN M A>EI :;HNM : LBG@E> H;C>MNKGL RHN MH MA> ,RMAHG /A>EE IKHFIM 5HN GM>K help mode PA>K> BGLM>:= H?>O:EN:MBG@ ,RMAHG >QIK>LLBHGL RHN CNLM MRI> D>RPHK=L HK L :G= BM PBEE IKBGM HNM PA:M>O>K BMDGHPL :;HNM MA:M GM>K MA> BGM>K: A>EI FH=> MRI> IFMQ :G= IK>LL &/5&3

  • IFMQ

    8FMDPNFUP1ZUIPO5IJTJTUIFPOMJOFIFMQVUJMJUZ

    *GUIJTJTZPVSGJSTUUJNFVTJOH1ZUIPOZPVTIPVMEEFGJOJUFMZDIFDLPVU

    UIFUVUPSJBMPOUIF*OUFSOFUBUIUUQEPDTQZUIPOPSHUVUPSJBM

    &OUFSUIFOBNFPGBOZNPEVMFLFZXPSEPSUPQJDUPHFUIFMQPOXSJUJOH

    1ZUIPOQSPHSBNTBOEVTJOH1ZUIPONPEVMFT5PRVJUUIJTIFMQVUJMJUZBOE

    SFUVSOUPUIFJOUFSQSFUFSKVTUUZQFRVJU

    5PHFUBMJTUPGBWBJMBCMFNPEVMFTLFZXPSETPSUPQJDTUZQFNPEVMFT

    LFZXPSETPSUPQJDT&BDINPEVMFBMTPDPNFTXJUIBPOFMJOFTVNNBSZ

    PGXIBUJUEPFTUPMJTUUIFNPEVMFTXIPTFTVNNBSJFTDPOUBJOBHJWFOXPSE

    TVDIBTTQBNUZQFNPEVMFTTQBN

    IFMQ

    *HM> AHP MA> IKHFIM L ?KHF MH IFMQ 0ABL K>FBG=L RHN MA:M RHN^K> BG MA> BGM>K: A>EIFH=> *HP RHN GM>K :GR D>RPHK= G:F> ?NG [ IK>MMR FNKLM:G=L [ :G= K>:= =HGM:MBHG HG BM

  • IFMQ QSJOU )FMQPOCVJMUJOGVODUJPOQSJOUJONPEVMFCVJMUJOT

    QSJOU

    QSJOUWBMVFTFQFOE=OGJMFTZTTUEPVU

    1SJOUTUIFWBMVFTUPBTUSFBNPSUPTZTTUEPVUCZEFGBVMU

    0QUJPOBMLFZXPSEBSHVNFOUT

    GJMFBGJMFMJLFPCKFDUTUSFBNEFGBVMUTUPUIFDVSSFOUTZTTUEPVU

    TFQTUSJOHJOTFSUFECFUXFFOWBMVFTEFGBVMUBTQBDF

    FOETUSJOHBQQFOEFEBGUFSUIFMBTUWBMVFEFGBVMUBOFXMJOF

    IFMQ 1BQBZB8IJQ OP1ZUIPOEPDVNFOUBUJPOGPVOEGPS1BQBZB8IJQ

    IFMQ RVJU

    :PVBSFOPXMFBWJOHIFMQBOESFUVSOJOHUPUIF1ZUIPOJOUFSQSFUFS

    *GZPVXBOUUPBTLGPSIFMQPOBQBSUJDVMBSPCKFDUEJSFDUMZGSPNUIF

    JOUFSQSFUFSZPVDBOUZQFIFMQPCKFDU&YFDVUJOHIFMQTUSJOH

    IBTUIFTBNFFGGFDUBTUZQJOHBQBSUJDVMBSTUSJOHBUUIFIFMQQSPNQU

    0H @>M =HGM:MBHG HG MA> QSJOU ?NG QSJOU :G= IK>LL &/5&3 0A> BGM>K: A>EI FH=>

    PBEE =BLIE:R LHF>MABG@ :DBG MH : F:G I:@> MA> ?NG : ;KB>? LRGHILBL MA> ?NGGML :G=MA>BK =>?:NEM O:EN>L :G= LH HG %? MA> =HGM:MBHG L>>FL HI:JN> MH RHN =HG^M I:GB< 5HN^EE E>:KG FHK>:;HNM :EE MA>L> G>QM ?>P KL

    +? MA> BGM>K: A>EI FH=> =H>LG^M DGHP >O>KRMABG@ %? RHN MRI> LHF>MABG@ MA:M BLG^M : ,RMAHG ?NGK ;NBEMBG D>RPHK= MA> BGM>K: A>EI FH=> PBEE CNLM LAKN@ BML OBKMN:ELAHNE=>KL

    0H JNBM MA> BGM>K: A>EI FH=> MRI> RVJU :G= IK>LL &/5&3

    0A> IKHFIM L ;: E>?M MA> BGM>K: A>EI FH=> :G= K>MNKG>= MH MA>,RMAHG /A>EE

  • % (! MA> @K:IABEE :ELH BGL : ,RMAHG:P:K> M>QM >=BMHK

    0.8. PYTHON EDITORS AND IDES

    % (! BL GHM MA> HGER @:F> BG MHPG PA>G BM L MH PKBMBG@ IKH@K:FL BG ,RMAHG 3ABE> BM^L NL>?NE MH @>MLM:KM>= PBMA E>:KGBG@ MA> E:G@N:@> BML>E? F:GR =>O>EHI>KL IK>?>K HMA>K M>QM >=BMHKL HK %GM>@K:M>= >O>EHIF>GM !GOBKHGF>GML % !L % PHG^M K MA>F A>K> ;NM MA> ,RMAHG >=BMHKL MA:M KL : PB=> K:G@> H? LNIIHKM>= IE:M?HKFL :G= LH?MP:K> EBGL>L

    5HN FB@AM :ELH P:GM MH EBLM H? ,RMAHG:P:K> % !L :EMAHN@A ?>P H? MA>F LNIIHKM ,RMAHG R>M+G> MA:M =H>L BL ,R >O : IEN@BG ?HK ! MA:M MNKGL ! BGMH : ?NEE?E>=@>= ,RMAHG % ! HMA !:G= ,R >O :K> G LHNK

    +G MA> KK> BL /M:M>^L 'HFH=H % ! %M A:L I>KNL>K EBGLBG@ ;NM LMN=>GML M: =BL> MBF>EBFBM>= MKB:E O>KLBHG BL :O:BE:;E>

    %^O> ;>>G IKH@K:FFBG@ BG ,RMAHG ?HK GBG> R>:KL :G= % >=BM FR ,RMAHG IKH@K:FL BG #*1 !F:;N@MA>F BG MA> ,RMAHG /A>EE 0A>K>^L GH KB@AM HK PKHG@ P:R MH =>O>EHI BG ,RMAHG "BG= : P:RMA:M PHKDL ?HK RHN

  • CHAPTER 1. YOUR FIRST PYTHON PROGRAM

    Dont bury your burden in saintly silence. You have a problem? Great. Rejoice, dive in, and investigate.

    Ven. Henepola Gunaratana

    1.1. DIVING IN

    C HGO>GMBHG =BL MA:M % LAHNE= ;HK> RHN PBMA MA> ?NG=:F>GM:E ;NBE=BG@ ;EHMABG@ NL>?NE (>M^L LDBI :EE MA:M $>K> BL : M> PHKDBG@ ,RMAHGIKH@K:F %M IKH;:;ER F:D>L :;LHENM>ER GH L>GL> MH RHN HG^M PHKKR :;HNM MA:M ;> RHN^K> @HBG@ MH=BLL> ;R EBG> NM K>:= MAKHN@A BM ?BKLM :G= L>> PA:M B? :GRMABG@ RHN H? BM

  • 46''*9&4\

    ^

    EFGBQQSPYJNBUF@TJ[FTJ[FB@LJMPCZUF@JT@@CZUFT5SVF

    $POWFSUBGJMFTJ[FUPIVNBOSFBEBCMFGPSN

    ,FZXPSEBSHVNFOUT

    TJ[FGJMFTJ[FJOCZUFT

    B@LJMPCZUF@JT@@CZUFTJG5SVFEFGBVMU

    VTFNVMUJQMFTPG

    JG'BMTFVTFNVMUJQMFTPG

    3FUVSOTTUSJOH

    JGTJ[F

    SBJTF7BMVF&SSPSOVNCFSNVTUCFOPOOFHBUJWF

    NVMUJQMFJGB@LJMPCZUF@JT@@CZUFTFMTF

    GPSTVGGJYJO46''*9&4

    TJ[FNVMUJQMF

    JGTJ[FNVMUJQMF

    SFUVSO\G^\^GPSNBUTJ[FTVGGJY

    SBJTF7BMVF&SSPSOVNCFSUPPMBSHF

    JG@@OBNF@@@@NBJO@@

    QSJOUBQQSPYJNBUF@TJ[F'BMTF

    QSJOUBQQSPYJNBUF@TJ[F

    *HP E>M^L KNG MABL IKH@K:F HG MA> +G 3BG=HPL BM PBEE EHHD LHF>MABG@ EBD> MABL

    D=IPNF=EJWFJOUPQZUIPO=FYBNQMFT D=QZUIPO=QZUIPOFYFIVNBOTJ[FQZ

    5#

    (J#

  • +G ):< +/ 4 HK (BGNQ BM PHNE= EHHD LHF>MABG@ EBD> MABL

    ZPV!MPDBMIPTU_EJWFJOUPQZUIPOFYBNQMFT QZUIPOIVNBOTJ[FQZ

    5#

    (J#

    3A:M CNLM A:II>G>= 5HN >Q>= RHNK ?BKLM ,RMAHG IKH@K:F 5HN = MA> ,RMAHG BGM>KIK>M>K HG MA> :G= RHN I:LL>= MA> G:F> H? MA> L= ,RMAHG MH >Q> 0A> L?BG>L :LBG@E> ?NG BQQSPYJNBUF@TJ[F ?NGQ: LBS> BG ;RM>L :G= MMR] ;NM :IIKHQBF:M> LBS> 5HN^O> IKH;:;ER L>>G MABL BG 3BG=HPL !QIEHK>K HK MA> ):< +/ 4 "BG=>KHK *:NMBENL HK HEIABG HK 0ANG:K HG (BGNQ %? RHN =BLIE:R : ?HE=>K H? =HGML :L : FNEMB PBMA MA> =HGM B =HGM G:F> MA> LBS> MRI> E:LMFH=B?B>= =:M> :G= LH HG%? MA> ?HE=>K ?BE> G:F>= 50%0 RHNK ?BE> F:G:@>K PHG^M =BLIE:R 50%0 CZUFT BM^EE L:RLHF>MABG@ EBD> 50%0 ,# BGLM>:= 0A:M^L PA:M MA> BQQSPYJNBUF@TJ[F ?NGL

    (HHD :M MA> ;HMMHF H? MA> L> MPH L>:K> ?NGGM:DBG@ MA> K>MNKG O:EN> :G= I:LLBG@ BM LMK:B@AM HG MH MA> QSJOU ?NG QSJOU ?NGO>K L>> :G >QIEB :GRPA>K> 0A>K> :K> EHML H? ;NBEMBG ?NG ?NG L>I:K:M>= BGMH modules ,:MB>G @K:LLAHII>K

    /H PAR =H>L KNGGBG@ MA> L @BO> RHN MA> L:F> HNMINM >O>KR MBF> 3>^EE @>M MHMA:M "BKLM E>M^L EHHD :M MA:M BQQSPYJNBUF@TJ[F ?NGK E:G@N:@>L ;NM BM =H>L GHM A:O> L>I:K:M> A>:=>K ?BE>L EBD>

    HKJOUFSGBDFJNQMFNFOUBUJPO L> ,:LG RHN G>>= : ?NG BM EBD> MABL

    EFGBQQSPYJNBUF@TJ[FTJ[FB@LJMPCZUF@JT@@CZUFT5SVF

  • When you

    need a

    function,

    just declare

    it.

    0A> D>RPHK= EFG LM:KML MA> ?NG= ;R MA> ?NG ?HEEHP>= ;R MA>:K@NF>GML BG I:K>GMA>L>L )NEMBIE> :K@NF>GML :K>L>I:K:M>= PBMA MA:M MA> ?NGLG^M =>?BG> : K>MNKG=:M:MRI> ,RMAHG ?NG =:M:MRI>H? MA>BK K>MNKG O:EN> MA>R =HG^M >O>G LI>MA>K HKGHM MA>R K>MNKG : O:EN> %G ?:O>KR ,RMAHG ?NGMNKGL : O:EN> B? MA> ?NGO>K >Q>L : SFUVSOLM:M>F>GM BM PBEE K>MNKG MA:M O:EN> HMA>KPBL> BM PBEEK>MNKG /POF MA> ,RMAHG GNEE O:EN>

    %G LHF> E:G@N:@>L ?NGMNKG :O:EN> LM:KM PBMA GVODUJPO :G= LN;KHNMBG>LMA:M =H GHM K>MNKG : O:EN> LM:KM PBMA TVC0A>K> :K> GH LN;KHNMBG>L BG ,RMAHG !O>KRMABG@ BL : ?NG >O>G B? BM^L /POF :G= :EE ?NG BQQSPYJNBUF@TJ[F ?NGL MA> MPH :K@NF>GML [ TJ[F :G=B@LJMPCZUF@JT@@CZUFT [ ;NM G>BMA>K :K@NF>GM LI>L : =:M:MRI> %G ,RMAHG O:KB:;E>L :K> G>O>K>QIEB= ,RMAHG ?B@NK>L HNM PA:M MRI> : O:KB:;E> BL :G= D>>IL MK:KG:EER

    %G &:O: :G= HMA>K LM:MB= E:G@N:@>L RHN FNLM LI> =:M:MRI> H? MA>?NGMNKG O:EN> :G= >:O>K >QIEB =:M:MRI> H? :GRMABG@ :L>= HG PA:M O:EN> RHN :LLB@G ,RMAHG D>>IL MK: =:M:MRI> BGM>KG:EER

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

  • 1.2.1. OPTIONAL AND NAMED ARGUMENTS

    ,RMAHG :EEHPL ?NGGML MH A:O> =>?:NEM O:EN>L B? MA> ?NG :K@NF>GM MA>:K@NF>GM @>ML BML =>?:NEM O:EN> "NKMA>KFHK> :K@NF>GML LI>= BG :GR HK=>K ;R NLBG@ G:F>=:K@NF>GML

    (>M^L M:D> :GHMA>K EHHD :M MA:M BQQSPYJNBUF@TJ[F ?NG L>GM B@LJMPCZUF@JT@@CZUFT LI>L : =>?:NEM O:EN> H? 5SVF 0ABL F>:GL MA>:K@NF>GM BL optional RHN ;HMMHF H? MA> LQIEB= 'BMTF :L MA> L>GM

    0ABL BQQSPYJNBUF@TJ[F ?NG :K@NF>GM NM MA:M^L +' ;> MA> L>GM BL HIMBHG:E /BG MA> K =H>LG^M LI> L>GM =>?:NEML MH 5SVF :L =>?BG>= ;RMA> ?NG

  • GSPNIVNBOTJ[FJNQPSUBQQSPYJNBUF@TJ[F

    BQQSPYJNBUF@TJ[FB@LJMPCZUF@JT@@CZUFT'BMTF ,#

    BQQSPYJNBUF@TJ[FTJ[FB@LJMPCZUF@JT@@CZUFT'BMTF ,#

    BQQSPYJNBUF@TJ[FB@LJMPCZUF@JT@@CZUFT'BMTFTJ[F ,#

    BQQSPYJNBUF@TJ[FB@LJMPCZUF@JT@@CZUFT'BMTF 'JMFTUEJOMJOF

    4ZOUBY&SSPSOPOLFZXPSEBSHBGUFSLFZXPSEBSH

    BQQSPYJNBUF@TJ[FTJ[F'BMTF 'JMFTUEJOMJOF

    4ZOUBY&SSPSOPOLFZXPSEBSHBGUFSLFZXPSEBSH

    0ABL BQQSPYJNBUF@TJ[F ?NG ?BKLM :K@NF>GM TJ[F :G= 'BMTF ?HK MA>:K@NF>GM G:F>= B@LJMPCZUF@JT@@CZUFT 0A:M A:II>GL MH ;> MA> L>GM ;NM =H>LG^MF:MM>K :L RHN^EE L>> BG : FBGNM>

    0ABL BQQSPYJNBUF@TJ[F ?NG :K@NF>GM G:F>= TJ[F :G= 'BMTF ?HK MA>:K@NF>GM G:F>= B@LJMPCZUF@JT@@CZUFT 0A>L> G:F>= :K@NF>GML A:II>G MH ;> BG MA> L:F> HK=>K :LMA> :K@NF>GML :K> EBLM>= BG MA> ?NGLG^M F:MM>K >BMA>K

    0ABL BQQSPYJNBUF@TJ[F ?NG P:L F>:GM ?HK MA>B@LJMPCZUF@JT@@CZUFT :K@NF>GM NM ,RMAHG =H>LG^M PHKD MA:M P:R L LHHG :L RHN A:O> : G:F>=:K@NF>GM :EE :K@NF>GML MH MA> KB@AM H? MA:M G>>= MH ;> G:F>= :K@NF>GML MHH

    Rohit Kondekar

  • Every

    function

    1.3. WRITING READABLE CODE

    % PHG^M ;HK> RHN PBMA : EHG@ ?BG@>KP:@@BG@ LI>> BFIHKM:G H? =HGMBG@ RHNK &NLMDGHP MA:M BL PKBMM>G HG ;NM K>:= F:GR MBF>L :G= MA> FHLM BFIHKM:GM :N=B>G ?HK RHNK BLRHNKL>E? LBQ FHGMAL :?M>K PKBMBG@ BM i.e. :?M>K RHN^O> ?HK@HMM>G >O>KRMABG@ ;NM G>>= MH ?BQ LHF>MABG@ ,RMAHGF:D>L BM >:LR MH PKBM> K>:=:;E> LH M:D> :=O:GM:@> H? BM 5HN^EE MA:GD F> BG LBQ FHGMAL

    1.3.1. DOCUMENTATION STRINGS

    5HN

  • deserves a

    decent

    docstring.

    0KBIE> JNHM>L :K> :ELH :G >:LR P:R MH =>?BG>: LMKBG@ PBMA ;HMA LBG@E> :G= =HN;E> JNHM>LEBD> RR BG ,>KE

    !O>KRMABG@ ;>MP>>G MA> MKBIE> JNHM>L BL MA> ?NGQBLML FNLM ;> MA> ?BKLM MABG@ =>?BG>= BG: ?NG G>QM EBG> :?M>K MA> ?NG= MH @BO> RHNK?NG A>:K= MABL BG >O>KR IKH@K:FFBG@ >O>K M:D>G ;NM ,RMAHG @BO>L RHN :G :==>= BGGMBO> MA>EPDTUSJOH BL :O:BE:;E> :M KNGMBF> :L :G :MMKB;NM> H? MA> ?NG MA> EPDTUSJOH MH IKHOB=> QML>GLBMBO> =HGM:MBHG LHMA:M PA>G RHN MRI> : ?NG BML EPDTUSJOH :II>:KL :L : MHHEMBI 0ABL BG=B;ER A>EI?NE ;NM BM^L HGER :L @HH= :L MA> EPDTUSJOHL RHN PKBM>

    1.4. THE JNQPSU SEARCH PATH

    >?HK> MABL @H>L :GR ?NKMA>K % P:GM MH ;KB>?ER F>GMBHG MA> EB;K:KR L>:KO>K:E IE:LPA>G RHN MKR MH BFIHKM : FH=NE> /I>L =>?BG>= BG TZTQBUI 0ABL BL CNLM: EBLM :G= RHN :LBER OB>P BM HK FH=B?R BM PBMA LM:G=:K= EBLM F>MAH=L 5HN^EE E>:KG FHK> :;HNM EBLML BG*:MBO> :M:MRI>L

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

  • JNQPSUTZT

    TZTQBUI

    %FIHKMBG@ MA> TZT FH=NE> F:D>L :EE H? BML ?NGL :O:BE:;E> TZTQBUI BL : EBLM H? =BK>L MA:M MA> GM L>:KK>GM

    =>I>G=BG@ HG RHNK HI>K:MBG@ LRLM>F PA:M O>KLBHG H? ,RMAHG RHN^K> KNGGBG@ :G= PA>K> BM P:L HKB@BG:EERBGLM:EE>= ,RMAHG PBEE EHHD MAKHN@A MA>L> =BK>L BG MABL HK=>K ?HK : QZ ?BE> PAHL> G:F> F:ML PA:MRHN^K> MKRBG@ MH BFIHKM

    = MA> MKNMA BL FHK> GHM :EE FH=NE>L :K> LMHK>= :L QZ ?BE>L/HF> :K> built-in modules MA>R :K> := KB@AM BGMH ,RMAHG BML>E? NBEMBG FH=NE>L ;>A:O> CNLM EBD>K>@NE:K FH=NE>L ;NM MA>BK ,RMAHG LHNK BL GHM :O:BE:;E> ;> MA>R :K> GHM PKBMM>G BG ,RMAHG (BD>,RMAHG BML>E? MA>L> ;NBEMBG FH=NE>L :K> PKBMM>G BG

    5HN P =BK>:K ;R :==BG@ MA> =BK> MH TZTQBUI:G= MA>G ,RMAHG PBEE EHHD BG MA:M =BK>EE PA>G>O>K RHN MKR MH BFIHKM : FH=NE> 0A> >??>

  • R NLBG@ TZTQBUIJOTFSU OFX@QBUI RHN BGL>KM>= : G>P =BK> ?BKLM BM>F H? MA> TZTQBUIEBLM :G= MA>K>?HK> :M MA> ;>@BGGBG@ H? ,RMAHG^L L>:KKLBHG H? : I:KMBO>KLBHG MABL >GLNK>L MA:M RHNK FH=NE>L PBEE ;> ?HNG= :G= NL>= BGLM>:= H? MA> FH=NE>L MA:M PBMA,RMAHG

    1.5. EVERYTHING IS AN OBJECT

    %G RHN FBLL>= BM % CNLM L:B= MA:M ,RMAHG ?NG :MMKB;NM>L :G= MA:M MAHL> :MMKB;NM>L :K> :O:BE:;E>:M KNGMBF> ?NG >O>KRMABG@ >EL> BG ,RMAHG BL :G H;C> BGM>K: ,RMAHG LA>EE :G= ?HEEHP :EHG@

    JNQPSUIVNBOTJ[F

    QSJOUIVNBOTJ[FBQQSPYJNBUF@TJ[F5SVF

    ,J#

    QSJOUIVNBOTJ[FBQQSPYJNBUF@TJ[F@@EPD@@ $POWFSUBGJMFTJ[FUPIVNBOSFBEBCMFGPSN

    ,FZXPSEBSHVNFOUT

    TJ[FGJMFTJ[FJOCZUFT

    B@LJMPCZUF@JT@@CZUFTJG5SVFEFGBVMU

    VTFNVMUJQMFTPG

    JG'BMTFVTFNVMUJQMFTPG

    3FUVSOTTUSJOH

    0A> ?BKLM EBG> BFIHKML MA> IVNBOTJ[F IKH@K:F :L : FH=NE> [ : K:ERHK ?KHF : E:K@>K ,RMAHG IKH@K:F +G RHN BFIHKM : FH=NE> RHN ?>K>G :GR H? BML IN;EB< ?NGL )H=NE>L

  • ,RMAHG BGM>K: LA>EE MHH 0ABL BL :G BFIHKM:GM > : EHM FHK> H? BM MAKHN@AHNM MABL;HHD

    3A>G RHN P:GM MH NL> ?NG?BG>= BG BFIHKM>= FH=NE>L RHN G>>= MH BG MA> FH=NE> G:F> /HRHN IVNBOTJ[FBQQSPYJNBUF@TJ[F %? RHN^O> NL>= L BG&:O: MABL LAHNE= ?>>E O:@N>ER ?:FBEB:K

    %GLM>:= H? ?NGQI>= ?HK HG> H? MA> ?NGL@@EPD@@

    JNQPSU BG ,RMAHG BL EBD> SFRVJSF BG ,>KE +G RHN JNQPSU : ,RMAHG FH=NE> RHN: RHN:O>KRMABG@ :MMKB;NM>L :G= F>MAH=L EE ?NG : ;NBEMBG :MMKB;NM> @@EPD@@ PABMNKGL MA> EPDTUSJOH =>?BG>= BG MA> ?NG TZT FH=NE> BL:G H;C> = QBUI G= LH ?HKMA

    /MBEE MABL =H>LG^M :GLP>K MA> FHK> ?NG=:F>GM:E JN>LMBHG PA:M BL :G H;C>K>GM IKH@K:FFBG@ E:G@N:@>L=>?BG> \H;C>K>GM P:RL %G LHF> BM F>:GL MA:M all H;C> :MMKB;NM>L :G= F>MAH=L BGHMA>KL BM F>:GL MA:M :EE H;C> LN; %G ,RMAHG MA> =>?BGBMBHG BL EHHL>K /HF> H;C>G>BMA>K :MMKB;NM>L GHK F>MAH=L but they could *HM :EE H;C> LN; NM >O>KRMABG@ BL :G H;C> L>GL> MA:M BM :LLB@G>= MH : O:KB:;E> HK I:LL>= :L :G :K@NF>GM MH : ?NG A>:K= MA> M>KF \?BKLMK IKH@K:FFBG@ QML %G ,RMAHG ?NGfirst-class objects 5HN K ?NGL :K> first-class objects5HN GMBK> FH=NE> :L :G :K@NF>GM MH : ?NGL :K> ?BKLM:M BM BG RHN FBLL>= BM MA> ?BKLM ?>P MBF>L everything in Python is anobject /MKBG@L :K> H;C> H;C>

  • 1.6. INDENTING CODE

    ,RMAHG ?NG GH >QIEB MA> ?NG HGER =>EBFBM>K BL : BG=>GM:MBHG H? MA> BML>E?

    EFGBQQSPYJNBUF@TJ[FTJ[FB@LJMPCZUF@JT@@CZUFT5SVF

    JGTJ[F

    SBJTF7BMVF&SSPSOVNCFSNVTUCFOPOOFHBUJWF

    NVMUJQMFJGB@LJMPCZUF@JT@@CZUFTFMTF

    GPSTVGGJYJO46''*9&4 TJ[FNVMUJQMF

    JGTJ[FNVMUJQMF

    SFUVSO\G^\^GPSNBUTJ[FTVGGJY

    SBJTF7BMVF&SSPSOVNCFSUPPMBSHF

    H=> ;EH =>?BG>= ;R MA>BK BG=>GM:MBHG R \ ;EH:G ?NGF>GML GPS EHHILXIJMF EHHIL :G= LH ?HKMA %G=>GMBG@ LM:KML : ;EHGMBG@ >G=L BM 0A>K> :K> GH >QIEBRPHK=L 0ABL F>:GL MA:M PABM>LI: BL LB@GB?B GM %G MABL >Q:FIE> MA>?NGGM>= ?HNK LI:L %M =H>LG^M G>>= MH ;> ?HNK LI:L BM CNLM G>>=L MH ;> GM 0A>?BKLM EBG> MA:M BL GHM BG=>GM>= F:KDL MA> >G= H? MA> ?NGF>GM BL ?HEEHP>= ;R : ;EH JG >QIK>LLBHG >O:EN:M>L MH MKN> MA> BG=>GM>=;EHQ>= HMA>KPBL> BM ?:EEL MH MA> FMTF ;EH MA> E:GMA>L>L :KHNG= MA>>QIK>LLBHG

    0ABL EBG> BL BGLB=> MA> JG ;EHF>GM PBEE K:BL> :G >QIMBHG H? MRI> 7BMVF&SSPS ;NMHGER B? TJ[F

    0ABL BL not MA> >G= H? MA> ?NGM>ER ;E:GD EBG>L =HG^M R MA> FHK>K>:=:;E> ;NM MA>R =HG^M KL 0A> ?NG G>QM EBG>

    Rohit Kondekar

  • 0A> GPS EHHI :ELH F:KDL MA> LM:KM H? : ;EH ;EHR:K> :EE BG=>GM>= MA> L:F> :FHNGM 0ABL GPS EHHI A:L MAK>> EBG>L H? BG BM 0A>K> BL GH HMA>K LI> ;EHGM :G= @>M HG PBMA RHNK EB?>

    ?M>K LHF> BGBMB:E IKHM>LML :G= L>O>K:E LGB=> :G:EH@B>L MH "HKMK:G RHN PBEE F:D> I>: PBMA MABL :G= LM:KML>>BG@ BML ;>G>?BML +G> F:CHK ;>G>?BM BL MA:M :EE ,RMAHG IKH@K:FL EHHD LBFBE:K LBG BG=>GM:MBHG BL : E:G@N:@>K>JNBK>F>GM :G= GHM : F:MM>K H? LMRE> 0ABL F:D>L BM >:LB>K MH K>:= :G= NG=>KLM:G= HMA>K I>HIE>^L ,RMAHG

    ,RMAHG NL>L K>MNKGL MH L>I:K:M> LM:M>F>GML :G= : GM:MBHG MHL>I:K:M> ;EH L>FBI:K:M> LM:M>F>GML :G= I:K:M> ;EH >O>KRPA>K> BG ,RMAHG 2BKMN:EER >O>KR FH=NE> BG MA> LM:G=:K= ,RMAHG EB;K:KR NL>L MA>F :G=,RMAHG BML>E? PBEE K:BL> MA>F BG : EHM H? =B??>K>GM MA>F K>I>:M>=ER MAKHN@AHNM MABL;HHD

    3A:M BL :G >QIMBHG 1LN:EER BM^L :G >KKHK :G BG=BMABG@ P>GM PKHG@ *HM :EE >QIMBHGL :K>>KKHKL ;NM G>O>K FBG= MA:M ?HK GHP /HF> IKH@K:FFBG@ E:G@N:@>L >G MA> NL> H? >KKHK K>MNKGL PABGL MA> NL> H? >QIMBHGL PABG :G >KKHK HEE BM IKBGML HNM LHF> =>M:BEL :;HNM MA> >QIMBHG :G= AHP BMA:II>G>= :G= MA:M^L MA:M 0ABL BL = :G unhandled >QIMBHG 3A>G MA> >QIMBHG P:L K:BL>= MA>K> P:LGH MH >QIEB:E PBMA BM LH BM ;N;;E>= BML P:R ;: MHI E>O>E H? MA> ,RMAHG/A>EE PAB =>;N@@BG@ BG?HKF:MBHG :G= LA>EE MA:ML GH ;B@ =>:E ;NM B? MA:MA:II>G>= PABE> RHNK : >GMBK> IKH@K:F PHNE= MH : L>L MA> >QIMBHG ):R;> MA:M^L PA:M RHN P:GM F:R;> BM BLG^M

    Rohit Kondekar

  • 1GEBD> &:O: ,RMAHG ?NG PABQIMBHGL MA>R FB@AM K:BL> %M^L NIMH RHN MH =>M>KFBG> PA:M IHLLB;E> >QIMBHGL RHN G>>= MH LG^M G>>= MH K>LNEM BG : M> IKH@K:F MBF>L :G >QIMBHG BL K>:EER ;> RHN A:O> : ;N@ BG RHNK EBD> : MA:M =H>LG^M>QBLM ;NM LHF>MBF>L :G >QIMBHG BL LHF>MABG@ RHN HI>GBG@ : ?BE> BM FB@AM GHM>QBLM %? RHN^K> BFIHKMBG@ : FH=NE> BM FB@AM GHM ;> BGLM:EE>= %? RHN^K> BM FB@AM ;>NG:O:BE:;E> HK RHN FB@AM GHM A:O> MA> GMB:EL MH : H? F:R K:BL> :G >QIMBHG RHN LAHNE= A:G=E> MA> >QIMBHG NLBG@ : USZFYDFQU ;EHL USZFYDFQU ;EH >QIMBHGL :G= MA> SBJTF LM:M>F>GM MH@>G>K:M> MA>F &:O: :G=

    NL> USZDBUDI ;EH >QIMBHGL :G= MA>UISPX LM:M>F>GM MH @>G>K:M> MA>F

    0A> BQQSPYJNBUF@TJ[F ?NGL >QIMBHGL BG MPH =B??>K>GM L B? MA> @BO>G TJ[F BL E:K@>K MA:GMA> ?NGLB@G>= MH A:G=E> HK B? BM^L E>LL MA:G S>KH

    JGTJ[F

    SBJTF7BMVF&SSPSOVNCFSNVTUCFOPOOFHBUJWF

    0A> LRGM:Q ?HK K:BLBG@ :G >QIMBHG BL LBFIE> >GHN@A 1L> MA> SBJTF LM:M>F>GM ?HEEHP>= ;R MA> >QIMBHGG:F> :G= :G HIMBHG:E ANF:GK>:=:;E> LMKBG@ ?HK =>;N@@BG@ INKIHL>L 0A> LRGM:Q BL K>FBGBLGM H? QIMBHGL :K> BFIE>F>GM>= :L L :G= MABL SBJTF LM:M>F>GM BL : 7BMVF&SSPS LMKBG@ OVNCFS NVTU CF OPOOFHBUJWF MH BML BGBMB:EBS:MBHGF>MAH= NM P>^K> @>MMBG@ :A>:= H? HNKL>EO>L

    5HN =HG^M G>>= MH A:G=E> :G >QIMBHG BG MA> ?NGL BM %? HG> ?NGLG^M A:G=E> BM MA> >QIMBHG BL I:LL>= MH MA> K A:G=E>= RHNKIKH@K:F PBEE

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

  • >G= H? MA:M @:BG F:R;> MA:M^L PA:M RHN P:GM BM =>I>G=L HG PA:M RHNK IKH@K:F=H>L

    1.7.1. CATCHING IMPORT ERRORS

    +G> H? ,RMAHG^L ;NBEMBG >QIMBHGL BL *NQPSU&SSPS PAB= PA>G RHN MKR MH BFIHKM : FH=NE> :G=?:BE 0ABL G ?HK : O:KB>MR H? K>:LHGL ;NM MA> LBFIE>LM BL PA>G MA> FH=NE> =H>LG^M >QBLM BG RHNKBFIHKM L>:K:MNK>L BG RHNK IKH@K:F "HK >Q:FIE> MA>DIBSEFU EB;K:KR IKHOB=>L GM>KA:IL RHNK IKH@K:F P:GML MH NL> MABL EB;K:KRif it exists ;NM @K:?NEER B? MA> NL>K A:LG^M BGLM:EE>= BM 5HN G H? MA> DIBSEFU FH=NE> PBMA : LBFIE> JG LM:M>F>GM

    JGDIBSEFU

    EPTPNFUIJOH

    FMTF

    DPOUJOVFBOZXBZ

    GHMA>K H? MA> *NQPSU&SSPS >QIMBHG BL PA>G MPH FH=NE>L BFIE>F>GM : BL FHK> =>LBK:;E> MA:G MA> HMA>K ):R;> BM^L ?:LM>K HK BM NL>L E>LL F>FHKR 5HN FH=NE> ;NM ?:EE ;:K>GM FH=NE> B? MA> ?BKLM BFIHKM ?:BEL "HK >Q:FIE> MA> 4)( K M:EDL :;HNMMPH FH=NE>L MA:M BFIE>F>GM : &MFNFOU5SFF ,% 0A> ?BKLM MYNM BL : MABK=I:KMRFH=NE> MA:M RHN G>>= MH =HPGEH:= :G= BGLM:EE RHNKL>E? 0A> L>K ;NMBL I:KM H? MA> ,RMAHG LM:G=:K= EB;K:KR

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

    Rohit KondekarHow try except can be used for importing modules.

  • USZ

    GSPNMYNMJNQPSUFUSFF

    FYDFQU*NQPSU&SSPS

    JNQPSUYNMFUSFF&MFNFOU5SFFBTFUSFF

    R MA> >G= H? MABL USZFYDFQU ;EH BFIHKM>= some FH=NE> :G= G:F>= BM FUSFF /BG ;HMAFH=NE>L BFIE>F>GM : K>LM H? RHNK =H>LG^M G>>= MH D>>I = G= LBG MA> FH=NE> MA:M did @>M BFIHKM>= BL :EP:RL = FUSFF MA> K>LM H? RHNK =H>LG^MG>>= MH ;> EBMM>K>= PBMA JG LM:M>F>GML MH K>GMERG:F>= FH=NE>L

    1.8. UNBOUND VARIABLES

    0:D> :GHMA>K EHHD :M MABL EBG> H? ?KHF MA> BQQSPYJNBUF@TJ[F ?NGO>K => MA> O:KB:;E> NVMUJQMF RHN CNLM :LLB@G : O:EN> MH BM 0A:M^L +' ;> ,RMAHG E>ML RHN=H MA:M 3A:M ,RMAHG PBEE not E>M RHN =H BL K>?>K>G : O:KB:;E> MA:M A:L G>O>K ;>>G :LLB@G>= : O:EN> 0KRBG@MH =H LH PBEE K:BL> : /BNF&SSPS >QIMBHG

    Y

    5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    /BNF&SSPSOBNFYJTOPUEFGJOFE

    Y

    Y

    5HN PBEE MA:GD ,RMAHG ?HK MABL HG> =:R

    Rohit Kondekar

  • 1.9. EVERYTHING IS CASE-SENSITIVE

    EE G:F>L BG ,RMAHG :K> L>GLBMBO> O:KB:;E> G:F>L ?NGL L FH=NE> G:F>L >QIMBHGG:F>L %? RHN M BM L>M BM

    BO@JOUFHFS

    BO@JOUFHFS

    "/@*/5&(&3

    5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    /BNF&SSPSOBNF"/@*/5&(&3JTOPUEFGJOFE

    "O@*OUFHFS

    5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    /BNF&SSPSOBNF"O@*OUFHFSJTOPUEFGJOFE

    BO@JOUF(FS

    5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    /BNF&SSPSOBNFBO@JOUF(FSJTOPUEFGJOFE

    G= LH HG

    Rohit Kondekar

    Rohit Kondekar

  • Everything

    in Python is

    an object.

    1.10. RUNNING SCRIPTS

    ,RMAHG FH=NE>L :K> H;C> L>O>K:E NL>?NE:MMKB;NM>L 5HN MABL MH >:LBER M>LM RHNK FH=NE>L:L RHN PKBM> MA>F ;R BGL PA>G RHN KNG MA> ,RMAHG ?BE> HG MA>

    0:D> MA> E:LM ?>P EBG>L H? IVNBOTJ[FQZ

    JG@@OBNF@@@@NBJO@@

    QSJOUBQQSPYJNBUF@TJ[F'BMTF

    QSJOUBQQSPYJNBUF@TJ[F

    (BD> ,RMAHG NL>L ?HK GM 1GEBD> ,RMAHG =H>LGHM LNIIHKM BGEBG> :LLB@GF>GM LH MA>K>^L GH RHN MAHN@AM RHN P>K> L MABL JG LM:M>F>GM LI>EE FH=NE>L :K> H;C>L A:O> : ;NBEMBG :MMKB;NM>@@OBNF@@ FH=NE>^L @@OBNF@@ =>I>G=L HG AHP RHN^K> NLBG@ MA> FH=NE> %? RHN JNQPSU MA> FH=NE> MA>G@@OBNF@@ BL MA> FH=NE>^L ?BE>G:F> PBMAHNM : =BK> >QM>GLBHG

    JNQPSUIVNBOTJ[F

    IVNBOTJ[F@@OBNF@@

    IVNBOTJ[F

    Rohit Kondekar

    Rohit Kondekar

  • NM RHN FH=NE> =BK> IKH@K:F BG PAB : LI>?:NEM O:EN> @@NBJO@@ ,RMAHG PBEE >O:EN:M> MABL JG LM:M>F>GM ?BG= : MKN> >QIK>LLBHG :G= >Q> MA> JG ;EHL

    D=IPNF=EJWFJOUPQZUIPO D=QZUIPO=QZUIPOFYFIVNBOTJ[FQZ

    5#

    (J#

    G= MA:M^L RHNK ?BKLM ,RMAHG IKH@K:F

    1.11. FURTHER READING

    V ,!, HGMBHGL >QIE:BGL PA:M =BLMBG@NBLA>L : @HH= EPDTUSJOH ?KHF : @K>:M EPDTUSJOHV ,RMAHG 0NMHKB:E HGM:MBHG /MKBG@L :ELH MHNL HG MA> LN;C> #NB=> ?HK ,RMAHG H=> =BLL @HH= BG=>GM:MBHG LMRE>V Python Reference Manual >QIE:BGL PA:M BM F>:GL MH L:R MA:M >O>KRMABG@ BG ,RMAHG BL :G H;C> LHF>

    I>HIE> :K> I>=:GML :G= EBD> MH =BL:M E>G@MA

    Rohit Kondekar

  • CHAPTER 2. NATIVE DATATYPES

    Wonder is the foundation of all philosophy, inquiry its progress, ignorance its end.

    Michel de Montaigne

    2.1. DIVING IN

    D :M:MRI>L />M :LB=> RHNK ?BKLM ,RMAHG IKH@K:F ?HK CNLM : FBGNM> :G= E>M^L M:ED :;HNM =:M:MRI>L %G,RMAHG >O>KR O:EN> A:L : =:M:MRI> ;NM RHN =HG^M G>>= MH => MA> =:M:MRI> H? O:KB:;E>L $HP =H>L MA:MPHKD :L>= HG >:^L HKB@BG:E :LLB@GF>GM ,RMAHG ?B@NK>L HNM PA:M MRI> BM BL :G= D>>IL MK:KG:EER

    ,RMAHG A:L F:GR G:MBO> =:M:MRI>L $>K> :K> MA> BFIHKM:GM HG>L

    Booleans :K> >BMA>K 5SVF HK 'BMTF Numbers BGM>@>KL :G= ?EH:ML :G= ?K:O>G Q

    GNF;>KL Strings :K> L>JN>GL H? 1GB ?BE> Lists :K> HK=>K>= L>JN>GL H? O:EN>L Tuples :K> HK=>K>= BFFNM:;E> L>JN>GL H? O:EN>L Sets :K> NGHK=>K>= ;:@L H? O:EN>L Dictionaries :K> NGHK=>K>= ;:@L H? D>RO:EN> I:BKL

    +? MA>K> :K> FHK> MRI>L MA:G MA>L> !O>KRMABG@ BL :G H;C>K> :K> MRI>L EBD>module function class method file :G= >O>G compiled code 5HN^O> :EK>:=R L>>G LHF> H? MA>L> FH=NE>L A:O>G:F>L ?NG EPDTUSJOHT &< 5HN^EE E>:KG :;HNM L BG E:LL>L & %M>K:MHKL :G= :;HNM ?BE>L BG"BE>L

  • You can use

    virtually

    any

    expression

    in a boolean

    context.

    /MKBG@L :G= ;RM>L :K> BFIHKM:GM >GHN@A [ :G= GHN@A [ MA:M MA>R @>M MA>BK HPG K (>M^LEHHD :M MA> HMA>KL ?BKLM

    2.2. BOOLEANS

    HHE>:GL :K> >BMA>K MKN> HK ?:EL> ,RMAHG A:L MPHKER G:F>= 5SVF :G= 'BMTF PAB= MH :LLB@G ;HHE>:G O:EN>L =BK>LLBHGL O:EN:M> MH : ;HHE>:G O:EN> %G KM:BG IE:L EBD>JG LM:M>F>GML ,RMAHG >QI>QIK>LLBHG MH>O:EN:M> MH : ;HHE>:G O:EN> 0A>L> IE:L :K> =boolean contexts 5HN OBKMN:EER :GR >QIK>LLBHG BG: ;HHE>:G QM :G= ,RMAHG PBEE MKR MH =>M>KFBG> BMLMKNMA O:EN> B??>K>GM =:M:MRI>L A:O> =B??>K>GM KNE>L:;HNM PABL :K> MKN> HK ?:EL> BG : ;HHE>:GQM 0ABL PBEE F:D> FHK> L>GL> HG RHN L>> LHF> >Q:FIE>L E:M>K BG MABL K

    "HK >Q:FIE> M:D> MABL LGBII>M ?KHF IVNBOTJ[FQZ

    JGTJ[F

    SBJTF7BMVF&SSPSOVNCFSNVTUCFOPOOFHBUJWF

    TJ[F BL :G BGM>@>K BL :G BGM>@>K :G= BL : GNF>KBK:MHK 0A> K>LNEM H? MA> >QIK>LLBHG TJ[F BL:EP:RL : ;HHE>:G 5HN LM MABL RHNKL>E? BG MA> ,RMAHG BGM>K: LA>EE

  • TJ[F

    TJ[F

    'BMTF

    TJ[F

    TJ[F

    'BMTF

    TJ[F

    TJ[F

    5SVF

    N> MH LHF> E>@:L E>?M HO>K ?KHF ,RMAHG ;HHE>:GL MK>:M>= :L GNF;>KL 5SVF BL 'BMTF BL

    5SVF5SVF

    5SVF'BMTF

    5SVF'BMTF

    5SVF'BMTF

    5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    ;FSP%JWJTJPO&SSPSJOUEJWJTJPOPSNPEVMPCZ[FSP

    !P >P >P HG^M =H MA:M "HK@>M % >O>G F>GMBHG>= BM

    Rohit Kondekar

  • 2.3. NUMBERS

    *NF;>KL :K> :P>LHF> 0A>K> :K> LH F:GR MH ?KHF ,RMAHG LNIIHKML ;HMA BGM>@>KL :G= ?EH:MBG@ IHBGMGNF;>KL 0A>K>^L GH MRI> =>F ,RMAHG M>EEL MA>F :I:KM ;R MA> IK>L>G HK:;L>G H? : => UZQF ?NG H? :GR O:EN> HK O:KB:;E> L RHN FB@AM >QI> JTJOTUBODF ?NGK : O:EN> HK O:KB:;E> BL H? : @BO>G MRI> ==BG@ :G JOU MH :G JOU RB>E=L :G JOU ==BG@ :G JOU MH : GMPBU RB>E=L : GMPBU ,RMAHG KL MA> JOU BGMH : GMPBU MH I>K?HKF MA> :==BMBHG

    MA>G K>MNKGL : GMPBU :L MA> K>LNEM

    2.3.1. COERCING INTEGERS TO FLOATS AND VICE-VERSA

    L RHN CNLM L:P LHF> HI>K:MHKL EBD> :==BMBHG PBEE K BGM>@>KL MH ?EH:MBG@ IHBGM GNF;>KL :L G>>=>=5HN F ;R RHNKL>E?

    Rohit Kondekar

    Rohit Kondekar

  • GMPBU

    JOU

    JOU

    JOU

    UZQF DMBTTJOU

    5HN QIEB MKNG ?NG

  • g g

    0A> HI>K:MHK I>K?HKFL ?EH:MBG@ IHBGM =BOBLBHG %M K>MNKGL : GMPBU >O>G B? ;HMA MA> GNF>K:MHK :G==>GHFBG:MHK :K> JOUL

    0A> HI>K:MHK I>K?HKFL : JNBKDR DBG= H? BGM>@>K =BOBLBHG 3A>G MA> K>LNEM BL IHLBMBO> RHN G BGM>@>K=BOB=BG@ G>@:MBO> GNF;>KL MA> HI>K:MHK KHNG=L \NI] MH MA> G>:K>LM BGM>@>K ):MA>F:MB:DBG@ BM^L KHNG=BG@ \=HPG] LBG g BL E>LL MA:G g ;NM BM K> >QI> HI>K:MHK =H>LG^M :EP:RL K>MNKG :G BGM>@>K %? >BMA>K MA> GNF>K:MHK HK =>GHFBG:MHK BL : GMPBU BM PBEELMBEE KHNG= MH MA> G>:K>LM BGM>@>K ;NM MA> :MNKG O:EN> PBEE ;> : GMPBU

    0A> HI>K:MHK F>:GL \K:BL>= MH MA> IHP>K H?] BL 0A> HI>K:MHK @BO>L MA> K>F:BG=>K :?M>K I>K?HKFBG@ BGM>@>K =BOBLBHG =BOB=>= ;R BL PBMA : K>F:BG=>K

    H? LH MA> K>LNEM A>K> BL

    %G ,RMAHG MA> HI>K:MHK NLN:EER F>:GM BGM>@>K =BOBLBHG ;NM RHN BM;>A:O> EBD> ?EH:MBG@ IHBGM =BOBLBHG ;R BG BG RHNK %G,RMAHG MA> HI>K:MHK :EP:RL F>:GL ?EH:MBG@ IHBGM =BOBLBHG />> ,!, ?HK=>M:BEL

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

    Rohit Kondekar

  • 2.3.3. FRACTIONS

    ,RMAHG BLG^M EBFBM>= MH BGM>@>KL :G= ?EH:MBG@ IHBGM GNF;>KL %M ?:G:KG>= BGAB@A L 0H =>?BG> : ?K: : 'SBDUJPO H;C> GNF>K:MHK :G= =>GHFBG:MHK 5HN K?HKF :EE MA> NLN:E F:MA>F:MBK:MBHGL PBMA ?K:K:MBHGL K>MNKG : G>P 'SBDUJPO

    H;C> 'SBDUJPO H;C>GL> GHM MH :M> : ?K:KH =>GHFBG:MHK

    2.3.4. TRIGONOMETRY

    5HN MKR BG ,RMAHG

  • Zero values

    are false,

    and non-

    zero values

    are true.

    JNQPSUNBUI

    NBUIQJ

    NBUITJONBUIQJ

    NBUIUBONBUIQJ

    0A> NBUI FH=NE> A:L : K:MBH H? : M>K 0A> NBUI FH=NE> A:L :EE MA> ;:LB< MKB@HGHF>MKB< ?NG AHP>O>K MA:M ,RMAHG =H>L GHM A:O> BG?BGBM> IK>MNKG GHM

    2.3.5. NUMBERS IN A BOOLEAN CONTEXT

    5HN GNF;>KL BG : ;HHE>:G QM LNF>GM 6>KH O:EN>L :K> ?:EL> :G= GHGS>KH O:EN>L:K> MKN>

  • EFGJT@JU@USVFBOZUIJOH JGBOZUIJOH

    QSJOUZFTJUTUSVF

    FMTF

    QSJOUOPJUTGBMTF

    JT@JU@USVF ZFTJUTUSVF

    JT@JU@USVF

    ZFTJUTUSVF

    JT@JU@USVF

    OPJUTGBMTF

    JT@JU@USVF ZFTJUTUSVF

    JT@JU@USVF

    OPJUTGBMTF

    JNQPSUGSBDUJPOT

    JT@JU@USVFGSBDUJPOT'SBDUJPO

    ZFTJUTUSVF

    JT@JU@USVFGSBDUJPOT'SBDUJPO

    OPJUTGBMTF

    B= RHN DGHP RHN ?BG> RHNK HPG ?NG ,RMAHG BGM>K: LA>EE &NLM IK>LL &/5&3 :M MA> >G=

    H? >: :G= &/5&3 HG : ;E:GD EBG> MH ?BGBLA

    %G : ;HHE>:G QM GHGS>KH BGM>@>KL :K> MKN> BL ?:EL> *HGS>KH ?EH:MBG@ IHBGM GNF;>KL :K> MKN> BL ?:EL> > ?NE PBMA MABL HG> %? MA>K>^L MA> LEB@AM>LM

    KHNG=BG@ >KKHK GHM BFIHLLB;E> :L RHN L:P BG MA> IK>OBHNL L>G ,RMAHG PBEE ;> M>LMBG@ BGLM>:= H? :G= PBEE K>MNKG 5SVF

    "K:= BG : ;HHE>:G QM 'SBDUJPO O BL ?:EL> ?HK :EE O:EN>L H? O EE HMA>K?K: MKN>

  • 2.4. LISTS

    (BLML :K> ,RMAHG^L PHKDAHKL> =:M:MRI> 3A>G % L:R \EBLM] RHN FB@AM ;> MABGDBG@ \:KK:R PAHL> LBS> % A:O> MH=> BG :=O:G MA:M L:F> MRI> & FN :G :KK:R BG ,>KE %G ,>KE O:KB:;E>L MA:M LMHK> :KK:RL :EP:RLLM:KM PBMA MA> ! L G:F>= :GRMABG@ :G= ,RMAHGD>>IL MK: =:M:MRI> BGM>KG:EER

    EBLM BG ,RMAHG BL FN MA:G :G :KK:R BG &:O: :EMAHN@A BM NL>= :L HG> B?MA:M^L K>:EER :EE RHN P:GM HNM H? EB?> ;>MM>K :G:EH@R PHNE= ;> MH MA> "SSBZ-JTU=

    2.4.1. CREATING A LIST

    K>:MBG@ : EBLM BL >:LR NL> LJN:K> ;K:ML MH PK:I : I:K:M>= EBLM H? O:EN>L

    B@MJTU B@MJTU

    B@MJTU B

    B@MJTU FYBNQMF

    B@MJTU FYBNQMF

    B@MJTU NQJMHSJN

  • a_list[0] is

    the first

    item of

    a_list.

    "BKLM RHN =>?BG> : EBLM H? ?BO> BM>FL *HM> MA:M MA>R K>M:BG MA>BK HKB@BG:E HK=>K 0ABL BL GHM :G :K>= L>M H? BM>FL

    EBLM NL>= EBD> : S>KH;:L>= :KK:R 0A> ?BKLM BM>F H? :GR GHG>FIMR EBLM BL :EP:RL B@MJTU 0A> E:LM BM>F H? MABL ?BO>BM>F EBLM BL B@MJTU ;> EBLML :K> :EP:RL S>KH;:L>= G>@:MBO> BG=>Q :L BM>FL ?KHF MA> >G= H? MA> EBLM F H? :GR GHG>FIMR

    EBLM BL :EP:RL B@MJTU %? MA> G>@:MBO> BG=>Q BL =>?BG>= : EBLM RHN M :GR I:KM H? BM :L: G>P EBLM 0ABL BL = slicing MA> EBLM

    B@MJTU

    B@MJTU

    B@MJTU

    B@MJTU

    B@MJTU

    B@MJTU

    B@MJTU

    5HN M : I:KM H? : EBLM = : \LEB] ;R LI> K>MNKG O:EN> BL : G>P EBLM BM>FL H? MA> EBLM BG HK=>K LM:KMBG@ PBMA MA> ?BKLM LEB BG=>Q BG MABL B@MJTU NI MH;NM GHM BG L>Q BG MABL B@MJTU

  • /EB HK ;HMA H? MA> LEB BG=BL BL G>@:MBO> %? BM A>EIL RHN :=BG@MA> EBLM ?KHF E>?M MH KB@AM MA> ?BKLM LEB BG=>Q LI>L MA> ?BKLM BM>F RHN P:GM :G= MA> L>QLI>L MA> ?BKLM BM>F RHN =HG^M P:GM 0A> K>MNKG O:EN> BL >O>KRMABG@ BG ;>MP>>G

    (BLML :K> S>KH;:L>= LH B@MJTU K>MNKGL MA> ?BKLM MAK>> BM>FL H? MA> EBLM LM:KMBG@ :M B@MJTU NI MH;NM GHM BG E>?M LEB BG=>Q BL RHN :O> BM HNM :G= BL BFIEB>= /H B@MJTU BL MA> L:F> :L B@MJTU;> MA> LM:KMBG@ BL BFIEB>=

    /BFBE:KER B? MA> KB@AM LEB BG=>Q BL MA> E>G@MA H? MA> EBLM RHN :O> BM HNM /H B@MJTU BL MA> L:F> :LB@MJTU ;> MABL EBLM A:L ?BO> BM>FL 0A>K> BL : IE>:LBG@ LRFF>MKR A>K> %G MABL ?BO>BM>F EBLMB@MJTU K>MNKGL MA> ?BKLM BM>FL :G= B@MJTU K>MNKGL MA> E:LM MPH BM>FL %G ?:MNKG MA> ?BKLM O BM>FL :G= B@MJTU PBEE K>MNKG MA> K>LM K>@:K=E>LL H? MA> E>G@MA H? MA> EBLM

    %? ;HMA LEB BG=BL :K> E>?M HNM :EE BM>FL H? MA> EBLM :K> BG= NM MABL BL GHM MA> L:F> :L MA> HKB@BG:EB@MJTU O:KB:;E> %M BL : G>P EBLM MA:M A:II>GL MH A:O> :EE MA> L:F> BM>FL B@MJTU BL LAHKMA:G= ?HK F:DBG@: M> K> :K> ?HNK P:RL MH :== BM>FL MH : EBLM

    B@MJTU

    B@MJTUB@MJTU

    B@MJTU

    B@MJTUBQQFOE5SVF B@MJTU

    B@MJTUFYUFOE B@MJTU

    B@MJTUJOTFSUi B@MJTU

  • 0A> HI>K:MHK L EBLML MH :M> : G>P EBLM EBLM FL MA>K> BL GHLBS> EBFBM HMA>K MA:G :O:BE:;E> F>FHKR $HP>O>K B? F>FHKR BL : :P:K> MA:M EBLML : L>FHKR %G MABL MA:M G>P EBLM BL BFF>=B:M>ER :LLB@G>= MH MA>>QBLMBG@ O:KB:;E> B@MJTU /H MABL EBG> H? BL K>:EER : MPHLM>I IKHLL [ G:LLB@GF>GM [ PABFHKR PA>G RHN^K> =>:EBG@ PBMA E:K@> EBLML

    EBLM :G= MA> BM>FL BG : LBG@E> EBLM =HG^M :EE G>>= MH ;> MA> L:F> MRI>$>K> P> A:O> : EBLM K :G= :G BGM>@>K

    0A> BQQFOE F>MAH= :==L : LBG@E> BM>F MH MA> >G= H? MA> EBLM *HP P> A:O> four =B??>K>GM =:M:MRI>L BG MA>EBLM

    (BLML :K> BFIE>F>GM>= :L L \K>:MBG@] : EBLM BL K>:EER BGLM:GMB:MBG@ : K:M> HG BM 0A> FYUFOE F>MAH= M:D>L HG> :K@NF>GM : EBLM :G= :II>G=L >: BM>FL H? MA>:K@NF>GM MH MA> HKB@BG:E EBLM

    0A> JOTFSU F>MAH= BGL>KML : LBG@E> BM>F BGMH : EBLM 0A> ?BKLM :K@NF>GM BL MA> BG=>Q H? MA> ?BKLM BM>F BG MA>EBLM MA:M PBEE @>M ;NFI>= HNM H? IHLBMBHG (BLM BM>FL =H GHM G>>= MH ;> NGBJN> ?HK >Q:FIE> MA>K> :K> GHPMPH L>I:K:M> BM>FL PBMA MA> O:EN> i MA> ?BKLM BM>F B@MJTU :G= MA> E:LM BM>F B@MJTU

    B@MJTUJOTFSU WBMVF BL EBD> MA> VOTIJGU ?NGKE %M :==L :G BM>F MHMA> ;>@BGGBG@ H? MA> EBLM :G= :EE MA> HMA>K BM>FL A:O> MA>BK IHLBMBHG:E BG=>Q ;NFI>=NI MH F:D> KHHF

    (>M^L EHHD K :M MA> =B??>K>G ;>MP>>G BQQFOE :G= FYUFOE

  • B@MJTU

    B@MJTUFYUFOE B@MJTU

    MFOB@MJTU

    B@MJTU

    G

    B@MJTUBQQFOE B@MJTU

    MFOB@MJTU

    B@MJTU

    0A> FYUFOE F>MAH= M:D>L : LBG@E> :K@NF>GM PAB: BM>FL H? MA:M EBLMMH B@MJTU

    %? RHN LM:KM PBMA : EBLM H? MAK>> BM>FL :G= >QM>G= BM PBMA : EBLM H? :GHMA>K MAK>> BM>FL RHN >G= NI PBMA : EBLMH? LBQ BM>FL

    +G MA> HMA>K A:G= MA> BQQFOE F>MAH= M:D>L : LBG@E> :K@NF>GM PAB $>K> RHN^K> BQQFOE F>MAH= PBMA : EBLM H? MAK>> BM>FL

    %? RHN LM:KM PBMA : EBLM H? LBQ BM>FL :G= :II>G= : EBLM HGMH BM RHN >G= NI PBMA

    : EBLM H? L>O>G BM>FL 3ARL>O>G > MA> E:LM BM>F PABG=>= is itself a list (BLML PA:M RHN P:GM HK BM F:R GHM NM BM^L PA:M RHN :LD>= ?HK :G= BM^L PA:MRHN @HM

  • 2.4.4. SEARCHING FOR VALUES IN A LIST

    B@MJTU

    B@MJTUDPVOUOFX

    OFXJOB@MJTU 5SVF

    DJOB@MJTU

    'BMTF

    B@MJTUJOEFYNQJMHSJN

    B@MJTUJOEFYOFX

    B@MJTUJOEFYD 5SBDFCBDLJOOFSNPTUMBTU

    'JMFJOUFSBDUJWFJOQVUMJOFJO

    7BMVF&SSPSMJTUJOEFYYYOPUJOMJTU

    L RHN FB@AM >QI> DPVOU F>MAH= K>MNKGL MA> GNF;>K H? H BG : EBLM %? :EE RHN P:GM MH DGHP BL PA>MA>K : O:EN> BL BG MA> EBLM HK GHM MA> JO HI>K:MHK BL LEB@AMER ?:LM>K MA:G NLBG@

    MA> DPVOU F>MAH= 0A> JO HI>K:MHK :EP:RL K>MNKGL 5SVF HK 'BMTF BM PBEE GHM M>EE RHN AHP F:GR MBF>LMA> O:EN> :II>:KL BG MA> EBLM

    *>BMA>K MA> JO HI>K:MHK GHK MA> DPVOU F>MAH= PBEE M>EE RHN where BG MA> EBLM : O:EN> :II>:KL %? RHN G>>=MH DGHP PA>K> BG MA> EBLM : O:EN> BL JOEFY F>MAH= R =>?:NEM BM PBEE L>:K >GMBK> EBLM:EMAHN@A RHN GM H? MA> ;:L>= BG=>Q MH LM:KM ?KHF :G= >O>G :GHIMBHG:E MABK= :K@NF>GM H? MA> ;:L>= BG=>Q MH LMHI L>:K JOEFY F>MAH= ?BG=L MA> first H BG MA> EBLM %G MABL OFX H JOEFY F>MAH= PBEE K>MNKG HGER MA> BG=>Q H? MA> ?BKLMHQI> O:EN> BL GHM ?HNG= BG MA> EBLM MA> JOEFY F>MAH= PBEE K:BL> :G >QIMBHG

    3:BM PA:M 0A:M^L KB@AM MA> JOEFY F>MAH= K:BL>L :G >QIMBHG B? BM =H>LG^M ?BG= MA> O:EN> BG MA> EBLM 0ABLBL GHM:;ER =B??>K>GM ?KHF FHLM E:G@N:@>L PABMNKG LHF> BGO:EB= BG=>Q EBD> 3ABE> MABL F:R L>>F:GGHRBG@ :M ?BKLM % MABGD RHN PBEE MH :IIK> BM %M F>:GL RHNK IKH@K:F PBEE LHNK H?

  • Lists never

    have gaps.

    MA> IKH;E>F BGLM>:= H? ?:BEBG@ LMK:G@>ER :G= LBE>GMER E:M>K .>F>F;>K BL : O:EB= EBLM BG=>Q %? MA> JOEFY

    F>MAH= K>MNKG>= MA:M := MH LHF> GHMLH?NG =>;N@@BG@ L>LLBHGL

    2.4.5. REMOVING ITEMS FROM A LIST

    (BLML QI:G= :G= GMA> >QI:GLBHG I:KM 0A>K> :K> L>O>K:E =B??>K>GM P:RL MHK>FHO> BM>FL ?KHF : EBLM :L P>EE

    B@MJTU

    B@MJTU

    C

    EFMB@MJTU B@MJTU

    B@MJTU OFX

    5HN MA> EFM LM:M>F>GM MH =>E>M> : LI>F ?KHF : EBLM Q :?M>K =>E>MBG@ BG=>Q =H>L not K>LNEM BG :G >KKHK EE BM>FL :?M>K MA> =>E>M>= BM>F LAB?M

    MA>BK IHLBMBHG:E BG=>Q MH \?BEE MA> @:I] :M>= ;R =>E>MBG@ MA> BM>F

    HG^M DGHP MA> IHLBMBHG:E BG=>Q *HM : IKH;E>F RHN FHO> BM>FL ;R O:EN> BGLM>:=

  • B@MJTUSFNPWFOFX B@MJTU

    B@MJTUSFNPWFOFX B@MJTU

    B@MJTUSFNPWFOFX

    5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    7BMVF&SSPSMJTUSFNPWFYYOPUJOMJTU

    5HN FHO> :G BM>F ?KHF : EBLM PBMA MA> SFNPWF F>MAH= 0A> SFNPWF F>MAH= M:D>L : value:G= K>FHO>L MA> ?BKLM H ?KHF MA> EBLM @:BG :EE BM>FL :?M>K MA> =>E>M>= BM>F PBEE A:O>MA>BK IHLBMBHG:E BG=BL ;NFI>= =HPG MH \?BEE MA> @:I] (BLML G>O>K A:O> @:IL

    5HN MAH= :L H?M>G :L RHN EBD> ;NM BM PBEE K:BL> :G >QIMBHG B? RHN MKR MH K>FHO> :O:EN> MA:M BLG^M BG MA> EBLM

    2.4.6. REMOVING ITEMS FROM A LIST: BONUS ROUND

    GHMA>K BGM>K>LMBG@ EBLM F>MAH= BL QPQ

    0A> QPQ F>MAH= BL R>M :GHMA>K P:R MH K>FHO> BM>FL ?KHF : EBLM;NM PBMA : MPBLM

  • B@MJTU

    B@MJTUQPQ NQJMHSJN

    B@MJTU

    B@MJTUQPQ C

    B@MJTU

    B@MJTUQPQ

    OFX

    B@MJTUQPQ

    B

    B@MJTUQPQ 5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    *OEFY&SSPSQPQGSPNFNQUZMJTU

    3A>G = PBMAHNM :K@NF>GML MA> QPQ EBLM F>MAH= K>FHO>L MA> E:LM BM>F BG MA> EBLM and returns the valueit removed

    5HN FL ?KHF : EBLM &NLM I:LL : IHLBMBHG:E BG=>Q MH MA> QPQ F>MAH= %M PBEE K>FHO>MA:M BM>F LAB?M :EE MA> BM>FL :?M>K BM MH \?BEE MA> @:I] :G= K>MNKG MA> O:EN> BM K>FHO>=

    :EEBG@ QPQ HG :G >FIMR EBLM K:BL>L :G >QIMBHG

    :EEBG@ MA> QPQ EBLM F>MAH= PBMAHNM :G :K@NF>GM BL EBD> MA> QPQ ?NGKE%M K>FHO>L MA> E:LM BM>F ?KHF MA> EBLM :G= K>MNKGL MA> O:EN> H? MA> K>FHO>= BM>F,>KE A:L :GHMA>K ?NGL MA> ?BKLM BM>F :G= K>MNKGL BMLO:EN> BG ,RMAHG MABL BL >JNBO:E>GM MH B@MJTUQPQ

  • Empty lists

    are false; all

    other lists

    are true.

    2.4.7. LISTS IN A BOOLEAN CONTEXT

    5HN : EBLM BG : ;HHE>:G QM LNF>GM

    EFGJT@JU@USVFBOZUIJOH

    JGBOZUIJOH

    QSJOUZFTJUTUSVF

    FMTF

    QSJOUOPJUTGBMTF

    JT@JU@USVF OPJUTGBMTF

    JT@JU@USVF ZFTJUTUSVF

    JT@JU@USVF

  • B@UVQMFBCNQJMHSJN[FYBNQMF B@UVQMF

    BCNQJMHSJN[FYBNQMF

    B@UVQMF B

    B@UVQMF FYBNQMF

    B@UVQMF CNQJMHSJN

    MNIE> BL =>?BG>= BG MA> L:F> P:R :L : EBLM >QIM MA:M MA> PAHE> L>M H? >E>F>GML BL >G= BG I:K>GMA>L>LBGLM>:= H? LJN:K> ;K:ML

    0A> >E>F>GML H? : MNIE> A:O> : =>?BG>= HK=>K CNLM EBD> : EBLM 0NIE> BG=BL :K> S>KH;:L>= CNLM EBD> : EBLM LHMA> ?BKLM >E>F>GM H? : GHG>FIMR MNIE> BL :EP:RL B@UVQMF

    *>@:MBO> BG=BL >G= H? MA> MNIE> CNLM EBD> : EBLM /EB : EBLM 3A>G RHN LEB : EBLM RHN @>M : G>P EBLM PA>G RHN LEB : MNIE> RHN @>M :

    G>P MNIE>

    0A> F:CHK =B??>K>G ;>MP>>G MNIE>L :G= EBLML BL MA:M MNIE>L = %G M>L:K> BFFNM:;E> %G IK:R A:O> GH F>MAH=L MA:M PHNE= :EEHP RHN MH MA>F (BLML A:O>F>MAH=L EBD> BQQFOE FYUFOE JOTFSU SFNPWF :G= QPQ

    0NIE>L A:O> GHG> H? MA>L> F>MAH=L5HN ;> MA:M :M>L : G>P MNIE> :G= RHN K : MNIE> MA:M =H>LG^M MA> MNIE> :G=Y MA:M^L :;HNM BM

  • DPOUJOVFEGSPNUIFQSFWJPVTFYBNQMF

    B@UVQMF

    BCNQJMHSJN[FYBNQMF

    B@UVQMFBQQFOEOFX 5SBDFCBDLJOOFSNPTUMBTU

    'JMFJOUFSBDUJWFJOQVUMJOFJO

    "UUSJCVUF&SSPSUVQMFPCKFDUIBTOPBUUSJCVUFBQQFOE

    B@UVQMFSFNPWF[ 5SBDFCBDLJOOFSNPTUMBTU

    'JMFJOUFSBDUJWFJOQVUMJOFJO

    "UUSJCVUF&SSPSUVQMFPCKFDUIBTOPBUUSJCVUFSFNPWF

    B@UVQMFJOEFYFYBNQMF

    [JOB@UVQMF 5SVF

    5HN E>F>GML MH : MNIE> 0NIE>L A:O> GH BQQFOE HK FYUFOE F>MAH= 5HN FHO> >E>F>GML ?KHF : MNIE> 0NIE>L A:O> GH SFNPWF HK QPQ F>MAH= 5HN can ?BG= >E>F>GML BG : MNIE> LBG MABL =H>LG^M MA> MNIE> 5HN MA> JO HI>K:MHK MH E>F>GM >QBLML BG MA> MNIE>

    /H PA:M :K> MNIE>L @HH= ?HK

    V 0NIE>L :K> ?:LM>K MA:G EBLML %? RHN^K> =>?BGBG@ : M H? O:EN>L :G= :EE RHN^K> >O>K @HBG@ MH =H PBMA BMBL BM>K:M> MAKHN@A BM NL> : MNIE> BGLM>:= H? : EBLM

    V %M F:D>L RHNK L:?>K B? RHN \PKBM>IKHM>LG^M G>>= MH ;> = 1LBG@ : MNIE> BGLM>:=H? : EBLM BL EBD> A:OBG@ :G BFIEB>= BTTFSU LM:M>F>GM MA:M LAHPL MABL =:M: BL = MH HO>KKB=> MA:M

    V /HF> MNIE>L NL>= :L =BRL LI> LMKBG@LGNF;>KL :G= HMA>K MNIE>L (BLML O>K ;> NL>= :L =BRL ;> EBLML :K> GHM BFFNM:;E>

  • 0NIE>L KM>= BGMH EBLML :G= OBO>KL: 0A> ;NBEMBG UVQMF ?NGL: EBLM :G= K>MNKGL : MNIE> PBMA MA> L:F> >E>F>GML :G= MA> MJTU ?NGL :MNIE> :G= K>MNKGL : EBLM %G >??>>S>L : EBLM :G= MJTU MA:PL : MNIE>

    2.5.1. TUPLES IN A BOOLEAN CONTEXT

    5HN MNIE>L BG : ;HHE>:G QM LNF>GM

    EFGJT@JU@USVFBOZUIJOH

    JGBOZUIJOH

    QSJOUZFTJUTUSVF

    FMTF

    QSJOUOPJUTGBMTF

    JT@JU@USVF

    OPJUTGBMTF

    JT@JU@USVFBC

    ZFTJUTUSVF

    JT@JU@USVF'BMTF

    ZFTJUTUSVF

    UZQF'BMTF

    DMBTTCPPM

    UZQF'BMTF

    DMBTTUVQMF

    %G : ;HHE>:G QM :G >FIMR MNIE> BL ?:EL> GR MNIE> PBMA :M E>:LM HG> BM>F BL MKN> GR MNIE> PBMA :M E>:LM HG> BM>F BL MKN> 0A> O:EN> H? MA> BM>FL BL BKK>E>O:GM NM PA:M^L MA:M K> 0H :M> : MNIE> H? HG> BM>F RHN G>>= : K MA> O:EN> 3BMAHNM MA> L

    RHN A:O> :G >QMK: I:BK H? I:K>GMA>L>L PABLL ;NM BM =H>LG^M :M> : MNIE>

  • 2.5.2. ASSIGNING MULTIPLE VALUES AT ONCE

    $>K>^L : O:EN>L :M HG

    WB5SVF

    YZ[W Y

    B

    Z

    [

    5SVF

    W BL : MNIE> H? MAK>> >E>F>GML :G= Y Z [ BL : MNIE> H? MAK>> O:KB:;E>L LLB@GBG@ HG> MH MA> HMA>K:LLB@GL >: O:EN>L H? W MH >: O:KB:;E>L BG HK=>K

    0ABL A:L :EE DBG=L H? NL>L /NIIHL> RHN P:GM MH :LLB@G G:F>L MH : K:G@> H? O:EN>L 5HN MA> ;NBEMBGSBOHF ?NG :LLB@GF>GM MH JNBL

    .0/%":56&4%":8&%/&4%":5)634%":'3*%":4"563%":46/%":SBOHF

    .0/%":

    56&4%":

    46/%":

    0A> ;NBEMBG SBOHF ?NG@>KL 0>K:MHK GHM : EBLM HK : MNIE> ;NM RHN^EE E>:KG :;HNM MA:M =BLMBGK .0/%": 56&4%": 8&%/&4%":5)634%": '3*%": 4"563%": :G= 46/%": :K> MA> O:KB:;E>L RHN^K> =>?BGBG@ 0ABL >Q:FIE> ?KHF MA>DBMFOEBS FH=NE> : ?NG EBMME> FH=NE> MA:M IKBGML G=:KL EBD> MA> 1*%4 IKH@K:F DBM 0A> DBMFOEBSFH=NE> =>?BG>L BGM>@>K P>>D

    *HP >: A:L BML O:EN> .0/%": BL 56&4%": BL :G= LH ?HKMA

  • 5HN FNEMBO:KB:;E> :LLB@GF>GM MH ;NBE= ?NGMNKG FNEMBIE> O:EN>L LBFIER ;R K>MNKGBG@: MNIE> H? :EE MA> O:EN>L 0A> K :M BM :L : LBG@E> MNIE> HK BM O:EN>L MH BG=BOB=N:EO:KB:;E>L ):GR LM:G=:K= ,RMAHG EB;K:KB>L =H MABL BG PT FH=NE> PAB:KG :;HNM BG MA>G>QM K

    2.6. SETS

    L>M BL :G NGHK=>K>= \;:@] H? NGBJN> O:EN>L LBG@E> L>M =:M:MRI>+G RHN A:O> MPH L>ML RHN M HI>K:MBHGL EBD> NGBHG BGM>KL>M =B??>K>G

    2.6.1. CREATING A SET

    "BKLM MABG@L ?BKLM K>:MBG@ : L>M BL >:LR

    B@TFU\^ B@TFU

    \^

    UZQFB@TFU DMBTTTFU

    B@TFU\^ B@TFU

    \^

    0H :M> : L>M PBMA HG> O:EN> INM MA> O:EN> BG ML :K> :F>GM>= :L L ;NM =HG^M PHKKR :;HNM MA:M ?HK GHP 0H :M> : L>M PBMA FNEMBIE> O:EN>L L>I:K:M> MA> O:EN>L PBMA

  • B@MJTU
  • N> MH ABLMHKBK ?KHF ,RMAHG RHN :G >FIMR L>M PBMA MPH FIMR =BFIMR L>M

    2.6.2. MODIFYING A SET

    0A>K> :K> MPH =B??>K>GM P:RL MH :== O:EN>L MH :G >QBLMBG@ L>M MA> BEE F>MAH= :G= MA> VQEBUF F>MAH=

    B@TFU\^

    B@TFUBEE B@TFU

    \^

    MFOB@TFU

    B@TFUBEE B@TFU

    \^

    MFOB@TFU

    0A> BEE F>MAH= M:D>L : LBG@E> :K@NF>GM PAB :G= :==L MA> @BO>G O:EN> MH MA> L>M 0ABL L>M GHP A:L F>F;>KL />ML :K> ;:@L H? unique values %? RHN MKR MH :== : O:EN> MA:M :EK>:=R >QBLML BG MA> L>M BM PBEE =H GHMABG@ %M

    PHG^M K:BL> :G >KKHK BM^L CNLM : GHHI 0ABL L>M still A:L F>F;>KL

  • B@TFU\^

    B@TFU

    \^

    B@TFUVQEBUF\^

    B@TFU \^

    B@TFUVQEBUF\^\^ B@TFU

    \^

    B@TFUVQEBUF B@TFU

    \^

    0A> VQEBUF F>MAH= M:D>L HG> :K@NF>GM : L>M :G= :==L :EE BML F>F;>KL MH MA> HKB@BG:E L>M %M^L :L B? RHN= MA> BEE F>MAH= PBMA >:F;>K H? MA> L>M

    NIEB O:EN>L :K> B@GHK>= LBG L>ML G = PBMA MPH L>ML MA>

    VQEBUF F>MAH= :==L :EE MA> F>F;>KL H? >:M MH MA> HKB@BG:E L>M =KHIIBG@ =NIEBL 0A> VQEBUF F>MAH= H;C>K H? =B??>K>GM =:M:MRI>L BGG = PBMA

    : EBLM MA> VQEBUF F>MAH= :==L :EE MA> BM>FL H? MA> EBLM MH MA> HKB@BG:E L>M

    2.6.3. REMOVING ITEMS FROM A SET

    0A>K> :K> MAK>> P:RL MH K>FHO> BG=BOB=N:E O:EN>L ?KHF : L>M 0A> ?BKLM MPH EJTDBSE :G= SFNPWF A:O>HG> LN;ME> =B??>K>G

  • B@TFU\^

    B@TFU

    \^

    B@TFUEJTDBSE B@TFU

    \^

    B@TFUEJTDBSE B@TFU

    \^

    B@TFUSFNPWF B@TFU

    \^

    B@TFUSFNPWF 5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    ,FZ&SSPS

    0A> EJTDBSE F>MAH= M:D>L : LBG@E> O:EN> :L :G :K@NF>GM :G= K>FHO>L MA:M O:EN> ?KHF MA> L>M %? RHN EJTDBSE F>MAH= PBMA : O:EN> MA:M =H>LG^M >QBLM BG MA> L>M BM =H>L GHMABG@ *H >KKHK BM^L

    CNLM : GHHI 0A> SFNPWF F>MAH= :ELH M:D>L : LBG@E> O:EN> :L :G :K@NF>GM :G= BM :ELH K>FHO>L MA:M O:EN> ?KHF MA> L>M $>K>^L MA> =B??>K>G B? MA> O:EN> =H>LG^M >QBLM BG MA> L>M MA> SFNPWF F>MAH= K:BL>L : ,FZ&SSPS

    >QIMBHG

    (BD> EBLML L>ML A:O> : QPQ F>MAH=

  • B@TFU\^

    B@TFUQPQ

    B@TFUQPQ

    B@TFUQPQ

    B@TFU

    \^

    B@TFUDMFBS B@TFU

    TFU

    B@TFUQPQ 5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    ,FZ&SSPSQPQGSPNBOFNQUZTFU

    0A> QPQ F>MAH= K>FHO>L : LBG@E> O:EN> ?KHF : L>M :G= K>MNKGL MA> O:EN> $HP>O>K LBG L>ML :K>NGHK=>K>= MA>K> BL GH \E:LM] O:EN> BG : L>M LH MA>K> BL GH P:R MH ML K>FHO>= %M BLM>ER :K;BMK:KR

    0A> DMFBS F>MAH= K>FHO>L all O:EN>L ?KHF : L>M E>:OBG@ RHN PBMA :G >FIMR L>M 0ABL BL >JNBO:E>GM MHB@TFU TFU PAB : G>P >FIMR L>M :G= HO>KPKBM> MA> IK>OBHNL O:EN> H? MA> B@TFUO:KB:;E>

    MM>FIMBG@ MH IHI : O:EN> ?KHF :G >FIMR L>M PBEE K:BL> : ,FZ&SSPS >QIMBHG

    2.6.4. COMMON SET OPERATIONS

    ,RMAHG^L TFU MRI> LNIIHKML L>O>K:E M HI>K:MBHGL

  • B@TFU\^

    JOB@TFU 5SVF

    JOB@TFU

    'BMTF

    C@TFU\^

    B@TFUVOJPOC@TFU \^

    B@TFUJOUFSTFDUJPOC@TFU \^

    B@TFUEJGGFSFODFC@TFU \^

    B@TFUTZNNFUSJD@EJGGFSFODFC@TFU \^

    0H M>LM PA>MA>K : O:EN> BL : F>F;>K H? : L>M NL> MA> JO HI>K:MHK 0ABL PHKDL MA> L:F> :L EBLML 0A> VOJPO F>MAH= K>MNKGL : G>P L>M >E>F>GML MA:M :K> BG either L>M 0A> JOUFSTFDUJPO F>MAH= K>MNKGL : G>P L>M >E>F>GML MA:M :K> BG both L>ML 0A> EJGGFSFODF F>MAH= K>MNKGL : G>P L>M >E>F>GML MA:M :K> BG B@TFU ;NM GHM C@TFU 0A> TZNNFUSJD@EJGGFSFODF F>MAH= K>MNKGL : G>P L>M >E>F>GML MA:M :K> BG exactly one

    H? MA> L>ML

    0AK>> H? MA>L> F>MAH=L :K> LRFF>MKBML BG : ;HHE>:G QM LNF>GM

    EFGJT@JU@USVFBOZUIJOH

    JGBOZUIJOH

    QSJOUZFTJUTUSVF

    FMTF

    QSJOUOPJUTGBMTF

    JT@JU@USVFTFU

    OPJUTGBMTF

    JT@JU@USVF\B^ ZFTJUTUSVF

    JT@JU@USVF\'BMTF^ ZFTJUTUSVF

  • %G : ;HHE>:G QM :G >FIMR L>M BL ?:EL> GR L>M PBMA :M E>:LM HG> BM>F BL MKN> GR L>M PBMA :M E>:LM HG> BM>F BL MKN> 0A> O:EN> H? MA> BM>FL BL BKK>E>O:GM

    2.7. DICTIONARIES

    =BK>= L>M H? D>RO:EN> I:BKL 3A>G RHN :== : D>R MH : =B ?HK MA:M D>R 5HN O:EN> E:M>K ,RMAHG =BL :K> HIMBFBS>= ?HK K>MKB>OBG@MA> O:EN> PA>G RHN DGHP MA> D>R ;NM GHM MA> HMA>K P:R :KHNG=

    =B : A:LA BG ,>KE %G ,>KE O:KB:;E>L MA:M LMHK> A:LA>L:EP:RL LM:KM PBMA : L G:F>= :GRMABG@ :G=,RMAHG D>>IL MK: =:M:MRI> BGM>KG:EER

    2.7.1. CREATING A DICTIONARY

    K>:MBG@ : =B:LR 0A> LRGM:Q BL LBFBE:K MH L>ML ;NM BGLM>:= H? O:EN>L RHN A:O> D>RO:EN> I:BKL+G RHN A:O> : =BBK D>R

  • B@EJDU\TFSWFSECEJWFJOUPQZUIPOPSHEBUBCBTFNZTRM^ B@EJDU

    \TFSWFSECEJWFJOUPQZUIPOPSHEBUBCBTFNZTRM^

    B@EJDU ECEJWFJOUPQZUIPOPSH

    B@EJDU NZTRM

    B@EJDU 5SBDFCBDLNPTUSFDFOUDBMMMBTU

    'JMFTUEJOMJOFJONPEVMF

    ,FZ&SSPSECEJWFJOUPQZUIPOPSH

    "BKLM RHN :M> : G>P =BFL :G= :LLB@G BM MH MA> O:KB:;E> B@EJDU !:F BL : D>RO:EN> I:BK :G= MA> PAHE> L>M H? BM>FL BL >G= BG R :G= BML :LLH= O:EN> K>?>K>G= ;R B@EJDU BLECEJWFJOUPQZUIPOPSH

    EBUBCBTF BL : D>R :G= BML :LLH= O:EN> K>?>K>G= ;R B@EJDU BL NZTRM 5HN M O:EN>L ;R D>R ;NM RHN M D>RL ;R O:EN> /H B@EJDU BL

    ECEJWFJOUPQZUIPOPSH ;NM B@EJDU K:BL>L :G >QIMBHG ;>ECEJWFJOUPQZUIPOPSH BL GHM : D>R

    2.7.2. MODIFYING A DICTIONARY

    BL =H GHM A:O> :GR IK>=>?BG>= LBS> EBFBM 5HN P D>RO:EN> I:BKL MH : =B HK RHN O:EN> H? :G >QBLMBG@ D>R HGMBGNBG@ ?KHF MA> IK>OBHNL >Q:FIE>

  • B@EJDU

    \TFSWFSECEJWFJOUPQZUIPOPSHEBUBCBTFNZTRM^

    B@EJDUCMPH B@EJDU

    \TFSWFSECEJWFJOUPQZUIPOPSHEBUBCBTFCMPH^

    B@EJDUNBSL

    B@EJDU \TFSWFSECEJWFJOUPQZUIPOPSHVTFSNBSLEBUBCBTFCMPH^

    B@EJDUEPSB B@EJDU

    \TFSWFSECEJWFJOUPQZUIPOPSHVTFSEPSBEBUBCBTFCMPH^

    B@EJDUNBSL B@EJDU

    \6TFSNBSLTFSWFSECEJWFJOUPQZUIPOPSHVTFSEPSBEBUBCBTFCMPH^

    5HN =NIEB D>RL BG : =B MH :G >QBLMBG@ D>R PBEE PBI> HNM MA> HE=O:EN>

    5HN P D>RO:EN> I:BKL :M :GR MBF> 0ABL LRGM:Q BL B=>GMBQBLMBG@ O:EN>L 0A> G>P =BF D>R VTFS O:EN> NBSL :II>:KL MH ;> BG MA> FB==E> %G ?:FL :II>:K>= MH ;> BG HK=>K BG MA> ?BKLM >Q:FIE> BM BL CNLM :L FN:K MH ;> HNM H? HK=>K GHP

    LLB@GBG@ : O:EN> MH :G >QBLMBG@ =BR LBFIER K>IE:L MA> HE= O:EN> PBMA MA> G>P HG> 3BEE MABL MA> O:EN> H? MA> VTFS D>R ;: D>R ER [ MA:M^L : L>GLBMBO> LH MABL LM:M>F>GM BL :MBG@ : G>P D>RO:EN> I:BK GHM

    HO>KPKBMBG@ :G >QBLMBG@ HG> %M F:R EHHD LBFBE:K MH RHN ;NM :L ?:K :L ,RMAHG BL = BM^L M>ER=B??>K>GM

    2.7.3. MIXED-VALUE DICTIONARIES

    BL :K>G^M CNLM ?HK LMKBG@L BL :GR =:M:MRI> BG@>KL ;HHE>:GL:K;BMK:KR H;C>O>G HMA>K =BL G= PBMABG : LBG@E> =B O:EN>L =HG^M :EE G>>= MH ;>MA> L:F> MRI> RHN =>= BRL :K> FHK> K>LMKB= ;NM MA>R LMKBG@L BGM>@>KL :G= : ?>P HMA>K MRI>L 5HN L PBMABG : =B

  • %G ?: :EK>:=R L>>G : =BRL :G= O:EN>L BG RHNK ?BKLM ,RMAHG IKH@K:F

    46''*9&4\

    ^

    (>ML M>:K MA:M :I:KM BG MA> BGM>K: LA>EE

    46''*9&4\

    ^

    MFO46''*9&4

    JO46''*9&4 5SVF

    46''*9&4

    46''*9&4

    46''*9&4 5#

    (BD> EBLML :G= L>ML MA> MFO ?NGL RHN MA> GNF;>K H? D>RL BG : =B EBLML :G= L>ML RHN MA> JO HI>K:MHK MH M>LM PA>MA>K : LI>R BL =>?BG>= BG : =BR BG MA> 46''*9&4 =B BL : EBLM H? >B@AM BM>FL >B@AM LMKBG@L MH ;> IK> /BFBE:KER BL : D>R BG MA> 46''*9&4 =B BL :ELH : EBLM H? >B@AM BM>FL /BG 46''*9&4 BL : EBLM RHN LL BG=BOB=N:E BM>FL BG MA> EBLM ;R MA>BK ;:L>= BG=>Q

  • Empty

    dictionaries

    are false; all

    other

    dictionaries

    are true.

    2.7.4. DICTIONARIES IN A BOOLEAN CONTEXT

    5HN : =B:G QM LNF>GM

    EFGJT@JU@USVFBOZUIJOH

    JGBOZUIJOH

    QSJOUZFTJUTUSVF

    FMTF

    QSJOUOPJUTGBMTF

    JT@JU@USVF\^ OPJUTGBMTF

    JT@JU@USVF\B^ ZFTJUTUSVF

    %G : ;HHE>:G QM :G >FIMR =B GR =B:LM HG> D>RO:EN> I:BK BL MKN>

    2.8. /POF

    /POF BL : LI> L:F> :L 'BMTF /POF BL GHM /POF BLGHM :G >FIMR LMKBG@ HFI:KBG@ /POF MH :GRMABG@ HMA>K MA:G /POF PBEE :EP:RL K>MNKG 'BMTF

    /POF BL MA> HGER GNEE O:EN> %M A:L BML HPG =:M:MRI> /POF5ZQF 5HN ;NM RHN HMA>K /POF5ZQF H;C>L PAHL> O:EN> BL /POF :K> >JN:E MH >:K

  • UZQF/POF

    DMBTT/POF5ZQF

    /POF'BMTF

    'BMTF

    /POF

    'BMTF

    /POF

    'BMTF

    /POF/POF

    5SVF

    Y/POF

    Y/POF

    5SVF

    Z/POF

    YZ

    5SVF

    2.8.1. /POF IN A BOOLEAN CONTEXT

    %G : ;HHE>:G QM /POF BL ?:EL> :G= OPU /POF BL MKN>

    EFGJT@JU@USVFBOZUIJOH

    JGBOZUIJOH

    QSJOUZFTJUTUSVF

    FMTF

    QSJOUOPJUTGBMTF

    JT@JU@USVF/POF

    OPJUTGBMTF

    JT@JU@USVFOPU/POF

    ZFTJUTUSVF

  • 2.9. FURTHER READING

    V HHE>:G HI>K:MBHGLV *NF>KB< MRI>LV />JN>G MRI>LV />M MRI>LV ):IIBG@ MRI>LV GSBDUJPOT FH=NE>V NBUI FH=NE>V ,!, 1GB?RBG@ (HG@ %GM>@>KL :G= %GM>@>KLV ,!, A:G@BG@ MA> BOBLBHG +I>K:MHK

  • CHAPTER 3. COMPREHENSIONS

    Our imagination is stretched to the utmost, not, as in fiction, to imagine things which are not really there, but just

    to comprehend those things which are.

    Richard Feynman

    3.1. DIVING IN

    E O>KR IKH@K:FFBG@ E:G@N:@> A:L MA:M HG> ?>:MNK> : GMBHG:EER F:=> LBFIE> %?RHN^K> K E:G@N:@> RHN :LBER FBLL BM ;> RHNK HE= E:G@N:@> =B=G^M F:D> MA:MMABG@ LBFIE> ;> BM P:L ;NLR F:DBG@ LHF>MABG@ >EL> LBFIE> BGLM>:= 0ABL K PBEE M>:GLBHGL =BGLBHGL :G= L>M A>GLBHGL MAK>> K>E:M>= K>=:KHNG= HG> O>KR IHP>K?NE M> NM ?BKLM % P:GM MH M:D> : EBMME> =>MHNK BGMH MPH FH=NE>L MA:M PBEE A>EIRHN G:OB@:M> RHNK EH LRLM>F

    3.2. WORKINGWITH FILES AND DIRECTORIES

    ,RMAHG L PBMA : FH=NE> = PT PABK:MBG@ LRLM>F] 0A> PT FH=NE> MAHK: H? ?NGM BG?HKF:MBHG HG [ :G= BG LHF> L MH F:GBINE:M> [ EHL ?BE>LIKHLL>L :G= >GOBKHGF>GM O:KB:;E>L ,RMAHG =H>L BML ;>LM MH H??>K : NGB?B>= , % :=HI>K:MBG@ LRLM>FL LH RHNK IKH@K:FL IE:M?HKFLI>

  • There is

    always a

    current

    working

    directory.

    3.2.1. THE CURRENT WORKING DIRECTORY

    3A>G RHN^K> CNLM @>MMBG@ LM:KM>= PBMA ,RMAHG RHN^K> @HBG@ MH LI>G= : EHM H? MBF> BG MA> ,RMAHG /A>EE0AKHN@AHNM MABL ;HHD RHN PBEE L>> >Q:FIE>L MA:M @H EBD> MABL

    %FIHKM HG> H? MA> FH=NE>L BG MA> FYBNQMFT ?HE=>K :EE : ?NG !QIE:BG MA> K>LNEM

    %? RHN =HG^M DGHP :;HNM MA> GM PHKDBG@ =BK>I PBEE IKH;:;ER ?:BE PBMA :G *NQPSU&SSPS 3AR> ,RMAHG PBEE EHHD ?HK MA> >Q:FIE> FH=NE> BG MA>BFIHKM L>:K MA>FYBNQMFT ?HE=>K BLG^M HG> H? MA> =BK>L BG MA>L>:KM I:LM MABL RHN H? MPHMABG@L

    == MA> FYBNQMFT ?HE=>K MH MA> BFIHKM L>:K MA> GM PHKDBG@ =BK> FYBNQMFT

    ?HE=>K

    0A> GM PHKDBG@ =BK> IKHI>KMRMA:M ,RMAHG AHE=L BG F>FHKR :M :EE MBF>L 0A>K> BL:EP:RL : GM PHKDBG@ =BK>MA>K RHN^K> BGMA> ,RMAHG /A>EE KNGGBG@ RHNK HPG ,RMAHG L HK KNGGBG@ : ,RMAHG #% L; L>KO>K LHF>PA>K>

    0A> PT FH=NE> GM PHKDBG@ =BK>

  • JNQPSUPT

    QSJOUPTHFUDXE

    $=1ZUIPO

    PTDIEJS6TFSTQJMHSJNEJWFJOUPQZUIPOFYBNQMFT

    QSJOUPTHFUDXE

    $=6TFST=QJMHSJN=EJWFJOUPQZUIPO=FYBNQMFT

    0A> PT FH=NE> L PBMA ,RMAHG RHN :GRPA>K> 1L> MA> PTHFUDXE ?NGM MA> GM PHKDBG@ =BK>G RHN KNG MA> @K:IABEE MA> GM PHKDBG@ =BK> =BK>K> MA> ,RMAHG /A>EE >Q> BL +G3BG=HPL MABL =>I>G=L HG PA>K> RHN BGLM:EE>= ,RMAHG MA> =>?:NEM =BK>,RMAHG /A>EE ?KHF MA> MA> GM PHKDBG@ =BK> =BK>K> BGPA>G RHN K:G QZUIPO

    1L> MA> PTDIEJS ?NG GM PHKDBG@ =BK>G % = MA> PTDIEJS ?NG= : (BGNQLMRE> I:MAG:F> ?HKP:K= LE:LA>L GH =KBO> E>MM>K >O>G

    MAHN@A %^F HG 3BG=HPL 0ABL BL HG> H? MA> IE:L PA>K> ,RMAHG MKB>L MH I:I>K HO>K MA> =B??>K>GL ;>MP>>GHI>K:MBG@ LRLM>FL

    3.2.2. WORKING WITH FILENAMES AND DIRECTORY NAMES

    3ABE> P>^K> HG MA> LN;C>L % P:GM MH IHBGM HNM MA> PTQBUI FH=NE> PTQBUI L :G= =BK>L

    JNQPSUPT

    QSJOUPTQBUIKPJO6TFSTQJMHSJNEJWFJOUPQZUIPOFYBNQMFTIVNBOTJ[FQZ

    6TFSTQJMHSJNEJWFJOUPQZUIPOFYBNQMFTIVNBOTJ[FQZ

    QSJOUPTQBUIKPJO6TFSTQJMHSJNEJWFJOUPQZUIPOFYBNQMFTIVNBOTJ[FQZ

    6TFSTQJMHSJNEJWFJOUPQZUIPOFYBNQMFT=IVNBOTJ[FQZ

    QSJOUPTQBUIFYQBOEVTFS_

    D=6TFST=QJMHSJN

    QSJOUPTQBUIKPJOPTQBUIFYQBOEVTFS_

    EJWFJOUPQZUIPOFYBNQMFTIVNBOTJ[FQZ

    D=6TFST=QJMHSJN=EJWFJOUPQZUIPO=FYBNQMFT=IVNBOTJ[FQZ

  • 0A> PTQBUIKPJO ?NG I:KMB:E I:MAG:F>L %G MABL BMLBFIER L LMKBG@L

    %G MABL LEB@AMER E>LL MKBOB:E PTQBUIKPJO ?NGQMK: LE:LA MH MA> I:MAG:F>;>?HK> CHBGBG@ BM MH MA> ?BE>G:F> %M^L : ;::= H? : ?HKP:K= LE:LA ;> % Q:FIE> HG 3BG=HPL %? RHN K>IEB MABL >Q:FIE> HG (BGNQ HK ):< +/ 4 RHN^EE L>> : ?HKP:K= LE:LABGLM>:= HG^M ?NLL PBMA LE:LA>L :EP:RL NL> PTQBUIKPJO :G= E>M ,RMAHG =H MA> KB@AM MABG@

    0A> PTQBUIFYQBOEVTFS ?NGQI:G= : I:MAG:F> MA:M NL>L _ MH K>IK>L>GM MA> GM NL>K^LAHF> =BK>K> NL>KL A:O> : AHF> =BK>MNKG>= I:MA =H>L GHM A:O> : MK:BEBG@ LE:LA ;NM MA> PTQBUIKPJO ?NGLG^MFBG=

    HF;BGBG@ MA>L> M>L RHN :LBER L :G= ?BE>L BG MA> NL>K^L AHF>=BK> PTQBUIKPJO ?NGK H? :K@NF>GML % P:L HO>KCHR>= PA>G %=BLK>= MABL LBG BEE4MBTI*G/FDFTTBSZ BL HG> H? MA> LMNIB= EBMME> ?NG>= MH PKBM>PA>G ;NBE=BG@ NI FR MHHE;HQ BG : G>P E:G@N:@> Do not PKBM> MABL LMNIB= EBMME> ?NGHIE> A:O> :EK>:=R M:D>G H? BM ?HK RHN

    PTQBUI :ELH L :G= ?BE>G:F>L BGMH MA>BK GMI:KML

    QBUIOBNF6TFSTQJMHSJNEJWFJOUPQZUIPOFYBNQMFTIVNBOTJ[FQZ

    PTQBUITQMJUQBUIOBNF 6TFSTQJMHSJNEJWFJOUPQZUIPOFYBNQMFTIVNBOTJ[FQZ

    EJSOBNFGJMFOBNFPTQBUITQMJUQBUIOBNF

    EJSOBNF 6TFSTQJMHSJNEJWFJOUPQZUIPOFYBNQMFT

    GJMFOBNF IVNBOTJ[FQZ

    TIPSUOBNFFYUFOTJPOPTQBUITQMJUFYUGJMFOBNF TIPSUOBNF

    IVNBOTJ[F

    FYUFOTJPO

    QZ

    0A> TQMJU ?NG :G= K>MNKGL : MNIE> I:MA :G= ?BE>G:F>

  • The HMPCmodule uses

    shell-like

    wildcards.

    .>F>F;>K PA>G % L:B= RHN FNEMBO:KB:;E> :LLB@GF>GM MH K>MNKG FNEMBIE> O:EN>L ?KHF : ?NG PTQBUITQMJU ?NGL >Q: K>MNKG O:EN> H? MA> TQMJU ?NG H? MPH O:KB:;E>L !: K>BO>L MA> O:EN> H? MA> LIHG=BG@ >E>F>GM H? MA> K>MNKG>= MNIE>

    0A> ?BKLM O:KB:;E> EJSOBNF K>BO>L MA> O:EN> H? MA> ?BKLM >E>F>GM H? MA> MNIE> K>MNKG>= ?KHF MA>PTQBUITQMJU ?NG ?BE> I:MA

    0A> L> GJMFOBNF K>BO>L MA> O:EN> H? MA> L>E>F>GM H? MA> MNIE> K>MNKG>= ?KHF MA>PTQBUITQMJU ?NG ?BE>G:F>

    PTQBUI :ELH PTQBUITQMJUFYU ?NG :G= K>MNKGL : MNIE> ?BE>G:F> :G= MA> ?BE> >QM>GLBHG 5HN NL> MA> L:F> M> MH :LLB@G >:F MHL>I:K:M> O:KB:;E>L

    3.2.3. LISTING DIRECTORIES

    0A> HMPC FH=NE> BL :GHMA>K MHHE BG MA> ,RMAHG LM:G=:K= EB;K:KR %M^L :G >:LR P:R MH @>M MA> GML H? :=BK> LHKM H? PBE=:=R ;> ?:FBEB:K PBMA ?KHFPHKDBG@ HG MA>

  • PTDIEJS6TFSTQJMHSJNEJWFJOUPQZUIPO

    JNQPSUHMPC

    HMPCHMPCFYBNQMFTYNM

    PTDIEJSFYBNQMFT

    HMPCHMPCUFTUQZ

    0A> HMPC FH=NE> M:D>L : PBE=MNKGL MA> I:MA H? :EE ?BE>L :G= =BK>L F:M PBE=Q:FIE> MA> PBE= GM PHKDBG@ =BK> FYBNQMFT LN;=BK> PTDIEJS ?NGE:MBO> I:MAG:F>L

    5HN PBE=KG 0ABL >Q:FIE> ?BG=L :EE MA> ?BE>L BG MA> GMPHKDBG@ =BK>G= BG : QZ >QM>GLBHG :G= PHK= UFTU :GRPA>K> BG MA>BK ?BE>G:F>

  • 3.2.4. GETTING FILE METADATA

    !O>KR FH=>KG ?BE> LRLM>F LMHK>L F>M:=:M: :;HNM >: :MBHG =:M> E:LMFH=B?B>= =:M> ?BE> LBS> :G= LHHG ,RMAHG IKHOB=>L : LBG@E> , % MH :M:=:M: 5HN =HG^M G>>= MH HI>G MA> ?BE> :EE RHN G>>= BLMA> ?BE>G:F>

    JNQPSUPT

    QSJOUPTHFUDXE

    D=6TFST=QJMHSJN=EJWFJOUPQZUIPO=FYBNQMFT

    NFUBEBUBPTTUBUGFFEYNM

    NFUBEBUBTU@NUJNF

    JNQPSUUJNF

    UJNFMPDBMUJNFNFUBEBUBTU@NUJNF UJNFTUSVDU@UJNFUN@ZFBSUN@NPOUN@NEBZUN@IPVS

    UN@NJOUN@TFDUN@XEBZUN@ZEBZUN@JTETU

    0A> GM PHKDBG@ =BK> FYBNQMFT ?HE=>K GFFEYNM BL : ?BE> BG MA> FYBNQMFT ?HE=>K :EEBG@ MA> PTTUBU ?NGMNKGL :G H;C>K:E =B??>K>GM MRI>L H? F>M:=:M: :;HNM MA> ?BE> TU@NUJNF BL MA> FH=B?B ;NM BM^L BG : ?HKF:M MA:M BLG^M M>KKB;ER NL>?NE 0>K

    H? L> !IH= :L MA> ?BKLM L>KBHNLER 0A> UJNF FH=NE> BL I:KM H? MA> ,RMAHG LM:G=:K= EB;K:KR %M >G =B??>K>GM

    MBF> K>IK>L>GM:MBHGL ?HKF:M MBF> O:EN>L BGMH LMKBG@L :G= ?B==E> PBMA MBF>SHG>L 0A> UJNFMPDBMUJNF ?NG O:EN> ?KHF L>!IH TU@NUJNF

    IKHI>KMR K>MNKG>= ?KHF MA> PTTUBU ?NG NL>?NE LMKN H? R>:K FHGMA =:R AHNKFBGNM> L> P:L E:LM FH=B?B>= HG &NER :M :KHNG= ,)

    DPOUJOVFEGSPNUIFQSFWJPVTFYBNQMF

    NFUBEBUBTU@TJ[F

    JNQPSUIVNBOTJ[F

    IVNBOTJ[FBQQSPYJNBUF@TJ[FNFUBEBUBTU@TJ[F ,J#

  • 0A> PTTUBU ?NGMNKGL MA> LBS> H? : ?BE> BG MA> TU@TJ[F IKHI>KMR 0A> ?BE> GFFEYNM BL ;RM>L

    5HN TU@TJ[F IKHI>KMR MH MA> BQQSPYJNBUF@TJ[F ?NG IK>OBHNL L> HMPCHMPC ?NGMNKG>= : EBLM H? K>E:MBO> I:MAG:F>L 0A> ?BKLM >Q:FIE>A:= I:MAG:F>L EBD> FYBNQMFT=GFFEYNM :G= MA> L>Q:FIE> A:= >O>G LAHKM>K K>E:MBO> I:MAG:F>L EBD>SPNBOUFTUQZ L EHG@ :L RHN LM:R BG MA> L:F> GM PHKDBG@ =BK>L> K>E:MBO> I:MAG:F>L PBEEPHKD ?HK HI>GBG@ ?BE>L HK @>MMBG@ ?BE> F>M:=:M: NM B? RHN P:GM MH [ i.e. HG>MA:M BGL :EE MA> =BK>L ;: KHHM =BK> E>MM>K [ MA>G RHN^EE G>>= MA>PTQBUISFBMQBUI ?NG

  • You can use

    any Python

    expression

    in a list

    comprehension.

    3.3. LIST COMPREHENSIONS

    EBLM A>GLBHG IKHOB=>L : E>F>GML H? MA> EBLM

    B@MJTU

    B@MJTU

    B@MJTU B@MJTU

    0H F:D> L>GL> H? MABL EHHD :M BM ?KHF KB@AM MH E>?M B@MJTU BL MA> EBLM RHN^K> F:IIBG@ 0A> ,RMAHGBGM>KIK>M>K EHHIL MAKHN@A B@MJTU HG> >E>F>GM :M : MBF> M>FIHK:KBER :LLB@GBG@ MA> O:EN> H? >:E>F>GM MHMA> O:KB:;E> FMFN ,RMAHG MA>G :IIEB>L MA> ?NGG=L MA:M K>LNEM MH MA> K>MNKG>= EBLM

    EBLM A>GLBHG :M>L : G>P EBLM BM =H>L GHM MA> HKB@BG:E EBLM %M BL L:?> MH :LLB@G MA> K>LNEM H? : EBLM A>GLBHG MH MA> O:KB:;E> MA:M RHN^K> F:IIBG@ ,RMAHG P EBLM BG F>FHKR :G= PA>G MA> EBLM A>GLBHG BL M> BM :LLB@GL MA> K>LNEM MH MA> HKB@BG:EO:KB:;E>

  • 5HN :GR ,RMAHG >QIK>LLBHG BG : EBLM A>GLBHG BG ?NG PT FH=NE> ?HKF:GBINE:MBG@ ?BE>L :G= =BK>L

    JNQPSUPTHMPC

    HMPCHMPCYNM

    0ABL K>MNKGL : EBLM H? :EE MA> YNM ?BE>L BG MA> GM PHKDBG@ =BK>GLBHG M:D>L MA:M EBLM H? YNM ?BE>L :G= MK:GL?HKFL BM BGMH : EBLM H? ?NEE I:MAG:F>L

    (BLM A>GLBHGL K BM>FL IKH=NLNEM MA:M LF:EE>K MA:G MA> HKB@BG:E EBLM

    JNQPSUPTHMPC

    0H ?BEM>K : EBLM RHN >G= H? MA> EBLM A>GLBHG 0A> >QIK>LLBHG :?M>K MA>JG D>RPHK= PBEE ;> >O:EN:M>= ?HK >:F BG MA> EBLM %? MA> >QIK>LLBHG >O:EN:M>L MH 5SVF MA> BM>F PBEE ;>BG= BG MA> HNMINM 0ABL EBLM A>GLBHG EHHDL :M MA> EBLM H? :EE QZ ?BE>L BG MA> GM =BK> JG >QIK>LLBHG ?BEM>KL MA:M EBLM ;R M>LMBG@ PA>MA>K MA> LBS> H? >: BL @K>:M>K MA:G ;RM>L 0A>K>:K> LBQ LNL LH MA> EBLM A>GLBHG K>MNKGL : EBLM H? LBQ ?BE>G:F>L

    EE MA> >Q:FIE>L H? EBLM A>GLBHGL LH ?:K A:O> ?>:MNK>= LBFIE> >QIK>LLBHGL [ FNEMBIER : GNF;>K ;R : HKB@BG:E EBLM BM>F :?M>K ?BEM>KBG@ NM MA>K>^L GH EBFBM MHAHP Q : EBLM A>GLBHG

  • JNQPSUPTHMPC

    JNQPSUIVNBOTJ[F

    0ABL EBLM A>GLBHG ?BG=L :EE MA> YNM ?BE>L BG MA> GM PHKDBG@ =BK>ML MA> LBS> H? >: ;R PTTUBU ?NG LBS> :G= MA> :;LHENM> I:MA H? >: ;R PTQBUISFBMQBUI ?NGGLBHG ;NBE=L HG MA> IK>OBHNL HG> MH BQQSPYJNBUF@TJ[F ?NG ?BE> LBS>H? >:

    3.4. DICTIONARY COMPREHENSIONS

    =BGLBHG BL EBD> : EBLM A>GLBHG ;NM BM

  • JNQPSUPTHMPC

    NFUBEBUB

    NFUBEBUB BMQIBNFUJDTUFTUQZOUTUBU@SFTVMUTU@NPEFTU@JOPTU@EFW

    TU@OMJOLTU@VJETU@HJETU@TJ[FTU@BUJNF

    TU@NUJNFTU@DUJNF

    NFUBEBUB@EJDU\GPTTUBUGGPSGJOHMPCHMPCUFTUQZ^

    UZQFNFUBEBUB@EJDU DMBTTEJDU

    MJTUNFUBEBUB@EJDULFZT

    NFUBEBUB@EJDUTU@TJ[F

    0ABL BL GHM : =BGLBHG BM^L : EBLM A>GLBHG %M ?BG=L :EE QZ ?BE>L PBMA UFTU BG MA>BKG:F> MA