Upload
rohit-kondekar
View
261
Download
0
Embed Size (px)
DESCRIPTION
python
Citation preview
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@
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
%? 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
*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
+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
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