diff options
author | Guido van Rossum <guido@python.org> | 1996-10-22 20:00:02 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1996-10-22 20:00:02 (GMT) |
commit | 1f17543ee7deba553d560fb6e1fb616c04079ec0 (patch) | |
tree | 7e7be752ff0ea5a0b44593c8f123ae6ee9559b8c | |
parent | 6a05f951cd8a1acafaf77e248ec60edd1ce6c08d (diff) | |
download | cpython-1f17543ee7deba553d560fb6e1fb616c04079ec0.zip cpython-1f17543ee7deba553d560fb6e1fb616c04079ec0.tar.gz cpython-1f17543ee7deba553d560fb6e1fb616c04079ec0.tar.bz2 |
Removed LaTeX version of reference manual. Added ref/ref.ps.
-rw-r--r-- | Doc/Makefile | 31 | ||||
-rw-r--r-- | Doc/ref.tex | 68 | ||||
-rw-r--r-- | Doc/ref/ref.ps | 16373 | ||||
-rw-r--r-- | Doc/ref/ref.tex | 68 | ||||
-rw-r--r-- | Doc/ref/ref1.tex | 81 | ||||
-rw-r--r-- | Doc/ref/ref2.tex | 372 | ||||
-rw-r--r-- | Doc/ref/ref3.tex | 885 | ||||
-rw-r--r-- | Doc/ref/ref4.tex | 201 | ||||
-rw-r--r-- | Doc/ref/ref5.tex | 759 | ||||
-rw-r--r-- | Doc/ref/ref6.tex | 512 | ||||
-rw-r--r-- | Doc/ref/ref7.tex | 391 | ||||
-rw-r--r-- | Doc/ref/ref8.tex | 105 | ||||
-rw-r--r-- | Doc/ref1.tex | 81 | ||||
-rw-r--r-- | Doc/ref2.tex | 372 | ||||
-rw-r--r-- | Doc/ref3.tex | 885 | ||||
-rw-r--r-- | Doc/ref4.tex | 201 | ||||
-rw-r--r-- | Doc/ref5.tex | 759 | ||||
-rw-r--r-- | Doc/ref6.tex | 512 | ||||
-rw-r--r-- | Doc/ref7.tex | 391 | ||||
-rw-r--r-- | Doc/ref8.tex | 105 |
20 files changed, 16382 insertions, 6770 deletions
diff --git a/Doc/Makefile b/Doc/Makefile index 9a32058..e609518 100644 --- a/Doc/Makefile +++ b/Doc/Makefile @@ -6,9 +6,14 @@ # This is a bit of a mess. The main documents are: # tut -- Tutorial (file tut.tex) # lib -- Library Reference (file lib.tex, inputs lib*.tex) -# ref -- Language Reference (file ref.tex, inputs ref*.tex) # ext -- Extending and Embedding (file ext.tex) # +# The Reference Manual is now maintained as a FrameMaker document. +# See the subdirectory ref; PostScript is included as ref/ref.ps. +# (In the future, the Tutorial will also be converted to FrameMaker; +# the other documents will be maintained in a text format such +# as LaTeX or perhaps TIM.) +# # The main target "make all" creates DVI and PostScript for these # four. You can also do "make lib" (etc.) to process individual # documents. @@ -74,20 +79,19 @@ DOCDESTDIR= $LIBDEST/doc # Main target all: all-ps -all-dvi: tut.dvi lib.dvi ref.dvi ext.dvi -all-ps: tut.ps lib.ps ref.ps ext.ps +all-dvi: tut.dvi lib.dvi ext.dvi +all-ps: tut.ps lib.ps ext.ps # Individual document fake targets tut: tut.ps lib: lib.ps -ref: ref.ps ext: ext.ps # CWI Quarterly document fake target qua: qua.ps # Dependencies -tut.dvi lib.dvi ref.dvi ext.dvi: myformat.sty fix_hack +tut.dvi lib.dvi ext.dvi: myformat.sty fix_hack # Tutorial document tut.dvi: tut.tex @@ -97,18 +101,6 @@ tut.dvi: tut.tex tut.ps: tut.dvi $(DVIPS) tut >tut.ps -# Reference document -ref.dvi: ref.tex ref1.tex ref2.tex ref3.tex ref4.tex ref5.tex ref6.tex \ - ref7.tex ref8.tex - touch ref.ind - $(LATEX) ref - ./fix_hack ref.idx - $(MAKEINDEX) ref - $(LATEX) ref - -ref.ps: ref.dvi - $(DVIPS) ref >ref.ps - # LaTeX source files for the Python Library Reference LIBFILES = lib.tex \ libintro.tex libobjs.tex libtypes.tex libexcs.tex libfuncs.tex \ @@ -216,11 +208,6 @@ l2htut: tut.dvi @rm -rf python-tut mv tut python-tut -l2href: ref.dvi - $(L2H) $(L2HARGS) ref.tex - @rm -rf python-ref - mv ref python-ref - l2hext: ext.dvi $(L2H) $(L2HARGS) ext.tex @rm -rf python-ext diff --git a/Doc/ref.tex b/Doc/ref.tex deleted file mode 100644 index e63fa7c..0000000 --- a/Doc/ref.tex +++ /dev/null @@ -1,68 +0,0 @@ -\documentstyle[twoside,11pt,myformat]{report} - -\title{Python Reference Manual} - -\input{boilerplate} - -% Tell \index to actually write the .idx file -\makeindex - -\begin{document} - -\pagenumbering{roman} - -\maketitle - -\input{copyright} - -\begin{abstract} - -\noindent -Python is a simple, yet powerful, interpreted programming language -that bridges the gap between C and shell programming, and is thus -ideally suited for ``throw-away programming'' and rapid prototyping. -Its syntax is put together from constructs borrowed from a variety of -other languages; most prominent are influences from ABC, C, Modula-3 -and Icon. - -The Python interpreter is easily extended with new functions and data -types implemented in C. Python is also suitable as an extension -language for highly customizable C applications such as editors or -window managers. - -Python is available for various operating systems, amongst which -several flavors of {\UNIX} (including Linux), the Apple Macintosh O.S., -MS-DOS, MS-Windows 3.1, Windows NT, and OS/2. - -This reference manual describes the syntax and ``core semantics'' of -the language. It is terse, but attempts to be exact and complete. -The semantics of non-essential built-in object types and of the -built-in functions and modules are described in the {\em Python -Library Reference}. For an informal introduction to the language, see -the {\em Python Tutorial}. - -\end{abstract} - -\pagebreak - -{ -\parskip = 0mm -\tableofcontents -} - -\pagebreak - -\pagenumbering{arabic} - -\include{ref1} % Introduction -\include{ref2} % Lexical analysis -\include{ref3} % Data model -\include{ref4} % Execution model -\include{ref5} % Expressions and conditions -\include{ref6} % Simple statements -\include{ref7} % Compound statements -\include{ref8} % Top-level components - -\input{ref.ind} - -\end{document} diff --git a/Doc/ref/ref.ps b/Doc/ref/ref.ps new file mode 100644 index 0000000..198d968 --- /dev/null +++ b/Doc/ref/ref.ps @@ -0,0 +1,16373 @@ +%!PS-Adobe-3.0 +%%BoundingBox: (atend) +%%Pages: (atend) +%%PageOrder: (atend) +%%DocumentFonts: (atend) +%%Creator: Frame 5.0 +%%DocumentData: Clean7Bit +%%EndComments +%%BeginProlog +% +% Frame ps_prolog 5.0, for use with Frame 5.0 products +% This ps_prolog file is Copyright (c) 1986-1995 Frame Technology +% Corporation. All rights reserved. This ps_prolog file may be +% freely copied and distributed in conjunction with documents created +% using FrameMaker, FrameMaker/SGML and FrameViewer as long as this +% copyright notice is preserved. +% +% FrameMaker users specify the proper paper size for each print job in the +% "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the +% printer that the PS file is sent to does not support the requested paper +% size, or if there is no paper tray of the proper size currently installed, +% then the job will not be printed. The following flag, if set to true, will +% cause the job to print on the default paper in such cases. +/FMAllowPaperSizeMismatch false def +% +% Frame products normally print colors as their true color on a color printer +% or as shades of gray, based on luminance, on a black-and white printer. The +% following flag, if set to true, forces all non-white colors to print as pure +% black. This has no effect on bitmap images. +/FMPrintAllColorsAsBlack false def +% +% Frame products can either set their own line screens or use a printer's +% default settings. Three flags below control this separately for no +% separations, spot separations and process separations. If a flag +% is true, then the default printer settings will not be changed. If it is +% false, Frame products will use their own settings from a table based on +% the printer's resolution. +/FMUseDefaultNoSeparationScreen true def +/FMUseDefaultSpotSeparationScreen true def +/FMUseDefaultProcessSeparationScreen false def +% +% For any given PostScript printer resolution, Frame products have two sets of +% screen angles and frequencies for printing process separations, which are +% recomended by Adobe. The following variable chooses the higher frequencies +% when set to true or the lower frequencies when set to false. This is only +% effective if the appropriate FMUseDefault...SeparationScreen flag is false. +/FMUseHighFrequencyScreens true def +% +% The following is a set of predefined optimal frequencies and angles for various +% common dpi settings. This is taken from "Advances in Color Separation Using +% PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043) +% and corrolated with information which is in various PPD (4.0) files. +% +% The "dpiranges" figure is the minimum dots per inch device resolution which +% can support this setting. The "low" and "high" values are controlled by the +% setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control +% the use of the "Yellow Triple Dot" feature whereby the frequency id divided by +% three, but the dot function is "trippled" giving a block of 3x3 dots per cell. +% +% PatFreq is a compromise pattern frequency for ps Level 2 printers which is close +% to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat +% (too badly) against the screen frequencies of any separations for that DPI. +/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def +/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def +/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def +/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def +/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def +/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def +/YLowTDot [ true true false true true false false false ] def +/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def +/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def +/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def +/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def +/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def +/YHighTDot [ false false true false false true true false ] def +/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def +% +% PostScript Level 2 printers contain an "Accurate Screens" feature which can +% improve process separation rendering at the expense of compute time. This +% flag is ignored by PostScript Level 1 printers. +/FMUseAcccurateScreens true def +% +% The following PostScript procedure defines the spot function that Frame +% products will use for process separations. You may un-comment-out one of +% the alternative functions below, or use your own. +% +% Dot function +/FMSpotFunction {abs exch abs 2 copy add 1 gt + {1 sub dup mul exch 1 sub dup mul add 1 sub } + {dup mul exch dup mul add 1 exch sub }ifelse } def +% +% Line function +% /FMSpotFunction { pop } def +% +% Elipse function +% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add +% sqrt 1 exch sub } def +% +% +/FMversion (5.0) def +/fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def +/FMPColor + fMLevel1 { + false + /colorimage where {pop pop true} if + } { + true + } ifelse +def +/FrameDict 400 dict def +systemdict /errordict known not {/errordict 10 dict def + errordict /rangecheck {stop} put} if +% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk +FrameDict /tmprangecheck errordict /rangecheck get put +errordict /rangecheck {FrameDict /bug true put} put +FrameDict /bug false put +mark +% Some PS machines read past the CR, so keep the following 3 lines together! +currentfile 5 string readline +00 +0000000000 +cleartomark +errordict /rangecheck FrameDict /tmprangecheck get put +FrameDict /bug get { + /readline { + /gstring exch def + /gfile exch def + /gindex 0 def + { + gfile read pop + dup 10 eq {exit} if + dup 13 eq {exit} if + gstring exch gindex exch put + /gindex gindex 1 add def + } loop + pop + gstring 0 gindex getinterval true + } bind def + } if +/FMshowpage /showpage load def +/FMquit /quit load def +/FMFAILURE { + dup = flush + FMshowpage + /Helvetica findfont 12 scalefont setfont + 72 200 moveto show + 72 220 moveto show + FMshowpage + FMquit + } def +/FMVERSION { + FMversion ne { + (Frame product version does not match ps_prolog! Check installation;) + (also check ~/fminit and ./fminit for old versions) FMFAILURE + } if + } def +/FMBADEPSF { + (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4) + (says your EPS file is not valid, as it calls X ) + dup dup (X) search pop exch pop exch pop length + 5 -1 roll + putinterval + FMFAILURE + } def +/fmConcatProcs + { + /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def + newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx +}def +FrameDict begin [ + /ALDsave + /FMdicttop + /FMoptop + /FMpointsize + /FMsaveobject + /b + /bitmapsave + /blut + /bpside + /bs + /bstring + /bwidth + /c + /cf + /cs + /cynu + /depth + /edown + /fh + /fillvals + /fw + /fx + /fy + /g + /gfile + /gindex + /grnt + /gryt + /gstring + /height + /hh + /i + /im + /indx + /is + /k + /kk + /landscape + /lb + /len + /llx + /lly + /m + /magu + /manualfeed + /n + /offbits + /onbits + /organgle + /orgbangle + /orgbfreq + /orgbproc + /orgbxfer + /orgfreq + /orggangle + /orggfreq + /orggproc + /orggxfer + /orgmatrix + /orgproc + /orgrangle + /orgrfreq + /orgrproc + /orgrxfer + /orgxfer + /pagesave + /paperheight + /papersizedict + /paperwidth + /pos + /pwid + /r + /rad + /redt + /sl + /str + /tran + /u + /urx + /ury + /val + /width + /width + /ws + /ww + /x + /x1 + /x2 + /xindex + /xpoint + /xscale + /xx + /y + /y1 + /y2 + /yelu + /yindex + /ypoint + /yscale + /yy +] { 0 def } forall +/FmBD {bind def} bind def +systemdict /pdfmark known { + /fMAcrobat true def + + /FmPD /pdfmark load def + + + /FmPT /show load def + + + currentdistillerparams /CoreDistVersion get 2000 ge { + + + /FmPD2 /pdfmark load def + + + + + + /FmPA { mark exch /Dest exch 5 3 roll + /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD + }FmBD + } { + + /FmPD2 /cleartomark load def + /FmPA {pop pop pop}FmBD + } ifelse +} { + + /fMAcrobat false def + /FmPD /cleartomark load def + /FmPD2 /cleartomark load def + /FmPT /pop load def + /FmPA {pop pop pop}FmBD +} ifelse +/FmDC { + transform fMDefaultMatrix itransform cvi exch cvi exch +}FmBD +/FmBx { + dup 3 index lt {3 1 roll exch} if + 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if +}FmBD +/FMnone 0 def +/FMcyan 1 def +/FMmagenta 2 def +/FMyellow 3 def +/FMblack 4 def +/FMcustom 5 def +/fMNegative false def +/FrameSepIs FMnone def +/FrameSepBlack 0 def +/FrameSepYellow 0 def +/FrameSepMagenta 0 def +/FrameSepCyan 0 def +/FrameSepRed 1 def +/FrameSepGreen 1 def +/FrameSepBlue 1 def +/FrameCurGray 1 def +/FrameCurPat null def +/FrameCurColors [ 0 0 0 1 0 0 0 ] def +/FrameColorEpsilon .001 def +/eqepsilon { + sub dup 0 lt {neg} if + FrameColorEpsilon le +} bind def +/FrameCmpColorsCMYK { + 2 copy 0 get exch 0 get eqepsilon { + 2 copy 1 get exch 1 get eqepsilon { + 2 copy 2 get exch 2 get eqepsilon { + 3 get exch 3 get eqepsilon + } {pop pop false} ifelse + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/FrameCmpColorsRGB { + 2 copy 4 get exch 0 get eqepsilon { + 2 copy 5 get exch 1 get eqepsilon { + 6 get exch 2 get eqepsilon + }{pop pop false} ifelse + } {pop pop false} ifelse +} bind def +/RGBtoCMYK { + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 1 exch sub + 3 1 roll + 3 copy + 2 copy + le { pop } { exch pop } ifelse + 2 copy + le { pop } { exch pop } ifelse + dup dup dup + 6 1 roll + 4 1 roll + 7 1 roll + sub + 6 1 roll + sub + 5 1 roll + sub + 4 1 roll +} bind def +/CMYKtoRGB { + dup dup 4 -1 roll add + 5 1 roll 3 -1 roll add + 4 1 roll add + 1 exch sub dup 0 lt {pop 0} if 3 1 roll + 1 exch sub dup 0 lt {pop 0} if exch + 1 exch sub dup 0 lt {pop 0} if exch +} bind def +/FrameSepInit { + 1.0 RealSetgray +} bind def +/FrameSetSepColor { + /FrameSepBlue exch def + /FrameSepGreen exch def + /FrameSepRed exch def + /FrameSepBlack exch def + /FrameSepYellow exch def + /FrameSepMagenta exch def + /FrameSepCyan exch def + /FrameSepIs FMcustom def + setCurrentScreen +} bind def +/FrameSetCyan { + /FrameSepBlue 1.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 1.0 def + /FrameSepIs FMcyan def + setCurrentScreen +} bind def + +/FrameSetMagenta { + /FrameSepBlue 1.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 1.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMmagenta def + setCurrentScreen +} bind def + +/FrameSetYellow { + /FrameSepBlue 0.0 def + /FrameSepGreen 1.0 def + /FrameSepRed 1.0 def + /FrameSepBlack 0.0 def + /FrameSepYellow 1.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMyellow def + setCurrentScreen +} bind def + +/FrameSetBlack { + /FrameSepBlue 0.0 def + /FrameSepGreen 0.0 def + /FrameSepRed 0.0 def + /FrameSepBlack 1.0 def + /FrameSepYellow 0.0 def + /FrameSepMagenta 0.0 def + /FrameSepCyan 0.0 def + /FrameSepIs FMblack def + setCurrentScreen +} bind def + +/FrameNoSep { + /FrameSepIs FMnone def + setCurrentScreen +} bind def +/FrameSetSepColors { + FrameDict begin + [ exch 1 add 1 roll ] + /FrameSepColors + exch def end + } bind def +/FrameColorInSepListCMYK { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsCMYK + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/FrameColorInSepListRGB { + FrameSepColors { + exch dup 3 -1 roll + FrameCmpColorsRGB + { pop true exit } if + } forall + dup true ne {pop false} if + } bind def +/RealSetgray /setgray load def +/RealSetrgbcolor /setrgbcolor load def +/RealSethsbcolor /sethsbcolor load def +end +/setgray { + FrameDict begin + FrameSepIs FMnone eq + { RealSetgray } + { + FrameSepIs FMblack eq + { RealSetgray } + { FrameSepIs FMcustom eq + FrameSepRed 0 eq and + FrameSepGreen 0 eq and + FrameSepBlue 0 eq and { + RealSetgray + } { + 1 RealSetgray pop + } ifelse + } ifelse + } ifelse + end +} bind def +/setrgbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetrgbcolor } + { + 3 copy [ 4 1 roll ] + FrameColorInSepListRGB + { + FrameSepBlue eq exch + FrameSepGreen eq and exch + FrameSepRed eq and + { 0 } { 1 } ifelse + } + { + FMPColor { + RealSetrgbcolor + currentcmykcolor + } { + RGBtoCMYK + } ifelse + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end +} bind def +/sethsbcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSethsbcolor } + { + RealSethsbcolor + currentrgbcolor + setrgbcolor + } + ifelse + end +} bind def +FrameDict begin +/setcmykcolor where { + pop /RealSetcmykcolor /setcmykcolor load def +} { + /RealSetcmykcolor { + 4 1 roll + 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat + RealSetrgbcolor pop + } bind def +} ifelse +userdict /setcmykcolor { + FrameDict begin + FrameSepIs FMnone eq + { RealSetcmykcolor } + { + 4 copy [ 5 1 roll ] + FrameColorInSepListCMYK + { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + { 0 } { 1 } ifelse + } + { + FrameSepIs FMblack eq + {1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + RealSetgray + } + ifelse + end + } bind put +fMLevel1 { + + + + /patScreenDict 7 dict dup begin + <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD + <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD + <cccccccccccccccc> [ 0 { pop } dup .5 2 ] FmBD + <ffff0000ffff0000> [ 90 { pop } dup .5 2 ] FmBD + <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD + <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD + <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD + end def +} { + + /patProcDict 5 dict dup begin + <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -1 -1 moveto 9 9 lineto stroke } bind def + <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke + 4 -4 moveto 12 4 lineto stroke + -4 4 moveto 4 12 lineto stroke} bind def + <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke + -4 4 moveto 4 -4 lineto stroke + 4 12 moveto 12 4 lineto stroke} bind def + end def + /patDict 15 dict dup begin + /PatternType 1 def + /PaintType 2 def + /TilingType 3 def + /BBox [ 0 0 8 8 ] def + /XStep 8 def + /YStep 8 def + /PaintProc { + begin + patProcDict bstring known { + patProcDict bstring get exec + } { + 8 8 true [1 0 0 -1 0 8] bstring imagemask + } ifelse + end + } bind def + end def +} ifelse +/combineColor { + FrameSepIs FMnone eq + { + graymode fMLevel1 or not { + + [/Pattern [/DeviceCMYK]] setcolorspace + FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor + } { + FrameCurColors 3 get 1.0 ge { + FrameCurGray RealSetgray + } { + fMAcrobat not FMPColor graymode and and { + 0 1 3 { + FrameCurColors exch get + 1 FrameCurGray sub mul + } for + RealSetcmykcolor + } { + 4 1 6 { + FrameCurColors exch get + graymode { + 1 exch sub 1 FrameCurGray sub mul 1 exch sub + } { + 1.0 lt {FrameCurGray} {1} ifelse + } ifelse + } for + RealSetrgbcolor + } ifelse + } ifelse + } ifelse + } { + FrameCurColors 0 4 getinterval aload + FrameColorInSepListCMYK { + FrameSepBlack eq exch + FrameSepYellow eq and exch + FrameSepMagenta eq and exch + FrameSepCyan eq and + FrameSepIs FMcustom eq and + { FrameCurGray } { 1 } ifelse + } { + FrameSepIs FMblack eq + {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { + FrameSepIs FMyellow eq + {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { + FrameSepIs FMmagenta eq + {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { + FrameSepIs FMcyan eq + {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } + {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse + } ifelse + graymode fMLevel1 or not { + + [/Pattern [/DeviceGray]] setcolorspace + FrameCurPat setcolor + } { + graymode not fMLevel1 and { + + dup 1 lt {pop FrameCurGray} if + } if + RealSetgray + } ifelse + } ifelse +} bind def +/savematrix { + orgmatrix currentmatrix pop + } bind def +/restorematrix { + orgmatrix setmatrix + } bind def +/fMDefaultMatrix matrix defaultmatrix def +/fMatrix2 matrix def +/dpi 72 0 fMDefaultMatrix dtransform + dup mul exch dup mul add sqrt def + +/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def +/sangle 1 0 fMDefaultMatrix dtransform exch atan def + sangle fMatrix2 rotate + fMDefaultMatrix fMatrix2 concatmatrix + dup 0 get /sflipx exch def + 3 get /sflipy exch def +/screenIndex { + 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for +} bind def +/getCyanScreen { + FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getMagentaScreen { + FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse + screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load +} bind def +/getYellowScreen { + FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse + screenIndex dup 3 1 roll get 3 1 roll get { 3 div + {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat + FMSpotFunction } } {/FMSpotFunction load } ifelse + 0.0 exch +} bind def +/getBlackScreen { + FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse + screenIndex get 45.0 /FMSpotFunction load +} bind def +/getSpotScreen { + getBlackScreen +} bind def +/getCompositeScreen { + getBlackScreen +} bind def +/FMSetScreen + fMLevel1 { /setscreen load + }{ { + 8 dict begin + /HalftoneType 1 def + /SpotFunction exch def + /Angle exch def + /Frequency exch def + /AccurateScreens FMUseAcccurateScreens def + currentdict end sethalftone + } bind } ifelse +def +/setDefaultScreen { + FMPColor { + orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer + } + { + orgxfer cvx settransfer + } ifelse + orgfreq organgle orgproc cvx setscreen +} bind def +/setCurrentScreen { + FrameSepIs FMnone eq { + FMUseDefaultNoSeparationScreen { + setDefaultScreen + } { + getCompositeScreen FMSetScreen + } ifelse + } { + FrameSepIs FMcustom eq { + FMUseDefaultSpotSeparationScreen { + setDefaultScreen + } { + getSpotScreen FMSetScreen + } ifelse + } { + FMUseDefaultProcessSeparationScreen { + setDefaultScreen + } { + FrameSepIs FMcyan eq { + getCyanScreen FMSetScreen + } { + FrameSepIs FMmagenta eq { + getMagentaScreen FMSetScreen + } { + FrameSepIs FMyellow eq { + getYellowScreen FMSetScreen + } { + getBlackScreen FMSetScreen + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse + } ifelse +} bind def +end + +/FMDOCUMENT { + array /FMfonts exch def + /#copies exch def + FrameDict begin + 0 ne /manualfeed exch def + /paperheight exch def + /paperwidth exch def + 0 ne /fMNegative exch def + 0 ne /edown exch def + /yscale exch def + /xscale exch def + fMLevel1 { + manualfeed {setmanualfeed} if + /FMdicttop countdictstack 1 add def + /FMoptop count def + setpapername + manualfeed {true} {papersize} ifelse + {manualpapersize} {false} ifelse + {desperatepapersize} {false} ifelse + {papersizefailure} if + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + } + {2 dict + dup /PageSize [paperwidth paperheight] put + manualfeed {dup /ManualFeed manualfeed put} if + {setpagedevice} stopped {papersizefailure} if + } + ifelse + + FMPColor { + currentcolorscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + cvlit /orgbproc exch def + /orgbangle exch def + /orgbfreq exch def + cvlit /orggproc exch def + /orggangle exch def + /orggfreq exch def + cvlit /orgrproc exch def + /orgrangle exch def + /orgrfreq exch def + currentcolortransfer + fMNegative { + 1 1 4 { + pop { 1 exch sub } fmConcatProcs 4 1 roll + } for + 4 copy + setcolortransfer + } if + cvlit /orgxfer exch def + cvlit /orgbxfer exch def + cvlit /orggxfer exch def + cvlit /orgrxfer exch def + } { + currentscreen + cvlit /orgproc exch def + /organgle exch def + /orgfreq exch def + + currenttransfer + fMNegative { + { 1 exch sub } fmConcatProcs + dup settransfer + } if + cvlit /orgxfer exch def + } ifelse + end +} def +/FMBEGINPAGE { + FrameDict begin + /pagesave save def + 3.86 setmiterlimit + /landscape exch 0 ne def + landscape { + 90 rotate 0 exch dup /pwid exch def neg translate pop + }{ + pop /pwid exch def + } ifelse + edown { [-1 0 0 1 pwid 0] concat } if + 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto + 0 paperheight lineto 0 0 lineto 1 setgray fill + xscale yscale scale + /orgmatrix matrix def + gsave +} def +/FMENDPAGE { + grestore + pagesave restore + end + showpage + } def +/FMFONTDEFINE { + FrameDict begin + findfont + ReEncode + 1 index exch + definefont + FMfonts 3 1 roll + put + end + } def +/FMFILLS { + FrameDict begin dup + array /fillvals exch def + dict /patCache exch def + end + } def +/FMFILL { + FrameDict begin + fillvals 3 1 roll put + end + } def +/FMNORMALIZEGRAPHICS { + newpath + 1 setlinewidth + 0 setlinecap + 0 0 0 sethsbcolor + 0 setgray + } bind def +/FMBEGINEPSF { + end + /FMEPSF save def + /showpage {} def +% See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. +% "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) + /banddevice {(banddevice) FMBADEPSF} def + /clear {(clear) FMBADEPSF} def + /cleardictstack {(cleardictstack) FMBADEPSF} def + /copypage {(copypage) FMBADEPSF} def + /erasepage {(erasepage) FMBADEPSF} def + /exitserver {(exitserver) FMBADEPSF} def + /framedevice {(framedevice) FMBADEPSF} def + /grestoreall {(grestoreall) FMBADEPSF} def + /initclip {(initclip) FMBADEPSF} def + /initgraphics {(initgraphics) FMBADEPSF} def + /quit {(quit) FMBADEPSF} def + /renderbands {(renderbands) FMBADEPSF} def + /setglobal {(setglobal) FMBADEPSF} def + /setpagedevice {(setpagedevice) FMBADEPSF} def + /setshared {(setshared) FMBADEPSF} def + /startjob {(startjob) FMBADEPSF} def + /lettertray {(lettertray) FMBADEPSF} def + /letter {(letter) FMBADEPSF} def + /lettersmall {(lettersmall) FMBADEPSF} def + /11x17tray {(11x17tray) FMBADEPSF} def + /11x17 {(11x17) FMBADEPSF} def + /ledgertray {(ledgertray) FMBADEPSF} def + /ledger {(ledger) FMBADEPSF} def + /legaltray {(legaltray) FMBADEPSF} def + /legal {(legal) FMBADEPSF} def + /statementtray {(statementtray) FMBADEPSF} def + /statement {(statement) FMBADEPSF} def + /executivetray {(executivetray) FMBADEPSF} def + /executive {(executive) FMBADEPSF} def + /a3tray {(a3tray) FMBADEPSF} def + /a3 {(a3) FMBADEPSF} def + /a4tray {(a4tray) FMBADEPSF} def + /a4 {(a4) FMBADEPSF} def + /a4small {(a4small) FMBADEPSF} def + /b4tray {(b4tray) FMBADEPSF} def + /b4 {(b4) FMBADEPSF} def + /b5tray {(b5tray) FMBADEPSF} def + /b5 {(b5) FMBADEPSF} def + FMNORMALIZEGRAPHICS + [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall + fx fw 2 div add fy fh 2 div add translate + rotate + fw 2 div neg fh 2 div neg translate + fw urx llx sub div fh ury lly sub div scale + llx neg lly neg translate + /FMdicttop countdictstack 1 add def + /FMoptop count def + } bind def +/FMENDEPSF { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMEPSF restore + FrameDict begin + } bind def +FrameDict begin +/setmanualfeed { +%%BeginFeature *ManualFeed True + statusdict /manualfeed true put +%%EndFeature + } bind def +/max {2 copy lt {exch} if pop} bind def +/min {2 copy gt {exch} if pop} bind def +/inch {72 mul} def +/pagedimen { + paperheight sub abs 16 lt exch + paperwidth sub abs 16 lt and + {/papername exch def} {pop} ifelse + } bind def +/setpapername { + /papersizedict 14 dict def + papersizedict begin + /papername /unknown def + /Letter 8.5 inch 11.0 inch pagedimen + /LetterSmall 7.68 inch 10.16 inch pagedimen + /Tabloid 11.0 inch 17.0 inch pagedimen + /Ledger 17.0 inch 11.0 inch pagedimen + /Legal 8.5 inch 14.0 inch pagedimen + /Statement 5.5 inch 8.5 inch pagedimen + /Executive 7.5 inch 10.0 inch pagedimen + /A3 11.69 inch 16.5 inch pagedimen + /A4 8.26 inch 11.69 inch pagedimen + /A4Small 7.47 inch 10.85 inch pagedimen + /B4 10.125 inch 14.33 inch pagedimen + /B5 7.16 inch 10.125 inch pagedimen + end + } bind def +/papersize { + papersizedict begin + /Letter {lettertray letter} def + /LetterSmall {lettertray lettersmall} def + /Tabloid {11x17tray 11x17} def + /Ledger {ledgertray ledger} def + /Legal {legaltray legal} def + /Statement {statementtray statement} def + /Executive {executivetray executive} def + /A3 {a3tray a3} def + /A4 {a4tray a4} def + /A4Small {a4tray a4small} def + /B4 {b4tray b4} def + /B5 {b5tray b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + statusdict begin stopped end + } bind def +/manualpapersize { + papersizedict begin + /Letter {letter} def + /LetterSmall {lettersmall} def + /Tabloid {11x17} def + /Ledger {ledger} def + /Legal {legal} def + /Statement {statement} def + /Executive {executive} def + /A3 {a3} def + /A4 {a4} def + /A4Small {a4small} def + /B4 {b4} def + /B5 {b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + stopped + } bind def +/desperatepapersize { + statusdict /setpageparams known + { + paperwidth paperheight 0 1 + statusdict begin + {setpageparams} stopped + end + } {true} ifelse + } bind def +/papersizefailure { + FMAllowPaperSizeMismatch not + { +(The requested paper size is not available in any currently-installed tray) +(Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray) + FMFAILURE } if + } def +/DiacriticEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar +/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute +/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis +/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis +/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve +/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex +/udieresis /dagger /.notdef /cent /sterling /section /bullet +/paragraph /germandbls /registered /copyright /trademark /acute +/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef +/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown +/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef +/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde +/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright +/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis +/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl +/periodcentered /quotesinglbase /quotedblbase /perthousand +/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute +/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve +/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron +/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron +] def +/ReEncode { + dup + length + dict begin + { + 1 index /FID ne + {def} + {pop pop} ifelse + } forall + 0 eq {/Encoding DiacriticEncoding def} if + currentdict + end + } bind def +FMPColor + + { + /BEGINBITMAPCOLOR { + BITMAPCOLOR} def + /BEGINBITMAPCOLORc { + BITMAPCOLORc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUECOLOR } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUECOLORc } def + /BEGINBITMAPCMYK { + BITMAPCMYK } def + /BEGINBITMAPCMYKc { + BITMAPCMYKc } def + } + + { + /BEGINBITMAPCOLOR { + BITMAPGRAY} def + /BEGINBITMAPCOLORc { + BITMAPGRAYc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUEGRAY } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUEGRAYc } def + /BEGINBITMAPCMYK { + BITMAPCMYKGRAY } def + /BEGINBITMAPCMYKc { + BITMAPCMYKGRAYc } def + } +ifelse +/K { + FMPrintAllColorsAsBlack { + dup 1 eq 2 index 1 eq and 3 index 1 eq and not + {7 {pop} repeat 0 0 0 1 0 0 0} if + } if + FrameCurColors astore + pop combineColor +} bind def +/graymode true def +fMLevel1 { + /fmGetFlip { + fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse + } FmBD +} if +/setPatternMode { + fMLevel1 { + 2 index patScreenDict exch known { + pop pop + patScreenDict exch get aload pop + freq + mul + 5 2 roll + fMatrix2 currentmatrix 1 get 0 ne { + 3 -1 roll 90 add 3 1 roll + sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul + } { + sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul + } ifelse + 0 lt {exch pop} {pop} ifelse + fMNegative { + {neg} fmConcatProcs + } if + bind + + + + systemdict /setscreen get exec + /FrameCurGray exch def + } { + /bwidth exch def + /bpside exch def + /bstring exch def + /onbits 0 def /offbits 0 def + freq sangle landscape {90 add} if + {/ypoint exch def + /xpoint exch def + /xindex xpoint 1 add 2 div bpside mul cvi def + /yindex ypoint 1 add 2 div bpside mul cvi def + bstring yindex bwidth mul xindex 8 idiv add get + 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if + {/onbits onbits 1 add def 1} + {/offbits offbits 1 add def 0} + ifelse + } + setscreen + offbits offbits onbits add div fMNegative {1.0 exch sub} if + /FrameCurGray exch def + } ifelse + } { + pop pop + dup patCache exch known { + patCache exch get + } { + dup + patDict /bstring 3 -1 roll put + patDict + 9 PatFreq screenIndex get div dup matrix scale + makepattern + dup + patCache 4 -1 roll 3 -1 roll put + } ifelse + /FrameCurGray 0 def + /FrameCurPat exch def + } ifelse + /graymode false def + combineColor +} bind def +/setGrayScaleMode { + graymode not { + /graymode true def + fMLevel1 { + setCurrentScreen + } if + } if + /FrameCurGray exch def + combineColor +} bind def +/normalize { + transform round exch round exch itransform + } bind def +/dnormalize { + dtransform round exch round exch idtransform + } bind def +/lnormalize { + 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop + } bind def +/H { + lnormalize setlinewidth + } bind def +/Z { + setlinecap + } bind def + +/PFill { + graymode fMLevel1 or not { + gsave 1 setgray eofill grestore + } if +} bind def +/PStroke { + graymode fMLevel1 or not { + gsave 1 setgray stroke grestore + } if + stroke +} bind def +/X { + fillvals exch get + dup type /stringtype eq + {8 1 setPatternMode} + {setGrayScaleMode} + ifelse + } bind def +/V { + PFill gsave eofill grestore + } bind def +/Vclip { + clip + } bind def +/Vstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/N { + PStroke + } bind def +/Nclip { + strokepath clip newpath + } bind def +/Nstrk { + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/M {newpath moveto} bind def +/E {lineto} bind def +/D {curveto} bind def +/O {closepath} bind def +/L { + /n exch def + newpath + normalize + moveto + 2 1 n {pop normalize lineto} for + } bind def +/Y { + L + closepath + } bind def +/R { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x1 y1 + x2 y1 + x2 y2 + x1 y2 + 4 Y + } bind def +/rarc + {rad + arcto + } bind def +/RR { + /rad exch def + normalize + /y2 exch def + /x2 exch def + normalize + /y1 exch def + /x1 exch def + mark + newpath + { + x1 y1 rad add moveto + x1 y2 x2 y2 rarc + x2 y2 x2 y1 rarc + x2 y1 x1 y1 rarc + x1 y1 x1 y2 rarc + closepath + } stopped {x1 y1 x2 y2 R} if + cleartomark + } bind def +/RRR { + /rad exch def + normalize /y4 exch def /x4 exch def + normalize /y3 exch def /x3 exch def + normalize /y2 exch def /x2 exch def + normalize /y1 exch def /x1 exch def + newpath + normalize moveto + mark + { + x2 y2 x3 y3 rarc + x3 y3 x4 y4 rarc + x4 y4 x1 y1 rarc + x1 y1 x2 y2 rarc + closepath + } stopped + {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if + cleartomark + } bind def +/C { + grestore + gsave + R + clip + setCurrentScreen +} bind def +/CP { + grestore + gsave + Y + clip + setCurrentScreen +} bind def +/F { + FMfonts exch get + FMpointsize scalefont + setfont + } bind def +/Q { + /FMpointsize exch def + F + } bind def +/T { + moveto show + } bind def +/RF { + rotate + 0 ne {-1 1 scale} if + } bind def +/TF { + gsave + moveto + RF + show + grestore + } bind def +/P { + moveto + 0 32 3 2 roll widthshow + } bind def +/PF { + gsave + moveto + RF + 0 32 3 2 roll widthshow + grestore + } bind def +/S { + moveto + 0 exch ashow + } bind def +/SF { + gsave + moveto + RF + 0 exch ashow + grestore + } bind def +/B { + moveto + 0 32 4 2 roll 0 exch awidthshow + } bind def +/BF { + gsave + moveto + RF + 0 32 4 2 roll 0 exch awidthshow + grestore + } bind def +/G { + gsave + newpath + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill fill + grestore + } bind def +/Gstrk { + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/Gclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GG { + gsave + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + PFill + fill + grestore + } bind def +/GGclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + clip newpath + restorematrix + } bind def +/GGstrk { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + restorematrix + currentlinewidth exch setlinewidth PStroke setlinewidth + } bind def +/A { + gsave + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/Aclip { + newpath + savematrix + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/Astrk { + Gstrk +} bind def +/AA { + gsave + savematrix + newpath + + 3 index 2 div add exch 4 index 2 div sub exch + + normalize 3 index 2 div sub exch 4 index 2 div add exch + translate + rotate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + PStroke + grestore + } bind def +/AAclip { + savematrix + newpath + normalize translate 0.0 0.0 moveto + rotate + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath + strokepath clip newpath + restorematrix +} bind def +/AAstrk { + GGstrk +} bind def +/BEGINPRINTCODE { + /FMdicttop countdictstack 1 add def + /FMoptop count 7 sub def + /FMsaveobject save def + userdict begin + /showpage {} def + FMNORMALIZEGRAPHICS + 3 index neg 3 index neg translate + } bind def +/ENDPRINTCODE { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMsaveobject restore + } bind def +/gn { + 0 + { 46 mul + cf read pop + 32 sub + dup 46 lt {exit} if + 46 sub add + } loop + add + } bind def +/cfs { + /str sl string def + 0 1 sl 1 sub {str exch val put} for + str def + } bind def +/ic [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 + {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} + {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} + {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} + {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} + {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} + {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} + {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} + {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} + {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} + ] def +/ms { + /sl exch def + /val 255 def + /ws cfs + /im cfs + /val 0 def + /bs cfs + /cs cfs + } bind def +400 ms +/ip { + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip { + + + bis ris copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + ris gis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + gis bis copy pop + dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/rip4 { + + + kis cis copy pop + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + cis mis copy pop + dup is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + mis yis copy pop + dup dup add is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop pop + yis kis copy pop + 3 mul is exch + + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/wh { + /len exch def + /pos exch def + ws 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/bl { + /len exch def + /pos exch def + bs 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/s1 1 string def +/fl { + /len exch def + /pos exch def + /val cf s1 readhexstring pop 0 get def + pos 1 pos len add 1 sub {im exch val put} for + pos len + } bind def +/hx { + 3 copy getinterval + cf exch readhexstring pop pop + } bind def +/wbytes { + dup dup + 8 gt { pop 8 idiv mul } + { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse + } bind def +/BEGINBITMAPBWc { + 1 {} COMMONBITMAPc + } bind def +/BEGINBITMAPGRAYc { + 8 {} COMMONBITMAPc + } bind def +/BEGINBITMAP2BITc { + 2 {} COMMONBITMAPc + } bind def +/COMMONBITMAPc { + + /cvtProc exch def + /depth exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + cvtProc + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {ip} image + bitmapsave restore + grestore + } bind def +/BEGINBITMAPBW { + 1 {} COMMONBITMAP + } bind def +/BEGINBITMAPGRAY { + 8 {} COMMONBITMAP + } bind def +/BEGINBITMAP2BIT { + 2 {} COMMONBITMAP + } bind def +/COMMONBITMAP { + /cvtProc exch def + /depth exch def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + cvtProc + /is width depth wbytes string def + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {cf is readhexstring pop} image + bitmapsave restore + grestore + } bind def +/ngrayt 256 array def +/nredt 256 array def +/nbluet 256 array def +/ngreent 256 array def +fMLevel1 { +/colorsetup { + currentcolortransfer + /gryt exch def + /blut exch def + /grnt exch def + /redt exch def + 0 1 255 { + /indx exch def + /cynu 1 red indx get 255 div sub def + /magu 1 green indx get 255 div sub def + /yelu 1 blue indx get 255 div sub def + /kk cynu magu min yelu min def + /u kk currentundercolorremoval exec def +% /u 0 def + nredt indx 1 0 cynu u sub max sub redt exec put + ngreent indx 1 0 magu u sub max sub grnt exec put + nbluet indx 1 0 yelu u sub max sub blut exec put + ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put + } for + {255 mul cvi nredt exch get} + {255 mul cvi ngreent exch get} + {255 mul cvi nbluet exch get} + {255 mul cvi ngrayt exch get} + setcolortransfer + {pop 0} setundercolorremoval + {} setblackgeneration + } bind def +} +{ +/colorSetup2 { + [ /Indexed /DeviceRGB 255 + {dup red exch get 255 div + exch dup green exch get 255 div + exch blue exch get 255 div} + ] setcolorspace +} bind def +} ifelse +/fakecolorsetup { + /tran 256 string def + 0 1 255 {/indx exch def + tran indx + red indx get 77 mul + green indx get 151 mul + blue indx get 28 mul + add add 256 idiv put} for + currenttransfer + {255 mul cvi tran exch get 255.0 div} + exch fmConcatProcs settransfer +} bind def +/BITMAPCOLOR { + /depth 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + fMLevel1 { + colorsetup + /is width depth wbytes string def + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {cf is readhexstring pop} {is} {is} true 3 colorimage + } { + colorSetup2 + /is width depth wbytes string def + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width width def + /Height height def + /ImageMatrix [width 0 0 height neg 0 height] def + /DataSource {cf is readhexstring pop} bind def + /BitsPerComponent depth def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPCOLORc { + /depth 8 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + fMLevel1 { + colorsetup + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height depth [width 0 0 height neg 0 height] + {ip} {is} {is} true 3 colorimage + } { + colorSetup2 + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + 7 dict dup begin + /ImageType 1 def + /Width width def + /Height height def + /ImageMatrix [width 0 0 height neg 0 height] def + /DataSource {ip} bind def + /BitsPerComponent depth def + /Decode [0 255] def + end image + } ifelse + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLORc { + /depth 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 width getinterval def + /gis im width width getinterval def + /bis im width 2 mul width getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop ris} {gis} {bis} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCMYKc { + /depth 32 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /cis im 0 width getinterval def + /mis im width width getinterval def + /yis im width 2 mul width getinterval def + /kis im width 3 mul width getinterval def + + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLOR { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /gis width string def + /bis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop } + { cf gis readhexstring pop } + { cf bis readhexstring pop } + true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCMYK { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /mis width string def + /yis width string def + /kis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop } + { cf mis readhexstring pop } + { cf yis readhexstring pop } + { cf kis readhexstring pop } + true 4 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUEGRAYc { + /depth 24 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /ris im 0 width getinterval def + /gis im width width getinterval def + /bis im width 2 mul width getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop ris gis bis width gray} image + bitmapsave restore + grestore + } bind def +/BITMAPCMYKGRAYc { + /depth 32 def + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /lb width depth wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + + /is im 0 lb getinterval def + /cis im 0 width getinterval def + /mis im width width getinterval def + /yis im width 2 mul width getinterval def + /kis im width 3 mul width getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + {width rip pop cis mis yis kis width cgray} image + bitmapsave restore + grestore + } bind def +/cgray { + /ww exch def + /k exch def + /y exch def + /m exch def + /c exch def + 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB + .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add + c i 3 -1 roll floor cvi put } for + c + } bind def +/gray { + /ww exch def + /b exch def + /g exch def + /r exch def + 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul + b i get .114 mul add add r i 3 -1 roll floor cvi put } for + r + } bind def +/BITMAPTRUEGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /gis width string def + /bis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop + cf gis readhexstring pop + cf bis readhexstring pop width gray} image + bitmapsave restore + grestore + } bind def +/BITMAPCMYKGRAY { + gsave + + 3 index 2 div add exch + 4 index 2 div add exch + translate + rotate + 1 index 2 div neg + 1 index 2 div neg + translate + scale + /height exch def /width exch def + /bitmapsave save def + /is width string def + /yis width string def + /mis width string def + /kis width string def + /cf currentfile def + width height 8 [width 0 0 height neg 0 height] + { cf is readhexstring pop + cf mis readhexstring pop + cf yis readhexstring pop + cf kis readhexstring pop width cgray} image + bitmapsave restore + grestore + } bind def +/BITMAPGRAY { + 8 {fakecolorsetup} COMMONBITMAP + } bind def +/BITMAPGRAYc { + 8 {fakecolorsetup} COMMONBITMAPc + } bind def +/ENDBITMAP { + } bind def +end + /ALDmatrix matrix def ALDmatrix currentmatrix pop +/StartALD { + /ALDsave save def + savematrix + ALDmatrix setmatrix + } bind def +/InALD { + restorematrix + } bind def +/DoneALD { + ALDsave restore + } bind def +/I { setdash } bind def +/J { [] 0 setdash } bind def +%%EndProlog +%%BeginSetup +(5.0) FMVERSION +1 1 0 0 612 792 0 1 26 FMDOCUMENT +0 0 /Helvetica-Bold FMFONTDEFINE +1 0 /Times-Roman FMFONTDEFINE +2 0 /Courier FMFONTDEFINE +3 0 /Times-Italic FMFONTDEFINE +4 0 /Times-Bold FMFONTDEFINE +5 0 /Helvetica FMFONTDEFINE +6 0 /Courier-Oblique FMFONTDEFINE +7 0 /Courier-Bold FMFONTDEFINE +32 FMFILLS +0 0 FMFILL +1 0.1 FMFILL +2 0.3 FMFILL +3 0.5 FMFILL +4 0.7 FMFILL +5 0.9 FMFILL +6 0.97 FMFILL +7 1 FMFILL +8 <0f1e3c78f0e1c387> FMFILL +9 <0f87c3e1f0783c1e> FMFILL +10 <cccccccccccccccc> FMFILL +11 <ffff0000ffff0000> FMFILL +12 <8142241818244281> FMFILL +13 <03060c183060c081> FMFILL +14 <8040201008040201> FMFILL +16 1 FMFILL +17 0.9 FMFILL +18 0.7 FMFILL +19 0.5 FMFILL +20 0.3 FMFILL +21 0.1 FMFILL +22 0.03 FMFILL +23 0 FMFILL +24 <f0e1c3870f1e3c78> FMFILL +25 <f0783c1e0f87c3e1> FMFILL +26 <3333333333333333> FMFILL +27 <0000ffff0000ffff> FMFILL +28 <7ebddbe7e7dbbd7e> FMFILL +29 <fcf9f3e7cf9f3f7e> FMFILL +30 <7fbfdfeff7fbfdfe> FMFILL +%%EndSetup +%%Page: "1" 1 +%%BeginPaperSize: Letter +%%EndPaperSize +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +J +0 0 0 1 0 0 0 K +0 16 Q +0 X +0 0 0 1 0 0 0 K +(Python Reference Manual) 221.7 709.33 T +0 0 0 1 0 0 0 K +1 12 Q +(Guido van Rossum) 273.5 672 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(Corporation for National Research Initiatives \050CNRI\051) 201.73 656.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(1895 Preston White Drive, Reston, Va 20191, USA) 205.84 643.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(E-mail:) 170.18 630.67 T +0 0 0 1 0 0 0 K +2 F +(guido@cnri.reston.va.us) 205.93 630.67 T +0 0 0 1 0 0 0 K +1 F +(,) 357.73 630.67 T +0 0 0 1 0 0 0 K +2 F +(guido@python.org) 363.23 630.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +(A) 293.56 585 T +1 9.6 Q +(BSTRACT) 302.23 585 T +0 0 0 1 0 0 0 K +1 11 Q +0.66 (Python is a simple, yet powerful, interpreted programming language that) 156.6 563.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.27 (bridges the gap between C and shell programming, and is thus ideally suit-) 156.6 550.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.08 (ed for \322throw-away programming\323 and rapid prototyping. Its syntax is put) 156.6 537.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.29 (together from constructs borrowed from a variety of other languages; most) 156.6 524.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(prominent are influences from ABC, C, Modula-3 and Icon.) 156.6 511.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.68 (The Python interpreter is easily extended with new functions and data types) 156.6 488.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1.34 (implemented in C. Python is also suitable as an extension language for) 156.6 475.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(highly customizable C applications such as editors or window managers.) 156.6 462.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.2 (Python is available for various systems, amongst which most common fla-) 156.6 439.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1.57 (vors of UNIX \050including Linux\051, the Apple Macintosh, MS-DOS, MS-) 156.6 426.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Windows 3.1\0501\051, Windows 95, Windows NT, and OS/2.) 156.6 413.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1.18 (This reference manual describes the syntax and \322core semantics\323 of the) 156.6 390.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.01 (language. It is terse, but attempts to be exact and complete. The semantics) 156.6 377.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.46 (of non-essential built-in object types and of the built-in functions and mod-) 156.6 364.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.07 (ules are described in the) 156.6 351.67 P +3 F +0.07 (Python Library Reference) 265.99 351.67 P +1 F +0.07 (. For an informal intro-) 380.39 351.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(duction to the language, see the) 156.6 338.67 T +3 F +(Python Tutorial) 298.05 338.67 T +1 F +(.) 368.03 338.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 F +(Copyright \251 1996 Corporation for National Research Initiatives.) 99 290.67 T +(Copyright \251 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, The Netherlands.) 99 277.67 T +0 0 0 1 0 0 0 K +1 F +(All Rights Reserved) 274.89 258.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.18 (Permission to use, copy, modify, and distribute this software and its documentation for any purpose) 99 233.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.24 (and without fee is hereby granted, provided that the above copyright notice appear in all copies and) 99 220.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.03 (that both that copyright notice and this permission notice appear in supporting documentation, and) 99 207.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.06 (that the names of the copyright holders not be used in advertising or publicity pertaining to distribu-) 99 194.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(tion of the software without specific, written prior permission.) 99 181.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.28 (THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS) 99 156.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.22 (SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND) 99 143.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.03 (FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPE-) 99 130.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.08 (CIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER) 99 117.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.25 (RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF) 99 104.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.29 (CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN) 99 91.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.) 99 78.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "1" 1 +%%Page: "2" 2 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "2" 2 +%%Page: "i" 3 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +53.79 62.85 89.79 98.85 R +3 X +0 1 1 0 1 0 0 K +V +59.44 64 86.44 83.88 R +V +0 0 0 0 1 1 1 K +0 12 Q +7 X +0 0 0 0 1 1 1 K +(i) 59.44 75.88 T +0 1 1 0 1 0 0 K +0 0 0 1 0 0 0 K +37 98.81 614.38 98.81 2 L +0.75 H +2 Z +3 X +0 0 0 1 0 0 0 K +N +90.23 21.88 90.23 98.81 2 L +N +0 9 612 783 R +1 H +0 X +N +-83.3 458.43 132 458.43 2 L +0.75 H +3 X +N +-83.3 278.14 131.29 278.14 2 L +N +-84 620.73 132 620.73 2 L +N +0 1 1 0 1 0 0 K +0 36 Q +0 X +0 1 1 0 1 0 0 K +(T) 259.91 714 T +(ab) 279.02 714 T +(le of Contents) 320.68 714 T +0 0 0 1 0 0 0 K +5 10 Q +0 0 0 1 0 0 0 K +(CHAPTER) 144 628.3 T +0 1 1 0 1 0 0 K +4 36 Q +0 1 1 0 1 0 0 K +(1) 194.56 628.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Introduction) 216 628.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +( . . . . . . . . . . . . . . . . . . . . . .) 301 628.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(1) 534.01 628.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(Notation) 216 611.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 258 611.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(1) 535.01 611.63 T +0 0 0 1 0 0 0 K +5 10 Q +(CHAPTER) 144 578.3 T +0 1 1 0 1 0 0 K +4 36 Q +0 1 1 0 1 0 0 K +(2) 194.56 578.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Lexical analysis) 216 578.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +( . . . . . . . . . . . . . . . . . . . .) 322 578.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(3) 534.01 578.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(Line structure) 216 561.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 285 561.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(3) 535.01 561.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Logical lines) 216 546.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 279 546.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(3) 535.01 546.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Physical lines) 216 531.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 285 531.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(3) 535.01 531.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Comments) 216 516.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 270 516.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(3) 535.01 516.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Explicit line joining) 216 501.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 315 501.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(3) 535.01 501.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Implicit line joining) 216 486.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 315 486.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(4) 535.01 486.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Blank lines) 216 471.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 273 471.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(4) 535.01 471.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Indentation) 216 456.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 273 456.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(4) 535.01 456.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Whitespace between tokens) 216 441.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 351 441.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(5) 535.01 441.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Other tokens) 216 426.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 279 426.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(5) 535.01 426.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Identifiers and keywords) 216 411.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 336 411.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(5) 535.01 411.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Keywords) 216 396.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 267 396.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(5) 535.01 396.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Reserved classes of identifiers) 216 381.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 363 381.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(6) 535.01 381.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Literals) 216 366.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 255 366.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(6) 535.01 366.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(String literals) 216 351.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 282 351.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(6) 535.01 351.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(String literal concatenation) 235.01 336.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 369 336.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(7) 535.01 336.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Numeric literals) 216 322.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . .) 294 322.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(8) 535.01 322.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Integer and long integer literals) 235.01 307.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 390 307.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(8) 535.01 307.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Floating point literals) 235.01 293.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 342 293.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(8) 535.01 293.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Imaginary literals) 235.01 279.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 324 279.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(8) 535.01 279.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Operators) 216 265.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 264 265.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(9) 535.01 265.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Delimiters) 216 250.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 267 250.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(9) 535.01 250.63 T +0 0 0 1 0 0 0 K +5 10 Q +(CHAPTER) 144 217.3 T +0 1 1 0 1 0 0 K +4 36 Q +0 1 1 0 1 0 0 K +(3) 194.56 217.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Data model) 216 217.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +( . . . . . . . . . . . . . . . . . . . . .) 297.5 217.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(11) 527.01 217.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(Objects, values and types) 216 200.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 339 200.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(11) 529.01 200.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The standard type hierarchy) 216 185.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 351 185.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(12) 529.01 185.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Special method names) 216 170.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 324 170.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(18) 529.01 170.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Basic customization) 216 155.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 315 155.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(18) 529.01 155.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Customizing attribute access) 216 140.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 354 140.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(19) 529.01 140.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Emulating callable objects) 216 125.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 345 125.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(20) 529.01 125.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "i" 3 +%%Page: "ii" 4 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +486 63 522 99 R +3 X +0 1 1 0 1 0 0 K +V +491.65 64.15 518.65 84.03 R +V +0 0 0 0 1 1 1 K +0 12 Q +7 X +0 0 0 0 1 1 1 K +(ii) 491.65 76.03 T +0 1 1 0 1 0 0 K +0 0 0 1 0 0 0 K +55.04 98.81 614.38 98.81 2 L +0.75 H +2 Z +3 X +0 0 0 1 0 0 0 K +N +486 -97.92 486 99 2 L +N +0 9 612 783 R +1 H +0 X +N +531.54 458.43 696 458.43 2 L +0.75 H +3 X +N +531.54 278.14 695.46 278.14 2 L +N +531 620.73 696 620.73 2 L +N +0 1 1 0 1 0 0 K +0 36 Q +0 X +0 1 1 0 1 0 0 K +(T) 221.22 714 T +(ab) 240.34 714 T +(le of Contents) 281.99 714 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(Emulating sequence and mapping types) 178.99 629.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . .) 372 629.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(20) 492 629.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Additional methods for emulation of sequence types) 198 614.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . .) 453 614.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(20) 492 614.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Emulating numeric types) 178.99 600.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 300 600.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(21) 492 600.63 T +0 0 0 1 0 0 0 K +5 10 Q +(CHAPTER) 106.99 567.3 T +0 1 1 0 1 0 0 K +4 36 Q +0 1 1 0 1 0 0 K +(4) 157.55 567.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Execution model) 178.99 567.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +( . . . . . . . . . . . . . . . . . . .) 287 567.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(23) 490 567.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(Code blocks, execution frames, and name spaces) 178.99 550.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . .) 414 550.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(23) 492 550.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Exceptions) 178.99 535.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 234 535.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(25) 492 535.63 T +0 0 0 1 0 0 0 K +5 10 Q +(CHAPTER) 106.99 502.3 T +0 1 1 0 1 0 0 K +4 36 Q +0 1 1 0 1 0 0 K +(5) 157.55 502.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Expressions) 178.99 502.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(. . . . . . . . . . . . . . . . . . . . . .) 262.5 502.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(27) 490 502.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(Arithmetic conversions) 178.99 485.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 294 485.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(27) 492 485.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Atoms) 178.99 470.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 213 470.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(27) 492 470.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Identifiers \050Names\051) 178.99 455.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 273 455.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(27) 492 455.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Literals) 178.99 440.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 216 440.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(27) 492 440.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Parenthesized forms) 178.99 425.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 279 425.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(28) 492 425.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(List displays) 178.99 410.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 240 410.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(28) 492 410.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Dictionary displays) 178.99 395.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 273 395.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(28) 492 395.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(String conversions) 178.99 380.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 270 380.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(29) 492 380.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Primaries) 178.99 365.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 225 365.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(29) 492 365.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Attribute references) 178.99 350.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 276 350.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(29) 492 350.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Subscriptions) 178.99 335.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . .) 246 335.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(29) 492 335.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Slicings) 178.99 320.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 219 320.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(30) 492 320.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Calls) 178.99 305.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 204 305.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(31) 492 305.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The power operator) 178.99 290.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 276 290.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(32) 492 290.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Unary arithmetic operations) 178.99 275.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 315 275.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(32) 492 275.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Binary arithmetic operations) 178.99 260.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 318 260.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(32) 492 260.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Shifting operations) 178.99 245.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 273 245.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(33) 492 245.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Binary bit-wise operations) 178.99 230.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 309 230.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(33) 492 230.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Comparisons) 178.99 215.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . .) 243 215.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(34) 492 215.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Boolean operations) 178.99 200.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 273 200.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(35) 492 200.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Expression lists) 178.99 185.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 255 185.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(36) 492 185.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Summary) 178.99 170.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 228 170.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(37) 492 170.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "ii" 4 +%%Page: "iii" 5 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +53.79 62.85 89.79 98.85 R +3 X +0 1 1 0 1 0 0 K +V +59.44 64 86.44 83.88 R +V +0 0 0 0 1 1 1 K +0 12 Q +7 X +0 0 0 0 1 1 1 K +(iii) 59.44 75.88 T +0 1 1 0 1 0 0 K +0 0 0 1 0 0 0 K +37 98.81 614.38 98.81 2 L +0.75 H +2 Z +3 X +0 0 0 1 0 0 0 K +N +90.23 21.88 90.23 98.81 2 L +N +0 9 612 783 R +1 H +0 X +N +-83.3 458.43 132 458.43 2 L +0.75 H +3 X +N +-83.3 278.14 131.29 278.14 2 L +N +-84 620.73 132 620.73 2 L +N +0 1 1 0 1 0 0 K +0 36 Q +0 X +0 1 1 0 1 0 0 K +(T) 259.91 714 T +(ab) 279.02 714 T +(le of Contents) 320.68 714 T +0 0 0 1 0 0 0 K +5 10 Q +0 0 0 1 0 0 0 K +(CHAPTER) 144 628.3 T +0 1 1 0 1 0 0 K +4 36 Q +0 1 1 0 1 0 0 K +(6) 194.56 628.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Simple statements) 216 628.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +( . . . . . . . . . . . . . . . . . .) 332.5 628.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(39) 527.01 628.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(Expression statements) 216 611.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 324 611.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(39) 529.01 611.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Assignment statements) 216 596.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 327 596.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(39) 529.01 596.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The pass statement) 216 581.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 309 581.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(41) 529.01 581.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The del statement) 216 566.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . .) 303 566.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(41) 529.01 566.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The print statement) 216 551.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 312 551.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(41) 529.01 551.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The return statement) 216 536.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 318 536.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(42) 529.01 536.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The raise statement) 216 521.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 312 521.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(42) 529.01 521.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The break statement) 216 506.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 315 506.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(42) 529.01 506.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The continue statement) 216 491.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 330 491.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(43) 529.01 491.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The import statement) 216 476.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 321 476.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(43) 529.01 476.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The global statement) 216 461.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 318 461.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(44) 529.01 461.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The exec statement) 216 446.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 309 446.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(44) 529.01 446.63 T +0 0 0 1 0 0 0 K +5 10 Q +(CHAPTER) 144 413.3 T +0 1 1 0 1 0 0 K +4 36 Q +0 1 1 0 1 0 0 K +(7) 194.56 413.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Compound statements) 216 413.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(. . . . . . . . . . . . . . . .) 357 413.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(45) 527.01 413.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(The if statement) 216 396.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 294 396.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(45) 529.01 396.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 216 381.63 T +0 0 0 1 0 0 0 K +2 F +(while) 237.66 381.63 T +0 0 0 1 0 0 0 K +1 F +( statement) 273.66 381.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 324 381.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(46) 529.01 381.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 216 366.63 T +0 0 0 1 0 0 0 K +2 F +(for) 237.66 366.63 T +0 0 0 1 0 0 0 K +1 F +( statement) 259.26 366.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 309 366.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(46) 529.01 366.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 216 351.63 T +0 0 0 1 0 0 0 K +2 F +(try) 237.66 351.63 T +0 0 0 1 0 0 0 K +1 F +( statement) 259.26 351.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 309 351.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(47) 529.01 351.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Function definitions) 216 336.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 315 336.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(48) 529.01 336.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Class definitions) 216 321.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 297 321.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(49) 529.01 321.63 T +0 0 0 1 0 0 0 K +5 10 Q +(CHAPTER) 144 288.3 T +0 1 1 0 1 0 0 K +4 36 Q +0 1 1 0 1 0 0 K +(8) 194.56 288.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Top-level components) 216 288.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +( . . . . . . . . . . . . . . . .) 353.5 288.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(51) 527.01 288.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +0 0 0 1 0 0 0 K +(Complete Python programs) 216 271.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 348 271.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(51) 529.01 271.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(File input) 216 256.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 264 256.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(51) 529.01 256.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Interactive input) 216 241.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 297 241.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(51) 529.01 241.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Expression input) 216 226.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 297 226.63 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(52) 529.01 226.63 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +3 14 Q +1 1 0 0 0 0 1 K +(Index) 216 193.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 248.5 193.3 T +0 0 0 1 0 0 0 K +1 1 0 0 0 0 1 K +(53) 527.01 193.3 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "iii" 5 +%%Page: "iv" 6 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "iv" 6 +%%Page: "1" 7 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(1) 535 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Introduction) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 16 Q +(C) 99 709.33 T +0 12.8 Q +(HAPTER) 110.55 709.33 T +0 16 Q +(1:) 167.62 709.33 T +(I) 198 709.33 T +0 12.8 Q +(NTRODUCTION) 202.45 709.33 T +1 11 Q +(This reference manual describes the Python programming language. It is not intended as a tutorial.) 99 672.67 T +-0.04 (While I am trying to be as precise as possible, I have chosen to use English rather than formal speci-) 99 653.67 P +-0.21 (fications for everything except syntax and lexical analysis. This should make the document more un-) 99 640.67 P +0.58 (derstandable to the average reader, but will leave room for ambiguities. Consequently, if you were) 99 627.67 P +0.6 (coming from Mars and tried to re-implement Python from this document alone, you might have to) 99 614.67 P +-0.03 (guess things and in fact you would probably end up implementing quite a different language. On the) 99 601.67 P +0.25 (other hand, if you are using Python and wonder what the precise rules about a particular area of the) 99 588.67 P +-0.06 (language are, you should definitely be able to find them here. If you would like to see a more formal) 99 575.67 P +(definitition of the language, maybe you could volunteer your time \321 or invent a cloning machine.) 99 562.67 T +-0.01 (It is dangerous to add too many implementation details to a language reference document \321 the im-) 99 543.67 P +-0.46 (plementation may change, and other implementations of the same language may work differently. On) 99 530.67 P +-0.28 (the other hand, there is currently only one Python implementation, and its particular quirks are some-) 99 517.67 P +0.71 (times worth being mentioned, especially where the implementation imposes additional limitations.) 99 504.67 P +(Therefore, you\325ll find short \322implementation notes\323 sprinkled throughout the text.) 99 491.67 T +0.1 (Every Python implementation comes with a number of built-in and standard modules. These are not) 99 472.67 P +-0.53 (documented here, but in the separate) 99 459.67 P +3 F +-0.53 (Python Library Reference) 259.84 459.67 P +1 F +-0.53 ( document. A few built-in modules are) 373.03 459.67 P +(mentioned when they interact in a significant way with the language definition.) 99 446.67 T +0 14 Q +(1.1) 99 419.67 T +(Notation) 135 419.67 T +1 11 Q +-0.01 (The descriptions of lexical analysis and syntax use a modified BNF grammar notation. This uses the) 99 394.67 P +(following style of definition:) 99 381.67 T +2 10 Q +(name: lc_letter \050lc_letter | "_"\051*) 99 363.33 T +(lc_letter: "a"..."z") 99 351.33 T +1 11 Q +0.41 0.43 (The first line says that a) 99 326.67 B +2 F +0.99 0.43 (name) 221.35 326.67 B +1 F +0.41 0.43 ( is an) 249.48 326.67 B +2 F +0.99 0.43 (lc_letter) 279.73 326.67 B +1 F +0.41 0.43 ( followed by a sequence of zero or more) 343.04 326.67 B +2 F +0.93 (lc_letter) 99 313.67 P +1 F +0.39 (s and underscores. An) 158.4 313.67 P +2 F +0.93 (lc_letter) 259.84 313.67 P +1 F +0.39 ( in turn is any of the single characters \324a\325 through) 319.24 313.67 P +0.41 0.04 (\324z\325. \050This rule is actually adhered to for the names used in lexical and grammar rules in this docu-) 99 300.67 B +(ment.\051) 99 287.67 T +-0.01 (Each rule begins with a name \050which is the name defined by the rule\051 and a colon. A vertical bar \050) 99 262.67 P +2 F +-0.04 (|) 529.74 262.67 P +1 F +-0.01 (\051) 536.34 262.67 P +0.01 (is used to separate alternatives; it is the least binding operator in this notation. A star \050) 99 249.67 P +2 F +0.04 (*) 477.17 249.67 P +1 F +0.01 (\051 means zero) 483.77 249.67 P +0.3 (or more repetitions of the preceding item; likewise, a plus \050) 99 236.67 P +2 F +0.73 (+) 362.64 236.67 P +1 F +0.3 (\051 means one or more repetitions, and a) 369.24 236.67 P +-0.55 (phrase enclosed in square brackets \050) 99 223.67 P +2 F +-1.31 ([ ]) 254.8 223.67 P +1 F +-0.55 (\051 means zero or one occurrences \050in other words, the enclosed) 273.29 223.67 P +-0.25 (phrase is optional\051. The) 99 210.67 P +2 F +-0.59 (*) 204.64 210.67 P +1 F +-0.25 ( and) 211.24 210.67 P +2 F +-0.59 (+) 232.13 210.67 P +1 F +-0.25 ( operators bind as tightly as possible; parentheses are used for group-) 238.73 210.67 P +0.19 (ing. Literal strings are enclosed in quotes. White space is only meaningful to separate tokens. Rules) 99 197.67 P +0.12 (are normally contained on a single line; rules with many alternatives may be formatted alternatively) 99 184.67 P +(with each line after the first beginning with a vertical bar.) 99 171.67 T +0.16 (In lexical definitions \050as in the example above\051, two more conventions are used: Two literal charac-) 99 146.67 P +0.41 0.02 (ters separated by three dots mean a choice of any single character in the given \050inclusive\051 range of) 99 133.67 B +0.23 (ASCII characters. A phrase between angular brackets \050) 99 120.67 P +2 F +0.54 (<...>) 342.5 120.67 P +1 F +0.23 (\051 gives an informal description of the) 375.5 120.67 P +-0.18 (symbol defined; e.g. this could be used to describe the notion of \324control character\325 if needed.) 99 107.67 P +0 1 1 0 1 0 0 K +0 1 1 0 1 0 0 K +540 106.57 510.67 106.57 2 L +0 1 1 0 1 0 0 K +V +0.55 H +0 Z +N +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +-0.18 (lexical) 510.67 107.67 P +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +0 1 1 0 1 0 0 K +148.81 93.57 99 93.57 2 L +V +N +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +(definitions) 99 94.67 T +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +0 1 1 0 1 0 0 K +183.03 93.57 151.56 93.57 2 L +V +N +0 0 0 1 0 0 0 K +0 1 1 0 1 0 0 K +(ASCII) 151.56 94.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "1" 7 +%%Page: "2" 8 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(2) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.35 (Even though the notation used is almost the same, there is a big difference between the meaning of) 76.5 712.67 P +-0.32 (lexical and syntactic definitions: a lexical definition operates on the individual characters of the input) 76.5 699.67 P +0.3 (source, while a syntax definition operates on the stream of tokens generated by the lexical analysis.) 76.5 686.67 P +0.34 (All uses of BNF in the next chapter \050\322Lexical Analysis\323\051 are lexical definitions; uses in subsequent) 76.5 673.67 P +(chapters are syntactic definitions.) 76.5 660.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "2" 8 +%%Page: "3" 9 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(3) 535 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Lexical analysis) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 16 Q +(C) 99 709.33 T +0 12.8 Q +(HAPTER) 110.55 709.33 T +0 16 Q +(2:) 167.62 709.33 T +(L) 198 709.33 T +0 12.8 Q +(EXICAL) 207.78 709.33 T +(ANALYSIS) 259.16 709.33 T +1 11 Q +-0.07 (A Python program is read by a) 99 672.67 P +3 F +-0.07 (parser) 236.31 672.67 P +1 F +-0.07 (. Input to the parser is a stream of) 265.03 672.67 P +3 F +-0.07 (tokens) 414.73 672.67 P +1 F +-0.07 (, generated by the) 442.83 672.67 P +3 F +-0.07 (lex-) 523.51 672.67 P +(ical analyzer) 99 659.67 T +1 F +(. This chapter describes how the lexical analyzer breaks a file into tokens.) 156.13 659.67 T +0.15 (Python uses the \0507-bit\051 ASCII character set for program text and string literals. 8-bit characters may) 99 634.67 P +-0.19 (be used in string literals and comments but their interpretation is platform dependent; the proper way) 99 621.67 P +(to insert 8-bit characters in string literals is by using octal or hexadecimal escape sequences.) 99 608.67 T +-0.35 (The run-time character set depends on the I/O devices connected to the program but is generally a su-) 99 583.67 P +(perset of ASCII.) 99 570.67 T +0 14 Q +(2.1) 99 543.67 T +(Line structure) 135 543.67 T +1 11 Q +(A Python program is divided in a number of) 99 518.67 T +3 F +(logical lines) 296.68 518.67 T +1 F +(.) 350.77 518.67 T +0 12 Q +(2.1.1) 99 493 T +(Logical lines) 144 493 T +1 11 Q +0.07 (The end of each logical line is represented by the token NEWLINE. Statements cannot cross logical) 99 473.67 P +0.21 (line boundaries except where NEWLINE is allowed by the syntax \050e.g. between statements in com-) 99 460.67 P +-0.22 (pound statements\051. A logical line is constructed from one or more) 99 447.67 P +3 F +-0.22 (physical lines) 388.64 447.67 P +1 F +-0.22 ( by following the ex-) 448.61 447.67 P +(plicit or implicit) 99 434.67 T +3 F +(line joining) 173.26 434.67 T +1 F +( rules.) 223.68 434.67 T +0 12 Q +(2.1.2) 99 409 T +(Physical lines) 144 409 T +1 11 Q +-0.52 (A physical line ends in whatever the current platform\325s convention is for terminating lines. On UNIX,) 99 389.67 P +-0.24 (this is the ASCII LF \050linefeed\051 character. On DOS/Windows, it is the ASCII sequence CR LF \050return) 99 376.67 P +(followed by linefeed\051. On Macintosh, it is the ASCII CR \050return\051 character.) 99 363.67 T +0 12 Q +(2.1.3) 99 338 T +(Comments) 144 338 T +1 11 Q +0.35 (A comment starts with a hash character \050) 99 318.67 P +2 F +0.84 (#) 281.36 318.67 P +1 F +0.35 (\051 that is not part of a string literal, and ends at the end of) 287.96 318.67 P +-0.23 (the physical line. A comment signifies the end of the logical line unless the implicit line joining rules) 99 305.67 P +(are invoked. Comments are ignored by the syntax\255\255; they are not tokens.) 99 292.67 T +0 12 Q +(2.1.4) 99 267 T +(Explicit line joining) 144 267 T +1 11 Q +-0.63 (Two or more physical lines may be joined into logical lines using backslash characters \050) 99 247.67 P +2 F +-1.52 (\134) 477.53 247.67 P +1 F +-0.63 (\051, as follows:) 484.13 247.67 P +-0.39 (when a physical line ends in a backslash that is not part of a string literal or comment, it is joined with) 99 234.67 P +-0.34 (the following forming a single logical line, deleting the backslash and the following end-of-line char-) 99 221.67 P +(acter. For example:) 99 208.67 T +2 10 Q +(if 1900 < year < 2100 and 1 <= month <= 12 \134) 99 190.33 T +( and 1 <= day <= 31 and 0 <= hour < 24 \134) 99 178.33 T +-0.13 ( and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date) 99 166.33 P +( return 1) 99 154.33 T +1 11 Q +0.22 (A line ending in a backslash cannot carry a comment. A backslash does not continue a comment. A) 99 129.67 P +-0.49 (backslash does not continue a token except for string literals \050i.e., tokens other than string literals can-) 99 116.67 P +-0.33 (not be split across physical lines using a backslash\051. A backslash is illegal elsewhere on a line outside) 99 103.67 P +(a string literal.) 99 90.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "3" 9 +%%Page: "4" 10 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(4) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +(2.1.5) 72 712 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Implicit line joining) 117 712 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.51 (Expressions in parentheses, square brackets or curly braces can be split over more than one physical line) 72 692.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(without using backslashes. For example:) 72 679.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(month_names = [\325Januari\325, \325Februari\325, \325Maart\325, # These are the) 72 661.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( \325April\325, \325Mei\325, \325Juni\325, # Dutch names) 72 649.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( \325Juli\325, \325Augustus\325, \325September\325, # for the months) 72 637.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( \325Oktober\325, \325November\325, \325December\325] # of the year) 72 625.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.3 (Implicitly continued lines can carry comments. The indentation of the continuation lines is not important.) 72 600.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.53 (Blank continuation lines are allowed. There is no NEWLINE token between implicit continuation lines. Im-) 72 587.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.04 (plicit continued lines can also occur within triple-quoted strings \050see below\051; in that case they cannot carry) 72 574.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(comments.) 72 561.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +(2.1.6) 72 536 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Blank lines) 117 536 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.4 (A logical line that contains only spaces, tabs, formfeeds, and possibly a comment, is ignored \050i.e., no NEW-) 72 516.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.3 (LINE token is generated\051, except that during interactive input of statements, an entirely blank logical line) 72 503.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\050i.e. one containing not even whitespace or a comment\051 terminates a multi-line statement.) 72 490.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +(2.1.7) 72 465 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Indentation) 117 465 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.23 (Leading whitespace \050spaces and tabs\051 at the beginning of a logical line is used to compute the indentation) 72 445.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(level of the line, which in turn is used to determine the grouping of statements.) 72 432.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.26 (First, tabs are replaced \050from left to right\051 by one to eight spaces such that the total number of characters up) 72 407.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.29 (to there is a multiple of eight \050this is intended to be the same rule as used by UNIX\051. The total number of) 72 394.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.24 (spaces preceding the first non-blank character then determines the line\325s indentation. Indentation cannot be) 72 381.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.15 (split over multiple physical lines using backslashes; the whitespace up to the first backslash determines the) 72 368.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(indentation.) 72 355.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.23 (A formfeed character may be present at the start of the line; formfeed characters occurring elsewhere in the) 72 330.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(leading whitespace have an undefined effect \050for instance, they may reset the space count to zero\051.) 72 317.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.06 (The indentation levels of consecutive lines are used to generate INDENT and DEDENT tokens, using a) 72 292.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(stack, as follows.) 72 279.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.03 (Before the first line of the file is read, a single zero is pushed on the stack; this will never be popped off) 72 254.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.31 (again. The numbers pushed on the stack will always be strictly increasing from bottom to top. At the begin-) 72 241.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.09 (ning of each logical line, the line\325s indentation level is compared to the top of the stack. If it is equal, noth-) 72 228.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.04 (ing happens. If it is larger, it is pushed on the stack, and one INDENT token is generated. If it is smaller, it) 72 215.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 F +0.01 (must) 72 202.67 P +1 F +0.01 ( be one of the numbers occurring on the stack; all numbers on the stack that are larger are popped off,) 92.78 202.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.09 (and for each number popped off a DEDENT token is generated. At the end of the file, a DEDENT token is) 72 189.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(generated for each number remaining on the stack that is larger than zero.) 72 176.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Here is an example of a correctly \050though confusingly\051 indented piece of Python code:) 72 157.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(def perm\050l\051:) 72 139.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( # Compute the list of all permutations of l) 72 127.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( if len\050l\051 <= 1:) 72 115.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( return [l]) 72 103.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( r = []) 72 91.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( for i in range\050len\050l\051\051:) 72 79.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "4" 10 +%%Page: "5" 11 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(5) 535 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Lexical analysis) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +( s = l[:i] + l[i+1:]) 99 713.33 T +( p = perm\050s\051) 99 701.33 T +( for x in p:) 99 689.33 T +( r.append\050l[i:i+1] + x\051) 99 677.33 T +( return r) 99 665.33 T +1 11 Q +(The following example shows various indentation errors:) 99 640.67 T +2 10 Q +( def perm\050l\051: # error: first line indented) 99 622.33 T +( for i in range\050len\050l\051\051: # error: not indented) 99 610.33 T +( s = l[:i] + l[i+1:]) 99 598.33 T +( p = perm\050l[:i] + l[i+1:]\051 # error: unexpected indent) 99 586.33 T +( for x in p:) 99 574.33 T +( r.append\050l[i:i+1] + x\051) 99 562.33 T +( return r # error: inconsistent dedent) 99 550.33 T +1 11 Q +-0.49 (\050Actually, the first three errors are detected by the parser; only the last error is found by the lexical an-) 99 525.67 P +(alyzer \321 the indentation of) 99 512.67 T +2 F +(return r) 222.73 512.67 T +1 F +( does not match a level popped off the stack.\051) 275.53 512.67 T +0 12 Q +(2.1.8) 99 487 T +(Whitespace between tokens) 144 487 T +1 11 Q +-0.06 (Except at the beginning of a logical line or in string literals, the whitespace characters space, tab and) 99 461.67 P +0.09 (formfeed can be used interchangeably to separate tokens. Whitespace is needed between two tokens) 99 448.67 P +0.12 (only if their concatenation could otherwise be interpreted as a different token \050e.g.,) 99 435.67 P +2 F +0.29 (ab) 467.77 435.67 P +1 F +0.12 ( is one token,) 480.97 435.67 P +(but) 99 422.67 T +2 F +(a) 115.81 422.67 T +(b) 125.16 422.67 T +1 F +( is two tokens\051.) 131.76 422.67 T +0 14 Q +(2.2) 99 395.67 T +(Other tokens) 135 395.67 T +1 11 Q +0.93 (Besides NEWLINE, INDENT and DEDENT, the following categories of tokens exist:) 99 370.67 P +3 F +0.93 (identifiers) 492.63 370.67 P +1 F +0.93 (,) 537.25 370.67 P +3 F +-0.24 (keywords) 99 357.67 P +1 F +-0.24 (,) 140.55 357.67 P +3 F +-0.24 (literals) 145.81 357.67 P +1 F +-0.24 (,) 176.99 357.67 P +3 F +-0.24 (operators) 182.25 357.67 P +1 F +-0.24 (, and) 225.03 357.67 P +3 F +-0.24 (delimiters) 248.69 357.67 P +1 F +-0.24 (. Whitespace characters \050other than line terminators, dis-) 292.69 357.67 P +-0.3 (cussed earlier\051 are not tokens, but serve to delimit tokens. Where ambiguity exists, a token comprises) 99 344.67 P +(the longest possible string that forms a legal token when read from left to right.) 99 331.67 T +0 14 Q +(2.3) 99 304.67 T +(Identifiers and keywords) 135 304.67 T +1 11 Q +(Identifiers \050also referred to as) 99 279.67 T +3 F +(names) 231.87 279.67 T +1 F +(\051 are described by the following lexical definitions:) 259.97 279.67 T +2 10 Q +(identifier: \050letter|"_"\051 \050letter|digit|"_"\051*) 99 261.33 T +(letter: lowercase | uppercase) 99 249.33 T +(lowercase: "a"..."z") 99 237.33 T +(uppercase: "A"..."Z") 99 225.33 T +(digit: "0"..."9") 99 213.33 T +1 11 Q +(Identifiers are unlimited in length. Case is significant.) 99 188.67 T +0 12 Q +(2.3.1) 99 163 T +(Keywords) 144 163 T +1 11 Q +-0.54 (The following identifiers are used as reserved words, or) 99 143.67 P +3 F +-0.54 (keywords) 342.17 143.67 P +1 F +-0.54 ( of the language, and cannot be used) 383.72 143.67 P +(as ordinary identifiers. They must be spelled exactly as written here:) 99 130.67 T +2 10 Q +(and elif global not try) 99 112.33 T +(break else if or while) 99 100.33 T +(class except import pass) 99 88.33 T +(continue finally in print) 99 76.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "5" 11 +%%Page: "6" 12 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(6) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(def for is raise) 72 713.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(del from lambda return) 72 701.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +(2.3.2) 72 676 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Reserved classes of identifiers) 117 676 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(Certain classes of identifiers \050besides keywords\051 have special meanings. These are:) 72 650 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\050XXX need section references here.\051) 72 502.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(2.4) 72 475.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Literals) 108 475.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(Literals are notations for constant values of some built-in types) 72 450.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +(2.4.1) 72 425 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(String literals) 117 425 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(String literals are described by the following lexical definitions:) 72 405.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(stringliteral: shortstring | longstring) 72 387.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(shortstring: "\325" shortstringitem* "\325" | \325"\325 shortstringitem* \325"\325) 72 375.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(longstring: "\325\325\325" longstringitem* "\325\325\325" | \325"""\325 longstringitem* \325"""\325) 72 363.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(shortstringitem: shortstringchar | escapeseq) 72 351.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(longstringitem: longstringchar | escapeseq) 72 339.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(shortstringchar: <any ASCII character except "\134" or newline or the quote>) 72 327.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(longstringchar: <any ASCII character except "\134">) 72 315.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(escapeseq: "\134" <any ASCII character>) 72 303.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.21 (In plain English: String literals can be enclosed in single quotes \050\325\051 or double quotes \050"\051. They can also be) 72 278.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.33 (enclosed in groups of three single or double quotes \050these are generally referred to as) 72 265.67 P +3 F +-0.33 (triple-quoted strings) 443.77 265.67 P +1 F +-0.33 (\051.) 533.59 265.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.39 (The backslash \050\134\051 character is used to escape characters that otherwise have a special meaning, such as new-) 72 252.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(line, backslash itself, or the quote character.) 72 239.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.32 (In \322long strings\323 \050strings surrounded by sets of three quotes\051, unescaped newlines and quotes are allowed) 72 214.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.03 (\050and are retained\051, except that three unescaped quotes in a row terminate the string. \050A \322quote\323 is the char-) 72 201.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(acter used to open the string, i.e. either) 72 188.67 T +2 F +(\325) 245.22 188.67 T +1 F +( or) 251.82 188.67 T +2 F +(") 266.48 188.67 T +1 F +(.\051) 273.08 188.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 12 Q +(T) 132.71 626 T +(able 1: Special Meanings of Identi\336ers) 139.61 626 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(F) 95.09 600 T +(orm) 101.58 600 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Meaning) 248.67 600 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +( _*) 78 577.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 12 Q +(Not imported by) 150 576 T +2 F +(from) 232.33 576 T +3 F +( module) 261.13 576 T +2 F +(import) 302.46 576 T +(*) 348.66 576 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( __*__) 78 554 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(System-de\336ned name) 150 554 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +( __*) 78 532 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Class-pri) 150 532 T +(v) 193.03 532 T +(ate name mangling) 198.73 532 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 615.75 72 524.25 2 L +V +0.5 H +0 Z +N +144 616.25 144 523.75 2 L +V +N +396 615.75 396 524.25 2 L +V +N +71.75 616 396.25 616 2 L +V +N +72.25 591.25 395.75 591.25 2 L +V +N +72.25 588.75 395.75 588.75 2 L +V +N +71.75 568 396.25 568 2 L +V +N +71.75 546 396.25 546 2 L +V +N +71.75 524 396.25 524 2 L +V +N +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "6" 12 +%%Page: "7" 13 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(7) 535 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Lexical analysis) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.41 0.03 (Escape sequences in strings are interpreted according to rules similar to those used by Standard C.) 99 712.67 B +(The recognized escape sequences are:) 99 699.67 T +-0.24 (In strict compatibility with Standard C, up to three octal digits are accepted, but an unlimited number) 99 332.67 P +-0.12 (of hex digits is taken to be part of the hex escape \050and then the lower 8 bits of the resulting hex num-) 99 319.67 P +(ber are used in all current implementations...\051.) 99 306.67 T +-0.21 (Unlike Standard C, all unrecognized escape sequences are left in the string unchanged, i.e.,) 99 281.67 P +3 F +-0.21 (the back-) 499.59 281.67 P +-0.39 (slash is left in the string.) 99 268.67 P +1 F +-0.39 ( \050This behavior is useful when debugging: if an escape sequence is mistyped,) 205.24 268.67 P +0.41 0 (the resulting output is more easily recognized as broken. It also helps a great deal for string literals) 99 255.67 B +-0.17 (used as regular expressions or otherwise passed to other modules that do their own escape handling.\051) 99 242.67 P +0 F +(2.4.1.1) 99 220.67 T +(String literal concatenation) 144 220.67 T +1 F +0.21 (Multiple adjacent string literals \050delimited by whitespace\051, possibly using different quoting conven-) 99 195.67 P +-0.02 (tions, are allowed, and their meaning is the same as their concatenation. Thus,) 99 182.67 P +2 F +-0.05 ("hello") 444.87 182.67 P +-0.05 (\325world\325) 493.8 182.67 P +1 F +0.41 0.12 (is equivalent to) 99 169.67 B +2 F +0.99 0.12 ("helloworld") 172.31 169.67 B +1 F +0.41 0.12 (. This feature can be used to reduce the number of backslashes) 252.99 169.67 B +0.41 0.15 (needed, to split long strings conveniently across long lines, or even to add comments to parts of) 99 156.67 B +(strings, for example:) 99 143.67 T +2 10 Q +(regex.compile\050"[A-Za-z_]" # letter or underscore) 99 125.33 T +( "[A-Za-z0-9_]*" # letter, digit or underscore) 99 113.33 T +( \051) 99 101.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 12 Q +(T) 188.55 676 T +(able 2: Escape Sequences) 195.45 676 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Escape Sequence) 109.27 650 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Meaning) 286.92 650 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134) 105 626 T +3 F +(ne) 112.2 626 T +(wline) 123.35 626 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( Ignored) 208.5 626 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134\134) 105 604 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( Backslash \050) 208.5 604 T +2 F +(\134) 267.16 604 T +1 F +(\051) 274.36 604 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134\325) 105 582 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( Single quote \050) 208.5 582 T +2 F +(\325) 278.83 582 T +1 F +(\051) 286.03 582 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134") 105 560 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( Double quote \050) 208.5 560 T +2 F +(") 283.49 560 T +1 F +(\051) 290.69 560 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134a) 105 538 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII Bell \050BEL\051) 208.5 538 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134b) 105 516 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII Backspace \050BS\051) 208.5 516 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134f) 105 494 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII F) 208.5 494 T +(ormfeed \050FF\051) 252.32 494 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134n) 105 472 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII Linefeed \050LF\051) 208.5 472 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134r) 105 450 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII Carriage Return \050CR\051) 208.5 450 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134t) 105 428 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII Horizontal T) 208.5 428 T +(ab \050T) 306.53 428 T +(AB\051) 331.07 428 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134v) 105 406 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII V) 208.5 406 T +(ertical T) 253.16 406 T +(ab \050VT\051) 292.52 406 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134) 105 384 T +3 F +(ooo) 112.2 384 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII character with octal v) 208.5 384 T +(alue) 349.16 384 T +3 F +(ooo) 372.16 384 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(\134x) 105 362 T +3 F +(xx...) 119.4 362 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( ASCII character with he) 208.5 362 T +(x v) 328.28 362 T +(alue) 342.98 362 T +3 F +(xx...) 365.98 362 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +99 665.75 99 354.25 2 L +V +0.5 H +0 Z +N +202.5 666.25 202.5 353.75 2 L +V +N +414 665.75 414 354.25 2 L +V +N +98.75 666 414.25 666 2 L +V +N +99.25 641.25 413.75 641.25 2 L +V +N +99.25 638.75 413.75 638.75 2 L +V +N +98.75 618 414.25 618 2 L +V +N +98.75 596 414.25 596 2 L +V +N +98.75 574 414.25 574 2 L +V +N +98.75 552 414.25 552 2 L +V +N +98.75 530 414.25 530 2 L +V +N +98.75 508 414.25 508 2 L +V +N +98.75 486 414.25 486 2 L +V +N +98.75 464 414.25 464 2 L +V +N +98.75 442 414.25 442 2 L +V +N +98.75 420 414.25 420 2 L +V +N +98.75 398 414.25 398 2 L +V +N +98.75 376 414.25 376 2 L +V +N +98.75 354 414.25 354 2 L +V +N +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "7" 13 +%%Page: "8" 14 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(8) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.32 (Note that this feature is defined at the syntactical level, but implemented at compile time. The \324+\325 op-) 76.5 712.67 P +(erator must be used to concatenate string expressions at run time.) 76.5 699.67 T +0 12 Q +(2.4.2) 76.5 674 T +(Numeric literals) 121.5 674 T +1 11 Q +0.97 (There are four types of numeric literals: plain integers, long integers, floating point numbers, and) 76.5 654.67 P +(imaginary numbers.) 76.5 641.67 T +0 F +(2.4.2.1) 76.5 619.67 T +(Integer and long integer literals) 121.5 619.67 T +1 F +(Integer and long integer literals are described by the following lexical definitions:) 76.5 594.67 T +2 10 Q +(longinteger: integer \050"l"|"L"\051) 76.5 576.33 T +(integer: decimalinteger | octinteger | hexinteger) 76.5 564.33 T +(decimalinteger: nonzerodigit digit* | "0") 76.5 552.33 T +(octinteger: "0" octdigit+) 76.5 540.33 T +(hexinteger: "0" \050"x"|"X"\051 hexdigit+) 76.5 528.33 T +(nonzerodigit: "1"..."9") 76.5 516.33 T +(octdigit: "0"..."7") 76.5 504.33 T +(hexdigit: digit|"a"..."f"|"A"..."F") 76.5 492.33 T +1 11 Q +-0.03 (Although both lower case \324l\325 and upper case \324L\325 are allowed as suffix for long integers, it is strongly) 76.5 467.67 P +(recommended to always use \324L\325, since the letter \324l\325 looks too much like the digit \3241\325.) 76.5 454.67 T +-0.24 (Plain integer decimal literals must be at most 2147483647 \050i.e., the largest positive integer, using 32-) 76.5 429.67 P +-0.23 (bit arithmetic\051. Plain octal and hexadecimal literals may be as large as 4294967295, but values larger) 76.5 416.67 P +-0.05 (than 2147483647 are converted to a negative value by subtracting 4294967296. There is no limit for) 76.5 403.67 P +(long integer literals apart from what can be stored in available memory.) 76.5 390.67 T +(Some examples of plain and long integer literals:) 76.5 365.67 T +2 10 Q +(7 2147483647 0177 0x80000000) 76.5 347.33 T +(3L 79228162514264337593543950336L 0377L 0x100000000L) 76.5 335.33 T +0 11 Q +(2.4.2.2) 76.5 313.67 T +(Floating point literals) 121.5 313.67 T +1 F +(Floating point literals are described by the following lexical definitions:) 76.5 288.67 T +2 10 Q +(floatnumber: pointfloat | exponentfloat) 76.5 270.33 T +(pointfloat: [intpart] fraction | intpart ".") 76.5 258.33 T +(exponentfloat: \050intpart | pointfloat\051 exponent) 76.5 246.33 T +(intpart: digit+) 76.5 234.33 T +(fraction: "." digit+) 76.5 222.33 T +(exponent: \050"e"|"E"\051 ["+"|"-"] digit+) 76.5 210.33 T +1 11 Q +-0.39 (The allowed range of floating point literals is implementation-dependent. Some examples of floating) 76.5 185.67 P +(point literals:) 76.5 172.67 T +2 10 Q +(3.14 10. .001 1e100 3.14e-10) 76.5 154.33 T +0 11 Q +(2.4.2.3) 76.5 132.67 T +(Imaginary literals) 121.5 132.67 T +1 F +(Imaginary literals are described by the following lexical definitions:) 76.5 107.67 T +2 10 Q +(imagnumber: \050floatnumber | intpart\051 \050"j"|"J"\051) 76.5 89.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "8" 14 +%%Page: "9" 15 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(9) 535 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Lexical analysis) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.3 (An imaginary literals yields a complex number with a real part of 0.0. Complex numbers are repre-) 99 712.67 P +0.28 (sented as a pair of floating point numbers and have the same restrictions on their range. To create a) 99 699.67 P +-0.19 (complex number with a nonzero real part, add a floating point number to it, e.g.) 99 686.67 P +2 F +-0.46 (\0503+4j\051.) 449.58 686.67 P +1 F +-0.19 ( Some ex-) 495.78 686.67 P +(amples of imaginary literals:) 99 673.67 T +2 10 Q +(3.14j 10.j 10 j .001j 1e100j 3.14e-10j) 99 655.33 T +1 11 Q +-0.05 (Note that numeric literals do not include a sign; a phrase like) 99 630.67 P +2 F +-0.12 (-1) 369.1 630.67 P +1 F +-0.05 ( is actually an expression composed) 382.3 630.67 P +(of the unary operator \324) 99 617.67 T +2 F +(-) 197.97 617.67 T +1 F +(\325 and the literal) 204.57 617.67 T +2 F +(1) 274.22 617.67 T +1 F +(.) 280.82 617.67 T +0 14 Q +(2.5) 99 590.67 T +(Operators) 135 590.67 T +1 11 Q +(The following tokens are operators:) 99 565.67 T +2 10 Q +(+ - * ** / %) 99 547.33 T +(<< >> & | ^ ~) 99 535.33 T +(< > <= >= == != <>) 99 523.33 T +1 11 Q +-0.06 (The comparison operators) 99 498.67 P +2 F +-0.14 (<>) 216.44 498.67 P +1 F +-0.06 ( and) 229.64 498.67 P +2 F +-0.14 (!=) 250.9 498.67 P +1 F +-0.06 ( are alternate spellings of the same operator; != is the preferred) 264.1 498.67 P +(spelling, <> is obsolescent.) 99 485.67 T +0 14 Q +(2.6) 99 458.67 T +(Delimiters) 135 458.67 T +1 11 Q +(The following tokens serve as delimiters in the grammar:) 99 433.67 T +2 10 Q +(\050 \051 [ ] { }) 99 415.33 T +(, : . \324 = ;) 99 403.33 T +1 11 Q +0.05 (The period can also occur in floating-point and imaginary literals. A sequence of three periods has a) 99 378.67 P +(special meaning as ellipses in slices.) 99 365.67 T +0.41 0.01 (The following printing ASCII characters have special meaning as part of other tokens or are other-) 99 340.67 B +(wise significant to the lexical analyzer:) 99 327.67 T +2 10 Q +(\325 " # \134) 99 309.33 T +1 11 Q +0.19 (The following printing ASCII characters are not used in Python. Their occurrence outside string lit-) 99 284.67 P +(erals and comments is an unconditional error:) 99 271.67 T +2 10 Q +(@ $ ?) 99 253.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "9" 15 +%%Page: "10" 16 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(10) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "10" 16 +%%Page: "11" 17 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(11) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Data model) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 16 Q +(C) 99 709.33 T +0 12.8 Q +(HAPTER) 110.55 709.33 T +0 16 Q +(3:) 167.62 709.33 T +(D) 198 709.33 T +0 12.8 Q +(ATA) 209.55 709.33 T +(MODEL) 240.3 709.33 T +0 14 Q +(3.1) 99 670.67 T +(Objects, values and types) 135 670.67 T +3 11 Q +0.32 (Objects) 99 645.67 P +1 F +0.32 ( are Python\325s abstraction for data. All data in a Python program is represented by objects or) 132.6 645.67 P +0.1 (by relations between objects. \050In conformance to Von Neumann\325s model of a \322stored program com-) 99 632.67 P +(puter\323, code is also represented by objects.\051) 99 619.67 T +0.13 (Every object has an identity, a type and a value. An object\325s) 99 594.67 P +3 F +0.13 (identity) 367.55 594.67 P +1 F +0.13 ( never changes once it has been) 400.55 594.67 P +-0.28 (created; you may think of it as the object\325s address in memory. The \324) 99 581.67 P +2 F +-0.67 (is) 398.41 581.67 P +1 F +-0.28 (\325 operator compares the iden-) 411.61 581.67 P +0.15 (tity of two objects; the \324) 99 568.67 P +2 F +0.37 (id\050\051) 205.18 568.67 P +1 F +0.15 (\325 function returns an integer representing its identity \050currently imple-) 231.58 568.67 P +0.41 0.06 (mented as its address\051. An object\325s) 99 555.67 B +3 F +0.41 0.06 (type) 259.84 555.67 B +1 F +0.41 0.06 ( is also unchangeable. It determines the operations that an) 278.42 555.67 B +0.01 (object supports \050e.g. \322does it have a length?\323\051 and also defines the possible values for objects of that) 99 542.67 P +0.19 (type. The \324) 99 529.67 P +2 F +0.46 (type\050\051) 147.34 529.67 P +1 F +0.19 (\325 function returns an object\325s type \050which is an object itself\051. The) 186.94 529.67 P +3 F +0.19 (value) 477.91 529.67 P +1 F +0.19 ( of some) 501.74 529.67 P +0.36 (objects can change. The \324) 99 516.67 P +2 F +0.85 (==) 212.52 516.67 P +1 F +0.36 (\325 operator compares the value of two objects. Objects whose value can) 225.72 516.67 P +0.11 (change are said to be) 99 503.67 P +3 F +0.11 (mutable) 194.54 503.67 P +1 F +0.11 (; objects whose value is unchangeable once they are created are called) 229.98 503.67 P +3 F +0.41 0.01 (immutable) 99 490.67 B +1 F +0.41 0.01 (. An object\325s \050im\051mutability is determined by its type; for instance, numbers, strings and) 145.49 490.67 B +(tuples are immutable, while dictionaries and lists are mutable.) 99 477.67 T +0.41 0.05 (Objects are never explicitly destroyed; however, when they become unreachable they may be gar-) 99 452.67 B +-0.25 (bage-collected. An implementation is allowed to postpone garbage collection or omit it altogether \321) 99 439.67 P +-0.18 (it is a matter of implementation quality how garbage collection is implemented, as long as no objects) 99 426.67 P +0.27 (are collected that are still reachable. \050Implementation note: the current implementation uses a refer-) 99 413.67 P +0.41 0.05 (ence-counting scheme which collects most objects as soon as they become unreachable, but never) 99 400.67 B +(collects garbage containing circular references.\051) 99 387.67 T +0.09 (Note that the use of the implementation\325s tracing or debugging facilities may keep objects alive that) 99 362.67 P +-0.32 (would normally be collectable. Also note that catching an exception with a \324) 99 349.67 P +2 F +-0.77 (try...except) 430.88 349.67 P +1 F +-0.32 (\325 state-) 510.08 349.67 P +(ment may keep objects alive.) 99 336.67 T +0.41 0 (Some objects contain references to \322external\323 resources such as open files or windows. It is under-) 99 311.67 B +-0.38 (stood that these resources are freed when the object is garbage-collected, but since garbage collection) 99 298.67 P +-0.5 (is not guaranteed to happen, such objects also provide an explicit way to release the external resource,) 99 285.67 P +-0.42 (usually a) 99 272.67 P +2 F +-1 (close\050\051) 140.33 272.67 P +1 F +-0.42 ( method. Programs are strongly recommended to always explicitly close such ob-) 186.53 272.67 P +(jects. The \324) 99 259.67 T +2 F +(try...finally) 148.18 259.67 T +1 F +(\325 statement provides a convenient way to do this.) 233.98 259.67 T +-0.25 (Some objects contain references to other objects; these are called) 99 234.67 P +3 F +-0.25 (containers) 385.54 234.67 P +1 F +-0.25 (. Examples of containers) 431.98 234.67 P +0.26 (are tuples, lists and dictionaries. The references are part of a container\325s value. In most cases, when) 99 221.67 P +-0.42 (we talk about the value of a container, we imply the values, not the identities of the contained objects;) 99 208.67 P +-0.32 (however, when we talk about the \050im\051mutability of a container, only the identities of the immediately) 99 195.67 P +0.41 0.01 (contained objects are implied. So, if an immutable container \050like a tuple\051 contains a reference to a) 99 182.67 B +(mutable object, its value changes if that mutable object is changed.) 99 169.67 T +0.03 (Types affect almost all aspects of object behavior. Even the importance of object identity is affected) 99 144.67 P +-0.05 (in some sense: for immutable types, operations that compute new values may actually return a refer-) 99 131.67 P +0.41 0.08 (ence to any existing object with the same type and value, while for mutable objects this is not al-) 99 118.67 B +-0.36 (lowed. E.g. after \324\324) 99 105.67 P +2 F +-0.86 (a = 1; b =) 181.01 105.67 P +1 F +-0.36 (1\325\325,) 249.3 105.67 P +2 F +-0.86 (a) 267.26 105.67 P +1 F +-0.36 ( and) 273.86 105.67 P +2 F +-0.86 (b) 294.53 105.67 P +1 F +-0.36 ( may or may not refer to the same object with the value) 301.13 105.67 P +-0.1 (one, depending on the implementation, but after \324\324) 99 92.67 P +2 F +-0.24 (c = []; d = []) 319.79 92.67 P +1 F +-0.1 (\325\325,) 410.99 92.67 P +2 F +-0.24 (c) 423.71 92.67 P +1 F +-0.1 ( and) 430.31 92.67 P +2 F +-0.24 (d) 451.5 92.67 P +1 F +-0.1 (are guaranteed to) 464.45 92.67 P +0.41 0.03 (refer to two different, unique, newly created empty lists. \050Note that \324\324) 99 79.67 B +2 F +0.99 0.03 (c = d = []) 410.5 79.67 B +1 F +0.41 0.03 (\325\325 assigns the) 480.75 79.67 B +(same object to both) 99 66.67 T +2 F +(c) 187.6 66.67 T +1 F +( and) 194.21 66.67 T +2 F +(d) 215.59 66.67 T +1 F +(.\051) 222.19 66.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "11" 17 +%%Page: "12" 18 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(12) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(3.2) 76.5 710.67 T +(The standard type hierarchy) 112.5 710.67 T +1 11 Q +0.12 (Below is a list of the types that are built into Python. Extension modules written in C can define ad-) 76.5 685.67 P +0.01 (ditional types. Future versions of Python may add types to the type hierarchy \050e.g. rational numbers,) 76.5 672.67 P +(efficiently stored arrays of integers, etc.\051.) 76.5 659.67 T +1.02 (Some of the type descriptions below contain a paragraph listing \324special attributes\325. These are at-) 76.5 640.67 P +0.03 (tributes that provide access to the implementation and are not intended for general use. Their defini-) 76.5 627.67 P +0.87 (tion may change in the future. There are also some \324generic\325 special attributes, not listed with the) 76.5 614.67 P +0.38 (individual objects:) 76.5 601.67 P +2 F +0.92 (__methods__) 161.6 601.67 P +1 F +0.38 (is a list of the method names of a built-in object, if it has any;) 241.73 601.67 P +2 F +(__members__) 76.5 588.67 T +1 F +( is a list of the data attribute names of a built-in object, if it has any.) 149.1 588.67 T +4 F +(None) 76.5 569.67 T +1 F +0.12 (This type has a single value. There is a single object with this value. This object is accessed) 112.5 569.67 P +0.49 (through the built-in name) 112.5 556.67 P +2 F +1.17 (None) 229.34 556.67 P +1 F +0.49 (. It is used to signify the absence of a value in many situa-) 255.74 556.67 P +-0.03 (tions, e.g. it is returned from functions that don\325t explicitly return anything. Its truth value is) 112.5 543.67 P +(false.) 112.5 530.67 T +4 F +(Ellipsis) 76.5 511.67 T +1 F +0.06 (This type has a single value. There is a single object with this value. This object is accessed) 113.49 511.67 P +0.04 (through the built-in name) 112.5 498.67 P +2 F +0.09 (Ellipsis) 227.53 498.67 P +1 F +0.04 (. It is used to indicate the presence of the \324\324...\325\325 syntax) 280.33 498.67 P +(in a slice. Its truth value is true.) 112.5 485.67 T +4 F +(Numbers) 76.5 466.67 T +1 F +0.6 (These are created by numeric literals and returned as results by arithmetic operators and) 122.63 466.67 P +-0.01 (arithmetic built-in functions. Numeric objects are immutable; once created their value never) 112.5 453.67 P +-0.52 (changes. Python numbers are of course strongly related to mathematical numbers, but subject) 112.5 440.67 P +(to the limitations of numerical representation in computers.) 112.5 427.67 T +(Python distinguishes between integers and floating point numbers:) 112.5 410.67 T +4 F +(Integers) 112.5 391.67 T +1 F +(These represent elements from the mathematical set of whole numbers) 153.74 391.67 T +(There are two types of integers:) 130.5 374.67 T +4 F +(Plain integers) 130.5 355.67 T +1 F +-0.47 (These represent numbers in the range -2147483648 through 2147483647.) 197.72 355.67 P +0.61 (\050The range may be larger on machines with a larger natural word size, but not) 166.5 342.67 P +0.33 (smaller.\051 When the result of an operation falls outside this range, the exception) 166.5 329.67 P +2 F +-0.33 (OverflowError) 166.5 316.67 P +1 F +-0.14 ( is raised. For the purpose of shift and mask operations, inte-) 252.3 316.67 P +0.69 0.01 (gers are assumed to have a binary, 2\325s complement notation using 32 or more) 166.5 303.67 B +0.18 (bits, and hiding no bits from the user \050i.e., all 4294967296 different bit patterns) 166.5 290.67 P +(correspond to different values\051.) 166.5 277.67 T +4 F +(Long integers) 130.5 258.67 T +1 F +0.05 (These represent numbers in an unlimited range, subject to available \050vir-) 197.72 258.67 P +-0.24 (tual\051 memory only. For the purpose of shift and mask operations, a binary repre-) 166.5 245.67 P +0.69 0 (sentation is assumed, and negative numbers are represented in a variant of 2\325s) 166.5 232.67 B +0.32 (complement which gives the illusion of an infinite string of sign bits extending) 166.5 219.67 P +(to the left.) 166.5 206.67 T +0.02 (The rules for integer representation are intended to give the most meaningful interpreta-) 130.5 189.67 P +-0.48 (tion of shift and mask operations involving negative integers and the least surprises when) 130.5 176.67 P +-0.62 (switching between the plain and long integer domains. For any operation except left shift,) 130.5 163.67 P +-0.08 (if it yields a result in the plain integer domain without causing overflow, it will yield the) 130.5 150.67 P +(same result in the long integer domain or when using mixed operands.) 130.5 137.67 T +4 F +(Floating point numbers) 112.5 118.67 T +1 F +-0.98 (These represent machine-level double precision floating point num-) 225.88 118.67 P +-0.22 (bers. You are at the mercy of the underlying machine architecture and C implementation) 130.5 105.67 P +0.4 (for the accepted range and handling of overflow. Python does not support single-preci-) 130.5 92.67 P +0.23 (sion floating point numbers; the savings in CPU and memory usage that are usually the) 130.5 79.67 P +0.07 (reason for using these is dwarfed by the overhead of using objects in Python, so there is) 130.5 66.67 P +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "12" 18 +%%Page: "13" 19 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(13) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Data model) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(no reason to complicate the language with two kinds of floating point numbers.) 153 712.67 T +4 F +(Complex numbers) 135 693.67 T +1 F +-0.44 (These represent complex numbers as a pair of machine-level double pre-) 224.22 693.67 P +-0.43 (cision floating point numbers. The same caveats apply as for floating point numbers. The) 153 680.67 P +0.16 (real and imaginary value of a complex number) 153 667.67 P +2 F +0.38 (z) 362.6 667.67 P +1 F +0.16 ( can be retrieved through the attributes) 369.2 667.67 P +2 F +(z.real) 153 654.67 T +1 F +( and) 192.6 654.67 T +2 F +(z.imag) 213.98 654.67 T +1 F +(.) 253.58 654.67 T +4 F +(Sequences) 99 635.67 T +1 F +1.51 (These represent finite ordered sets indexed by natural numbers. The built-in function) 150.03 635.67 P +2 F +0.82 (len\050\051) 135 622.67 P +1 F +0.34 ( returns the number of items of a sequence. When the length of a sequence is) 168 622.67 P +2 F +0.82 (n) 514.11 622.67 P +1 F +0.34 (, the) 520.71 622.67 P +(index set contains the numbers 0, 1, ...,) 135 609.67 T +2 F +(n) 309.15 609.67 T +1 F +(. Item) 315.75 609.67 T +2 F +(i) 344.17 609.67 T +1 F +( of sequence) 350.77 609.67 T +2 F +(a) 408.49 609.67 T +1 F +( is selected by) 415.09 609.67 T +2 F +(a[i]) 479.86 609.67 T +1 F +(.) 506.26 609.67 T +4.29 (Sequences also support slicing:) 135 592.67 P +2 F +10.28 (a[i:j]) 292.69 592.67 P +1 F +4.29 ( selects all items with index) 332.29 592.67 P +2 F +10.28 (k) 482.67 592.67 P +1 F +4.29 ( such that) 489.27 592.67 P +2 F +1.18 (i) 135 579.67 P +1.18 (<=) 148.2 579.67 P +1.18 (k) 168 579.67 P +1.18 (<) 181.2 579.67 P +1.18 (j) 194.4 579.67 P +1 F +0.49 (. When used as an expression, a slice is a sequence of the same type \321 this) 201 579.67 P +(implies that the index set is renumbered so that it starts at 0 again.) 135 566.67 T +(Sequences are distinguished according to their mutability:) 135 549.67 T +4 F +(Immutable sequences) 135 530.67 T +1 F +-0.82 (An object of an immutable sequence type cannot change once it is cre-) 238.88 530.67 P +-0.16 (ated. \050If the object contains references to other objects, these other objects may be muta-) 153 517.67 P +2.87 (ble and may be changed; however the array of objects directly referenced by an) 153 504.67 P +(immutable object cannot change.\051) 153 491.67 T +(The following types are immutable sequences:) 153 474.67 T +4 F +(Strings) 153 455.67 T +1 F +0.13 (The items of a string are characters. There is no separate character type; a char-) 189 455.67 P +0.31 (acter is represented by a string of one item. Characters represent \050at least\051 8-bit) 189 442.67 P +-0.49 (bytes. The built-in functions) 189 429.67 P +2 F +-1.18 (chr\050\051) 314.45 429.67 P +1 F +-0.49 ( and) 347.45 429.67 P +2 F +-1.18 (ord\050\051) 367.85 429.67 P +1 F +-0.49 ( convert between characters and) 400.85 429.67 P +0.55 (nonnegative integers representing the byte values. Bytes with the values 0-127) 189 416.67 P +0.24 (usually represent the corresponding ASCII values, but the interpretation of val-) 189 403.67 P +0.15 (ues is up to the program. The string data type is also used to represent arrays of) 189 390.67 P +(bytes, e.g. to hold data read from a file.) 189 377.67 T +(\050What should be done on systems whose native character set is not ASCII???\051) 189 360.67 T +4 F +(Tuples) 153 341.67 T +1 F +0.56 (The items of a tuple are arbitrary Python objects. Tuples of two or more items) 189 341.67 P +-0.21 (are formed by comma-separated lists of expressions. A tuple of one item \050a \324sin-) 189 328.67 P +0.14 (gleton\325\051 can be formed by affixing a comma to an expression \050an expression by) 189 315.67 P +0.59 (itself does not create a tuple, since parentheses must be usable for grouping of) 189 302.67 P +-0.14 (expressions\051. An empty tuple can be formed by enclosing \324nothing\325 in parenthe-) 189 289.67 P +(ses: \324\324) 189 276.67 T +2 F +(\050\051) 215.58 276.67 T +1 F +(\325\325.) 228.78 276.67 T +4 F +(Mutable sequences) 135 257.67 T +1 F +-0.22 (Mutable sequences can be changed after they are created. The subscrip-) 226.66 257.67 P +-0.14 (tion and slicing notations can be used as the target of assignment and) 153 244.67 P +2 F +-0.34 (del) 457.57 244.67 P +1 F +-0.14 ( \050delete\051 state-) 477.37 244.67 P +(ments.) 153 231.67 T +(There is currently a single mutable sequence type:) 153 214.67 T +4 F +(Lists) 153 195.67 T +1 F +0.69 0.04 (The items of a list are arbitrary Python objects. Lists are formed by placing a) 189 195.67 B +0.42 (comma-separated list of expressions in square brackets. \050Note that there are no) 189 182.67 P +(special cases needed to form lists of length 0 or 1.\051) 189 169.67 T +-0.52 (The optional module) 153 150.67 P +2 F +-1.24 (array) 245.86 150.67 P +1 F +-0.52 ( provides an additional example of a mutable sequence type.) 278.86 150.67 P +4 F +(Mappings) 99 131.67 T +1 F +-0.88 (These represent finite sets of objects indexed by arbitrary index sets. The subscript notation) 148.82 131.67 P +2 F +-0.47 (a[k]) 135 118.67 P +1 F +-0.2 ( selects the item indexed by) 161.4 118.67 P +2 F +-0.47 (k) 284.86 118.67 P +1 F +-0.2 ( from the mapping) 291.46 118.67 P +2 F +-0.47 (a) 375 118.67 P +1 F +-0.2 (; this can be used in expressions and) 381.6 118.67 P +-0.62 (as the target of assignments or) 135 105.67 P +2 F +-1.48 (del) 267.56 105.67 P +1 F +-0.62 ( statements. The built-in function) 287.36 105.67 P +2 F +-1.48 (len\050\051) 433.39 105.67 P +1 F +-0.62 ( returns the num-) 466.39 105.67 P +(ber of items in a mapping.) 135 92.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "13" 19 +%%Page: "14" 20 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(14) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(There is currently a single intrinsic mapping type:) 112.5 712.67 T +4 F +(Dictionaries) 112.5 693.67 T +1 F +0.85 (These represent finite sets of objects indexed by nearly arbitrary values. The) 172.08 693.67 P +0.23 (only types of values not acceptable as keys are values containing lists or dictionaries or) 130.5 680.67 P +-0.09 (other mutable types that are compared by value rather than by object identity \321 the rea-) 130.5 667.67 P +0.51 (son being that the efficient implementation of dictionaries requires a key\325s value to re-) 130.5 654.67 P +3.46 (main constant. Numeric types used for keys obey the normal rules for numeric) 130.5 641.67 P +0.18 (comparison: if two numbers compare equal \050e.g. 1 and 1.0\051 then they can be used inter-) 130.5 628.67 P +(changeably to index the same dictionary entry.) 130.5 615.67 T +-0.29 (Dictionaries are mutable; they are created by the) 130.5 598.67 P +2 F +-0.7 ({...}) 344.44 598.67 P +1 F +-0.29 (notation. \050See \322Dictionary dis-) 383.34 598.67 P +(plays\323 on page) 130.5 585.67 T +(28.\051) 198.62 585.67 T +0.29 (The optional library modules) 112.5 568.67 P +2 F +0.7 (dbm) 244.43 568.67 P +1 F +0.29 (,) 264.23 568.67 P +2 F +0.7 (gdbm) 270.02 568.67 P +1 F +0.29 ( and) 296.42 568.67 P +2 F +0.7 (bsddb) 318.38 568.67 P +1 F +0.29 ( provide additional examples of map-) 351.38 568.67 P +(ping types.) 112.5 555.67 T +4 F +(Callable types) 76.5 536.67 T +1 F +0.22 (These are the types to which the function call operation \050for invocation, See \322Calls\323) 145.56 536.67 P +(on page) 112.5 523.67 T +(31.\051 is applied:) 149.77 523.67 T +4 F +(User-defined functions) 112.5 504.67 T +1 F +0.8 (A user-defined function object is created by a function definition.) 221.88 504.67 P +(\050See \322Function definitions\323 on page) 130.5 491.67 T +(48.\051) 291.51 491.67 T +0.53 (Special read-only attributes:) 130.5 474.67 P +2 F +1.27 (func_doc) 258.88 474.67 P +1 F +0.53 ( or) 311.68 474.67 P +2 F +1.27 (__doc__) 327.41 474.67 P +1 F +0.53 ( is the function\325s documentation) 373.61 474.67 P +1.75 (string, or) 130.5 461.67 P +2 F +4.2 (None) 176.47 461.67 P +1 F +1.75 ( if unavailable;) 202.87 461.67 P +2 F +4.2 (func_name) 276.86 461.67 P +1 F +1.75 ( or) 336.26 461.67 P +2 F +4.2 (__name__) 354.43 461.67 P +1 F +1.75 ( is the function\325s name;) 407.23 461.67 P +2 F +2.63 (func_defaults) 130.5 448.67 P +1 F +1.1 ( is a tuple containing default argument values for those arguments) 216.3 448.67 P +0.81 (that have defaults, or) 130.5 435.67 P +2 F +1.93 (None) 228.73 435.67 P +1 F +0.81 ( if no arguments have a default value;) 255.13 435.67 P +2 F +1.93 (func_code) 430.21 435.67 P +1 F +0.81 ( is the) 489.61 435.67 P +0.54 (code object representing the compiled function body;) 130.5 422.67 P +2 F +1.29 (func_globals) 371.64 422.67 P +1 F +0.54 ( is \050a reference) 450.84 422.67 P +-0.07 (to\051 the dictionary that holds the function\325s global variables \321 it defines the global name) 130.5 409.67 P +0.35 (space of the module in which the function was defined. Additional information about a) 130.5 396.67 P +-0.19 (function\325s definition can be retrieved from its code object; see the description of internal) 130.5 383.67 P +(types below.) 130.5 370.67 T +4 F +(User-defined methods) 112.5 351.67 T +1 F +2.17 (A user-defined method object \050a.k.a.) 218.21 351.67 P +3 F +2.17 (object closure) 392.77 351.67 P +1 F +2.17 (\051 combines a) 456.96 351.67 P +(class, a class instance \050or) 130.5 338.67 T +2 F +(None) 243.52 338.67 T +1 F +(\051 and a user-defined function.) 269.92 338.67 T +0.15 (Special read-only attributes:) 130.5 325.67 P +2 F +0.35 (im_self) 257.72 325.67 P +1 F +0.15 ( is the instance object;) 303.92 325.67 P +2 F +0.35 (im_func) 405.17 325.67 P +1 F +0.15 ( is the function) 451.37 325.67 P +-0.38 (object;) 130.5 312.67 P +2 F +-0.92 (im_class) 162.81 312.67 P +1 F +-0.38 ( is the class that defined the method \050which may be a base class of the) 215.61 312.67 P +1.76 (class of which) 130.5 299.67 P +2 F +4.22 (im_self) 201.45 299.67 P +1 F +1.76 ( is an instance\051;) 247.65 299.67 P +2 F +4.22 (__doc__) 326.17 299.67 P +1 F +1.76 ( is the method\325s documentation) 372.37 299.67 P +6.14 (\050same as) 130.5 286.67 P +2 F +14.74 (im_func.__doc__) 183.71 286.67 P +1 F +6.14 (\051;) 282.71 286.67 P +2 F +14.74 (__name__) 298.32 286.67 P +1 F +6.14 ( is the method name \050same as) 351.12 286.67 P +2 F +(im_func.__name__) 130.5 273.67 T +1 F +(\051.) 236.1 273.67 T +-0.42 (User-defined method objects are created in two ways: when getting an attribute of a class) 130.5 256.67 P +-0.47 (that is a user-defined function object, or when getting an attributes of a class instance that) 130.5 243.67 P +0.53 (is a user-defined function object. In the former case \050class attribute\051, the) 130.5 230.67 P +2 F +1.28 (im_self) 456.41 230.67 P +1 F +0.53 ( at-) 502.61 230.67 P +-0.01 (tribute is) 130.5 217.67 P +2 F +-0.03 (None) 172.03 217.67 P +1 F +-0.01 (, and the method object is said to be) 198.43 217.67 P +3 F +-0.01 (unbound) 359.02 217.67 P +1 F +-0.01 (; in the latter case \050instance) 397.52 217.67 P +0.4 (attribute\051,) 130.5 204.67 P +2 F +0.95 (im_self) 176.72 204.67 P +1 F +0.4 ( is the instance, and the method object is said to be) 222.92 204.67 P +3 F +0.4 (bound) 453.46 204.67 P +1 F +0.4 (. For in-) 480.96 204.67 P +-0.29 (stance, when) 130.5 191.67 P +2 F +-0.7 (C) 189.48 191.67 P +1 F +-0.29 ( is a class which contains a definition for a function) 196.08 191.67 P +2 F +-0.7 (f) 422.3 191.67 P +1 F +-0.29 (,) 428.9 191.67 P +2 F +-0.7 (C.f) 434.11 191.67 P +1 F +-0.29 ( does not yield) 453.91 191.67 P +-0.49 (the function object) 130.5 178.67 P +2 F +-1.18 (f) 214.26 178.67 P +1 F +-0.49 (; rather, it yields an unbound method object m where) 220.86 178.67 P +2 F +-1.18 (m.im_class) 451.5 178.67 P +1 F +0.17 (is) 130.5 165.67 P +2 F +0.41 (C) 140.76 165.67 P +1 F +0.17 (,) 147.36 165.67 P +2 F +0.41 (m.im_function) 153.03 165.67 P +1 F +0.17 ( is) 238.83 165.67 P +2 F +0.41 (f) 252.01 165.67 P +1 F +0.17 (, and m) 258.61 165.67 P +2 F +0.41 (.im_self) 291.64 165.67 P +1 F +0.17 ( is) 344.44 165.67 P +2 F +0.41 (None) 357.62 165.67 P +1 F +0.17 (. When) 384.02 165.67 P +2 F +0.41 (x) 418.88 165.67 P +1 F +0.17 ( is a) 425.48 165.67 P +2 F +0.41 (C) 446.46 165.67 P +1 F +0.17 ( instance,) 453.06 165.67 P +2 F +0.41 (x.f) 497.7 165.67 P +1 F +-0.44 (yields a bound method object) 130.5 152.67 P +2 F +-1.05 (m) 260.61 152.67 P +1 F +-0.44 ( where) 267.21 152.67 P +2 F +-1.05 (m.im_class) 298.71 152.67 P +1 F +-0.44 ( is) 364.71 152.67 P +2 F +-1.05 (C) 376.68 152.67 P +1 F +-0.44 (,) 383.28 152.67 P +2 F +-1.05 (m.im_function) 388.34 152.67 P +1 F +-0.44 ( is) 474.14 152.67 P +2 F +-1.05 (f,) 486.1 152.67 P +1 F +-0.44 ( and) 499.3 152.67 P +2 F +(m.im_self) 130.5 139.67 T +1 F +( is) 189.9 139.67 T +2 F +(x) 202.74 139.67 T +1 F +(.) 209.34 139.67 T +3.54 (When an unbound user-defined method object is called, the underlying function) 130.5 122.67 P +0.32 (\050) 130.5 109.67 P +2 F +0.76 (im_func) 134.16 109.67 P +1 F +0.32 (\051 is called, with the restriction that the first argument must be an instance of) 180.36 109.67 P +(the proper class \050) 130.5 96.67 T +2 F +(im_class) 205.95 96.67 T +1 F +(\051 or of a derived class thereof.) 258.75 96.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "14" 20 +%%Page: "15" 21 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(15) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Data model) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.4 (When a bound user-defined method object is called, the underlying function \050) 153 712.67 P +2 F +-0.96 (im_func) 490.14 712.67 P +1 F +-0.4 (\051) 536.34 712.67 P +0.82 (is called, inserting the class instance \050) 153 699.67 P +2 F +1.96 (im_self) 323.8 699.67 P +1 F +0.82 (\051 in front of the argument list. For in-) 370 699.67 P +-0.44 (stance, when) 153 686.67 P +2 F +-1.06 (C) 211.68 686.67 P +1 F +-0.44 ( is a class which contains a definition for a function) 218.28 686.67 P +2 F +-1.06 (f) 442.86 686.67 P +1 F +-0.44 (, and) 449.46 686.67 P +2 F +-1.06 (x) 472.71 686.67 P +1 F +-0.44 ( is an instance) 479.31 686.67 P +(of) 153 673.67 T +2 F +(C) 164.91 673.67 T +1 F +(, calling) 171.51 673.67 T +2 F +(x.f\0501\051) 209.71 673.67 T +1 F +( is equivalent to calling) 249.3 673.67 T +2 F +(C.f\050x, 1\051) 354.72 673.67 T +1 F +(.) 414.12 673.67 T +0.17 (Note that the transformation from function object to \050unbound or bound\051 method object) 153 656.67 P +0.4 (happens each time the attribute is retrieved from the class or instance. In some cases, a) 153 643.67 P +0.32 (fruitful optimization is to assign the attribute to a local variable and call that local vari-) 153 630.67 P +0.08 (able. Also notice that this transformation only happens for user-defined functions; other) 153 617.67 P +(callable objects \050and all non-callable objects\051 are retrieved without transformation.) 153 604.67 T +4 F +(Built-in functions) 135 585.67 T +1 F +0.01 (A built-in function object is a wrapper around a C function. Examples of) 219.96 585.67 P +0.86 (built-in functions are) 153 572.67 P +2 F +2.06 (len) 250.59 572.67 P +1 F +0.86 ( and) 270.39 572.67 P +2 F +2.06 (math.sin) 293.49 572.67 P +1 F +0.86 ( \050) 346.29 572.67 P +2 F +2.06 (math) 353.56 572.67 P +1 F +0.86 ( is a standard built-in module\051. The) 379.96 572.67 P +0.44 (number and type of the arguments are determined by the C function. Special read-only) 153 559.67 P +1.47 (attributes:) 153 546.67 P +2 F +3.52 (__doc__) 201.22 546.67 P +1 F +1.47 ( is the function\325s documentation string, or) 247.42 546.67 P +2 F +3.52 (None) 444.68 546.67 P +1 F +1.47 ( if unavailable;) 471.08 546.67 P +2 F +1.61 (__name__) 153 533.67 P +1 F +0.67 ( is the function\325s name;) 205.8 533.67 P +2 F +1.61 (__self__) 315.16 533.67 P +1 F +0.67 ( is set to) 367.96 533.67 P +2 F +1.61 (None) 409.76 533.67 P +1 F +0.67 ( \050but see the next para-) 436.16 533.67 P +(graph\051.) 153 520.67 T +4 F +(Built-in methods) 135 501.67 T +1 F +-0.65 (This is really a different disguise of a built-in function, this time containing) 216.29 501.67 P +0.11 (an object passed to the C function as an implicit extra argument. An example of a built-) 153 488.67 P +0.73 (in method is) 153 475.67 P +2 F +1.76 (list.append) 212.34 475.67 P +1 F +0.73 (, assuming) 284.94 475.67 P +2 F +1.76 (list) 336.22 475.67 P +1 F +0.73 ( is a list object. In this case, the special) 362.62 475.67 P +(read-only attribute) 153 462.67 T +2 F +(__self__) 237.32 462.67 T +1 F +( is set to the object denoted by) 290.11 462.67 T +2 F +(list) 426.38 462.67 T +1 F +(.) 452.78 462.67 T +4 F +(Classes) 135 443.67 T +1 F +-0.51 (Class objects are described below. When a class object is called, a new class instance) 171.97 443.67 P +2.98 (\050also described below\051 is created and returned. This implies a call to the class\325s) 153 430.67 P +2 F +-0.98 (__init__) 153 417.67 P +1 F +-0.41 ( method if it has one. Any arguments are passed on to the) 205.8 417.67 P +2 F +-0.98 (__init__) 455.91 417.67 P +1 F +-0.41 (meth-) 514.34 417.67 P +(od \321 if there is no) 153 404.67 T +2 F +(__init__) 238.55 404.67 T +1 F +( method, the class must be called without arguments.) 291.35 404.67 T +4 F +(Class instances) 135 385.67 T +1 F +-0.34 (Class instances are described below. Class instances can be called as a func-) 208.34 385.67 P +0.51 (tion only when the class has a) 153 372.67 P +2 F +1.24 (__call__) 290.73 372.67 P +1 F +0.51 ( method; in this case,) 343.53 372.67 P +2 F +1.24 (x\050arguments\051) 442.05 372.67 P +1 F +0.51 ( is a) 521.25 372.67 P +(shorthand for) 153 359.67 T +2 F +(x.__call__\050arguments\051) 214.71 359.67 T +1 F +(.) 353.31 359.67 T +4 F +(Modules) 99 340.67 T +1 F +-0.46 (Modules are imported by the) 142.09 340.67 P +2 F +-1.11 (import) 269.62 340.67 P +1 F +-0.46 ( statement. \050See \322The import statement\323 on page) 309.22 340.67 P +-0.46 (43.\051) 522.59 340.67 P +-0.11 (A module object has a name space implemented by a dictionary object \050this is the dictionary) 135 327.67 P +0.35 (referenced by the) 135 314.67 P +2 F +0.83 (func_globals) 215.14 314.67 P +1 F +0.35 ( attribute of functions defined in the module\051. Attribute) 294.34 314.67 P +4.83 (references are translated to lookups in this dictionary, e.g.) 135 301.67 P +2 F +11.6 (m.x) 435.73 301.67 P +1 F +4.83 ( is equivalent to) 455.53 301.67 P +2 F +1.5 (m.__dict__["x"]) 135 288.67 P +1 F +0.62 (. A module object does not contain the code object used to initialize) 234 288.67 P +(the module \050since it isn\325t needed once the initialization is done\051.) 135 275.67 T +-0.54 (Attribute assignment update the module\325s name space dictionary, e.g. \324\324) 135 258.67 P +2 F +-1.3 (m.x) 446.62 258.67 P +-1.3 (=) 473.02 258.67 P +-1.3 (1) 486.22 258.67 P +1 F +-0.54 (\325\325 is equiv-) 492.82 258.67 P +(alent to \324\324) 135 245.67 T +2 F +(m.__dict__["x"] = 1) 177.77 245.67 T +1 F +(\325\325.) 303.17 245.67 T +0.89 (Special read-only attribute:) 135 228.67 P +2 F +2.13 (__dict__) 260.16 228.67 P +1 F +0.89 ( is the dictionary object that is the module\325s name) 312.96 228.67 P +(space.) 135 215.67 T +-0.44 (Predefined \050writable\051 attributes:) 135 198.67 P +2 F +-1.07 (__name__) 276.94 198.67 P +1 F +-0.44 (is the module name;) 335.28 198.67 P +2 F +-1.07 (__doc__) 425.16 198.67 P +1 F +-0.44 ( is the module\325s) 471.36 198.67 P +0.38 (documentation string, or) 135 185.67 P +2 F +0.92 (None) 246.76 185.67 P +1 F +0.38 ( if unavailable;) 273.16 185.67 P +2 F +0.92 (__file__) 343.05 185.67 P +1 F +0.38 ( is the pathname of the file from) 395.86 185.67 P +0.47 (which the module was loaded, if it was loaded from a file. The) 135 172.67 P +2 F +1.14 (__file__) 419.47 172.67 P +1 F +0.47 ( attribute is not) 472.27 172.67 P +0.86 (present for C modules that are statically linked into the interpreter; for extension modules) 135 159.67 P +(loaded dynamically from a shared library, it is the pathname of the shared library file.) 135 146.67 T +4 F +(Classes) 99 127.67 T +1 F +0.34 (Class objects are created by class definitions \050See \322Class definitions\323 on page) 135.97 127.67 P +0.34 (49.\051. A class) 484.33 127.67 P +-0.62 (has a name space implemented by a dictionary object. Class attribute references are translated) 135 114.67 P +0.72 (to lookups in this dictionary, e.g. \324\324) 135 101.67 P +2 F +1.72 (C.x) 294.21 101.67 P +1 F +0.72 (\325\325 is translated to \324\324) 314.01 101.67 P +2 F +1.72 (C.__dict__["x"]) 401.19 101.67 P +1 F +0.72 (\325\325. When) 500.19 101.67 P +0.38 (the attribute name is not found there, the attribute search continues in the base classes. The) 135 88.67 P +0.02 (search is depth-first, left-to-right in the order of their occurrence in the base class list. When) 135 75.67 P +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "15" 21 +%%Page: "16" 22 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(16) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.46 (a class attribute reference would yield a user-defined function object, it is transformed into) 112.5 712.67 P +-0.56 (an unbound user-defined method object \050see above\051. The) 112.5 699.67 P +2 F +-1.35 (im_class) 361.23 699.67 P +1 F +-0.56 ( attribute of this method) 414.03 699.67 P +-0.22 (object is the class in which the function object was found, not necessarily the class for which) 112.5 686.67 P +(the attribute reference was initiated.) 112.5 673.67 T +-0.53 (Class attribute assignments update the class\325s dictionary, never the dictionary of a base class.) 112.5 656.67 P +(A class object can be called as a function \050see above\051 to yield a class instance \050see below\051.) 112.5 639.67 T +1.45 (Special read-only attributes:) 112.5 622.67 P +2 F +3.47 (__dict__) 243.63 622.67 P +1 F +1.45 ( is the dictionary that is the class\325s name space;) 296.43 622.67 P +2 F +0.96 (__name__) 112.5 609.67 P +1 F +0.4 ( is the class name;) 165.3 609.67 P +2 F +0.96 (__bases__) 250.1 609.67 P +1 F +0.4 ( is a tuple \050possibly empty or a singleton\051 con-) 309.5 609.67 P +(taining the base classes, in the order of their occurrence in the base class list.) 112.5 596.67 T +-0.43 (Predefined \050writable\051 attribute:) 112.5 579.67 P +2 F +-1.04 (__doc__) 250.2 579.67 P +1 F +-0.43 ( is the class\325s documentation string, or) 296.4 579.67 P +2 F +-1.04 (None) 465.08 579.67 P +1 F +-0.43 ( if un-) 491.48 579.67 P +(defined.) 112.5 566.67 T +4 F +(Class instances) 76.5 547.67 T +1 F +-0.33 (A class instance is created by calling a class object as a function \050see above\051. A class) 149.84 547.67 P +0.89 (instance has a name space implemented as a dictionary, which is the first place where in-) 112.5 534.67 P +-0.35 (stance attributes are searched. When an attribute is not found there, the search continues with) 112.5 521.67 P +0.24 (the class attributes. If a class attribute is found that is a user-defined function object \050and in) 112.5 508.67 P +-0.53 (no other case\051, it is transformed into an unbound user-defined method object \050see above\051. The) 112.5 495.67 P +2 F +3.5 (im_class) 112.5 482.67 P +1 F +1.46 ( attribute of this method object is the class in which the function object was) 165.3 482.67 P +-0.35 (found, not necessarily the class of the instance for which the attribute reference was initiated.) 112.5 469.67 P +0.96 (If no class attribute is found, and the object\325s class has a) 112.5 456.67 P +2 F +2.3 (__getattr__) 374.19 456.67 P +1 F +0.96 ( method, that is) 446.79 456.67 P +(called to satisfy the lookup.) 112.5 443.67 T +0.38 (Attribute assignments and deletions update the instance\325s dictionary, never a class\325s dictio-) 112.5 426.67 P +0.18 (nary. If the class has a) 112.5 413.67 P +2 F +0.44 (__setattr__) 214.1 413.67 P +1 F +0.18 ( or) 286.7 413.67 P +2 F +0.44 (__delattr__) 301.72 413.67 P +1 F +0.18 ( method, this is called instead of) 374.32 413.67 P +(updating the instance dictionary directly.) 112.5 400.67 T +1.16 (Class instances can pretend to be numbers, sequences, mappings, or callable objects, and) 112.5 383.67 P +0.55 (override various other special operations, if they have methods with certain special names.) 112.5 370.67 P +(See \322Special method names\323 on page) 112.5 357.67 T +(18.) 279.91 357.67 T +-0.09 (Special read-only attributes:) 112.5 340.67 P +2 F +-0.22 (__dict__) 239.01 340.67 P +1 F +-0.09 ( yields the attribute dictionary;) 291.82 340.67 P +2 F +-0.22 (__class__) 429.16 340.67 P +1 F +-0.09 ( yields) 488.56 340.67 P +(the instance\325s class.) 112.5 327.67 T +4 F +(Files) 76.5 308.67 T +1 F +-0.4 (A file object represents an open file. It is a wrapper around a C standard I/O \050) 112.5 308.67 P +3 F +-0.4 (stdio) 446.79 308.67 P +1 F +-0.4 (\051 file point-) 468.18 308.67 P +-0.35 (er. File objects are created by the) 112.5 295.67 P +2 F +-0.83 (open\050\051) 258.52 295.67 P +1 F +-0.35 ( built-in function, and also by) 298.12 295.67 P +2 F +-0.83 (posix.popen\050\051) 428.95 295.67 P +1 F +-0.35 (,) 514.75 295.67 P +2 F +1.04 (posix.fdopen\050\051) 112.5 282.67 P +1 F +0.43 ( and the) 204.9 282.67 P +2 F +1.04 (makefile) 243.77 282.67 P +1 F +0.43 ( method of socket objects. The objects) 296.57 282.67 P +2 F +1.04 (sys.st-) 471.3 282.67 P +-1.48 (din) 112.5 269.67 P +1 F +-0.62 (,) 132.3 269.67 P +2 F +-1.48 (sys.stdout) 137.18 269.67 P +1 F +-0.62 ( and) 203.18 269.67 P +2 F +-1.48 (sys.stderr) 223.33 269.67 P +1 F +-0.62 ( are initialized to file objects corresponding to the in-) 289.33 269.67 P +0.96 (terpreter\325s standard input, output and error streams. See the Python Library Reference for) 112.5 256.67 P +(methods of file objects and other details.) 112.5 243.67 T +4 F +(Internal types) 76.5 224.67 T +1 F +-0.69 (A few types used internally by the interpreter are exposed to the user. Their definitions) 144.94 224.67 P +-0.42 (may change with future versions of the interpreter, but they are mentioned here for complete-) 112.5 211.67 P +(ness.) 112.5 198.67 T +4 F +(Code objects) 112.5 179.67 T +1 F +-0.45 (Code objects represent) 175.43 179.67 P +3 F +-0.45 (byte-compile) 277.04 179.67 P +1 F +-0.45 ( executable Python code, or) 333.85 179.67 P +3 F +-0.45 (bytecode) 456.25 179.67 P +1 F +-0.45 (. The) 495.34 179.67 P +-0.5 (difference between a code object and a function object is that the function object contains) 130.5 166.67 P +0.23 (an explicit reference to the function\325s globals \050the name space dictionary of the module) 130.5 153.67 P +0.18 (in which it was defined\051, while a code object contains no context; also the default argu-) 130.5 140.67 P +-0.02 (ment values are stored in the function object, not in the code object \050because they repre-) 130.5 127.67 P +0.1 (sent values calculated at run-time\051. Unlike function objects, code objects are immutable) 130.5 114.67 P +(and contain no references \050directly or indirectly\051 to mutable objects.) 130.5 101.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "16" 22 +%%Page: "17" 23 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(17) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Data model) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.03 (Special read-only attributes:) 153 712.67 P +2 F +-0.07 (co_argcount) 279.7 712.67 P +1 F +-0.03 ( is the number of positional arguments \050in-) 352.3 712.67 P +0.21 (cluding arguments with default values\051;) 153 699.67 P +2 F +0.51 (co_nlocals) 331.58 699.67 P +1 F +0.21 ( is the number of local variables) 397.58 699.67 P +1 (used by the function \050including arguments\051;) 153 686.67 P +2 F +2.4 (co_varnames) 354.54 686.67 P +1 F +1 ( is a tuple containing the) 427.14 686.67 P +0.76 (names of the local variables \050starting with the argument names\051;) 153 673.67 P +2 F +1.83 (co_code) 445.98 673.67 P +1 F +0.76 ( is a string) 492.18 673.67 P +0.8 (representing the sequence of bytecode instructions;) 153 660.67 P +2 F +1.93 (co_consts) 385.72 660.67 P +1 F +0.8 ( is a tuple containing) 445.12 660.67 P +-0.31 (the literals used by the bytecode;) 153 647.67 P +2 F +-0.74 (co_names) 298.41 647.67 P +1 F +-0.31 ( is a tuple containing the names used by the) 351.21 647.67 P +4.13 (bytecode;) 153 634.67 P +2 F +9.91 (co_filename) 202.65 634.67 P +1 F +4.13 ( is the filename from which the code was compiled;) 275.25 634.67 P +2 F +1.13 (co_flags) 153 621.67 P +1 F +0.47 ( is an integer encoding a number of flags for the interpreter. The following) 205.8 621.67 P +-0.56 (flag bits are defined: bit 2 is set if the function uses the \322) 153 608.67 P +2 F +-1.34 (*arguments) 394.73 608.67 P +1 F +-0.56 (\325\325 syntax to accept) 460.73 608.67 P +2.81 (an arbitrary number of positional arguments; bit 3 is set if the function uses the) 153 595.67 P +0.11 (\324\324) 153 582.67 P +2 F +0.25 (**keywords) 160.33 582.67 P +1 F +0.11 (\325\325 syntax to accept arbitrary keyword arguments; other bits are used in-) 226.33 582.67 P +0.48 (ternally or reserved for future use. The first item in) 153 569.67 P +2 F +1.15 (co_consts) 384.75 569.67 P +1 F +0.48 ( is the documentation) 444.15 569.67 P +0.1 (string of the function, or) 153 556.67 P +2 F +0.23 (None) 263.47 556.67 P +1 F +0.1 ( if undefined. To find out the first line number of a func-) 289.87 556.67 P +1.57 (tion, you have to disassemble the bytecode instructions; the standard library module) 153 543.67 P +2 F +2.59 (codehack) 153 530.67 P +1 F +1.08 ( defines a function) 205.8 530.67 P +2 F +2.59 (getlineno\050\051) 294.42 530.67 P +1 F +1.08 ( that returns the first line number of a) 367.02 530.67 P +(code object.) 153 517.67 T +4 F +(Frame objects) 135 498.67 T +1 F +0.15 (Frame objects represent execution frames. They may occur in traceback ob-) 204.64 498.67 P +(jects \050see below\051.) 153 485.67 T +-0.2 (Special read-only attributes:) 153 468.67 P +2 F +-0.48 (f_back) 279.19 468.67 P +1 F +-0.2 ( is to the previous stack frame \050towards the caller\051,) 318.79 468.67 P +0.09 (or) 153 455.67 P +2 F +0.21 (None) 165 455.67 P +1 F +0.09 ( if this is the bottom stack frame;) 191.4 455.67 P +2 F +0.21 (f_code) 340 455.67 P +1 F +0.09 ( is the code object being executed in) 379.6 455.67 P +0.34 (this frame;) 153 442.67 P +2 F +0.82 (f_locals) 203.79 442.67 P +1 F +0.34 ( is the dictionary used to look up locals variables;) 256.59 442.67 P +2 F +0.82 (f_globals) 480.6 442.67 P +1 F +2.99 (is used for global variables;) 153 429.67 P +2 F +7.18 (f_builtins) 292.29 429.67 P +1 F +2.99 ( is used for built-in \050intrinsic\051 names;) 358.29 429.67 P +2 F +0.46 (f_restricted) 153 416.67 P +1 F +0.19 ( is a flag indicating whether the function is executing in restricted ex-) 232.2 416.67 P +-0.49 (ecution mode;) 153 403.67 P +2 F +-1.17 (f_owner) 217.41 403.67 P +1 F +-0.49 ( is the class or module that defined the code, if any;) 263.61 403.67 P +2 F +-1.17 (f_lineno) 487.2 403.67 P +1 F +-0.58 (gives the current line number and) 153 390.67 P +2 F +-1.39 (f_lasti) 299.83 390.67 P +1 F +-0.58 ( gives the precise instruction \050this is an index) 346.03 390.67 P +(into the instruction string of the code object\051.) 153 377.67 T +0.9 (Special writable attributes:) 153 360.67 P +2 F +2.15 (f_trace) 276.37 360.67 P +1 F +0.9 (, if not) 322.57 360.67 P +2 F +2.15 (None) 357.04 360.67 P +1 F +0.9 (, is a function called at the start of) 383.44 360.67 P +(each source code line \050this is used by the debugger\051.) 153 347.67 T +4 F +(Traceback objects) 135 328.67 T +1 F +0.44 ( Traceback objects represent a stack trace of an exception. A traceback) 223.59 328.67 P +-0.52 (object is created when an exception occurs. When the search for an exception handler un-) 153 315.67 P +0.3 (winds the execution stack, at each unwound level a traceback object is inserted in front) 153 302.67 P +-0.24 (of the current traceback. When an exception handler is entered, \050See \322The try statement\323) 153 289.67 P +9.58 (on page) 153 276.67 P +9.58 (47.\051, the stack trace is made available to the program as) 199.85 276.67 P +2 F +4.44 (sys.exc_traceback) 153 263.67 P +1 F +1.85 (. When the program contains no suitable handler, the stack) 265.2 263.67 P +0.11 (trace is written \050nicely formatted\051 to the standard error stream; if the interpreter is inter-) 153 250.67 P +(active, it is also made available to the user as) 153 237.67 T +2 F +(sys.last_traceback) 353.72 237.67 T +1 F +(.) 472.52 237.67 T +-0.21 (Special read-only attributes:) 135 218.67 P +2 F +-0.5 (tb_next) 261.16 218.67 P +1 F +-0.21 ( is the next level in the stack trace \050towards the frame) 307.36 218.67 P +0.45 (where the exception occurred\051, or) 153 205.67 P +2 F +1.08 (None) 306.13 205.67 P +1 F +0.45 ( if there is no next level;) 332.53 205.67 P +2 F +1.08 (tb_frame) 445.35 205.67 P +1 F +0.45 ( points to) 498.15 205.67 P +0.36 (the execution frame of the current level;) 153 192.67 P +2 F +0.87 (tb_lineno) 334.85 192.67 P +1 F +0.36 ( gives the line number where the) 394.24 192.67 P +0.58 (exception occurred;) 153 179.67 P +2 F +1.39 (tb_lasti) 243.96 179.67 P +1 F +0.58 ( indicates the precise instruction. The line number and) 296.76 179.67 P +-0.25 (last instruction in the traceback may differ from the line number of its frame object if the) 153 166.67 P +1.72 (exception occurred in a) 153 153.67 P +2 F +4.14 (try) 265.58 153.67 P +1 F +1.72 ( statement with no matching) 285.38 153.67 P +2 F +4.14 (except) 421.41 153.67 P +1 F +1.72 ( clause or with a) 461.01 153.67 P +2 F +(finally) 153 140.67 T +1 F +( clause.) 199.2 140.67 T +4 F +(Slice objects) 135 121.67 T +1 F +-0.74 (Slice objects are used to represent slices when) 195.49 121.67 P +3 F +-0.74 (extended slice syntax) 395.51 121.67 P +1 F +-0.74 ( is used \050this) 486.9 121.67 P +1.72 (is a slice using two colons, or multiple slices or ellipses separated by commas, e.g.) 153 108.67 P +2 F +3.58 (a[i:j:step]) 153 95.67 P +1 F +1.49 (,) 225.6 95.67 P +2 F +3.58 (a[i:j,) 232.59 95.67 P +3.58 (k:l]) 278.79 95.67 P +1 F +1.49 (, or) 305.19 95.67 P +2 F +3.58 (a[...,) 325.58 95.67 P +3.58 (i:j]) 371.79 95.67 P +1 F +1.49 (\051. They are also created by the) 398.18 95.67 P +(built-in) 153 82.67 T +2 F +(slice\050\051) 188.15 82.67 T +1 F +( function.) 234.35 82.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "17" 23 +%%Page: "18" 24 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(18) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.03 (Special read-only attributes:) 130.5 712.67 P +2 F +-0.08 (start) 257.19 712.67 P +1 F +-0.03 ( is the lowerbound;) 290.19 712.67 P +2 F +-0.08 (stop) 377.44 712.67 P +1 F +-0.03 ( is the upperbound;) 403.84 712.67 P +2 F +-0.08 (step) 491.1 712.67 P +1 F +(is the step value; each is) 130.5 699.67 T +2 F +(None) 239.87 699.67 T +1 F +( if omitted. These attributes can have any type.) 266.27 699.67 T +0 14 Q +(3.3) 76.5 672.67 T +(Special method names) 112.5 672.67 T +1 11 Q +-0.41 (This section describes how user-defined classes can customize their behavior or emulate the behavior) 76.5 643.67 P +0.14 (of other object types. In the following, if a class defines a particular method, any class derived from) 76.5 630.67 P +(it is also understood to define that method \050implicitly\051.) 76.5 617.67 T +-0.27 (A class can implement certain operations that are invoked by special syntax \050such as arithmetic oper-) 76.5 592.67 P +-0.51 (ations or subscripting and slicing\051 by defining methods with special names. For instance, if a class de-) 76.5 579.67 P +-0.13 (fines a method named) 76.5 566.67 P +2 F +-0.31 (__getitem__) 175.58 566.67 P +1 F +-0.13 (, and) 248.18 566.67 P +2 F +-0.31 (x) 272.05 566.67 P +1 F +-0.13 ( is an instance of this class, then) 278.65 566.67 P +2 F +-0.31 (x[i]) 421.52 566.67 P +1 F +-0.13 ( is equivalent to) 447.92 566.67 P +2 F +0.45 (x.__getitem__\050i\051) 76.5 553.67 P +1 F +0.19 (. \050The reverse is not true; e.g. if) 182.1 553.67 P +2 F +0.45 (x) 325.03 553.67 P +1 F +0.19 ( is a list object,) 331.63 553.67 P +2 F +0.45 (x.__getitem__\050i\051) 401.63 553.67 P +1 F +0.19 ( is) 507.23 553.67 P +0.2 (not equivalent to) 76.5 540.67 P +2 F +0.48 (x[i]) 153.79 540.67 P +1 F +0.2 (.\051 Except where mentioned, attempts to execute an operation raise an excep-) 180.19 540.67 P +(tion when no appropriate method is defined.) 76.5 527.67 T +0 12 Q +(3.3.1) 76.5 502 T +(Basic customization) 121.5 502 T +2 11 Q +(__init__\050self, [args...]\051) 76.5 482.67 T +1 F +0.13 (Called when the instance is created. The arguments are those) 248.1 482.67 P +-0.67 (that were passed to the class constructor expression. If a base class has an) 112.5 469.67 P +2 F +-1.62 (__init__) 429.62 469.67 P +1 F +-0.67 ( method) 482.42 469.67 P +0.32 (the derived class\325s) 112.5 456.67 P +2 F +0.78 (__init__) 197.48 456.67 P +1 F +0.32 ( method must explicitly call it to ensure proper initialization) 250.28 456.67 P +(of the base class part of the instance, e.g.) 112.5 443.67 T +(\324\324) 112.5 430.67 T +2 F +(BaseClass.__init__\050self,) 119.83 430.67 T +([args...]\051) 284.83 430.67 T +1 F +(\325\325.) 350.83 430.67 T +2 F +(__del__\050self\051) 76.5 411.67 T +1 F +-0.65 (Called when the instance is about to be destroyed. If a base class has a) 168.9 411.67 P +2 F +-1.57 (__del__) 471.3 411.67 P +1 F +-0.39 (method the derived class\325s) 112.5 398.67 P +2 F +-0.94 (__del__) 230.69 398.67 P +1 F +-0.39 ( method must explicitly call it to ensure proper deletion) 276.89 398.67 P +0.07 (of the base class part of the instance. e.g. \324\324) 112.5 385.67 P +2 F +0.17 (BaseClass.__del__\050self\051) 303.16 385.67 P +1 F +0.07 (\325\325. Note that it) 454.96 385.67 P +-0.09 (is possible \050though not recommended!\051 for the) 112.5 372.67 P +2 F +-0.22 (__del__) 318.69 372.67 P +1 F +-0.09 ( method to postpone destruction of) 364.89 372.67 P +0.12 (the instance by creating a new reference to it. It may then be called at a later time when this) 112.5 359.67 P +0.38 (new reference is deleted. It is not guaranteed that) 112.5 346.67 P +2 F +0.92 (__del__) 334.67 346.67 P +1 F +0.38 ( methods are called for objects) 380.86 346.67 P +(that still exist when the interpreter exits.) 112.5 333.67 T +0.16 (Note that \324\324) 112.5 316.67 P +2 F +0.38 (del) 163.53 316.67 P +0.38 (x) 186.24 316.67 P +1 F +0.16 (\325\325 doesn\325t directly call) 192.84 316.67 P +2 F +0.38 (x.__del__\050\051) 293.67 316.67 P +1 F +0.16 ( \321 the former decrements the ref-) 366.27 316.67 P +-0.19 (erence count for) 112.5 303.67 P +2 F +-0.46 (x) 186.14 303.67 P +1 F +-0.19 ( by one, and the latter is only called when its reference count reaches zero.) 192.74 303.67 P +0.15 (Some common situations that may prevent the reference count of an object to go to zero in-) 112.5 290.67 P +0.68 (clude: circular references between objects \050e.g. a doubly-linked list or a tree data structure) 112.5 277.67 P +-0.2 (with parent and child pointers\051; a reference to the object on the stack frame of a function that) 112.5 264.67 P +-0.12 (caught an exception \050the traceback stored in) 112.5 251.67 P +2 F +-0.3 (sys.exc_traceback) 308.05 251.67 P +1 F +-0.12 ( keeps the stack frame) 420.25 251.67 P +0.38 (alive\051; or a reference to the object on the stack frame that raised an unhandled exception in) 112.5 238.67 P +0.64 (interactive mode \050the traceback stored in) 112.5 225.67 P +2 F +1.53 (sys.last_traceback) 298.4 225.67 P +1 F +0.64 ( keeps the stack frame) 417.2 225.67 P +0.63 (alive\051. The first situation can only be remedied by explicitly breaking the cycles; the latter) 112.5 212.67 P +5.8 (two situations can be resolved by storing) 112.5 199.67 P +2 F +13.93 (None) 335.52 199.67 P +1 F +5.8 ( in) 361.92 199.67 P +2 F +13.93 (sys.exc_traceback) 387.58 199.67 P +1 F +5.8 ( or) 499.78 199.67 P +2 F +(sys.last_traceback) 112.5 186.67 T +1 F +(.) 231.3 186.67 T +3 F +0.01 (Warning) 112.5 169.67 P +1 F +0.01 (: due to the precarious circumstances under which) 151 169.67 P +2 F +0.03 (__del__) 374.11 169.67 P +1 F +0.01 ( methods are invoked,) 420.31 169.67 P +2.72 (exceptions that occur during their execution are) 112.5 156.67 P +3 F +2.72 (ignored) 343.84 156.67 P +1 F +2.72 (, and a warning is printed to) 378.06 156.67 P +2 F +0.41 (sys.stderr) 112.5 143.67 P +1 F +0.17 ( instead. Also, when) 178.5 143.67 P +2 F +0.41 (__del__) 271.46 143.67 P +1 F +0.17 ( is invoked is response to a module being de-) 317.66 143.67 P +-0.53 (leted \050e.g. when execution of the program is done\051, other globals referenced by the) 112.5 130.67 P +2 F +-1.28 (__del__) 471.3 130.67 P +1 F +-0.56 (method may already have been deleted. For this reason,) 112.5 117.67 P +2 F +-1.34 (__del__) 355.23 117.67 P +1 F +-0.56 ( methods should do the ab-) 401.43 117.67 P +(solute minimum needed to maintain external invariants.) 112.5 104.67 T +2 F +(__repr__\050self\051) 76.5 85.67 T +1 F +1.28 (Called by the) 175.5 85.67 P +2 F +3.07 (repr\050\051) 240.74 85.67 P +1 F +1.28 ( built-in function and by string conversions \050reverse) 280.34 85.67 P +1.09 (quotes\051 to compute the \322official\323 string representation of an object. This should normally) 112.5 72.67 P +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "18" 24 +%%Page: "19" 25 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(19) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Data model) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.6 (look like a valid Python expression that can be used to recreate an object with the same value.) 135 712.67 P +2 F +(__str__\050self\051) 99 693.67 T +1 F +-0.77 (Called by the) 191.4 693.67 P +2 F +-1.84 (str\050\051) 250.51 693.67 P +1 F +-0.77 ( built-in function and by the) 283.51 693.67 P +2 F +-1.84 (print) 404.79 693.67 P +1 F +-0.77 (statement compute the) 442.55 693.67 P +-0.45 (\324\324informal\325\325 string representation of an object. This differs from) 135 680.67 P +2 F +-1.08 (__repr__) 414.44 680.67 P +1 F +-0.45 ( in that it doesn\325t) 467.24 680.67 P +-0.44 (have to look like a valid Python expression: a more convenient or concise representation may) 135 667.67 P +(be used instead.) 135 654.67 T +2 F +(__cmp__\050self, other\051) 99 635.67 T +1 F +-0.35 (Called by all comparison operations. Should return a negative integer) 237.6 635.67 P +1.61 (if) 135 622.67 P +2 F +3.86 (self) 146.08 622.67 P +3.86 (<) 175.23 622.67 P +3.86 (other) 184.58 622.67 P +1 F +1.61 (, zero if) 217.58 622.67 P +2 F +3.86 (self) 259.06 622.67 P +3.86 (==) 288.21 622.67 P +3.86 (other) 304.16 622.67 P +1 F +1.61 (, a positive integer if) 337.16 622.67 P +2 F +3.86 (self) 438.7 622.67 P +3.86 (>) 467.85 622.67 P +3.86 (other) 477.2 622.67 P +1 F +1.61 (. If no) 510.2 622.67 P +2 F +2.1 (__cmp__) 135 609.67 P +1 F +0.88 ( method is defined, class instances are compared by object identity \050\322address\323\051.) 181.2 609.67 P +-0.23 (\050Implementation note: due to limitations in the interpreter, exceptions raised by comparisons) 135 596.67 P +(are) 135 583.67 T +3 F +(ignored) 151.18 583.67 T +1 F +(, and the outcome will be random in this case.\051) 185.4 583.67 T +2 F +(__hash__\050self\051) 99 564.67 T +1 F +-0.35 (Called for the key object for dictionary operations, and by the built-in function) 198 564.67 P +2 F +-0.73 (hash\050\051) 135 551.67 P +1 F +-0.3 (. Should return a 32-bit integer usable as a hash value for dictionary operations. The) 174.6 551.67 P +0.62 (only required property is that objects which compare equal have the same hash value; it is) 135 538.67 P +0.69 (advised to somehow mix together \050e.g. using exclusive or\051 the hash values for the compo-) 135 525.67 P +-0.24 (nents of the object that also play a part in comparison of objects. If no) 135 512.67 P +2 F +-0.57 (__hash__) 441.84 512.67 P +1 F +-0.24 ( method is) 494.64 512.67 P +0.04 (defined, class instances are hashed by object identity \050\324\324address\325\325\051. If a class does not define) 135 499.67 P +-0.3 (a) 135 486.67 P +2 F +-0.72 (__cmp__) 142.34 486.67 P +1 F +-0.3 ( method it should not define a) 188.54 486.67 P +2 F +-0.72 (__hash__) 320.58 486.67 P +1 F +-0.3 ( method either; if it defines) 373.38 486.67 P +2 F +-0.72 (__cmp__) 493.8 486.67 P +1 F +-0 (but not) 135 473.67 P +2 F +-0.01 (__hash__) 168.61 473.67 P +1 F +-0 ( its instances will not be usable as dictionary keys. If a class defines mu-) 221.41 473.67 P +-0.32 (table objects and implements a) 135 460.67 P +2 F +-0.76 (__cmp__) 271.81 460.67 P +1 F +-0.32 ( method it should not implement) 318.01 460.67 P +2 F +-0.76 (__hash__) 462.16 460.67 P +1 F +-0.32 ( since) 514.96 460.67 P +0.34 (the dictionary implementation requires that a key\325s hash value is immutable \050if the object\325s) 135 447.67 P +(hash value changes, it will be in the wrong hash bucket\051.) 135 434.67 T +2 F +(__nonzero__\050self\051) 384.29 434.67 T +1 F +-3.12 (Called to) 503.09 434.67 P +2.26 (implement truth value testing; should return 0 or 1. When this method is not defined,) 135 421.67 P +2 F +3.24 (__len__) 135 408.67 P +1 F +1.35 ( is called, if it is defined \050see below\051. If a class defines neither) 181.2 408.67 P +2 F +3.24 (__len__) 475.04 408.67 P +1 F +1.35 ( nor) 521.24 408.67 P +2 F +(__nonzero__) 135 395.67 T +1 F +(, all its instances are considered true.) 207.6 395.67 T +0 12 Q +(3.3.2) 99 370 T +(Customizing attribute access) 144 370 T +1 11 Q +0.28 (The following methods can be defined to customize the meaning of attribute access \050use of, assign-) 99 344.67 P +0.41 0.12 (ment to, or deletion of) 99 331.67 B +2 F +0.99 0.12 (x.) 204.89 331.67 B +3 F +0.41 0.12 (name) 218.34 331.67 B +1 F +0.41 0.12 (\051 for class instances. For performance reasons, these methods are) 242.67 331.67 B +0.41 0.02 (cached in the class object at class definition time; therefore, they cannot be changed after the class) 99 318.67 B +(definition is executed.) 99 305.67 T +2 F +(__getattr__\050self, name\051) 99 286.67 T +1 F +-0.39 (Called when an attribute lookup has not found the attribute in the) 257.4 286.67 P +-0.6 (usual places \050i.e. it is not an instance attribute nor is it found in the class tree for) 135 273.67 P +2 F +-1.43 (self) 478.63 273.67 P +1 F +-0.6 (\051.) 505.03 273.67 P +2 F +-1.43 (name) 513.6 273.67 P +1 F +0.67 (is the attribute name. This method should return the \050computed\051 attribute value or raise an) 135 260.67 P +2 F +(AttributeError) 135 247.67 T +1 F +( exception.) 227.4 247.67 T +1.22 (Note that if the attribute is found through the normal mechanism,) 135 230.67 P +2 F +2.93 (__getattr__) 438.06 230.67 P +1 F +1.22 ( is not) 510.66 230.67 P +0.32 (called. \050This is an asymmetry between) 135 217.67 P +2 F +0.76 (__getattr__) 308.89 217.67 P +1 F +0.32 ( and) 381.49 217.67 P +2 F +0.76 (__setattr__) 403.51 217.67 P +1 F +0.32 (.\051 This is done) 476.11 217.67 P +-0.44 (both for efficiency reasons and because otherwise) 135 204.67 P +2 F +-1.06 (__setattr__) 353.97 204.67 P +1 F +-0.44 ( would have no way to ac-) 426.57 204.67 P +-0.62 (cess other attributes of the instance. Note that at least for instance variables, you can fake total) 135 191.67 P +0.29 (control by not inserting any values in the instance attribute dictionary \050but instead inserting) 135 178.67 P +(them in another object\051.) 135 165.67 T +2 F +(__setattr__\050self, name, value\051) 99 146.67 T +1 F +-0.27 (Called whenever an attribute assignment is attempted.) 303.6 146.67 P +-0.66 (This is called instead of the normal mechanism \050i.e. instead of storing the value in the instance) 135 133.67 P +(dictionary\051.) 135 120.67 T +2 F +(name) 188.77 120.67 T +1 F +( is the attribute name,) 215.17 120.67 T +2 F +(value) 312.94 120.67 T +1 F +( is the value to be assigned to it.) 345.94 120.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "19" 25 +%%Page: "20" 26 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(20) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +1.55 (If) 112.5 712.67 P +2 F +3.72 (__setattr__) 124.12 712.67 P +1 F +1.55 ( wants to assign to an instance attribute, it should) 196.73 712.67 P +3 F +1.55 (not) 431.3 712.67 P +1 F +1.55 ( simply execute) 445.35 712.67 P +0.27 (\324\324) 112.5 699.67 P +2 F +0.65 (self.) 119.83 699.67 P +3 F +0.27 (name) 152.83 699.67 P +2 F +0.65 ( = value) 176.65 699.67 P +1 F +0.27 (\325\325 \321 this would cause a recursive call to itself. Instead, it should) 230.75 699.67 P +(insert the value in the dictionary of instance attributes, e.g.) 112.5 686.67 T +(\324\324) 112.5 673.67 T +2 F +(self.__dict__[name]) 119.83 673.67 T +(=) 251.83 673.67 T +(value) 265.03 673.67 T +1 F +(\325\325.) 298.03 673.67 T +2 F +(__delattr__\050self, name\051) 76.5 654.67 T +1 F +-0.33 (Like) 234.9 654.67 P +2 F +-0.79 (__setattr__) 257.48 654.67 P +1 F +-0.33 ( but for attribute deletion instead of assign-) 330.08 654.67 P +(ment.) 112.5 641.67 T +0 12 Q +(3.3.3) 76.5 616 T +(Emulating callable objects) 121.5 616 T +2 11 Q +(__call__\050self, [args...]\051) 76.5 596.67 T +1 F +-0.75 (Called when the instance is \322called\323 as a function; if this meth-) 248.1 596.67 P +-0.23 (od is defined,) 112.5 583.67 P +2 F +-0.55 (x\050arg1, arg2, ...\051) 174.13 583.67 P +1 F +-0.23 ( is a shorthand for) 291.83 583.67 P +2 F +-0.55 (x.__call__\050arg1, arg2,) 372.85 583.67 P +(...\051) 112.5 570.67 T +1 F +(.) 138.9 570.67 T +0 12 Q +(3.3.4) 76.5 545 T +(Emulating sequence and mapping types) 121.5 545 T +1 11 Q +-0.37 (The following methods can be defined to emulate sequence or mapping objects. The first set of meth-) 76.5 519.67 P +-0.49 (ods is used either to emulate a sequence or to emulate a mapping; the difference is that for a sequence,) 76.5 506.67 P +0.41 0.07 (the allowable keys should be the integers) 76.5 493.67 B +3 F +0.41 0.07 (k) 266.11 493.67 B +1 F +0.41 0.07 ( for which 0) 271.06 493.67 B +2 F +0.99 0.07 (<=) 329.89 493.67 B +3 F +0.41 0.07 (k) 346.47 493.67 B +2 F +0.99 0.07 (<) 354.66 493.67 B +3 F +0.41 0.07 (N) 364.58 493.67 B +1 F +0.41 0.07 ( where) 371.99 493.67 B +3 F +0.41 0.07 (N) 405.7 493.67 B +1 F +0.41 0.07 ( is the length of the se-) 413.11 493.67 B +-0.52 (quence, and the method) 76.5 480.67 P +2 F +-1.24 (__getslice__) 181.66 480.67 P +1 F +-0.52 ( \050see below\051 should be defined. It is also recommended that) 260.86 480.67 P +-0.16 (mappings provide methods) 76.5 467.67 P +2 F +-0.38 (keys) 197.94 467.67 P +1 F +-0.16 (,) 224.34 467.67 P +2 F +-0.38 (values) 229.69 467.67 P +1 F +-0.16 ( and) 269.29 467.67 P +2 F +-0.38 (items) 290.36 467.67 P +1 F +-0.16 ( behaving similar to those for Python\325s stan-) 323.36 467.67 P +0.41 0.2 (dard dictionary objects; mutable sequences should provide methods) 76.5 454.67 B +2 F +0.99 0.2 (append) 393.4 454.67 B +1 F +0.41 0.2 (,) 434.17 454.67 B +2 F +0.99 0.2 (count) 440.48 454.67 B +1 F +0.41 0.2 (,) 474.46 454.67 B +2 F +0.99 0.2 (index) 480.77 454.67 B +1 F +0.41 0.2 (,) 514.75 454.67 B +2 F +0.99 0 (insert) 76.5 441.67 B +1 F +0.41 0 (,) 116.11 441.67 B +2 F +0.99 0 (sort) 122.02 441.67 B +1 F +0.41 0 (,) 148.43 441.67 B +2 F +0.99 0 (remove) 154.34 441.67 B +1 F +0.41 0 ( and) 193.95 441.67 B +2 F +0.99 0 (reverse) 216.16 441.67 B +1 F +0.41 0 ( like Python standard list objects. Finally, sequence types) 262.37 441.67 B +0.41 0.01 (should implement addition \050meaning concatenation\051 and multiplication \050meaning repetition\051 by de-) 76.5 428.67 B +-0.55 (fining the methods) 76.5 415.67 P +2 F +-1.31 (__add__) 160.11 415.67 P +1 F +-0.55 (,) 206.31 415.67 P +2 F +-1.31 (__radd__) 211.27 415.67 P +1 F +-0.55 (,) 264.07 415.67 P +2 F +-1.31 (__mul__) 269.02 415.67 P +1 F +-0.55 ( and) 315.22 415.67 P +2 F +-1.31 (__rmul__) 335.51 415.67 P +1 F +-0.55 ( described below; they should) 388.31 415.67 P +(not define) 76.5 402.67 T +2 F +(__coerce__) 123.55 402.67 T +1 F +( or other numerical operators.) 189.55 402.67 T +2 F +(__len__\050self\051) 76.5 383.67 T +1 F +-0.67 (Called to implement the built-in function) 168.9 383.67 P +2 F +-1.6 (len\050\051) 348.25 383.67 P +1 F +-0.67 (. Should return the length of the) 381.25 383.67 P +-0.16 (object, an integer) 112.5 370.67 P +2 F +-0.39 (>=) 190.83 370.67 P +1 F +-0.16 ( 0. Also, an object that doesn\325t define a) 204.03 370.67 P +2 F +-0.39 (__nonzero__\050\051) 377.64 370.67 P +1 F +-0.16 ( method and) 463.44 370.67 P +(whose) 112.5 357.67 T +2 F +(__len__\050\051) 143.35 357.67 T +1 F +( method returns zero is considered to be false in a Boolean context.) 202.76 357.67 T +2 F +(__getitem__\050self, key\051) 76.5 338.67 T +1 F +-0.74 (Called to implement evaluation of) 228.3 338.67 P +2 F +-1.78 (self[key]) 377.67 338.67 P +1 F +-0.74 (. Note that the spe-) 437.07 338.67 P +0.38 (cial interpretation of negative keys \050if the class wishes to emulate a sequence type\051 is up to) 112.5 325.67 P +(the) 112.5 312.67 T +2 F +(__getitem__) 128.69 312.67 T +1 F +( method.) 201.29 312.67 T +2 F +(__setitem__\050self, key, value\051) 76.5 293.67 T +1 F +-0.41 (Called to implement assignment to) 274.5 293.67 P +2 F +-1 (self[key]) 428.57 293.67 P +1 F +-0.41 (. Same) 487.97 293.67 P +(note as for) 112.5 280.67 T +2 F +(__getitem__) 161.68 280.67 T +1 F +(.) 234.28 280.67 T +2 F +(__delitem__\050self, key\051) 76.5 261.67 T +1 F +0.89 (Called to implement deletion of) 228.3 261.67 P +2 F +2.13 (self[key]) 375.43 261.67 P +1 F +0.89 (. Same note as for) 434.83 261.67 P +2 F +(__getitem__) 112.5 248.67 T +1 F +(.) 185.1 248.67 T +0 F +(3.3.4.1) 76.5 226.67 T +(Additional methods for emulation of sequence types) 121.5 226.67 T +1 F +-0.39 (The following methods can be defined to further emulate sequence objects. For immutable sequences) 76.5 201.67 P +-0.15 (methods, only) 76.5 188.67 P +2 F +-0.35 (__getslice__) 141.29 188.67 P +1 F +-0.15 ( should be defined; for mutable sequences, all three methods should) 220.49 188.67 P +(be defined.) 76.5 175.67 T +2 F +(__getslice__\050self, i, j\051) 76.5 156.67 T +1 F +0.22 (Called to implement evaluation of) 241.5 156.67 P +2 F +0.52 (self[i:j]) 395.66 156.67 P +1 F +0.22 (. The returned) 455.06 156.67 P +0.15 (object should be of the same type as) 112.5 143.67 P +2 F +0.37 (self) 275.64 143.67 P +1 F +0.15 (. Note that missing) 302.04 143.67 P +2 F +0.37 (i) 388.51 143.67 P +1 F +0.15 ( or) 395.11 143.67 P +2 F +0.37 (j) 410.08 143.67 P +1 F +0.15 ( in the slice expression) 416.68 143.67 P +0.09 (are replaced by 0 or) 112.5 130.67 P +2 F +0.22 (len\050self\051) 203.07 130.67 P +1 F +0.09 (, respectively, and) 262.47 130.67 P +2 F +0.22 (len\050self\051) 345.53 130.67 P +1 F +0.09 ( has been added \050once\051 to) 404.93 130.67 P +(originally negative) 112.5 117.67 T +2 F +(i) 198.05 117.67 T +1 F +( or) 204.65 117.67 T +2 F +(j) 219.31 117.67 T +1 F +( by the time this function is called \050unlike for) 225.91 117.67 T +2 F +(__getitem__) 427.56 117.67 T +1 F +(\051.) 500.16 117.67 T +2 F +(__setslice__\050self, i, j, sequence\051) 76.5 98.67 T +1 F +-1.66 (Called to implement assignment to) 307.5 98.67 P +2 F +-3.98 (self[i:j]) 455.35 98.67 P +1 F +-1.66 (.) 514.75 98.67 P +-0.16 (The) 112.5 85.67 P +2 F +-0.39 (sequence) 132.19 85.67 P +1 F +-0.16 ( argument can have any type. The return value should be) 184.99 85.67 P +2 F +-0.39 (None) 435.52 85.67 P +1 F +-0.16 (. Same notes) 461.92 85.67 P +(for) 112.5 72.67 T +2 F +(i) 128.08 72.67 T +1 F +( and) 134.68 72.67 T +2 F +(j) 156.06 72.67 T +1 F +( as for) 162.66 72.67 T +2 F +(__getslice__) 192.9 72.67 T +1 F +(.) 272.1 72.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "20" 26 +%%Page: "21" 27 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(21) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Data model) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 11 Q +(__delslice__\050self, i, j\051) 99 712.67 T +1 F +-0.77 (Called to implement deletion of) 264 712.67 P +2 F +-1.85 (self[i:j]) 402.84 712.67 P +1 F +-0.77 (. Same notes for) 462.24 712.67 P +2 F +-1.85 (i) 533.4 712.67 P +1 F +(and) 135 699.67 T +2 F +(j) 153.63 699.67 T +1 F +( as for) 160.23 699.67 T +2 F +(__getslice__) 190.47 699.67 T +1 F +(.) 269.67 699.67 T +0.08 (Notice that these methods are only invoked when a single slice with a single colon is used. For slice) 99 674.67 P +0.33 (operations involving) 99 661.67 P +3 F +0.33 (extended slice notation) 193.15 661.67 P +1 F +0.33 (,) 295.23 661.67 P +2 F +0.78 (__getitem__) 301.06 661.67 P +1 F +0.33 (,) 373.66 661.67 P +2 F +0.78 (__setitem__) 379.49 661.67 P +1 F +0.33 ( or) 452.08 661.67 P +2 F +0.78 (__delitem__) 467.4 661.67 P +1 F +(is called.) 99 648.67 T +0 12 Q +(3.3.5) 99 623 T +(Emulating numeric types) 144 623 T +1 11 Q +-0.15 (The following methods can be defined to emulate numeric objects. Methods corresponding to opera-) 99 597.67 P +-0.54 (tions that are not supported by the particular kind of number implemented \050e.g., bitwise operations for) 99 584.67 P +(non-integral numbers\051 should be left undefined.) 99 571.67 T +2 F +(__add__\050self, right\051) 99 552.67 T +(__sub__\050self, right\051) 99 539.67 T +(__mul__\050self, right\051) 99 526.67 T +(__div__\050self, right\051) 99 513.67 T +(__mod__\050self, right\051) 99 500.67 T +(__divmod__\050self, right\051) 99 487.67 T +(__pow__\050self, right\051) 99 474.67 T +(__lshift__\050self, right\051) 99 461.67 T +(__rshift__\050self, right\051) 99 448.67 T +(__and__\050self, right\051) 99 435.67 T +(__xor__\050self, right\051) 99 422.67 T +(__or__\050self, right\051) 99 409.67 T +1 F +0.44 (These functions are called to implement the binary arithmetic operations \050+, -, *, /, %, div-) 135 396.67 P +0.67 (mod\050\051, pow\050\051, <<, >>, &, ^, |\051. For instance: to evaluate the expression x+y, where x is an) 135 383.67 P +(instance of a class that has an __add__ method, x.__add__\050y\051 is called.) 135 370.67 T +2 F +(__radd__\050self, left\051) 99 351.67 T +(__rsub__\050self, left\051) 99 338.67 T +(__rmul__\050self, left\051) 99 325.67 T +(__rdiv__\050self, left\051) 99 312.67 T +(__rmod__\050self, left\051) 99 299.67 T +(__rdivmod__\050self, left\051) 99 286.67 T +(__rpow__\050self, left\051) 99 273.67 T +(__rlshift__\050self, left\051) 99 260.67 T +(__rrshift__\050self, left\051) 99 247.67 T +(__rand__\050self, left\051) 99 234.67 T +(__rxor__\050self, left\051) 99 221.67 T +(__ror__\050self, left\051) 99 208.67 T +1 F +-1.3 ( These functions are called to implement the binary arithmetic operations) 231 208.67 P +-0.5 (\050) 135 195.67 P +2 F +-1.21 (+) 138.66 195.67 P +1 F +-0.5 (,) 145.26 195.67 P +2 F +-1.21 (-) 150.26 195.67 P +1 F +-0.5 (,) 156.86 195.67 P +2 F +-1.21 (*) 161.85 195.67 P +1 F +-0.5 (,) 168.46 195.67 P +2 F +-1.21 (/) 173.45 195.67 P +1 F +-0.5 (,) 180.05 195.67 P +2 F +-1.21 (%) 185.05 195.67 P +1 F +-0.5 (,) 191.65 195.67 P +2 F +-1.21 (divmod\050\051) 196.64 195.67 P +1 F +-0.5 (,) 249.44 195.67 P +2 F +-1.21 (pow\050\051) 254.44 195.67 P +1 F +-0.5 (,) 287.44 195.67 P +2 F +-1.21 (<<) 292.44 195.67 P +1 F +-0.5 (,) 305.64 195.67 P +2 F +-1.21 (>>) 310.63 195.67 P +1 F +-0.5 (,) 323.83 195.67 P +2 F +-1.21 (&) 328.83 195.67 P +1 F +-0.5 (,) 335.43 195.67 P +2 F +-1.21 (^) 340.42 195.67 P +1 F +-0.5 (,) 347.02 195.67 P +2 F +-1.21 (|) 352.02 195.67 P +1 F +-0.5 (\051 with reversed operands. These functions) 358.62 195.67 P +-0.62 (are only called if the left operand does not support the corresponding operation \050possibly after) 135 182.67 P +-0.09 (coercion\051. For instance: to evaluate the expression x+y, where x is an instance of a class that) 135 169.67 P +2.63 (does not have an) 135 156.67 P +2 F +6.31 (__add__) 221.89 156.67 P +1 F +2.63 ( method,) 268.09 156.67 P +2 F +6.31 (y.__radd\050x\051) 314.59 156.67 P +1 F +2.63 ( is called. If the class defines a) 387.19 156.67 P +0.37 (__coerce__ method that coerces its arguments to a common type, these methods will never) 135 143.67 P +0.54 (be called and thus needn\325t be defined. They are useful for classes that implement semi-nu-) 135 130.67 P +-0.53 (merical data types \050types that have some numerical behavior but don\325t adhere to all invariants) 135 117.67 P +(usually assumed about numbers\051.) 135 104.67 T +2 F +(__neg__\050self\051) 99 85.67 T +(__pos__\050self\051) 99 72.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "21" 27 +%%Page: "22" 28 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(22) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 11 Q +(__abs__\050self\051) 76.5 712.67 T +(__invert__\050self\051) 76.5 699.67 T +1 F +-0.14 ( Called to implement the unary arithmetic operations \050) 188.7 699.67 P +2 F +-0.34 (-) 426.48 699.67 P +1 F +-0.14 (,) 433.08 699.67 P +2 F +-0.34 (+) 438.43 699.67 P +1 F +-0.14 (,) 445.03 699.67 P +2 F +-0.34 (abs\050\051) 450.39 699.67 P +1 F +-0.14 ( and) 483.39 699.67 P +2 F +-0.34 (~) 504.49 699.67 P +1 F +-0.14 (\051.) 511.09 699.67 P +2 F +(__int__\050self\051) 76.5 680.67 T +(__long__\050self\051) 76.5 667.67 T +(__float__\050self\051) 76.5 654.67 T +1 F +-0.34 ( Called to implement the built-in functions) 182.1 654.67 P +2 F +-0.82 (int\050\051) 370.09 654.67 P +1 F +-0.34 (,) 403.09 654.67 P +2 F +-0.82 (long\050\051) 408.25 654.67 P +1 F +-0.34 ( and) 447.85 654.67 P +2 F +-0.82 (float\050\051) 468.55 654.67 P +1 F +-0.34 (.) 514.75 654.67 P +(Should return a value of the appropriate type.) 112.5 641.67 T +2 F +(__oct__\050self\051) 76.5 622.67 T +(__hex__\050self\051) 76.5 609.67 T +1 F +-0.21 ( Called to implement the built-in functions) 168.9 609.67 P +2 F +-0.5 (oct\050\051) 357.82 609.67 P +1 F +-0.21 ( and) 390.82 609.67 P +2 F +-0.5 (hex\050\051) 411.79 609.67 P +1 F +-0.21 (. Should return a) 444.79 609.67 P +(string value.) 112.5 596.67 T +2 F +(__coerce__\050self, other\051) 76.5 577.67 T +1 F +0.3 (Called to implement \322mixed-mode\323 numeric arithmetic. Should) 234.9 577.67 P +-0.34 (either return a 2-tuple containing) 112.5 564.67 P +2 F +-0.82 (self) 258.34 564.67 P +1 F +-0.34 ( and) 284.74 564.67 P +2 F +-0.82 (other) 305.43 564.67 P +1 F +-0.34 ( converted to a common numeric type, or) 338.43 564.67 P +2 F +0.6 (None) 112.5 551.67 P +1 F +0.25 ( if no conversion is possible. When the common type would be the type of) 138.9 551.67 P +2 F +0.6 (other) 472.63 551.67 P +1 F +0.25 (, it) 505.63 551.67 P +0.46 (is sufficient to return) 112.5 538.67 P +2 F +1.11 (None) 209.06 538.67 P +1 F +0.46 (, since the interpreter will also ask the other object to attempt a) 235.46 538.67 P +-0.39 (coercion \050but sometimes, if the implementation of the other type cannot be changed, it is use-) 112.5 525.67 P +(ful to do the conversion to the other type here\051.) 112.5 512.67 T +4 F +1.86 (Coercion rules) 112.5 495.67 P +1 F +1.86 (: to evaluate x) 183.1 495.67 P +3 F +1.86 (op) 255.29 495.67 P +1 F +1.86 ( y, the following steps are taken \050where) 266.29 495.67 P +2 F +4.46 (__op__) 457.41 495.67 P +1 F +1.86 ( and) 497.01 495.67 P +2 F +4.69 (__rop__) 112.5 482.67 P +1 F +1.96 ( are the method names corresponding to) 158.7 482.67 P +3 F +1.96 (op) 351.11 482.67 P +1 F +1.96 (, e.g. if) 362.11 482.67 P +3 F +1.96 (op) 401.58 482.67 P +1 F +1.96 ( is \324) 412.58 482.67 P +2 F +4.69 (+) 432.99 482.67 P +1 F +1.96 (\325,) 439.59 482.67 P +2 F +4.69 (__add__) 450.71 482.67 P +1 F +1.96 ( and) 496.91 482.67 P +2 F +0.89 (__radd__) 112.5 469.67 P +1 F +0.37 ( are used\051. If an exception occurs at any point, the evaluation is abandoned and) 165.3 469.67 P +(exception handling takes over.) 112.5 456.67 T +(0.) 112.5 437.67 T +0.31 (If x is a string object and) 130.5 437.67 P +3 F +0.31 (op) 244.77 437.67 P +1 F +0.31 ( is the modulo operator \050) 255.77 437.67 P +2 F +0.74 (%) 365.77 437.67 P +1 F +0.31 (\051, the string formatting operation) 372.37 437.67 P +(\050see [Ref:XXX]\051 is invoked and the remaining steps are skipped.) 130.5 424.67 T +(1.) 112.5 405.67 T +(If x is a class instance:) 130.5 405.67 T +(1a.) 130.5 386.67 T +0.54 (If x has a) 166.5 386.67 P +2 F +1.3 (__coerce__) 212.05 386.67 P +1 F +0.54 ( method: replace x and y with the 2-tuple returned by) 278.05 386.67 P +2 F +(x.__coerce__\050y\051) 166.5 373.67 T +1 F +(; skip to step 2 if the coercion returns) 265.5 373.67 T +2 F +(None) 432.01 373.67 T +1 F +(.) 458.41 373.67 T +(1b.) 130.5 354.67 T +(If neither x nor y is a class instance after coercion, go to step 3.) 166.5 354.67 T +(1c.) 130.5 335.67 T +-0.41 (If x has a method) 166.5 335.67 P +2 F +-0.98 (__op__) 243.59 335.67 P +1 F +-0.41 (, return) 283.19 335.67 P +2 F +-0.98 (x.__op__\050y\051) 316.89 335.67 P +1 F +-0.41 (; otherwise, restore x and y to) 389.49 335.67 P +(their value before step 1a.) 166.5 322.67 T +(2.) 112.5 303.67 T +(If y is a class instance:) 130.5 303.67 T +(2a.) 130.5 284.67 T +0.54 (If y has a) 166.5 284.67 P +2 F +1.3 (__coerce__) 212.05 284.67 P +1 F +0.54 ( method: replace y and x with the 2-tuple returned by) 278.05 284.67 P +2 F +(y.__coerce__\050x\051) 166.5 271.67 T +1 F +(; skip to step 3 if the coercion returns None.) 265.5 271.67 T +(2b.) 130.5 252.67 T +(If neither x nor y is a class instance after coercion, go to step 3.) 166.5 252.67 T +(2b.) 130.5 233.67 T +0.1 (If y has a method) 166.5 233.67 P +2 F +0.23 (__rop__) 246.11 233.67 P +1 F +0.1 (, return) 292.31 233.67 P +2 F +0.23 (y.__rop__\050x\051) 327.02 233.67 P +1 F +0.1 (; otherwise, restore x and) 406.22 233.67 P +(y to their value before step 2a.) 166.5 220.67 T +(3.) 112.5 201.67 T +(We only get here if neither x nor y is a class instance.) 130.5 201.67 T +(3a.) 130.5 182.67 T +(If) 166.5 182.67 T +3 F +(op) 176.58 182.67 T +1 F +( is \324) 187.58 182.67 T +2 F +(+) 204.08 182.67 T +1 F +(\325 and x is a sequence, sequence concatenation is invoked.) 210.68 182.67 T +(3b.) 130.5 163.67 T +-0.37 (If) 166.5 163.67 P +3 F +-0.37 (op) 176.2 163.67 P +1 F +-0.37 ( is \324) 187.2 163.67 P +2 F +-0.89 (*) 202.96 163.67 P +1 F +-0.37 (\325 and one operand is a sequence and the other an integer, sequence rep-) 209.56 163.67 P +(etition is invoked.) 166.5 150.67 T +(3c.) 130.5 131.67 T +0.05 (Otherwise, both operands must be numbers; they are coerced to a common type) 166.5 131.67 P +(if possible, and the numeric operation is invoked for that type.) 166.5 118.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "22" 28 +%%Page: "23" 29 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(23) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Execution model) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 16 Q +(C) 99 709.33 T +0 12.8 Q +(HAPTER) 110.55 709.33 T +0 16 Q +(4:) 167.62 709.33 T +(E) 198 709.33 T +0 12.8 Q +(XECUTION) 208.67 709.33 T +(MODEL) 279.26 709.33 T +0 14 Q +(4.1) 99 670.67 T +(Code blocks, execution frames, and name spaces) 135 670.67 T +1 11 Q +0.53 (A) 99 645.67 P +3 F +0.53 (code block) 110.22 645.67 P +1 F +0.53 ( is a piece of Python program text that can be executed as a unit, such as a module, a) 158.1 645.67 P +1.1 (class definition or a function body. Some code blocks \050like modules\051 are normally executed only) 99 632.67 P +0.12 (once, others \050like function bodies\051 may be executed many times. Code blocks may textually contain) 99 619.67 P +-0.19 (other code blocks. Code blocks may invoke other code blocks \050that may or may not be textually con-) 99 606.67 P +(tained in them\051 as part of their execution, e.g. by invoking \050calling\051 a function.) 99 593.67 T +0.3 (The following are code blocks: A module is a code block. A function body is a code block. A class) 99 568.67 P +-0.15 (definition is a code block. Each command typed interactively is a separate code block; a script file \050a) 99 555.67 P +-0.24 (file given as standard input to the interpreter or specified on the interpreter command line the first ar-) 99 542.67 P +0.41 0.02 (gument\051 is a code block; a script command \050a command specified on the interpreter command line) 99 529.67 B +-0.24 (with the \324) 99 516.67 P +4 F +-0.24 (-c) 140.69 516.67 P +1 F +-0.24 (\325 option\051 is a code block. The string argument passed to the built-in function) 149.24 516.67 P +2 F +-0.57 (eval) 484.13 516.67 P +1 F +-0.24 ( and to) 510.53 516.67 P +0.41 0.14 (the) 99 503.67 B +2 F +0.99 0.14 (exec) 116.15 503.67 B +1 F +0.41 0.14 ( statement are code blocks. The file read by the built-in function) 143.09 503.67 B +2 F +0.99 0.14 (execfile) 442.15 503.67 B +1 F +0.41 0.14 ( is a code) 496.03 503.67 B +-0.3 (block. And finally, the expression read and evaluated by the built-in function) 99 490.67 P +2 F +-0.71 (input) 437 490.67 P +1 F +-0.3 ( is a code block.) 470 490.67 P +-0.42 (A code block is executed in an execution frame. An) 99 477.67 P +3 F +-0.42 (execution frame) 325.47 477.67 P +1 F +-0.42 ( contains some administrative in-) 395.62 477.67 P +0.41 0.23 (formation \050used for debugging\051, determines where and how execution continues after the code) 99 464.67 B +-0.13 (block\325s execution has completed, and \050perhaps most importantly\051 defines two name spaces, the local) 99 451.67 P +(and the global name space, that affect execution of the code block.) 99 438.67 T +-0.04 (A) 99 413.67 P +3 F +-0.04 (name space) 109.65 413.67 P +1 F +-0.04 ( is a mapping from names \050identifiers\051 to objects. A particular name space may be ref-) 161.23 413.67 P +0.03 (erenced by more than one execution frame, and from other places as well. Adding a name to a name) 99 400.67 P +-0.38 (space is called) 99 387.67 P +3 F +-0.38 (binding) 164.14 387.67 P +1 F +-0.38 ( a name \050to an object\051; changing the mapping of a name is called) 197.76 387.67 P +3 F +-0.38 (rebinding) 479.58 387.67 P +1 F +-0.38 (; re-) 522.36 387.67 P +0.05 (moving a name is) 99 374.67 P +3 F +0.05 (unbinding) 179.88 374.67 P +1 F +0.05 (. Name spaces are functionally equivalent to dictionaries \050and often im-) 224.49 374.67 P +(plemented as dictionaries\051.) 99 361.67 T +0.41 0.01 (The) 99 336.67 B +3 F +0.41 0.01 (local name space) 119.3 336.67 B +1 F +0.41 0.01 ( of an execution frame determines the default place where names are defined) 196.62 336.67 B +-0.5 (and searched. The) 99 323.67 P +3 F +-0.5 (global name space) 179.96 323.67 P +1 F +-0.5 ( determines the place where names listed in) 261.44 323.67 P +2 F +-1.21 (global) 451.71 323.67 P +1 F +-0.5 ( statements) 491.31 323.67 P +-0.36 (are defined and searched, and where names that are not bound anywhere in the current code block are) 99 310.67 P +(searched.) 99 297.67 T +-0.31 (Whether a name is local or global in a code block is determined by static inspection of the source text) 99 272.67 P +-0.19 (for the code block: in the absence of) 99 259.67 P +2 F +-0.45 (global) 260.01 259.67 P +1 F +-0.19 ( statements, a name that is bound anywhere in the code) 299.61 259.67 P +-0.21 (block is local in the entire code block; all other names are considered global. The) 99 246.67 P +2 F +-0.51 (global) 455.7 246.67 P +1 F +-0.21 ( statement) 495.3 246.67 P +0.27 (forces global interpretation of specified names throughout the code block. The following constructs) 99 233.67 P +0.41 0.17 (bind names: formal parameters to functions,) 99 220.67 B +2 F +0.99 0.17 (import) 306.04 220.67 B +1 F +0.41 0.17 ( statements, class and function definitions) 346.67 220.67 B +-0.01 (\050these bind the class or function name in the defining block\051, and targets that are identifiers if occur-) 99 207.67 P +-0.54 (ring in an assignment,) 99 194.67 P +2 F +-1.3 (for) 196.75 194.67 P +1 F +-0.54 ( loop header, or in the second position of an) 216.55 194.67 P +2 F +-1.3 (except) 409.17 194.67 P +1 F +-0.54 ( clause header. Local) 448.77 194.67 P +0.3 (names are searched only on the local name space; global names are searched only in the global and) 99 181.67 P +(built-in namespace.) 99 168.67 T +1 8.8 Q +(1) 185.15 173.07 T +1 11 Q +-0.4 (A target occurring in a) 99 143.67 P +2 F +-0.96 (del) 199.33 143.67 P +1 F +-0.4 ( statement is also considered bound for this purpose \050though the actual se-) 219.13 143.67 P +(mantics are to \322unbind\323 the name\051.) 99 130.67 T +0 0 0 1 0 0 0 K +99 99 540 114 C +0 0 0 1 0 0 0 K +108 112 252 112 2 L +0.5 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 0 1 0 0 0 K +0 0 612 792 C +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(1.) 108 92.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.35 (If the code block contains) 121.5 92.33 P +2 F +-0.83 (exec) 225.57 92.33 P +1 F +-0.35 ( statements or the construct \324\324) 249.57 92.33 P +2 F +-0.83 (from) 366.42 92.33 P +-0.83 (...) 392.57 92.33 P +-0.83 (import) 412.72 92.33 P +-0.83 (*) 450.88 92.33 P +1 F +-0.35 (\325\325, the semantics) 456.88 92.33 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.61 (of local names change subtly: local name lookup first searches in the local namespace, then in the) 121.46 80.33 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(global namespace and in the built-in namespace.) 121.46 68.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "23" 29 +%%Page: "24" 30 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(24) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.41 0.03 (When a global name is not found in the global name space, it is searched in the built-in namespace. The) 72 712.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.02 (built-in namespace associated with the execution of a code block is actually found by looking up the name) 72 699.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +-0.87 (__builtins__) 72 686.67 P +1 F +-0.36 ( is its global name space; this should be a dictionary or a module \050in the latter case its dic-) 151.2 686.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.24 (tionary is used\051. Normally, the) 72 673.67 B +2 F +0.99 0.24 (__builtins__) 218.94 673.67 B +1 F +0.41 0.24 ( namespace is the dictionary of the built-in module) 301.03 673.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +0.99 0.05 (__builtin__) 72 660.67 B +1 F +0.41 0.05 ( \050note: no \324s\325\051; if it isn\325t,) 145.11 660.67 B +3 F +0.41 0.05 (restricted execution mode) 258.78 660.67 B +1 F +0.41 0.05 ( is in effect, see [Ref:XXX]. When a) 374.41 660.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(name is not found at all, a) 72 647.67 T +2 F +(NameError) 188.71 647.67 T +1 F +( exception is raised.) 248.11 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.19 (The following table lists the local and global name space used for all types of code blocks. The name space) 72 622.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.28 (for a particular module is automatically created when the module is first imported. Note that in almost all) 72 609.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.16 (cases, the global name space is the name space of the containing module \321 scopes in Python do not nest!) 72 596.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Notes:) 72 313.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 F +(n.s.) 72 294.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(means) 108 294.67 T +3 F +(name space) 138.85 294.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 F +(\0501\051) 72 275.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(The main module for a script is always called) 108 275.67 T +2 F +(__main__) 311.16 275.67 T +1 F +(; \324\324the filename don\325t enter into it.\325\325) 363.96 275.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 F +(\0502\051) 72 256.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(The global and local name space for these can be overridden with optional extra arguments.) 108 256.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 F +(\0503\051) 72 237.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +0.86 (The) 108 237.67 P +2 F +2.07 (exec) 128.72 237.67 P +1 F +0.86 ( statement and the) 155.12 237.67 P +2 F +2.07 (eval\050\051) 241.07 237.67 P +1 F +0.86 ( and) 280.67 237.67 P +2 F +2.07 (execfile\050\051) 303.78 237.67 P +1 F +0.86 ( functions have optional arguments to) 369.78 237.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(override the global and local namespace. If only one namespace is specified, it is used for both.) 108 224.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.05 (The built-in functions) 72 199.67 B +2 F +0.99 0.05 (globals\050\051) 173.1 199.67 B +1 F +0.41 0.05 ( and) 232.95 199.67 B +2 F +0.99 0.05 (locals\050\051) 255.41 199.67 B +1 F +0.41 0.05 ( returns a dictionary representing the current global) 308.62 199.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.27 (and local name space, respectively. The effect of modifications to this dictionary on the name space are un-) 72 186.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(defined.) 72 173.67 T +1 8.8 Q +(1) 107.74 178.07 T +0 0 0 1 0 0 0 K +72 108 540 123 C +0 0 0 1 0 0 0 K +81 121 225 121 2 L +0.5 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 0 1 0 0 0 K +0 0 612 792 C +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(1.) 81 101.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.46 (The current implementations return the dictionary actually used to implement the name space,) 94.5 101.33 P +3 11 Q +0.5 (except) 479.29 101.33 P +1 10 Q +0.46 ( for) 507.38 101.33 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2.45 (functions, where the optimizer may cause the local name space to be implemented differently, and) 94.46 89.33 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(locals\050\051) 94.46 77.33 T +1 F +( returns a dictionary that is a shadow copy of the actual local name space.) 142.46 77.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 12 Q +(T) 179.93 573 T +(able 3: Name Spaces f) 186.84 573 T +(or V) 298.52 573 T +(arious Code Blocks) 320.41 573 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Code block type) 101.8 547 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( Global name space) 240.04 547 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( Local name space) 377.46 547 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( Notes) 487.89 547 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(Module) 78 523.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( n.s. for this module) 216.25 523.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( same as global) 370.12 523.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Script \050\336le or command\051) 78 502.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( n.s. for) 216.25 502.67 T +2 F +(__main__) 252.61 502.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( same as global) 370.12 502.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\0501\051) 485.77 502.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Interacti) 78 481.67 T +(v) 114.38 481.67 T +(e command) 119.71 481.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( n.s. for) 216.25 481.67 T +2 F +(__main__) 252.61 481.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( same as global) 370.12 481.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Class de\336nition) 78 460.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( global n.s. of containing block) 216.25 460.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( ne) 370.12 460.67 T +(w n.s.) 382.98 460.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Function body) 78 439.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( global n.s. of containing block) 216.25 439.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( ne) 370.12 439.67 T +(w n.s.) 382.98 439.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(String passed to) 78 418.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(exec) 78 405.67 T +1 F +( statement) 104.4 405.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( global n.s. of containing block) 216.25 418.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.47 ( local n.s. of containing) 370.12 418.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(block) 370.12 405.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( \0502\051, \0503\051) 485.77 418.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(String passed to) 78 384.67 T +2 F +(eval\050\051) 151.03 384.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( global n.s. of caller) 216.25 384.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( local n.s. of caller) 370.12 384.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( \0502\051, \0503\051) 485.77 384.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.3 (File read by) 78 363.67 P +2 F +-0.73 (execfile\050\051) 132.38 363.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( global n.s. of caller) 216.25 363.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( local n.s. of caller) 370.12 363.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( \0502\051, \0503\051) 485.77 363.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.08 (Expression read by) 78 342.67 P +2 F +-0.18 (input) 164.84 342.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +( global n.s. of caller) 216.25 342.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( local n.s. of caller) 370.12 342.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +72 562.75 72 335.25 2 L +V +0.5 H +0 Z +N +210.25 563.25 210.25 334.75 2 L +V +N +364.12 563.25 364.12 334.75 2 L +V +N +479.77 563.25 479.77 334.75 2 L +V +N +527.02 562.75 527.02 335.25 2 L +V +N +71.75 563 527.27 563 2 L +V +N +72.25 538.25 526.77 538.25 2 L +V +N +72.25 535.75 526.77 535.75 2 L +V +N +71.75 516 527.27 516 2 L +V +N +71.75 495 527.27 495 2 L +V +N +71.75 474 527.27 474 2 L +V +N +71.75 453 527.27 453 2 L +V +N +71.75 432 527.27 432 2 L +V +N +71.75 398 527.27 398 2 L +V +N +71.75 377 527.27 377 2 L +V +N +71.75 356 527.27 356 2 L +V +N +71.75 335 527.27 335 2 L +V +N +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "24" 30 +%%Page: "25" 31 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(25) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Execution model) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(4.2) 99 710.67 T +(Exceptions) 135 710.67 T +1 11 Q +-0.22 (Exceptions are a means of breaking out of the normal flow of control of a code block in order to han-) 99 685.67 P +0.35 (dle errors or other exceptional conditions. An exception is) 99 672.67 P +3 F +0.35 (raised) 360.62 672.67 P +1 F +0.35 ( at the point where the error is de-) 388.12 672.67 P +1.81 (tected; it may be) 99 659.67 P +3 F +1.81 (handled) 181.99 659.67 P +1 F +1.81 ( by the surrounding code block or by any code block that directly or) 217.43 659.67 P +(indirectly invoked the code block where the error occurred.) 99 646.67 T +-0.29 (The Python interpreter raises an exception when it detects a run-time error \050such as division by zero\051.) 99 621.67 P +0.19 (A Python program can also explicitly raise an exception with the) 99 608.67 P +2 F +0.44 (raise) 389.13 608.67 P +1 F +0.19 ( statement. Exception han-) 422.13 608.67 P +0.41 0.06 (dlers are specified with the) 99 595.67 B +2 F +0.99 0.06 (try...except) 224.2 595.67 B +1 F +0.41 0.06 ( statement. The) 304.18 595.67 B +2 F +0.99 0.06 (try) 376.71 595.67 B +1 F +0.41 0.06 (...) 396.7 595.67 B +2 F +0.99 0.06 (finally) 405.15 595.67 B +1 F +0.41 0.06 ( statement specifies) 451.8 595.67 B +-0.09 (cleanup code which does not handle the exception, but is executed whether an exception occurred or) 99 582.67 P +(not in the preceding code.) 99 569.67 T +0.13 (Python uses the \322termination\323 model of error handling: an exception handler can find out what hap-) 99 544.67 P +-0.33 (pened and continue execution at an outer level, but it cannot repair the cause of the error and retry the) 99 531.67 P +(failing operation \050except by re-entering the the offending piece of code from the top\051.) 99 518.67 T +0.41 0.01 (When an exception is not handled at all, the interpreter terminates execution of the program, or re-) 99 493.67 B +(turns to its interactive main loop. In this case, the interpreter normally prints a stack backtrace.) 99 480.67 T +-0.42 (Exceptions are identified by string objects or class instances. Selection of a matching) 99 455.67 P +2 F +-1 (except) 470.58 455.67 P +1 F +-0.42 ( clause) 510.18 455.67 P +-0.39 (is based on object identity \050i.e. two different string objects with the same value represent different ex-) 99 442.67 P +-0.46 (ceptions\051. For string exceptions, the except clause must reference the same string object. For class ex-) 99 429.67 P +(ceptions, the except clause must reference the same class or a base class of it.) 99 416.67 T +0.41 0.05 (When an exception is raised, an object \050maybe) 99 391.67 B +2 F +0.99 0.05 (None) 312.57 391.67 B +1 F +0.41 0.05 (\051 is passed as the exception\325s \322parameter\323 or) 339.17 391.67 B +-0.47 (\324\324value\325\325; this object does not affect the selection of an exception handler, but is passed to the selected) 99 378.67 P +0.16 (exception handler as additional information. For class exceptions, this object must be an instance of) 99 365.67 P +(the exception class being raised.) 99 352.67 T +(See also the description of the) 99 327.67 T +2 F +(try) 234.04 327.67 T +1 F +( and) 253.84 327.67 T +2 F +(raise) 275.22 327.67 T +1 F +( statements in \322Compound statements\323 on page) 308.22 327.67 T +(45.) 519.34 327.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "25" 31 +%%Page: "26" 32 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(26) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "26" 32 +%%Page: "27" 33 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(27) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Expressions) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 16 Q +(C) 99 709.33 T +0 12.8 Q +(HAPTER) 110.55 709.33 T +0 16 Q +(5:) 167.62 709.33 T +(E) 198 709.33 T +0 12.8 Q +(XPRESSIONS) 208.67 709.33 T +1 11 Q +(This chapter explains the meaning of the elements of expressions in Python.) 99 672.67 T +4 F +-0.53 (Syntax notes:) 99 653.67 P +1 F +-0.53 ( in this and the following chapters, extended BNF notation will be used to describe syn-) 161.72 653.67 P +(tax, not lexical analysis. When \050one alternative of\051 a syntax rule has the form) 99 640.67 T +2 10 Q +(name: othername) 99 622.33 T +1 11 Q +(and no semantics are given, the semantics of this form of) 99 597.67 T +2 F +(name) 352.57 597.67 T +1 F +( are the same as for) 378.97 597.67 T +2 F +(othername) 466.94 597.67 T +1 F +(.) 526.34 597.67 T +0 14 Q +(5.1) 99 570.67 T +(Arithmetic conversions) 135 570.67 T +1 11 Q +-0.15 (When a description of an arithmetic operator below uses the phrase \322the numeric arguments are con-) 99 545.67 P +0.86 (verted to a common type\323, the arguments are coerced using the coercion rules listed at the end of) 99 532.67 P +(chapter 3. If both arguments are standard numeric types, the following coercions are applied:) 99 519.67 T +(\245) 99 500.67 T +(If either argument is a complex number, the other is converted to complex;) 113.4 500.67 T +(\245) 99 481.67 T +(otherwise, if either argument is a floating point number, the other is converted to floating point;) 113.4 481.67 T +(\245) 99 462.67 T +(otherwise, if either argument is a long integer, the other is converted to long integer;) 113.4 462.67 T +(\245) 99 443.67 T +(otherwise, both must be plain integers and no conversion is necessary.) 113.4 443.67 T +-0.13 (Some additional rules apply for certain operators \050e.g. a string left argument to the \324) 99 418.67 P +2 F +-0.32 (%) 465.56 418.67 P +1 F +-0.13 (\325 operator\051. Ex-) 472.16 418.67 P +(tensions can define their own coercions.) 99 405.67 T +0 14 Q +(5.2) 99 378.67 T +(Atoms) 135 378.67 T +1 11 Q +1.43 (Atoms are the most basic elements of expressions. The simplest atoms are identifiers or literals.) 99 353.67 P +0.1 (Forms enclosed in reverse quotes or in parentheses, brackets or braces are also categorized syntacti-) 99 340.67 P +(cally as atoms. The syntax for atoms is:) 99 327.67 T +2 10 Q +(atom: identifier | literal | enclosure) 99 309.33 T +(enclosure: parenth_form|list_display|dict_display|string_conversion) 99 297.33 T +0 12 Q +(5.2.1) 99 272 T +(Identifiers \050Names\051) 144 272 T +1 11 Q +-0.25 (An identifier occurring as an atom is a reference to a local, global or built-in name binding. If a name) 99 252.67 P +1.68 (is assigned to anywhere in a code block \050even in unreachable code\051, and is not mentioned in a) 99 239.67 P +2 F +-1.17 (global) 99 226.67 P +1 F +-0.49 ( statement in that code block, then it refers to a local name throughout that code block. When) 138.6 226.67 P +0.83 (it is not assigned to anywhere in the block, or when it is assigned to but also explicitly listed in a) 99 213.67 P +2 F +0.64 (global) 99 200.67 P +1 F +0.27 ( statement, it refers to a global name if one exists, else to a built-in name \050and this binding) 138.6 200.67 P +(may dynamically change\051.) 99 187.67 T +0.14 (When the name is bound to an object, evaluation of the atom yields that object. When a name is not) 99 168.67 P +(bound, an attempt to evaluate it raises a) 99 155.67 T +2 F +(NameError) 275.89 155.67 T +1 F +( exception) 335.29 155.67 T +0 12 Q +(5.2.2) 99 130 T +(Literals) 144 130 T +1 11 Q +(Python supports string literals and various numeric literals:) 99 110.67 T +2 10 Q +-0.82 (literal: stringliteral | integer | longinteger | floatnumber | imagnumber) 99 92.33 P +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "27" 33 +%%Page: "28" 34 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(28) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.35 (Evaluation of a literal yields an object of the given type \050string, integer, long integer, floating point) 99 712.67 P +-0.2 (number, complex number\051 with the given value. The value may be approximated in the case of float-) 99 699.67 P +(ing point and imaginary \050complex\051 literals. \050See \322Literals\323 on page) 99 686.67 T +(6 for details.\051) 399 686.67 T +-0.13 (All literals correspond to immutable data types, and hence the object\325s identity is less important than) 99 661.67 P +0.01 (its value. Multiple evaluations of literals with the same value \050either the same occurrence in the pro-) 99 648.67 P +0.41 0 (gram text or a different occurrence\051 may obtain the same object or a different object with the same) 99 635.67 B +(value.) 99 622.67 T +-0.3 (\050In the original implementation, all literals in the same code block with the same type and value yield) 99 597.67 P +(the same object.\051) 99 584.67 T +0 12 Q +(5.2.3) 99 559 T +(Parenthesized forms) 144 559 T +1 11 Q +(A parenthesized form is an optional expression list enclosed in parentheses:) 99 539.67 T +2 10 Q +(parenth_form: "\050" [expression_list] "\051") 99 521.33 T +1 11 Q +-0.03 (A parenthesized expression list yields whatever that expression list yields: if the list contains at least) 99 496.67 P +0.18 (one comma, it yields a tuple; otherwise, it yields the single expression that makes up the expression) 99 483.67 P +(list.) 99 470.67 T +0.07 (An empty pair of parentheses yields an empty tuple object. Since tuples are immutable, the rules for) 99 445.67 P +(literals apply\050i.e., two occurrences of the empty tuple may or may not yield the same object\051.) 99 432.67 T +-0.08 (Note that tuples are not formed by the parentheses, but rather by use of the comma operator. The ex-) 99 407.67 P +-0.53 (ception is the empty tuple, for which parentheses) 99 394.67 P +3 F +-0.53 (are) 313.21 394.67 P +1 F +-0.53 ( required \321 allowing unparenthesized \322nothing\323) 327.88 394.67 P +(in expressions would cause ambiguities and allow common typos to pass uncaught.) 99 381.67 T +0 12 Q +(5.2.4) 99 356 T +(List displays) 144 356 T +1 11 Q +(A list display is a possibly empty series of expressions enclosed in square brackets:) 99 336.67 T +2 10 Q +(list_display: "[" [expression_list] "]") 99 318.33 T +1 11 Q +0.16 (A list display yields a new list object. If it has no expression list, the list object has no items. Other-) 99 293.67 P +-0.06 (wise, the elements of the expression list are evaluated from left to right and inserted in the list object) 99 280.67 P +(in that order.) 99 267.67 T +0 12 Q +(5.2.5) 99 242 T +(Dictionary displays) 144 242 T +1 11 Q +(A dictionary display is a possibly empty series of key/datum pairs enclosed in curly braces:) 99 222.67 T +2 10 Q +(dict_display: "{" [key_datum_list] "}") 99 204.33 T +(key_datum_list: key_datum \050"," key_datum\051* [","]) 99 192.33 T +(key_datum: expression ":" expression) 99 180.33 T +1 11 Q +(A dictionary display yields a new dictionary object) 99 155.67 T +0.19 (The key/datum pairs are evaluated from left to right to define the entries of the dictionary: each key) 99 130.67 P +(object is used as a key into the dictionary to store the corresponding datum.) 99 117.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "28" 34 +%%Page: "29" 35 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(29) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Expressions) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.41 0.14 (Restrictions on the types of the key values are listed earlier in \322The standard type hierarchy\323 on) 99 712.67 B +-0.19 (page) 99 699.67 P +-0.19 (12 \050to summarize, the key type should be hashable, which excludes all mutable objects\051. Clash-) 122.52 699.67 P +0.09 (es between duplicate keys are not detected; the last datum \050textually rightmost in the display\051 stored) 99 686.67 P +(for a given key value prevails.) 99 673.67 T +0 12 Q +(5.2.6) 99 648 T +(String conversions) 144 648 T +1 11 Q +(A string conversion is an expression list enclosed in reverse \050a.k.a. backward\051 quotes:) 99 628.67 T +2 10 Q +(string_conversion: "\324" expression_list "\324") 99 610.33 T +1 11 Q +0.41 0.04 (A string conversion evaluates the contained expression list and converts the resulting object into a) 99 585.67 B +(string according to rules specific to its type.) 99 572.67 T +0.12 (If the object is a string, a number,) 99 547.67 P +2 F +0.29 (None) 250.87 547.67 P +1 F +0.12 (, or a tuple, list or dictionary containing only objects whose) 277.27 547.67 P +-0.27 (type is one of these, the resulting string is a valid Python expression which can be passed to the built-) 99 534.67 P +0.41 0.11 (in function) 99 521.67 B +2 F +0.99 0.11 (eval\050\051) 151.84 521.67 B +1 F +0.41 0.11 ( to yield an expression with the same value \050or an approximation, if floating) 192.09 521.67 B +(point numbers are involved\051.) 99 508.67 T +-0.29 (\050In particular, converting a string adds quotes around it and converts \322funny\323 characters to escape se-) 99 483.67 P +(quences that are safe to print.\051) 99 470.67 T +-0.17 (It is illegal to attempt to convert recursive objects \050e.g. lists or dictionaries that contain a reference to) 99 445.67 P +(themselves, directly or indirectly.\051) 99 432.67 T +0.21 (The built-in function) 99 407.67 P +2 F +0.51 (repr\050\051) 194.06 407.67 P +1 F +0.21 ( performs exactly the same conversion in its argument as enclosing it) 233.66 407.67 P +0.41 0.07 (in parentheses and reverse quotes does. The built-in function) 99 394.67 B +2 F +0.99 0.07 (str\050\051) 377.08 394.67 B +1 F +0.41 0.07 ( performs a similar but more) 410.43 394.67 B +(user-friendly conversion.) 99 381.67 T +0 14 Q +(5.3) 99 354.67 T +(Primaries) 135 354.67 T +1 11 Q +(Primaries represent the most tightly bound operations of the language. Their syntax is:) 99 329.67 T +2 10 Q +(primary: atom | attributeref | subscription | slicing | call) 99 311.33 T +0 12 Q +(5.3.1) 99 286 T +(Attribute references) 144 286 T +1 11 Q +(An attribute reference is a primary followed by a period and a name:) 99 266.67 T +2 10 Q +(attributeref: primary "." identifier) 99 248.33 T +1 11 Q +-0.33 (The primary must evaluate to an object of a type that supports attribute references. This object is then) 99 223.67 P +-0.42 (asked to produce the attribute whose name is the identifier. If this attribute is not available, the excep-) 99 210.67 P +0.41 0.08 (tion) 99 197.67 B +2 F +0.99 0.08 (AttributeError) 119.68 197.67 B +1 F +0.41 0.08 ( is raised. Otherwise, the type and value of the object produced is deter-) 213.21 197.67 B +-0.19 (mined by the object. Multiple evaluations of the same attribute reference may yield different objects.) 99 184.67 P +0 12 Q +(5.3.2) 99 159 T +(Subscriptions) 144 159 T +1 11 Q +(A subscription selects an item of a sequence \050string, tuple or list\051 or mapping \050dictionary\051 object:) 99 139.67 T +2 10 Q +(subscription: primary "[" expression_list "]") 99 121.33 T +1 11 Q +(The primary must evaluate to an object of a sequence or mapping type.) 99 96.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "29" 35 +%%Page: "30" 36 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(30) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.22 (If the primary is a mapping, the expression list must evaluate to an object whose value is one of the) 99 712.67 P +0.41 0.01 (keys of the mapping, and the subscription selects the value in the mapping that corresponds to that) 99 699.67 B +(key.) 99 686.67 T +-0.22 (If the primary is a sequence, the expression \050list\051 must evaluate to a plain integer. If this value is neg-) 99 661.67 P +-0.18 (ative, the length of the sequence is added to it \050so that, e.g.) 99 648.67 P +2 F +-0.42 (x[-1]) 357.31 648.67 P +1 F +-0.18 ( selects the last item of) 390.31 648.67 P +2 F +-0.42 (x) 492.52 648.67 P +1 F +-0.18 (.\051 The re-) 499.12 648.67 P +0.41 0.03 (sulting value must be a nonnegative integer less than the number of items in the sequence, and the) 99 635.67 B +(subscription selects the item whose index is that value \050counting from zero\051.) 99 622.67 T +-0.42 (A string\325s items are characters. A character is not a separate data type but a string of exactly one char-) 99 597.67 P +(acter.) 99 584.67 T +0 12 Q +(5.3.3) 99 559 T +(Slicings) 144 559 T +1 11 Q +0.14 (A slicing selects a range of items in a sequence \050string, tuple or list\051 object. Slicings may be used as) 99 539.67 P +(expressions or as targets in assignment or) 99 526.67 T +2 F +(del) 284.45 526.67 T +1 F +( statements. The syntax for a slicing:) 304.25 526.67 T +2 10 Q +(slicing: simple_slicing | extended_slicing) 99 508.33 T +(simple_slicing: primary "[" short_slice "]") 99 496.33 T +(extended_slicing: primary "[" slice_list "]") 99 484.33 T +(slice_list: slice_item \050"," slice_item\051* [","]) 99 472.33 T +(slice_item: expression | proper_slice | ellipses) 99 460.33 T +(proper_slice: short_slice | long_slice) 99 448.33 T +(short_slice: [lower_bound] ":" [upper_bound]) 99 436.33 T +(long_slice: short_slice ":" [stride]) 99 424.33 T +(lower_bound: expression) 99 412.33 T +(upper_bound: expression) 99 400.33 T +(stride: expression) 99 388.33 T +(ellipses: "...") 99 376.33 T +1 11 Q +-0.09 (There\325s an ambiguity in the formal syntax here: anything that looks like an expression list also looks) 99 351.67 P +0.3 (like a slice list, so any subscription can be interpreted as a slicing. Rather than further complicating) 99 338.67 P +0.41 0.09 (the syntax, this is disambiguated by declaring that in this case the interpretation as a subscription) 99 325.67 B +0.41 0.03 (takes priority over the interpretation as a slicing \050this is the case if the slice list contains no proper) 99 312.67 B +-0.37 (slice nor ellipses\051. Similarly, when the slice list has exactly one short slice and no trailing comma, the) 99 299.67 P +(interpretation as a simple slicing takes priority over that as an extended slicing.) 99 286.67 T +0.41 0.02 (The semantics for a simple slicing are as follows. The primary must evaluate to a sequence object.) 99 261.67 B +0.01 (The lower and upper bound expressions, if present, must evaluate to plain integers; defaults are zero) 99 248.67 P +-0.17 (and the sequence\325s length, respectively. If either bound is negative, the sequence\325s length is added to) 99 235.67 P +0.38 (it. The slicing now selects all items with index) 99 222.67 P +3 F +0.38 (k) 309.58 222.67 P +1 F +0.38 ( such that) 314.46 222.67 P +3 F +0.38 (i) 360.51 222.67 P +1 F +0.38 ( <=) 363.57 222.67 P +3 F +0.38 (k) 382.23 222.67 P +1 F +0.38 ( <) 387.12 222.67 P +3 F +0.38 (j) 399.58 222.67 P +1 F +0.38 ( where) 402.64 222.67 P +3 F +0.38 (i) 435.77 222.67 P +1 F +0.38 ( and) 438.83 222.67 P +3 F +0.38 (j) 460.97 222.67 P +1 F +0.38 ( are the specified) 464.03 222.67 P +0.41 0.06 (lower and upper bounds. This may be an empty sequence. It is not an error if) 99 209.67 B +3 F +0.41 0.06 (i) 451.37 209.67 B +1 F +0.41 0.06 ( or) 454.49 209.67 B +3 F +0.41 0.06 (j) 470.23 209.67 B +1 F +0.41 0.06 ( lie outside the) 473.35 209.67 B +(range of valid indexes \050such items don\325t exist so they aren\325t selected\051.) 99 196.67 T +-0.35 (The semantics for an extended slicing are as follows. The primary must evaluate to a mapping object,) 99 171.67 P +-0.01 (and it is indexed with a key that is constructed from the slice list, as follows. If the slice list contains) 99 158.67 P +-0.42 (at least one comma, the key is a tuple containing the conversion of the slice items; otherwise, the con-) 99 145.67 P +-0.39 (version of the lone slice item is the key. The conversion of a slice item that is an expression is that ex-) 99 132.67 P +0.32 (pression. The conversion of an ellipses slice item is the built-in) 99 119.67 P +2 F +0.76 (Ellipses) 382.99 119.67 P +1 F +0.32 ( object. The conversion) 435.79 119.67 P +-0.22 (of a proper slice is a slice object \050see page) 99 106.67 P +-0.22 (17\051 whose) 285.15 106.67 P +2 F +-0.54 (start) 332.97 106.67 P +1 F +-0.22 (,) 365.97 106.67 P +2 F +-0.54 (stop) 371.24 106.67 P +1 F +-0.22 ( and) 397.64 106.67 P +2 F +-0.54 (step) 418.58 106.67 P +1 F +-0.22 ( attributes are the val-) 444.98 106.67 P +-0.31 (ues of the expressions given as lower bound, upper bound and stride, respectively, substituting) 99 93.67 P +2 F +-0.73 (None) 513.6 93.67 P +1 F +(for missing expressions.) 99 80.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "30" 36 +%%Page: "31" 37 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(31) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Expressions) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +(5.3.4) 99 712 T +(Calls) 144 712 T +1 11 Q +(A call calls a callable object \050e.g. a function\051 with a possibly empty series of arguments:) 99 692.67 T +2 10 Q +(call: primary "\050" [argument_list [","]] "\051") 99 674.33 T +(argument_list: positional_arguments ["," keyword_arguments]) 99 662.33 T +( | keyword_arguments) 99 650.33 T +(positional_arguments: expression \050"," expression\051*) 99 638.33 T +(keyword_arguments: keyword_item \050"," keyword_item\051*) 99 626.33 T +(keyword_item: identifier "=" expression) 99 614.33 T +1 11 Q +(A trailing comma may be present after an argument list but does not affect the semantics.) 99 589.67 T +-0.32 (The primary must evaluate to a callable object \050user-defined functions, built-in functions, methods of) 99 564.67 P +0.22 (built-in objects, class objects, methods of class instances, and certain class instances themselves are) 99 551.67 P +-0.15 (callable; extensions may define additional callable object types\051. All argument expressions are eval-) 99 538.67 P +-0.05 (uated before the call is attempted. Please refer to \322Function definitions\323 on page) 99 525.67 P +-0.05 (48 for the syntax of) 454.04 525.67 P +(formal parameter lists.) 99 512.67 T +0.08 (If keyword arguments are present, they are first converted to positional arguments, as follows. First,) 99 487.67 P +0.3 (a list of unfilled slots is created for the formal parameters. If there are N positional arguments, they) 99 474.67 P +-0.47 (are placed in the first N slots. Next, for each keyword argument, the identifier is used to determine the) 99 461.67 P +0.41 0.06 (corresponding slot \050if the identifier is the same as the first formal parameter name, the first slot is) 99 448.67 B +-0.16 (used, and so on\051. If the slot is already filled, a) 99 435.67 P +2 F +-0.38 (TypeError) 300.71 435.67 P +1 F +-0.16 ( exception is raised. Otherwise, the value) 360.11 435.67 P +-0.06 (of the argument is placed in the slot, filling it \050even if the expression is) 99 422.67 P +2 F +-0.15 (None) 412.16 422.67 P +1 F +-0.06 (, it fills the slot\051. When) 438.56 422.67 P +-0.52 (all arguments have been processed, the slots that are still unfilled are filled with the corresponding de-) 99 409.67 P +-0.38 (fault value from the function definition. \050Default values are calculated, once, when the function is de-) 99 396.67 P +0.41 0.04 (fined; thus, a mutable object such as a list or dictionary used as default value will be shared by all) 99 383.67 B +-0.3 (calls that don\325t specify an argument value for the corresponding slot; this should usually be avoided.\051) 99 370.67 P +0.41 0.08 (If there are any unfilled slots for which no default value is specified, a) 99 357.67 B +2 F +0.99 0.08 (TypeError) 422.4 357.67 B +1 F +0.41 0.08 ( exception is) 482.56 357.67 B +(raised. Otherwise, the list of filled slots is used as the argument list for the call.) 99 344.67 T +0.27 (If there are more positional arguments than there are formal parameter slots, a) 99 319.67 P +2 F +0.64 (TypeError) 448.27 319.67 P +1 F +0.27 ( excep-) 507.67 319.67 P +0.13 (tion is raised, unless a formal parameter using the syntax\324\324) 99 306.67 P +2 F +0.31 (*identifier) 357.39 306.67 P +1 F +0.13 (\325\325 is present; in this case,) 429.99 306.67 P +-0.05 (that formal parameter receives a tuple containing the excess positional arguments \050or an empty tuple) 99 293.67 P +(if there were no excess positional arguments\051.) 99 280.67 T +-0.3 (If any keyword argument does not correspond to a formal parameter name, a) 99 255.67 P +2 F +-0.72 (TypeError) 435.38 255.67 P +1 F +-0.3 ( exception) 494.78 255.67 P +-0.46 (is raised, unless a formal parameter using the syntax \324\324) 99 242.67 P +2 F +-1.11 (**identifier) 334.95 242.67 P +1 F +-0.46 (\325\325 is present; in this case, that) 414.15 242.67 P +0.41 0.12 (formal parameter receives a dictionary containing the excess keyword arguments \050using the key-) 99 229.67 B +-0.33 (words as keys and the argument values as corresponding values\051, or a \050new\051 empty dictionary if there) 99 216.67 P +(were no excess keyword arguments.) 99 203.67 T +0.41 0.01 (Formal parameters using the syntax \324\324) 99 178.67 B +2 F +0.99 0.01 (*identifier) 268.55 178.67 B +1 F +0.41 0.01 (\325\325 or \324\324) 341.26 178.67 B +2 F +0.99 0.01 (**identifier) 371.48 178.67 B +1 F +0.41 0.01 (\325\325 cannot be used as) 450.8 178.67 B +0.41 0.25 (positional argument slots or as keyword argument names. Formal parameters using the syntax) 99 165.67 B +-0.14 (\324\324) 99 152.67 P +2 F +-0.33 (\050sublist\051) 106.33 152.67 P +1 F +-0.14 (\325\325 cannot be used as keyword argument names; the outermost sublist corresponds to a) 165.73 152.67 P +-0.18 (single unnamed argument slot, and the argument value is assigned to the sublist using the usual tuple) 99 139.67 P +(assignment rules after all other parameter processing is done.) 99 126.67 T +0.41 0.07 (A call always returns some value, possibly) 99 101.67 B +2 F +0.99 0.07 (None) 295.6 101.67 B +1 F +0.41 0.07 (, unless it raises an exception. How this value is) 322.28 101.67 B +(computed depends on the type of the callable object.) 99 88.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "31" 37 +%%Page: "32" 38 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(32) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(If it is:) 99 712.67 T +4 F +(a user-defined function:) 99 693.67 T +1 F +-0.41 (the code block for the function is executed, passing it the argument list. The) 211.44 693.67 P +0.3 (first thing the code block will do is bind the formal parameters to the arguments; this is de-) 135 680.67 P +0.74 (scribed in section\322Function definitions\323 on page) 135 667.67 P +0.74 (48. When the code block executes a) 354.38 667.67 P +2 F +1.76 (re-) 520.2 667.67 P +(turn) 135 654.67 T +1 F +( statement, this specifies the return value of the function call.) 161.4 654.67 T +4 F +(a built-in function or method:) 99 635.67 T +1 F +-0.17 (the result is up to the interpreter; see the library reference manual for) 238.95 635.67 P +(the descriptions of built-in functions and methods.) 135 622.67 T +4 F +(a class object:) 99 603.67 T +1 F +(a new instance of that class is returned.) 164.37 603.67 T +4 F +(a class instance method:) 99 584.67 T +1 F +-0.57 (the corresponding user-defined function is called, with an argument list that) 212.35 584.67 P +(is one longer than the argument list of the call. The instance becomes the first argument.) 135 571.67 T +0 14 Q +(5.4) 99 544.67 T +(The power operator) 135 544.67 T +1 11 Q +-0.32 (The power operator binds more tightly than unary operators on its left; it binds less tightly than unary) 99 515.67 P +(operators on its right. The syntax is:) 99 502.67 T +2 10 Q +(power: primary ["**" u_expr]) 99 484.33 T +1 11 Q +-0.4 (Thus, in an unparenthesized sequence of power and unary operators, the operators are evaluated from) 99 459.67 P +(right to left \050this does not constrain the evaluation order for the operands\051.) 99 446.67 T +-0.32 (The power operator has the same semantics as the built-in) 99 421.67 P +2 F +-0.76 (pow\050\051) 353.68 421.67 P +1 F +-0.32 ( function: it yields its left argument) 386.68 421.67 P +0.41 0.05 (raised to the power of its right argument. The numeric arguments are first converted to a common) 99 408.67 B +-0.33 (type. The result type is that of the arguments after coercion; if the result is not expressible in that type) 99 395.67 P +-0.08 (\050as in raising an integer to a negative power, or a negative floating point number to a broken power\051,) 99 382.67 P +(a) 99 369.67 T +2 F +(TypeError) 106.63 369.67 T +1 F +( exception is raised.) 166.03 369.67 T +0 14 Q +(5.5) 99 342.67 T +(Unary arithmetic operations) 135 342.67 T +1 11 Q +(All unary arithmetic \050and bit-wise\051 operations have the same priority:) 99 317.67 T +2 10 Q +(u_expr: power | "-" u_expr | "+" u_expr | "~" u_expr) 99 299.33 T +1 11 Q +(The unary) 99 274.67 T +2 F +("-") 146.65 274.67 T +1 F +( \050minus\051 operator yields the negation of its numeric argument.) 166.45 274.67 T +(The unary) 99 249.67 T +2 F +("+") 146.65 249.67 T +1 F +( \050plus\051 operator yields its numeric argument unchanged.) 166.45 249.67 T +0.41 0.01 (The unary) 99 224.67 B +2 F +0.99 0.01 ("~") 147.55 224.67 B +1 F +0.41 0.01 ( \050invert\051 operator yields the bit-wise inversion of its plain or long integer argument.) 167.37 224.67 B +(The bit-wise inversion of) 99 211.67 T +2 F +(x) 212.65 211.67 T +1 F +( is defined as) 219.25 211.67 T +2 F +(-\050x+1\051) 279.74 211.67 T +1 F +(. It only applies to integral numbers.) 319.34 211.67 T +(In all three cases, if the argument does not have the proper type, a) 99 186.67 T +2 F +(TypeError) 391.04 186.67 T +1 F +( exception is raised.) 450.44 186.67 T +0 14 Q +(5.6) 99 159.67 T +(Binary arithmetic operations) 135 159.67 T +1 11 Q +0.18 (The remaining binary arithmetic operations have the conventional priority levels. Note that some of) 99 134.67 P +0.65 (these operations also apply to certain non-numeric types. Apart from the power operator, there are) 99 121.67 P +(only two levels, one for multiplicative operators and one for additive operators:) 99 108.67 T +2 10 Q +(m_expr: u_expr | m_expr "*" u_expr) 99 90.33 T +( | m_expr "/" u_expr | m_expr "%" u_expr) 99 78.33 T +(a_expr: m_expr | aexpr "+" m_expr | aexpr "-" m_expr) 99 66.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "32" 38 +%%Page: "33" 39 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(33) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Expressions) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.45 (The ") 99 712.67 P +2 F +-1.08 (*) 122.89 712.67 P +1 F +-0.45 (" \050multiplication\051 operator yields the product of its arguments. The arguments must either both) 129.49 712.67 P +-0.12 (be numbers, or one argument must be a plain integer and the other must be a sequence. In the former) 99 699.67 P +-0.29 (case, the numbers are converted to a common type and then multiplied together. In the latter case, se-) 99 686.67 P +(quence repetition is performed; a negative repetition factor yields an empty sequence.) 99 673.67 T +-0.4 (The ") 99 648.67 P +2 F +-0.95 (/) 122.95 648.67 P +1 F +-0.4 (" \050division\051 operator yields the quotient of its arguments. The numeric arguments are first con-) 129.55 648.67 P +0.04 (verted to a common type. Plain or long integer division yields an integer of the same type; the result) 99 635.67 P +-0.22 (is that of mathematical division with the \324floor\325 function applied to the result. Division by zero raises) 99 622.67 P +(the) 99 609.67 T +2 F +(ZeroDivisionError) 115.19 609.67 T +1 F +( exception) 227.39 609.67 T +-0.47 (The ") 99 584.67 P +2 F +-1.12 (%) 122.88 584.67 P +1 F +-0.47 (" \050modulo\051 operator yields the remainder from the division of the first argument by the second.) 129.48 584.67 P +0.41 0.21 (The numeric arguments are first converted to a common type. A zero right argument raises the) 99 571.67 B +2 F +-0.63 (ZeroDivisionError) 99 558.67 P +1 F +-0.26 ( exception. The arguments may be floating point numbers, e.g.) 211.2 558.67 P +2 F +-0.63 (3.14%0.7) 487.2 558.67 P +1 F +0.34 (equals) 99 545.67 P +2 F +0.83 (0.34) 130.2 545.67 P +1 F +0.34 ( \050since) 156.6 545.67 P +2 F +0.83 (3.14) 189.06 545.67 P +1 F +0.34 ( equals) 215.46 545.67 P +2 F +0.83 (4*0.7+0.34) 249.75 545.67 P +1 F +0.34 (\051. The modulo operator always yields a result with) 315.75 545.67 P +0.16 (the same sign as its second operand \050or zero\051; the absolute value of the result is strictly smaller than) 99 532.67 P +(the second operand.) 99 519.67 T +-0.4 (The integer division and modulo operators are connected by the following identity:) 99 494.67 P +2 F +-0.95 (x == \050x/y\051*y) 462.7 494.67 P +0.99 0.04 (+ \050x%y\051) 99 481.67 B +1 F +0.41 0.04 (. Integer division and modulo are also connected with the built-in function) 146.44 481.67 B +2 F +0.99 0.04 (divmod\050\051) 483.81 481.67 B +1 F +0.41 0.04 (:) 536.9 481.67 B +2 F +0.99 0.02 (divmod\050x, y\051 == \050x/y, x%y\051) 99 468.67 B +1 F +0.41 0.02 (. These identities don\325t hold for floating point and complex) 274.99 468.67 B +(numbers; there a similar identity holds where) 99 455.67 T +2 F +(x/y) 300.95 455.67 T +1 F +( is replaced by) 320.75 455.67 T +2 F +(floor\050x/y\051) 387.34 455.67 T +1 F +(\051 or) 453.34 455.67 T +2 F +(floor\050\050x/y\051.real\051) 99 442.67 T +1 F +(, respectively.) 211.2 442.67 T +-0.54 (The) 99 417.67 P +2 F +-1.3 ("+") 118.31 417.67 P +1 F +-0.54 ( \050addition\051 operator yields the sum of its arguments. The arguments must either both be num-) 138.11 417.67 P +-0.23 (bers, or both sequences of the same type. In the former case, the numbers are converted to a common) 99 404.67 P +(type and then added together. In the latter case, the sequences are concatenated.) 99 391.67 T +0.41 0.05 (The) 99 366.67 B +2 F +0.99 0.05 ("-") 119.49 366.67 B +1 F +0.41 0.05 ( \050subtraction\051 operator yields the difference of its arguments. The numeric arguments are) 139.45 366.67 B +(first converted to a common type.) 99 353.67 T +0 14 Q +(5.7) 99 326.67 T +(Shifting operations) 135 326.67 T +1 11 Q +(The shifting operations have lower priority than the arithmetic operations:) 99 301.67 T +2 10 Q +(shift_expr: a_expr | shift_expr \050 "<<" | ">>" \051 a_expr) 99 283.33 T +1 11 Q +0.36 (These operators accept plain or long integers as arguments. The arguments are converted to a com-) 99 258.67 P +0.04 (mon type. They shift the first argument to the left or right by the number of bits given by the second) 99 245.67 P +(argument.) 99 232.67 T +0.2 (A right shift by) 99 207.67 P +3 F +0.2 (n) 170.07 207.67 P +1 F +0.2 ( bits is defined as division by) 175.57 207.67 P +2 F +0.48 (pow\0502,) 308.05 207.67 P +1 F +0.2 (n\051. A left shift by) 347.65 207.67 P +3 F +0.2 (n) 427.48 207.67 P +1 F +0.2 ( bits is defined as multi-) 432.98 207.67 P +-0.34 (plication with) 99 194.67 P +2 F +-0.83 (pow\0502,) 161.87 194.67 P +1 F +-0.34 (n\051; for plain integers there is no overflow check so this drops bits and flips the) 201.47 194.67 P +0.19 (sign if the result is not less than) 99 181.67 P +2 F +0.46 (pow\0502,31\051) 242.3 181.67 P +1 F +0.19 ( in absolute value. Negative shift counts raise a) 301.7 181.67 P +2 F +0.46 (Val-) 513.6 181.67 P +(ueError) 99 168.67 T +1 F +( exception.) 145.2 168.67 T +0 14 Q +(5.8) 99 141.67 T +(Binary bit-wise operations) 135 141.67 T +1 11 Q +(Each of the three bitwise operations has a different priority level:) 99 116.67 T +2 10 Q +(and_expr: shift_expr | and_expr "&" shift_expr) 99 98.33 T +(xor_expr: and_expr | xor_expr "^" and_expr) 99 86.33 T +(or_expr: xor_expr | or_expr "|" xor_expr) 99 74.33 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "33" 39 +%%Page: "34" 40 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(34) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.41 0.03 (The) 76.5 712.67 B +2 F +0.99 0.03 ("&") 96.88 712.67 B +1 F +0.41 0.03 ( operator yields the bit-wise AND of its arguments, which must be plain or long integers.) 116.77 712.67 B +(The arguments are converted to a common type.) 76.5 699.67 T +0.41 0 (The) 76.5 674.67 B +2 F +0.99 0 ("^") 96.77 674.67 B +1 F +0.41 0 ( operator yields the bitwise XOR \050exclusive OR\051 of its arguments, which must be plain or) 116.57 674.67 B +(long integers. The arguments are converted to a common type.) 76.5 661.67 T +-0.17 (The) 76.5 636.67 P +2 F +-0.41 ("|") 96.19 636.67 P +1 F +-0.17 ( operator yields the bitwise \050inclusive\051 OR of its arguments, which must be plain or long in-) 115.99 636.67 P +(tegers. The arguments are converted to a common type.) 76.5 623.67 T +0 14 Q +(5.9) 76.5 596.67 T +(Comparisons) 112.5 596.67 T +1 11 Q +0.26 (Contrary to C, all comparison operations in Python have the same priority, which is lower than that) 76.5 571.67 P +0.47 (of any arithmetic, shifting or bitwise operation. Also contrary to C, expressions like) 76.5 558.67 P +2 F +1.13 (a < b < c) 453.56 558.67 P +1 F +(have the interpretation that is conventional in mathematics:) 76.5 545.67 T +2 10 Q +(comparison: or_expr \050comp_operator or_expr\051*) 76.5 527.33 T +-1.8 (comp_operator: "<"|">"|"=="|">="|"<="|"<>"|"!="|"is" ["not"]|["not"] "in") 76.5 515.33 P +1 11 Q +(Comparisons yield integer values: 1 for true, 0 for false.) 76.5 490.67 T +-0.2 (Comparisons can be chained arbitrarily, e.g.) 76.5 465.67 P +2 F +-0.49 (x < y <= z) 272.31 465.67 P +1 F +-0.2 ( is equivalent to) 336.35 465.67 P +2 F +-0.49 (x < y and y <= z,) 408.25 465.67 P +1 F +-0.14 (except that) 76.5 452.67 P +2 F +-0.35 (y) 126.92 452.67 P +1 F +-0.14 ( is evaluated only once \050but in both cases) 133.52 452.67 P +2 F +-0.35 (z) 315.83 452.67 P +1 F +-0.14 ( is not evaluated at all when) 322.43 452.67 P +2 F +-0.35 (x < y) 446.98 452.67 P +1 F +-0.14 ( is found) 479.29 452.67 P +(to be false\051.) 76.5 439.67 T +-0.31 (Formally, if) 76.5 414.67 P +3 F +-0.31 (a) 131.18 414.67 P +1 F +-0.31 (,) 136.68 414.67 P +3 F +-0.31 (b) 141.87 414.67 P +1 F +-0.31 (,) 147.37 414.67 P +3 F +-0.31 (c) 152.56 414.67 P +1 F +-0.31 (, ...,) 157.44 414.67 P +3 F +-0.31 (y) 176.06 414.67 P +1 F +-0.31 (,) 180.95 414.67 P +3 F +-0.31 (z) 186.13 414.67 P +1 F +-0.31 ( are expressions and) 190.41 414.67 P +3 F +-0.31 (opa) 280.8 414.67 P +1 F +-0.31 (,) 297.3 414.67 P +3 F +-0.31 (opb) 302.49 414.67 P +1 F +-0.31 (, ...,) 318.99 414.67 P +3 F +-0.31 (opy) 337.61 414.67 P +1 F +-0.31 ( are comparison operators, then) 353.5 414.67 P +3 F +-0.31 (a opa) 493.06 414.67 P +0.05 (b opb c) 76.5 401.67 P +1 F +0.05 ( ...) 108.98 401.67 P +3 F +0.05 (y opy z) 122.82 401.67 P +1 F +0.05 ( is equivalent to) 153.47 401.67 P +3 F +0.05 (a opa b) 226.38 401.67 P +2 F +0.12 (and) 262.27 401.67 P +3 F +0.05 (b opb c) 288.79 401.67 P +2 F +0.12 (and) 324.06 401.67 P +1 F +0.05 ( ...) 343.86 401.67 P +3 F +0.05 (y opy z) 360.51 401.67 P +1 F +0.05 (, except that each expression) 391.15 401.67 P +(is evaluated at most once.) 76.5 388.67 T +0.18 (Note that) 76.5 363.67 P +3 F +0.18 (a opa b opb c) 120.24 363.67 P +1 F +0.18 ( doesn\325t imply any kind of comparison between) 180.84 363.67 P +3 F +0.18 (a) 394.9 363.67 P +1 F +0.18 ( and) 400.4 363.67 P +3 F +0.18 (c) 422.14 363.67 P +1 F +0.18 (, so that e.g.) 427.02 363.67 P +2 F +0.43 (x < y) 483.65 363.67 P +(> z) 76.5 350.67 T +1 F +( is perfectly legal \050though perhaps not pretty\051.) 96.3 350.67 T +-0.27 (The forms) 76.5 325.67 P +2 F +-0.66 (<>) 124.22 325.67 P +1 F +-0.27 ( and) 137.42 325.67 P +2 F +-0.66 (!=) 158.25 325.67 P +1 F +-0.27 ( are equivalent; for consistency with C,) 171.45 325.67 P +2 F +-0.66 (!=) 344.89 325.67 P +1 F +-0.27 ( is preferred; where) 358.1 325.67 P +2 F +-0.66 (!=) 445.57 325.67 P +1 F +-0.27 ( is mentioned) 458.77 325.67 P +(below) 76.5 312.67 T +2 F +(<>) 106.13 312.67 T +1 F +( is also implied.) 119.33 312.67 T +-0.01 (The operators) 76.5 287.67 P +2 F +-0.02 ("<", ">", "==", ">=", "<=") 140.02 287.67 P +1 F +-0.01 (, and) 311.54 287.67 P +2 F +-0.02 ("!=") 335.65 287.67 P +1 F +-0.01 ( compare the values of two objects.) 362.05 287.67 P +0.25 (The objects needn\325t have the same type. If both are numbers, they are converted to a common type.) 76.5 274.67 P +-0.03 (Otherwise, objects of different types) 76.5 261.67 P +3 F +-0.03 (always) 239.46 261.67 P +1 F +-0.03 ( compare unequal, and are ordered consistently but arbi-) 270.02 261.67 P +0.41 0.05 (trarily. \050This unusual definition of comparison is done to simplify the definition of operations like) 76.5 248.67 B +(sorting and the) 76.5 235.67 T +2 F +(in) 144.63 235.67 T +1 F +( and) 157.83 235.67 T +2 F +(not) 179.22 235.67 T +(in) 201.77 235.67 T +1 F +( operators.\051) 214.97 235.67 T +(Comparison of objects of the same type depends on the type:) 76.5 210.67 T +(\245) 76.5 191.67 T +(Numbers are compared arithmetically.) 90.9 191.67 T +(\245) 76.5 172.67 T +0.77 (Strings are compared lexicographically using the numeric equivalents \050the result of the built-in) 90.9 172.67 P +(function) 90.9 159.67 T +2 F +(ord) 130.31 159.67 T +1 F +(\051 of their characters.) 150.11 159.67 T +(\245) 76.5 140.67 T +(Tuples and lists are compared lexicographically using comparison of corresponding items.) 90.9 140.67 T +(\245) 76.5 121.67 T +-0.38 (Mappings \050dictionaries\051 are compared through lexicographic comparison of their sorted \050key, val-) 90.9 121.67 P +(ue\051 lists.) 90.9 108.67 T +1 8.8 Q +(1) 128.18 113.07 T +1 11 Q +(\245) 76.5 89.67 T +-0.13 (Most other types compare unequal unless they are the same object; the choice whether one object) 90.9 89.67 P +-0.3 (is considered smaller or larger than another one is made arbitrarily but consistently within one ex-) 90.9 76.67 P +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "34" 40 +%%Page: "35" 41 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(35) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Expressions) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(ecution of a program.) 113.4 712.67 T +0.05 (The operators) 99 687.67 P +2 F +0.12 (in) 162.64 687.67 P +1 F +0.05 ( and) 175.84 687.67 P +2 F +0.12 (not in) 197.33 687.67 P +1 F +0.05 ( test for sequence membership: if) 237.05 687.67 P +3 F +0.05 (y) 386.44 687.67 P +1 F +0.05 ( is a sequence,) 391.33 687.67 P +3 F +0.05 (x) 457.82 687.67 P +1 F +0.05 ( in) 462.7 687.67 P +3 F +0.05 (y) 476.86 687.67 P +1 F +0.05 ( is true if and) 481.75 687.67 P +-0.34 (only if there exists an index) 99 674.67 P +3 F +-0.34 (i) 221.59 674.67 P +1 F +-0.34 ( such that) 224.64 674.67 P +3 F +-0.34 (x) 268.52 674.67 P +1 F +-0.34 ( =) 273.41 674.67 P +3 F +-0.34 (y) 284.42 674.67 P +1 F +-0.34 ([) 289.3 674.67 P +3 F +-0.34 (i) 292.97 674.67 P +1 F +-0.34 (].) 296.03 674.67 P +3 F +-0.34 (x) 304.84 674.67 P +1 F +-0.34 ( not in) 309.73 674.67 P +3 F +-0.34 (y) 339.56 674.67 P +1 F +-0.34 ( yields the inverse truth value. The exception) 344.44 674.67 P +2 F +0.6 (TypeError) 99 661.67 P +1 F +0.25 ( is raised when) 158.4 661.67 P +3 F +0.25 (y) 227.84 661.67 P +1 F +0.25 ( is not a sequence, or when) 232.72 661.67 P +3 F +0.25 (y) 356.06 661.67 P +1 F +0.25 ( is a string and) 360.94 661.67 P +3 F +0.25 (x) 429.11 661.67 P +1 F +0.25 ( is not a string of length) 433.99 661.67 P +(one.) 99 648.67 T +1 8.8 Q +(1) 117.63 653.07 T +1 11 Q +-0.47 (The operators) 99 623.67 P +2 F +-1.14 (is) 161.59 623.67 P +1 F +-0.47 ( and) 174.79 623.67 P +2 F +-1.14 (is not) 195.22 623.67 P +1 F +-0.47 ( test for object identity:) 233.68 623.67 P +3 F +-0.47 (x) 336.72 623.67 P +2 F +-1.14 (is) 343.88 623.67 P +3 F +-0.47 (y) 359.36 623.67 P +1 F +-0.47 ( is true if and only if) 364.24 623.67 P +3 F +-0.47 (x) 453.49 623.67 P +1 F +-0.47 ( and) 458.38 623.67 P +3 F +-0.47 (y) 478.81 623.67 P +1 F +-0.47 ( are the same) 483.7 623.67 P +(object.) 99 610.67 T +3 F +(x) 131.38 610.67 T +2 F +(is not) 139.02 610.67 T +3 F +(y) 181.37 610.67 T +1 F +( yields the inverse truth value.) 186.25 610.67 T +0 14 Q +(5.10) 99 583.67 T +(Boolean operations) 135 583.67 T +1 11 Q +(Boolean operations have the lowest priority of all Python operations:) 99 558.67 T +2 10 Q +(expression: or_test | lambda_form) 99 540.33 T +(or_test: and_test | or_test "or" and_test) 99 528.33 T +(and_test: not_test | and_test "and" not_test) 99 516.33 T +(not_test: comparison | "not" not_test) 99 504.33 T +(lambda_form:) 99 492.33 T +("lambda" [parameter_list]: expression) 171 492.33 T +1 11 Q +-0.23 (In the context of Boolean operations, and also when expressions are used by control flow statements,) 99 467.67 P +0.41 0.17 (the following values are interpreted as false:) 99 454.67 B +2 F +0.99 0.17 (None) 307.52 454.67 B +1 F +0.41 0.17 (, numeric zero of all types, empty sequences) 334.6 454.67 B +-0.32 (\050strings, tuples and lists\051, and empty mappings \050dictionaries\051. All other values are interpreted as true.) 99 441.67 P +(The operator) 99 416.67 T +2 F +(not) 158.26 416.67 T +1 F +( yields 1 if its argument is false, 0 otherwise.) 178.06 416.67 T +0.25 (The expression) 99 391.67 P +3 F +0.25 (x) 169.16 391.67 P +2 F +0.61 (and) 177.05 391.67 P +3 F +0.25 (y) 199.85 391.67 P +1 F +0.25 ( first evaluates) 204.73 391.67 P +3 F +0.25 (x) 272.4 391.67 P +1 F +0.25 (; if) 277.28 391.67 P +3 F +0.25 (x) 293.07 391.67 P +1 F +0.25 ( is false, its value is returned; otherwise,) 297.95 391.67 P +3 F +0.25 (y) 479.62 391.67 P +1 F +0.25 ( is evaluated) 484.5 391.67 P +(and the resulting value is returned.) 99 378.67 T +-0.18 (The expression) 99 353.67 P +3 F +-0.18 (x) 168.3 353.67 P +2 F +-0.43 (or) 175.75 353.67 P +3 F +-0.18 (y) 191.52 353.67 P +1 F +-0.18 ( first evaluates) 196.41 353.67 P +3 F +-0.18 (x) 262.78 353.67 P +1 F +-0.18 (; if) 267.66 353.67 P +3 F +-0.18 (x) 282.58 353.67 P +1 F +-0.18 ( is true, its value is returned; otherwise,) 287.47 353.67 P +3 F +-0.18 (y) 462.02 353.67 P +1 F +-0.18 ( is evaluated and) 466.91 353.67 P +(the resulting value is returned.) 99 340.67 T +0.04 (\050Note that neither) 99 315.67 P +2 F +0.09 (and) 179.46 315.67 P +1 F +0.04 ( nor) 199.26 315.67 P +2 F +0.09 (or) 219.5 315.67 P +1 F +0.04 ( restrict the value and type they return to 0 and 1, but rather return the) 232.7 315.67 P +-0.34 (last evaluated argument. This is sometimes useful, e.g. if) 99 302.67 P +2 F +-0.82 (s) 348.61 302.67 P +1 F +-0.34 ( is a string that should be replaced by a de-) 355.21 302.67 P +-0.08 (fault value if it is empty, the expression) 99 289.67 P +2 F +-0.19 (s or \325foo\325) 275.27 289.67 P +1 F +-0.08 ( yields the desired value. Because) 340.89 289.67 P +2 F +-0.19 (not) 491.64 289.67 P +1 F +-0.08 ( has to) 511.44 289.67 P +0.36 (invent a value anyway, it does not bother to return a value of the same type as its argument, so e.g.) 99 276.67 P +2 F +(not \325foo\325) 99 263.67 T +1 F +( yields) 158.4 263.67 T +2 F +(0) 190.18 263.67 T +1 F +(, not) 196.78 263.67 T +2 F +(\325\325) 219.09 263.67 T +1 F +(.\051) 232.29 263.67 T +0.41 0.12 (Lambda forms \050lambda expressions\051 have the same syntactic position as expressions. They are a) 99 238.67 B +0.41 0.03 (shorthand to create anonymous functions; the expression) 99 225.67 B +2 F +0.99 0.03 (lambda) 356.08 225.67 B +1 F +0.41 0.03 ( arguments) 395.84 225.67 B +2 F +0.99 0.03 (:) 445.1 225.67 B +1 F +0.41 0.03 ( expression yields a) 451.73 225.67 B +(function object that behaves virtually identical to one defined with) 99 212.67 T +2 10 Q +(def name \050arguments\051:) 99 194.33 T +( return expression) 99 182.33 T +0 0 0 1 0 0 0 K +99 128 540 143 C +0 0 0 1 0 0 0 K +108 141 252 141 2 L +0.5 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 0 1 0 0 0 K +0 0 612 792 C +0 0 0 1 0 0 0 K +1 11 Q +0 X +0 0 0 1 0 0 0 K +(1.) 108 120.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.22 (This is expensive since it requires sorting the keys first, but about the only sensible defini-) 121.5 120.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.7 (tion. An earlier version of Python compared dictionaries by identity only, but this caused) 121.46 107.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.41 (surprises because people expected to be able to test a dictionary for emptiness by comparing) 121.46 94.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(it to) 121.46 81.67 T +2 F +({}) 141.64 81.67 T +1 F +(.) 154.84 81.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(1.) 108 68.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The latter restriction is sometimes a nuisance.) 121.5 68.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "35" 41 +%%Page: "36" 42 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(36) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.41 0 (See \322Function definitions\323 on page) 76.5 712.67 B +0.41 0 (48 for the syntax of parameter lists. Note that functions created) 235.56 712.67 B +(with lambda forms cannot contain statements.) 76.5 699.67 T +0 14 Q +(5.11) 76.5 672.67 T +(Expression lists) 112.5 672.67 T +2 10 Q +(expression_list: expression \050"," expression\051* [","]) 76.5 648.33 T +1 11 Q +-0.26 (An expression list containing at least one comma yields a tuple. The length of the tuple is the number) 76.5 623.67 P +(of expressions in the list. The expressions are evaluated from left to right.) 76.5 610.67 T +-0.04 (The trailing comma is required only to create a single tuple \050a.k.a. a) 76.5 585.67 P +3 F +-0.04 (single) 376.57 585.67 P +1 F +-0.04 (\051; it is optional in all other) 402.85 585.67 P +-0.28 (cases. A single expression without a trailing comma doesn\325t create a tuple, but rather yields the value) 76.5 572.67 P +(of that expression. \050To create an empty tuple, use an empty pair of parentheses:) 76.5 559.67 T +2 F +(\050\051) 428.42 559.67 T +1 F +(.\051) 441.62 559.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "36" 42 +%%Page: "37" 43 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(37) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Expressions) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(5.12) 99 710.67 T +(Summary) 135 710.67 T +1 11 Q +0.37 (The following table summarizes the operator precedences in Python, from lowest precedence \050least) 99 685.67 P +-0.23 (binding\051 to highest precedence \050most binding\051. Operators in the same box have the same precedence.) 99 672.67 P +0.64 (Unless the syntax is explicitly given, operators are binary. Operators in the same box group left to) 99 659.67 P +(right \050except for comparisons, which chain from left to right \321 see above\051.) 99 646.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 12 Q +(T) 208.14 623 T +(able 4: Operator Pr) 215.04 623 T +(ecedence) 315.8 623 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 11 Q +(or) 185.77 599.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Boolean OR) 350.65 599.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(and) 182.48 578.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Boolean AND) 346.38 578.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(not) 175.88 557.67 T +6 F +(x) 202.27 557.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Boolean NO) 347.21 557.67 T +(T) 402.07 557.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(in, not in) 159.38 536.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(is, is not) 159.38 523.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(<, <=, >, >=, <>, !=, =) 116.47 510.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Membership tests) 339.04 536.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Identity tests) 349.74 523.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Comparisons) 348.97 510.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(|) 189.07 489.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Bitwise OR) 352.18 489.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(^) 189.07 468.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Bitwise XOR) 348.21 468.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(&) 189.07 447.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Bitwise AND) 347.9 447.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(<<, >>) 172.57 426.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Shifts) 365.16 426.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(+, -) 179.18 405.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Addition and subtraction) 323.31 405.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(*, /, %) 169.27 384.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Multiplication, di) 301.14 384.67 T +(vision, remainder) 377.87 384.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 F +(+x, -x) 179.2 363.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(~x) 186.96 350.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(Positi) 339.44 363.67 T +(v) 364.23 363.67 T +(e, ne) 369.57 363.67 T +(g) 390.17 363.67 T +(ati) 395.62 363.67 T +(v) 406.34 363.67 T +(e) 411.68 363.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Bitwise not) 352.79 350.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 F +(x.attrib) 169.72 329.67 T +(ute) 201.59 329.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(x) 174.47 316.67 T +1 F +([) 179.35 316.67 T +3 F +(inde) 183.01 316.67 T +(x) 201.74 316.67 T +1 F +(]) 206.62 316.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 F +(x) 160.83 303.67 T +1 F +([) 165.72 303.67 T +3 F +(inde) 169.38 303.67 T +(x:inde) 188.1 303.67 T +(x) 215.37 303.67 T +1 F +(]) 220.25 303.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +3 F +(f) 157.29 290.67 T +1 F +(\050) 160.35 290.67 T +3 F +(ar) 164.01 290.67 T +(guments) 173.38 290.67 T +1 F +(, ...\051) 210.05 290.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Attrib) 336.42 329.67 T +(ute reference) 362.48 329.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Subscription) 350.19 316.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Slicing) 362.41 303.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Function call) 349.12 290.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\050) 155.11 269.67 T +3 F +(e) 158.78 269.67 T +(xpr) 163.44 269.67 T +(essions) 177.7 269.67 T +1 F +( . . .\051) 209.47 269.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +([) 155.11 256.67 T +3 F +(e) 158.78 256.67 T +(xpr) 163.44 256.67 T +(essions) 177.7 256.67 T +1 F +( . . .]) 209.47 256.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +({) 154.78 243.67 T +3 F +(k) 160.06 243.67 T +(e) 164.84 243.67 T +(y:datum) 169.39 243.67 T +1 F +(, . . .}) 205.44 243.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(`) 165.5 230.67 T +3 F +(e) 169.16 230.67 T +(xpr) 173.83 230.67 T +(ession) 188.09 230.67 T +1 F +(`) 215.59 230.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Binding or tuple display) 324.68 269.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(List display) 352.18 256.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Dictionary display) 337.21 243.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(String con) 339.35 230.67 T +(v) 384.43 230.67 T +(ersion) 389.77 230.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +99 612.75 99 223.25 2 L +V +0.5 H +0 Z +N +285.75 613.25 285.75 222.75 2 L +V +N +470.25 612.75 470.25 223.25 2 L +V +N +98.75 613 470.5 613 2 L +V +N +98.75 592 470.5 592 2 L +V +N +98.75 571 470.5 571 2 L +V +N +98.75 550 470.5 550 2 L +V +N +98.75 503 470.5 503 2 L +V +N +98.75 482 470.5 482 2 L +V +N +98.75 461 470.5 461 2 L +V +N +98.75 440 470.5 440 2 L +V +N +98.75 419 470.5 419 2 L +V +N +98.75 398 470.5 398 2 L +V +N +98.75 377 470.5 377 2 L +V +N +98.75 343 470.5 343 2 L +V +N +98.75 283 470.5 283 2 L +V +N +98.75 223 470.5 223 2 L +V +N +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "37" 43 +%%Page: "38" 44 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(38) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "38" 44 +%%Page: "39" 45 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(39) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Simple statements) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 16 Q +(C) 99 709.33 T +0 12.8 Q +(HAPTER) 110.55 709.33 T +0 16 Q +(6:) 167.62 709.33 T +(S) 198 709.33 T +0 12.8 Q +(IMPLE) 208.67 709.33 T +(STATEMENTS) 252.24 709.33 T +1 11 Q +-0.43 (Simple statements are comprised within a single logical line. Several simple statements may occur on) 99 672.67 P +(a single line separated by semicolons. The syntax for simple statements is:) 99 659.67 T +2 10 Q +(simple_stmt: expression_stmt) 99 641.33 T +( | assignment_stmt) 99 629.33 T +( | pass_stmt) 99 617.33 T +( | del_stmt) 99 605.33 T +( | print_stmt) 99 593.33 T +( | return_stmt) 99 581.33 T +( | raise_stmt) 99 569.33 T +( | break_stmt) 99 557.33 T +( | continue_stmt) 99 545.33 T +( | import_stmt) 99 533.33 T +( | global_stmt) 99 521.33 T +( | exec_stmt) 99 509.33 T +0 14 Q +(6.1) 99 482.67 T +(Expression statements) 135 482.67 T +1 11 Q +0.58 (Expression statements are used \050mostly interactively\051 to compute and write a value, or \050usually\051 to) 99 457.67 P +-0.01 (call a procedure \050a function that returns no meaningful result; in Python, procedures return the value) 99 444.67 P +2 F +0.9 (None) 99 431.67 P +1 F +0.38 (\051. Other uses of expression statements are allowed and occasionally useful. The syntax for an) 125.4 431.67 P +(expression statement is:) 99 418.67 T +2 10 Q +(expression_stmt: expression_list) 99 400.33 T +1 11 Q +-0.16 (An expression statement evaluates the expression list \050which may be a single expression\051. In interac-) 99 375.67 P +-0.35 (tive mode, if the value is not) 99 362.67 P +2 F +-0.84 (None) 224.89 362.67 P +1 F +-0.35 (, it is converted to a string using the built-in) 251.29 362.67 P +2 F +-0.84 (repr\050\051) 443.05 362.67 P +1 F +-0.35 ( function and) 482.65 362.67 P +0.28 (the resulting string is written to standard output \050see \322The print statement\323 on page) 99 349.67 P +0.28 (41\051 on a line by) 469.84 349.67 P +-0.24 (itself. \050Expression statements yielding) 99 336.67 P +2 F +-0.58 (None) 268.83 336.67 P +1 F +-0.24 ( are not written, so that procedure calls do not cause any) 295.23 336.67 P +(output.\051) 99 323.67 T +0 14 Q +(6.2) 99 296.67 T +(Assignment statements) 135 296.67 T +1 11 Q +-0.09 (Assignment statements are used to \050re\051bind names to values and to modify attributes or items of mu-) 99 271.67 P +(table objects:) 99 258.67 T +2 10 Q +(assignment_stmt: \050target_list "="\051+ expression_list) 99 240.33 T +(target_list: target \050"," target\051* [","]) 99 228.33 T +(target: identifier | "\050" target_list "\051" | "[" target_list "]") 99 216.33 T +( | attributeref | subscription | slicing) 99 204.33 T +1 11 Q +(\050See \322Primaries\323 on page) 99 179.67 T +(29 for the syntax definitions for the last three symbols.\051) 213.25 179.67 T +-0.14 (An assignment statement evaluates the expression list \050remember that this can be a single expression) 99 154.67 P +0.31 (or a comma-separated list, the latter yielding a tuple\051 and assigns the single resulting object to each) 99 141.67 P +(of the target lists, from left to right.) 99 128.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "39" 45 +%%Page: "40" 46 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(40) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.07 (Assignment is defined recursively depending on the form of the target \050list\051. When a target is part of a mu-) 72 712.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.18 (table object \050an attribute reference, subscription or slicing\051, the mutable object must ultimately perform the) 72 699.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.27 (assignment and decide about its validity, and may raise an exception if the assignment is unacceptable. The) 72 686.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.27 (rules observed by various types and the exceptions raised are given with the definition of the object types) 72 673.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\050See \322The standard type hierarchy\323 on page) 72 660.67 T +(12.\051) 267.18 660.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Assignment of an object to a target list is recursively defined as follows.) 72 635.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 616.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(If the target list is a single target: the object is assigned to that target.) 86.4 616.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 597.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.14 (If the target list is a comma-separated list of targets: the object must be a tuple with the same number of) 86.4 597.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.62 (items as there are targets in the target list, and the items are assigned, from left to right, to the correspond-) 86.4 584.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(ing targets.) 86.4 571.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Assignment of an object to a single target is recursively defined as follows.) 72 546.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 527.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(If the target is an identifier \050name\051:) 86.4 527.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 100.8 508.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.19 (If the name does not occur in a) 115.2 508.67 P +2 F +0.44 (global) 255.37 508.67 P +1 F +0.19 ( statement in the current code block: the name is bound) 294.96 508.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(to the object in the current local name space.) 115.2 495.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 100.8 476.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Otherwise: the name is bound to the object in the current global name space.) 115.2 476.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.58 (The name is rebound if it was already bound. This can cause the reference count for the object previously) 86.4 459.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(bound to the name to reach zero, causing the object to be deallocated and its) 86.4 446.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 427.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.16 (If the target is a target list enclosed in parentheses: the object is assigned to that target list as described) 86.4 427.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(above.) 86.4 414.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 395.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.24 (If the target is a target list enclosed in square brackets: the object must be a list with the same number of) 86.4 395.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.38 (items as the target list contains targets, and its items are assigned, from left to right, to the corresponding) 86.4 382.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(targets.) 86.4 369.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 350.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.56 (If the target is an attribute reference: The primary expression in the reference is evaluated. It should yield) 86.4 350.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.7 (an object with assignable attributes; if this is not the case,) 86.4 337.67 P +2 F +1.69 (TypeError) 350.19 337.67 P +1 F +0.7 ( is raised. That object is then) 409.59 337.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.34 (asked to assign the assigned object to the given attribute; if it cannot perform the assignment, it raises an) 86.4 324.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(exception \050usually but not necessarily) 86.4 311.67 T +2 F +(AttributeError) 255.35 311.67 T +1 F +(\051.) 347.75 311.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 292.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.31 (If the target is a subscription: The primary expression in the reference is evaluated. It should yield either) 86.4 292.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.25 (a mutable sequence \050list\051 object or a mapping \050dictionary\051 object. Next, the subscript expression is eval-) 86.4 279.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(uated.) 86.4 266.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.11 (If the primary is a mutable sequence object \050a list\051, the subscript must yield a plain integer. If it is nega-) 86.4 249.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.26 (tive, the sequence\325s length is added to it. The resulting value must be a nonnegative integer less than the) 86.4 236.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.01 (sequence\325s length, and the sequence is asked to assign the assigned object to its item with that index. If) 86.4 223.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.39 (the index is out of range,) 86.4 210.67 P +2 F +-0.93 (IndexError) 196.2 210.67 P +1 F +-0.39 ( is raised \050assignment to a subscripted sequence cannot add new) 262.2 210.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(items to a list\051.) 86.4 197.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.28 (If the primary is a mapping \050dictionary\051 object, the subscript must have a type compatible with the map-) 86.4 180.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.27 (ping\325s key type, and the mapping is then asked to create a key/datum pair which maps the subscript to) 86.4 167.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.15 (the assigned object. This can either replace an existing key/value pair with the same key value, or insert) 86.4 154.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(a new key/value pair \050if no key with the same value existed\051.) 86.4 141.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 122.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.06 (If the target is a slicing: The primary expression in the reference is evaluated. It should yield a mutable) 86.4 122.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.31 (sequence object \050e.g. a list\051. The assigned object should be a sequence object of the same type. Next, the) 86.4 109.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.04 (lower and upper bound expressions are evaluated, insofar they are present; defaults are zero and the se-) 86.4 96.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1.16 (quence\325s length. The bounds should evaluate to \050small\051 integers. If either bound is negative, the se-) 86.4 83.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "40" 46 +%%Page: "41" 47 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(41) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Simple statements) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +1.71 (quence\325s length is added to it. The resulting bounds are clipped to lie between zero and the) 113.4 712.67 P +0.95 (sequence\325s length, inclusive. Finally, the sequence object is asked to replace the slice with the) 113.4 699.67 P +-0.15 (items of the assigned sequence. The length of the slice may be different from the length of the as-) 113.4 686.67 P +(signed sequence, thus changing the length of the target sequence, if the object allows it.) 113.4 673.67 T +0.15 (\050In the current implementation, the syntax for targets is taken to be the same as for expressions, and) 99 648.67 P +(invalid syntax is rejected during the code generation phase, causing less detailed error messages.\051) 99 635.67 T +0.14 (WARNING: Although the definition of assignment implies that overlaps between the left-hand side) 99 610.67 P +-0.28 (and the right-hand side are \324safe\325 \050e.g. \324\324) 99 597.67 P +2 F +-0.68 (a,) 274.49 597.67 P +-0.68 (b) 290.16 597.67 P +-0.68 (=) 299.23 597.67 P +-0.68 (b,) 308.3 597.67 P +-0.68 (a) 323.96 597.67 P +1 F +-0.28 (\325\325 swaps two variables\051, overlaps) 330.56 597.67 P +3 F +-0.28 (within) 477.01 597.67 P +1 F +-0.28 ( the col-) 504.52 597.67 P +-0.19 (lection of assigned-to variables are not safe! For instance, the following program prints \324\324) 99 584.67 P +2 F +-0.46 ([0,) 490.02 584.67 P +-0.46 (2]) 516.42 584.67 P +1 F +-0.19 (\325\325:) 529.62 584.67 P +2 10 Q +(x = [0, 1]) 99 566.33 T +(i = 0) 99 554.33 T +(i, x[i] = 1, 2) 99 542.33 T +(print x) 99 530.33 T +0 14 Q +(6.3) 99 503.67 T +(The) 135 503.67 T +2 F +(pass) 163.78 503.67 T +0 F +( statement) 197.38 503.67 T +2 10 Q +(pass_stmt: "pass") 99 479.33 T +2 11 Q +0.21 (pass) 99 454.67 P +1 F +0.09 ( is a null operation \321 when it is executed, nothing happens. It is useful as a placeholder when) 125.4 454.67 P +(a statement is required syntactically, but no code needs to be executed, for example:) 99 441.67 T +2 10 Q +(def f\050arg\051: pass # a function that does nothing \050yet\051) 99 423.33 T +(class C: pass # a class with no methods \050yet\051) 99 411.33 T +0 14 Q +(6.4) 99 384.67 T +(The) 135 384.67 T +2 F +(del) 163.78 384.67 T +0 F +( statement) 188.98 384.67 T +2 10 Q +(del_stmt: "del" target_list) 99 360.33 T +1 11 Q +0.19 (Deletion is recursively defined very similar to the way assignment is defined. Rather that spelling it) 99 335.67 P +(out in full details, here are some hints.) 99 322.67 T +(Deletion of a target list recursively deletes each target, from left to right.) 99 297.67 T +0.41 0.09 (Deletion of a name removes the binding of that name \050which must exist\051 from the local or global) 99 272.67 B +-0 (name space, depending on whether the name occurs in a) 99 259.67 P +2 F +-0 (global) 349.18 259.67 P +1 F +-0 ( statement in the same code block.) 388.78 259.67 P +0.32 (Deletion of attribute references, subscriptions and slicings is passed to the primary object involved;) 99 234.67 P +-0.54 (deletion of a slicing is in general equivalent to assignment of an empty slice of the right type \050but even) 99 221.67 P +(this is determined by the sliced object\051.) 99 208.67 T +0 14 Q +(6.5) 99 181.67 T +(The) 135 181.67 T +2 F +(print) 163.78 181.67 T +0 F +( statement) 205.78 181.67 T +2 10 Q +(print_stmt: "print" [ expression \050"," expression\051* [","] ]) 99 157.33 T +2 11 Q +0.81 (print) 99 132.67 P +1 F +0.34 ( evaluates each expression in turn and writes the resulting object to standard output \050see be-) 132 132.67 P +-0.02 (low\051. If an object is not a string, it is first converted to a string using the rules for string conversions.) 99 119.67 P +0.32 (The \050resulting or original\051 string is then written. A space is written before each object is \050converted) 99 106.67 P +0.23 (and\051 written, unless the output system believes it is positioned at the beginning of a line. This is the) 99 93.67 P +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "41" 47 +%%Page: "42" 48 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(42) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.27 (case: \0501\051 when no characters have yet been written to standard output; or \0502\051 when the last character written) 72 712.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.02 (to standard output is) 72 699.67 B +2 F +0.99 0.02 (\134n) 166.45 699.67 B +1 F +0.41 0.02 (; or \0503\051 when the last write operation on standard output was not a) 179.7 699.67 B +2 F +0.99 0.02 (print) 479.77 699.67 B +1 F +0.41 0.02 ( state-) 512.89 699.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(ment. \050In some cases it may be functional to write an empty string to standard output for this reason.\051) 72 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.36 (A) 72 661.67 P +2 F +0.87 ("\134n") 83.05 661.67 P +1 F +0.36 ( character is written at the end, unless the) 109.45 661.67 P +2 F +0.87 (print) 297.21 661.67 P +1 F +0.36 ( statement ends with a comma. This is the only) 330.21 661.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.54 (action if the statement contains just the keyword) 72 648.67 P +2 F +-1.3 (print) 283.36 648.67 P +1 F +-0.54 (. Standard output is defined as the file object named) 316.36 648.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +-0.69 (stdout) 72 635.67 P +1 F +-0.29 (in the built-in module) 117.5 635.67 P +2 F +-0.69 (sys) 214.74 635.67 P +1 F +-0.29 (. If no such object exists, or if it is not a writable file, a) 234.54 635.67 P +2 F +-0.69 (RuntimeEr-) 474 635.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.99 0 (ror) 72 622.67 B +1 F +0.41 0 ( exception is raised. \050The original implementation attempts to write to the system\325s original standard) 91.81 622.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(output instead, but this is not safe, and should be fixed.\051) 72 609.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(6.6) 72 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 108 582.67 T +2 F +(return) 136.78 582.67 T +0 F +( statement) 187.18 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(return_stmt: "return" [expression_list]) 72 558.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 11 Q +(return) 72 533.67 T +1 F +( may only occur syntactically nested in a function definition, not within a nested class definition.) 111.6 533.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(If an expression list is present, it is evaluated, else) 72 508.67 T +2 F +(None) 295.02 508.67 T +1 F +(is substituted.) 328.02 508.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +(return) 72 483.67 T +1 F +( leaves the current function call with the expression list \050or) 111.6 483.67 T +2 F +(None) 372.81 483.67 T +1 F +(\051 as return value.) 399.21 483.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.36 (When) 72 458.67 P +2 F +0.87 (return) 101.38 458.67 P +1 F +0.36 ( passes control out of a) 140.98 458.67 P +2 F +0.87 (try) 247.04 458.67 P +1 F +0.36 ( statement with a) 266.84 458.67 P +2 F +0.87 (finally) 345.9 458.67 P +1 F +0.36 ( clause, that finally clause is exe-) 392.1 458.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(cuted before really leaving the function.) 72 445.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(6.7) 72 418.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 108 418.67 T +2 F +(raise) 136.78 418.67 T +0 F +( statement) 178.78 418.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(raise_stmt: "raise" expression ["," expression ["," expression]]) 72 394.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 11 Q +-0.98 (raise) 72 369.67 P +1 F +-0.41 ( evaluates its first expression, which must yield a string, class, or instance object. If there is a second) 105 369.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.02 (expression, this is evaluated, else) 72 356.67 P +2 F +0.06 (None) 220.91 356.67 P +1 F +0.02 ( is substituted. If the first expression is a class object, then the sec-) 247.31 356.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.54 (ond expression must be an instance of that class or one of its derivatives. If the first expression is an instance) 72 343.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(object, the second expression must be) 72 330.67 T +2 F +(None) 240.95 330.67 T +1 F +(.) 267.35 330.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.45 (If the first object is a class or string, it then raises the exception identified by the first object, with the second) 72 305.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.47 (one \050or) 72 292.67 P +2 F +-1.12 (None) 105.28 292.67 P +1 F +-0.47 (\051 as its parameter. If the first object is an instance, it raises the exception identified by the class) 131.68 292.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.08 (of the object, with the instance as its parameter \050and there should be no second object, or the second object) 72 279.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(should be) 72 266.67 T +2 F +(None) 117.22 266.67 T +1 F +(\051.) 143.62 266.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.34 (If a third object is present, and it is not) 72 241.67 P +2 F +0.82 (None) 248.05 241.67 P +1 F +0.34 (, it should be a traceback object \050see page) 274.45 241.67 P +0.34 (17 traceback ob-) 466.01 241.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.14 (jects\051, and it is substituted instead of the current location as the place where the exception occurred. This is) 72 228.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(useful to re-raise an exception transparently in an except clause.) 72 215.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(6.8) 72 188.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 108 188.67 T +2 F +(break) 136.78 188.67 T +0 F +( statement) 178.78 188.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(break_stmt: "break") 72 164.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 11 Q +-0.27 (break) 72 139.67 P +1 F +-0.11 ( may only occur syntactically nested in a) 105 139.67 P +2 F +-0.27 (for) 286.17 139.67 P +1 F +-0.11 (or) 312.3 139.67 P +2 F +-0.27 (while) 324.1 139.67 P +1 F +-0.11 ( loop, but not nested in a function or class) 357.1 139.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(definition within that loop.) 72 126.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(It terminates the nearest enclosing loop, skipping the optional) 72 101.67 T +2 F +(else) 345.76 101.67 T +1 F +( clause if the loop has one.) 372.16 101.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(If a) 72 76.67 T +2 F +(for) 89.71 76.67 T +1 F +( loop is terminated by) 109.51 76.67 T +2 F +(break) 208.2 76.67 T +1 F +(, the loop control target keeps its current value.) 241.2 76.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "42" 48 +%%Page: "43" 49 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(43) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Simple statements) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.55 (When) 99 712.67 P +2 F +-1.32 (break) 127.47 712.67 P +1 F +-0.55 ( passes control out of a) 160.47 712.67 P +2 F +-1.32 (try) 261.05 712.67 P +1 F +-0.55 ( statement with a) 280.85 712.67 P +2 F +-1.32 (finally) 356.26 712.67 P +1 F +-0.55 ( clause, that finally clause is ex-) 402.46 712.67 P +(ecuted before really leaving the loop.) 99 699.67 T +0 14 Q +(6.9) 99 672.67 T +(The) 135 672.67 T +2 F +(continue) 163.78 672.67 T +0 F +( statement) 230.98 672.67 T +2 10 Q +(continue_stmt: "continue") 99 648.33 T +2 11 Q +-1.3 (continue) 99 623.67 P +1 F +-0.54 ( may only occur syntactically nested in a) 151.8 623.67 P +2 F +-1.3 (for) 329.54 623.67 P +1 F +-0.54 ( or) 349.34 623.67 P +2 F +-1.3 (while) 362.92 623.67 P +1 F +-0.54 ( loop, but not nested in a function) 395.92 623.67 P +0.04 (or class definition or) 99 610.67 P +2 F +0.1 (try) 192.65 610.67 P +1 F +0.04 ( statement within that loop.) 212.45 610.67 P +1 8.8 Q +0.03 (1) 332.7 615.07 P +1 11 Q +0.04 ( It continues with the next cycle of the nearest) 337.1 610.67 P +(enclosing loop.) 99 597.67 T +0 14 Q +(6.10) 99 570.67 T +(The) 135 570.67 T +2 F +(import) 163.78 570.67 T +0 F +( statement) 214.18 570.67 T +2 10 Q +(import_stmt: "import" identifier \050"," identifier\051*) 99 546.33 T +( | "from" identifier "import" identifier \050"," identifier\051*) 99 534.33 T +( | "from" identifier "import" "*") 99 522.33 T +1 11 Q +-0.55 (Import statements are executed in two steps: \0501\051 find a module, and initialize it if necessary; \0502\051 define) 99 497.67 P +-0.53 (a name or names in the local name space \050of the scope where the) 99 484.67 P +2 F +-1.26 (import) 379.39 484.67 P +1 F +-0.53 ( statement occurs\051. The first) 418.99 484.67 P +-0.12 (form \050without) 99 471.67 P +2 F +-0.29 (from) 162.92 471.67 P +1 F +-0.12 (\051 repeats these steps for each identifier in the list, the) 189.32 471.67 P +2 F +-0.29 (from) 422.62 471.67 P +1 F +-0.12 ( form performs them) 449.02 471.67 P +(once, with the first identifier specifying the module name.) 99 458.67 T +0.38 (The system maintains a table of modules that have been initialized, indexed by module name. \050The) 99 433.67 P +0.41 0.1 (current implementation makes this table accessible as) 99 420.67 B +2 F +0.99 0.1 (sys.modules) 346.17 420.67 B +1 F +0.41 0.1 (.\051 When a module name is) 419.93 420.67 B +0.41 0.03 (found in this table, step \0501\051 is finished. If not, a search for a module definition is started. This first) 99 407.67 B +-0.42 (looks for a built-in module definition, and if no built-in module if the given name is found, it searches) 99 394.67 P +0.12 (a user-specified list of directories for a file whose name is the module name with extension) 99 381.67 P +2 F +0.3 (".py") 504.25 381.67 P +1 F +0.12 (.) 537.25 381.67 P +0.41 0.05 (\050The current implementation uses the list of strings) 99 368.67 B +2 F +0.99 0.05 (sys.path) 332.42 368.67 B +1 F +0.41 0.05 ( as the search path; it is initialized) 385.64 368.67 B +(from the shell environment variable) 99 355.67 T +2 F +($PYTHONPATH) 259.39 355.67 T +1 F +(, with an installation-dependent default.\051) 331.99 355.67 T +0.12 (If a built-in module is found, its built-in initialization code is executed and step \0501\051 is finished. If no) 99 330.67 P +-0.42 (matching file is found,) 99 317.67 P +2 F +-1 (ImportError) 199.69 317.67 P +1 F +-0.42 ( is raised. If a file is found, it is parsed, yielding an executable) 272.29 317.67 P +0.41 0.01 (code block. If a syntax error occurs,) 99 304.67 B +2 F +0.99 0.01 (SyntaxError) 263.44 304.67 B +1 F +0.41 0.01 ( is raised. Otherwise, an empty module of the) 336.21 304.67 B +-0.52 (given name is created and inserted in the module table, and then the code block is executed in the con-) 99 291.67 P +(text of this module. Exceptions during this execution terminate step \0501\051.) 99 278.67 T +(When step \0501\051 finishes without raising an exception, step \0502\051 can begin.) 99 253.67 T +0.38 (The first form of) 99 228.67 P +2 F +0.9 (import) 176.87 228.67 P +1 F +0.38 ( statement binds the module name in the local name space to the module) 216.47 228.67 P +-0.05 (object, and then goes on to import the next identifier, if any. The) 99 215.67 P +2 F +-0.12 (from) 385.56 215.67 P +1 F +-0.05 ( form does not bind the mod-) 411.96 215.67 P +-0.36 (ule name: it goes through the list of identifiers, looks each one of them up in the module found in step) 99 202.67 P +-0.11 (\0501\051, and binds the name in the local name space to the object thus found. If a name is not found,) 99 189.67 P +2 F +-0.25 (Im-) 520.2 189.67 P +-0.68 (portError) 99 176.67 P +1 F +-0.28 ( is raised. If the list of identifiers is replaced by a star \050) 158.4 176.67 P +2 F +-0.68 (*) 394.86 176.67 P +1 F +-0.28 (\051, all names defined in the mod-) 401.46 176.67 P +(ule are bound, except those beginning with an underscore\050) 99 163.67 T +2 F +(_) 355.92 163.67 T +1 F +(\051.) 362.52 163.67 T +(Names bound by import statements may not occur in) 99 138.67 T +2 F +(global) 334.57 138.67 T +1 F +( statements in the same scope.) 374.17 138.67 T +(The) 99 113.67 T +2 F +(from) 118.86 113.67 T +1 F +( form with) 145.26 113.67 T +2 F +(*) 194.45 113.67 T +1 F +( may only occur in a module scope.) 201.05 113.67 T +0 0 0 1 0 0 0 K +99 76 540 91 C +0 0 0 1 0 0 0 K +108 89 252 89 2 L +0.5 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 0 1 0 0 0 K +0 0 612 792 C +0 0 0 1 0 0 0 K +1 11 Q +0 X +0 0 0 1 0 0 0 K +(1.) 108 68.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Except that it may currently occur within an) 121.5 68.67 T +2 F +(except) 318.25 68.67 T +1 F +( clause.) 357.85 68.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "43" 49 +%%Page: "44" 50 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(44) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.37 (\050The current implementation does not enforce the latter two restrictions, but programs should not abuse this) 72 712.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(freedom, as future implementations may enforce them or silently change the meaning of the program.\051) 72 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(6.11) 72 672.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 108 672.67 T +2 F +(global) 136.78 672.67 T +0 F +( statement) 187.18 672.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(global_stmt: "global" identifier \050"," identifier\051*) 72 648.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.25 (The) 72 623.67 P +2 F +-0.6 (global) 91.61 623.67 P +1 F +-0.25 ( statement is a declaration which holds for the entire current code block. It means that the list-) 131.21 623.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.19 (ed identifiers are to be interpreted as globals. While) 72 610.67 P +3 F +-0.19 (using) 300.64 610.67 P +1 F +-0.19 ( global names is automatic if they are not defined) 324.48 610.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(in the local scope,) 72 597.67 T +3 F +(assigning) 154.18 597.67 T +1 F +( to global names would be impossible without) 196.35 597.67 T +2 F +(global) 401.69 597.67 T +1 F +(.) 441.29 597.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.28 (Names listed in a) 72 572.67 P +2 F +0.68 (global) 151.95 572.67 P +1 F +0.28 ( statement must not be used in the same code block before that) 191.55 572.67 P +2 F +0.68 (global) 473.54 572.67 P +1 F +0.28 ( state-) 513.14 572.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(ment is executed.) 72 559.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.41 (Names listed in a) 72 534.67 P +2 F +-0.99 (global) 149.18 534.67 P +1 F +-0.41 ( statement must not be defined as formal parameters or in a) 188.78 534.67 P +2 F +-0.99 (for) 447.19 534.67 P +1 F +-0.41 ( loop control tar-) 466.99 534.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(get,) 72 521.67 T +2 F +(class) 90.94 521.67 T +1 F +(definition, function definition, or) 130.54 521.67 T +2 F +(import) 278.43 521.67 T +1 F +( statement.) 318.03 521.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.37 (\050The current implementation does not enforce the latter two restrictions, but programs should not abuse this) 72 496.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(freedom, as future implementations may enforce them or silently change the meaning of the program.\051) 72 483.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.03 (Note: the) 72 458.67 P +2 F +-0.06 (global) 115.33 458.67 P +1 F +-0.03 ( is a directive to the parser. Therefore, it applies only to code parsed at the same time as) 154.93 458.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.32 (the) 72 445.67 P +2 F +-0.77 (global) 87.87 445.67 P +1 F +-0.32 (statement. In particular, a) 133.29 445.67 P +2 F +-0.77 (global) 246.86 445.67 P +1 F +-0.32 ( statement contained in an) 286.46 445.67 P +2 F +-0.77 (exec) 402.47 445.67 P +1 F +-0.32 ( statement does not affect) 428.87 445.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.12 (the code block) 72 432.67 P +3 F +-0.12 (containing) 138.56 432.67 P +1 F +-0.12 (the) 188.25 432.67 P +2 F +-0.28 (exec) 204.33 432.67 P +1 F +-0.12 ( statement, and code contained in an) 230.73 432.67 P +2 F +-0.28 (exec) 392.45 432.67 P +1 F +-0.12 (statement is unaffected by) 425.17 432.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +-0.24 (global) 72 419.67 P +1 F +-0.1 ( statements in the code containing the) 111.6 419.67 P +2 F +-0.24 (exec) 279.25 419.67 P +1 F +-0.1 ( statement. The same applies to the) 305.65 419.67 P +2 F +-0.24 (eval\050\051) 462 419.67 P +1 F +-0.1 (,) 501.6 419.67 P +2 F +-0.24 (exec-) 507 419.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(file\050\051) 72 406.67 T +1 F +( and) 111.6 406.67 T +2 F +(compile\050\051) 132.98 406.67 T +1 F +( functions.) 192.38 406.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(6.12) 72 379.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 108 379.67 T +2 F +(exec) 136.78 379.67 T +0 F +( statement) 170.38 379.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(exec_stmt: "exec" expression ["in" expression ["," expression]]) 72 355.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.21 (This statement supports dynamic execution of Python code. The first expression should evaluate to either a) 72 330.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 (string, an open file object, or a code object. If it is a string, the string is parsed as a suite of Python state-) 72 317.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.22 (ments which is then executed \050unless a syntax error occurs\051. If it is an open file, the file is parsed until EOF) 72 304.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(and executed. If it is a code object, it is simply executed.) 72 291.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.14 (In all cases, if the optional parts are omitted, the code is executed in the current scope. If only the first ex-) 72 266.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.17 (pression after) 72 253.67 P +2 F +-0.42 (in) 133.97 253.67 P +1 F +-0.17 ( is specified, it should be a dictionary, which will be used for both the global and the local) 147.17 253.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.1 (variables. If two expressions are given, both must be dictionaries and they are used for the global and local) 72 240.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(variables, respectively.) 72 227.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.06 (Hints: dynamic evaluation of expressions is supported by the built-in function) 72 202.67 P +2 F +-0.15 (eval\050\051) 416.88 202.67 P +1 F +-0.06 (. The built-in func-) 456.48 202.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.15 (tions) 72 189.67 P +2 F +-0.36 (globals\050\051) 96 189.67 P +1 F +-0.15 ( and) 155.4 189.67 P +2 F +-0.36 (locals\050\051) 176.48 189.67 P +1 F +-0.15 ( return the current global and local dictionary, respectively, which may) 229.28 189.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(be useful to pass around for use by) 72 176.67 T +2 F +(exec) 227.8 176.67 T +1 F +(.) 254.2 176.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "44" 50 +%%Page: "45" 51 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(45) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Compound statements) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 16 Q +(C) 99 709.33 T +0 12.8 Q +(HAPTER) 110.55 709.33 T +0 16 Q +(7:) 167.62 709.33 T +(C) 198 709.33 T +0 12.8 Q +(OMPOUND) 209.55 709.33 T +(STATEMENTS) 280.84 709.33 T +1 11 Q +0.72 (Compound statements contain \050groups of\051 other statements; they affect or control the execution of) 99 672.67 P +0.31 (those other statements in some way. In general, compound statements span multiple lines, although) 99 659.67 P +(in simple incarnations a whole compound statement may be contained in one line.) 99 646.67 T +-0.48 (The) 99 627.67 P +2 F +-1.15 (if) 118.38 627.67 P +1 F +-0.48 (,) 131.58 627.67 P +2 F +-1.15 (while) 136.6 627.67 P +1 F +-0.48 ( and) 169.6 627.67 P +2 F +-1.15 (for) 190.02 627.67 P +1 F +-0.48 ( statements implement traditional control flow constructs.) 209.82 627.67 P +2 F +-1.15 (try) 463.12 627.67 P +1 F +-0.48 ( specifies ex-) 482.92 627.67 P +-0.62 (ception handlers and/or cleanup code for a group of statements. Function and class definitions are also) 99 614.67 P +(syntactically compound statements.) 99 601.67 T +0.45 (Compound statements consist of one or more \324clauses\325. A clause consists of a header and a \324suite\325.) 99 582.67 P +0.85 (The clause headers of a particular compound statement are all at the same indentation level. Each) 99 569.67 P +0.28 (clause header begins with a uniquely identifying keyword and ends with a colon. A suite is a group) 99 556.67 P +0.52 (of statements controlled by a clause. A suite can be one or more semicolon-separated simple state-) 99 543.67 P +-0.15 (ments on the same line as the header, following the header\325s colon, or it can be one or more indented) 99 530.67 P +-0.6 (statements on subsequent lines. Only the latter form of suite can contain nested compound statements;) 99 517.67 P +0.67 (the following is illegal, mostly because it wouldn\325t be clear to which) 99 504.67 P +2 F +1.6 (if) 411.59 504.67 P +1 F +0.67 ( clause a following) 424.79 504.67 P +2 F +1.6 (else) 513.6 504.67 P +1 F +(clause would belong:) 99 491.67 T +2 10 Q +(if test1: if test2: print x) 99 473.33 T +1 11 Q +0.14 (Also note that the semicolon binds tighter than the colon in this context, so that in the following ex-) 99 448.67 P +(ample, either all or none of the) 99 435.67 T +2 F +(print) 237.08 435.67 T +1 F +( statements are executed:) 270.08 435.67 T +2 10 Q +(if x < y < z: print x; print y; print z) 99 417.33 T +1 11 Q +(Summarizing:) 99 392.67 T +2 10 Q +(compound_stmt: if_stmt | while_stmt | for_stmt) 99 374.33 T +( | try_stmt | funcdef | classdef) 99 362.33 T +(suite: stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT) 99 350.33 T +(statement: stmt_list NEWLINE | compound_stmt) 99 338.33 T +(stmt_list: simple_stmt \050";" simple_stmt\051* [";"]) 99 326.33 T +1 11 Q +0.11 (Note that statements always end in a) 99 301.67 P +2 F +0.26 (NEWLINE) 263.19 301.67 P +1 F +0.11 ( possibly followed by a) 309.39 301.67 P +2 F +0.26 (DEDENT) 415.34 301.67 P +1 F +0.11 (. Also note that op-) 454.94 301.67 P +0.11 (tional continuation clauses always begin with a keyword that cannot start a statement, thus there are) 99 288.67 P +-0.05 (no ambiguities \050the \324dangling) 99 275.67 P +2 F +-0.12 (else) 231.41 275.67 P +1 F +-0.05 (\325 problem is solved in Python by requiring nested) 257.81 275.67 P +2 F +-0.12 (if) 477.66 275.67 P +1 F +-0.05 ( statements) 490.86 275.67 P +(to be indented\051.) 99 262.67 T +0.37 (The formatting of the grammar rules in the following sections places each clause on a separate line) 99 237.67 P +(for clarity.) 99 224.67 T +0 14 Q +(7.1) 99 197.67 T +(The) 135 197.67 T +2 F +(if) 163.78 197.67 T +0 F +( statement) 180.58 197.67 T +1 11 Q +(The) 99 172.67 T +2 F +(if) 118.86 172.67 T +1 F +( statement is used for conditional execution:) 132.05 172.67 T +2 10 Q +(if_stmt: "if" expression ":" suite) 99 154.33 T +( \050"elif" expression ":" suite\051*) 99 142.33 T +( ["else" ":" suite]) 99 130.33 T +1 11 Q +0.26 (It selects exactly one of the suites by evaluating the expressions one by one until one is found to be) 99 105.67 P +-0.1 (true \050see section \322Boolean operations\323 on page) 99 92.67 P +-0.1 (35 for the definition of true and false\051; then that suite) 307.63 92.67 P +0.41 0.05 (is executed \050and no other part of the) 99 79.67 B +2 F +0.99 0.05 (if) 265.64 79.67 B +1 F +0.41 0.05 ( statement is executed or evaluated\051. If all expressions are) 278.95 79.67 B +(false, the suite of the) 99 66.67 T +2 F +(else) 193.09 66.67 T +1 F +( clause, if present, is executed.) 219.49 66.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "45" 51 +%%Page: "46" 52 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(46) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(7.2) 72 710.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 108 710.67 T +7 F +(while) 136.78 710.67 T +0 F +( statement) 178.78 710.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(The) 72 685.67 T +2 F +(while) 91.86 685.67 T +1 F +( statement is used for repeated execution as long as an expression is true:) 124.86 685.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(while_stmt: "while" expression ":" suite) 72 667.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( ["else" ":" suite]) 72 655.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.37 (This repeatedly tests the expression and, if it is true, executes the first suite; if the expression is false \050which) 72 630.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.53 (may be the first time it is tested\051 the suite of the) 72 617.67 P +2 F +-1.28 (else) 278.27 617.67 P +1 F +-0.53 ( clause, if present, is executed and the loop terminates.) 304.67 617.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.07 (A) 72 592.67 B +2 F +0.99 0.07 (break) 83.25 592.67 B +1 F +0.41 0.07 ( statement executed in the first suite terminates the loop without executing the) 116.62 592.67 B +2 F +0.99 0.07 (else) 474.06 592.67 B +1 F +0.41 0.07 ( clause\325s) 500.75 592.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.02 (suite. A) 72 579.67 P +2 F +-0.04 (continue) 108.94 579.67 P +1 F +-0.02 ( statement executed in the first suite skips the rest of the suite and goes back to testing) 161.74 579.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(the expression.) 72 566.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(7.3) 72 539.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The) 108 539.67 T +7 F +(for) 136.78 539.67 T +0 F +( statement) 161.98 539.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(The) 72 514.67 T +2 F +(for) 91.86 514.67 T +1 F +( statement is used to iterate over the elements of a sequence \050string, tuple or list\051:) 111.65 514.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(for_stmt: "for" target_list "in" expression_list ":" suite) 72 496.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( ["else" ":" suite]) 72 484.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.29 (The expression list is evaluated once; it should yield a sequence. The suite is then executed once for each) 72 459.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.06 (item in the sequence, in the order of ascending indices. Each item in turn is assigned to the target list using) 72 446.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.16 (the standard rules for assignments, and then the suite is executed. When the items are exhausted \050which is) 72 433.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.42 (immediately when the sequence is empty\051, the suite in the) 72 420.67 P +2 F +-1 (else) 325.39 420.67 P +1 F +-0.42 ( clause, if present, is executed, and the loop) 351.79 420.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(terminates.) 72 407.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.07 (A) 72 382.67 B +2 F +0.99 0.07 (break) 83.25 382.67 B +1 F +0.41 0.07 ( statement executed in the first suite terminates the loop without executing the) 116.62 382.67 B +2 F +0.99 0.07 (else) 474.06 382.67 B +1 F +0.41 0.07 ( clause\325s) 500.75 382.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.34 (suite. A) 72 369.67 P +2 F +0.81 (continue) 109.65 369.67 P +1 F +0.34 ( statement executed in the first suite skips the rest of the suite and continues with the) 162.45 369.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(next item, or with the) 72 356.67 T +2 F +(else) 169.16 356.67 T +1 F +(clause if there was no next item.) 202.16 356.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(The suite may assign to the variable\050s\051 in the target list; this does not affect the next item assigned to it.) 72 331.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.39 (The target list is not deleted when the loop is finished, but if the sequence is empty, it will not have been) 72 306.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.23 (assigned to at all by the loop. Hint: the built-in function) 72 293.67 P +2 F +0.54 (range\050\051) 321.99 293.67 P +1 F +0.23 ( returns a sequence of integers suitable) 368.19 293.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.07 (to emulate the effect of Pascal\325s) 72 280.67 P +2 F +-0.17 (for i := a to b do) 215.15 280.67 P +1 F +-0.07 (; e.g.) 332.93 280.67 P +2 F +-0.17 (range\0503\051) 357.23 280.67 P +1 F +-0.07 ( returns the list) 410.03 280.67 P +2 F +-0.17 ([0, 1, 2]) 478.19 280.67 P +1 F +-0.07 (.) 537.25 280.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +4 F +-0.28 (Warning:) 72 255.67 P +1 F +-0.28 ( There is a subtlety when the sequence is being modified by the loop \050this can only occur for mu-) 117.84 255.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.2 (table sequences, i.e. lists\051. An internal counter is used to keep track of which item is used next, and this is) 72 242.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.05 (incremented on each iteration. When this counter has reached the length of the sequence the loop termi-) 72 229.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.08 (nates. This means that if the suite deletes the current \050or a previous\051 item from the sequence, the next item) 72 216.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.08 (will be skipped \050since it gets the index of the current item which has already been treated\051. Likewise, if the) 72 203.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.06 (suite inserts an item in the sequence before the current item, the current item will be treated again the next) 72 190.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.17 (time through the loop. This can lead to nasty bugs that can be avoided by making a temporary copy using a) 72 177.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(slice of the whole sequence, e.g.) 72 164.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(for x in a[:]:) 72 146.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( if x < 0: a.remove\050x\051) 72 134.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "46" 52 +%%Page: "47" 53 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(47) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Compound statements) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(7.4) 99 710.67 T +(The) 135 710.67 T +7 F +(try) 163.78 710.67 T +0 F +( statement) 188.98 710.67 T +1 11 Q +(The) 99 685.67 T +2 F +(try) 118.86 685.67 T +1 F +( statement specifies exception handlers and/or cleanup code for a group of statements:) 138.65 685.67 T +2 10 Q +(try_stmt: try_exc_stmt | try_fin_stmt) 99 667.33 T +(try_exc_stmt: "try" ":" suite) 99 655.33 T +( \050"except" [expression ["," target]] ":" suite\051+) 99 643.33 T +( ["else" ":" suite]) 99 631.33 T +(try_fin_stmt: "try" ":" suite) 99 619.33 T +( "finally" ":" suite) 99 607.33 T +1 11 Q +-0.16 (There are two forms of) 99 582.67 P +2 F +-0.38 (try) 202.36 582.67 P +1 F +-0.16 ( statement:) 222.16 582.67 P +2 F +-0.38 (try...except) 272.56 582.67 P +1 F +-0.16 ( and) 351.76 582.67 P +2 F +-0.38 (try...finally) 372.82 582.67 P +1 F +-0.16 (. These forms can-) 458.62 582.67 P +(not be mixed \050but they can be nested in each other\051.) 99 569.67 T +0.25 (The) 99 544.67 P +2 F +0.6 (try...except) 119.1 544.67 P +1 F +0.25 ( form specifies one or more exception handlers \050the) 198.3 544.67 P +2 F +0.6 (except) 429.95 544.67 P +1 F +0.25 ( clauses\051. When) 469.55 544.67 P +0.08 (no exception occurs in the) 99 531.67 P +2 F +0.19 (try) 217.62 531.67 P +1 F +0.08 ( clause, no exception handler is executed. When an exception occurs) 237.42 531.67 P +-0.02 (in the) 99 518.67 P +2 F +-0.05 (try) 126.46 518.67 P +1 F +-0.02 ( suite, a search for an exception handler is started. This inspects the except clauses in turn) 146.26 518.67 P +0.41 0 (until one is found that matches the exception. An expression-less except clause, if present, must be) 99 505.67 B +0.03 (last; it matches any exception. For an except clause with an expression, that expression is evaluated,) 99 492.67 P +0.41 0.01 (and the clause matches the exception if the resulting object is \322compatible\323 with the exception. An) 99 479.67 B +-0.33 (object is compatible with an exception if it is either the object that identifies the exception, or \050for ex-) 99 466.67 P +0.25 (ceptions that are classes\051 it is a base class of the exception, or it is a tuple containing an item that is) 99 453.67 P +-0.28 (compatible with the exception. Note that the object identities must match, i.e. it must be the same ob-) 99 440.67 P +(ject, not just an object with the same value.) 99 427.67 T +0.36 (If no except clause matches the exception, the search for an exception handler continues in the sur-) 99 402.67 P +(rounding code and on the invocation stack.) 99 389.67 T +0.32 (If the evaluation of an expression in the header of an except clause raises an exception, the original) 99 364.67 P +-0.41 (search for a handler is cancelled and a search starts for the new exception in the surrounding code and) 99 351.67 P +(on the call stack \050it is treated as if the entire) 99 338.67 T +2 F +(try) 293.6 338.67 T +1 F +( statement raised the exception\051.) 313.4 338.67 T +-0.29 (When a matching except clause is found, the exception\325s parameter is assigned to the target specified) 99 313.67 P +0.08 (in that except clause, if present, and the except clause\325s suite is executed. When the end of this suite) 99 300.67 P +-0.27 (is reached, execution continues normally after the entire try statement. \050This means that if two nested) 99 287.67 P +-0.1 (handlers exist for the same exception, and the exception occurs in the try clause of the inner handler,) 99 274.67 P +(the outer handler will not handle the exception.\051) 99 261.67 T +-0.37 (Before an except clause\325s suite is executed, details about the exception are assigned to three variables) 99 236.67 P +0.41 0.88 (in the) 99 223.67 B +2 F +0.99 0.88 (sys) 133.46 223.67 B +1 F +0.41 0.88 ( module:) 155.9 223.67 B +2 F +0.99 0.88 (sys.exc_type) 206.17 223.67 B +1 F +0.41 0.88 ( receives the object identifying the exception;) 295.9 223.67 B +2 F +0.99 0.05 (sys.exc_value) 99 210.67 B +1 F +0.41 0.05 ( receives the exception\325s parameter;) 185.49 210.67 B +2 F +0.99 0.05 (sys.exc_traceback) 350.49 210.67 B +1 F +0.41 0.05 ( receives a trace-) 463.6 210.67 B +(back object \050see page) 99 197.67 T +(17\051 identifying the point in the program where the exception occurred.) 196.13 197.67 T +-0.36 (The optional) 99 172.67 P +2 F +-0.86 (else) 156.95 172.67 P +1 F +-0.36 ( clause is executed when no exception occurs in the) 183.35 172.67 P +2 F +-0.86 (try) 409.5 172.67 P +1 F +-0.36 ( clause. Exceptions in the) 429.3 172.67 P +2 F +(else) 99 159.67 T +1 F +( clause are not handled by the preceding) 125.4 159.67 T +2 F +(except) 305.02 159.67 T +1 F +( clauses.) 344.62 159.67 T +-0.52 (The) 99 134.67 P +2 F +-1.26 (try...finally) 118.33 134.67 P +1 F +-0.52 ( form specifies a \324cleanup\325 handler. The) 204.13 134.67 P +2 F +-1.26 (try) 378.86 134.67 P +1 F +-0.52 ( clause is executed. When no ex-) 398.65 134.67 P +0.4 (ception occurs, the) 99 121.67 P +2 F +0.96 (finally) 185.73 121.67 P +1 F +0.4 ( clause is executed. When an exception occurs in the) 231.93 121.67 P +2 F +0.96 (try) 470.22 121.67 P +1 F +0.4 ( clause, the) 490.02 121.67 P +-0.09 (exception is temporarily saved, the) 99 108.67 P +2 F +-0.23 (finally) 254.95 108.67 P +1 F +-0.09 ( clause is executed, and then the saved exception is re-) 301.15 108.67 P +-0.31 (raised. If the) 99 95.67 P +2 F +-0.76 (finally) 156.09 95.67 P +1 F +-0.31 ( clause raises another exception or executes a) 202.29 95.67 P +2 F +-0.76 (return) 401.98 95.67 P +1 F +-0.31 (,) 441.58 95.67 P +2 F +-0.76 (break) 446.77 95.67 P +1 F +-0.31 ( or) 479.77 95.67 P +2 F +-0.76 (contin-) 493.8 95.67 P +(ue) 99 82.67 T +1 F +( statement, the saved exception is lost.) 112.2 82.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "47" 53 +%%Page: "48" 54 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(48) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.11 (When a) 72 712.67 P +2 F +0.26 (return) 108.87 712.67 P +1 F +0.11 ( or) 148.47 712.67 P +2 F +0.26 (break) 163.34 712.67 P +1 F +0.11 ( statement is executed in the) 196.34 712.67 P +2 F +0.26 (try) 324.08 712.67 P +1 F +0.11 ( suite of a) 343.88 712.67 P +2 F +0.26 (try...finally) 390.13 712.67 P +1 F +0.11 ( statement, the) 475.93 712.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 F +0.95 (finally) 72 699.67 P +1 F +0.4 ( clause is also executed \324on the way out\325. A) 118.2 699.67 P +2 F +0.95 (continue) 316.14 699.67 P +1 F +0.4 ( statement is illegal in the) 368.94 699.67 P +2 F +0.95 (try) 486.82 699.67 P +1 F +0.4 ( clause.) 506.61 699.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\050The reason is a problem with the current implementation \321 this restriction may be lifted in the future\051.) 72 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(7.5) 72 659.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Function definitions) 108 659.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +2.8 (A function definition defines a user-defined function object \050see \322The standard type hierarchy\323 on) 72 634.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(page) 72 621.67 T +(12\051) 95.52 621.67 T +1 8.8 Q +(1) 110.18 626.07 T +1 11 Q +(:) 114.58 621.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(funcdef: "def" funcname "\050" [parameter_list] "\051" ":" suite) 72 603.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(parameter_list: \050defparameter ","\051* \050"*" identifier [, "**" identifier]) 72 591.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( | "**" identifier) 72 579.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( | defparameter [","]\051) 72 567.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(defparameter: parameter ["=" expression]) 72 555.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(sublist: parameter \050"," parameter\051* [","]) 72 543.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(parameter: identifier | "\050" sublist "\051") 72 531.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(funcname: identifier) 72 519.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.05 (A function definition is an executable statement. Its execution binds the function name in the current local) 72 494.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.04 (name space to a function object \050a wrapper around the executable code for the function\051. This function ob-) 72 481.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.06 (ject contains a reference to the current global name space as the global name space to be used when the) 72 468.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(function is called.) 72 455.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.41 0.04 (The function definition does not execute the function body; this gets executed only when the function is) 72 430.67 B +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(called.) 72 417.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.19 (When one or more top-level parameters have the form) 72 392.67 P +3 F +-0.19 (parameter = expression) 311.95 392.67 P +1 F +-0.19 (, the function is said to have) 417.38 392.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 (\322default parameter values\323. Default parameter values are evaluated when the function definition is execut-) 72 379.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.15 (ed. For a parameter with a default value, the correponding argument may be omitted from a call, in which) 72 366.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.46 (case the parameter\325s default value is substituted. If a parameter has a default value, all following parameters) 72 353.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(must also have a default value \321 this is a syntactic restriction that is not expressed by the grammar.) 72 340.67 T +1 8.8 Q +(2) 511.64 345.07 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.45 (Function call semantics are described in section \322Calls\323 on page) 72 315.67 P +-0.45 (31. When a user-defined function is called,) 353.3 315.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.17 (first missing arguments for which a default value exists are supplied; then the arguments \050a.k.a. actual pa-) 72 302.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(rameters\051 are bound to the \050formal\051 parameters, as follows:) 72 289.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 270.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(If there are no formal parameters, there must be no arguments.) 86.4 270.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 251.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.55 (If the formal parameter list does not end in a star followed by an identifier, there must be exactly as many) 86.4 251.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.39 (arguments as there are parameters in the formal parameter list \050at the top level\051; the arguments are as-) 86.4 238.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.31 (signed to the formal parameters one by one. Note that the presence or absence of a trailing comma at the) 86.4 225.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.55 (top level in either the formal or the actual parameter list makes no difference. The assignment to a formal) 86.4 212.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.58 (parameter is performed as if the parameter occurs on the left hand side of an assignment statement whose) 86.4 199.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(right hand side\325s value is that of the argument.) 86.4 186.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(\245) 72 167.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0.34 (If the formal parameter list ends in a star followed by an identifier, preceded by zero or more comma-) 86.4 167.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.63 (followed parameters, there must be at least as many arguments as there are parameters preceding the star.) 86.4 154.67 P +0 0 0 1 0 0 0 K +72 124 540 139 C +0 0 0 1 0 0 0 K +81 137 225 137 2 L +0.5 H +2 Z +0 X +0 0 0 1 0 0 0 K +N +0 0 0 1 0 0 0 K +0 0 612 792 C +0 0 0 1 0 0 0 K +1 11 Q +0 X +0 0 0 1 0 0 0 K +(1.) 81 116.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +-0.3 (The new syntax to receive arbitrary keyword arguments is not yet documented in this manual. See) 94.5 116.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(chapter 12 of the Tutorial.) 94.46 103.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(2.) 81 90.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +6.81 (Currently this is not checked; instead,) 94.5 90.67 P +2 F +16.33 (def f\050a=1,b\051) 304.29 90.67 P +1 F +6.81 ( is interpreted as) 399.83 90.67 P +2 F +16.33 (def) 502.2 90.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(f\050a=1,b=None\051) 94.46 77.67 T +1 F +(.) 180.26 77.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "48" 54 +%%Page: "49" 55 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(49) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Compound statements) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.2 (Call this number) 113.4 712.67 P +3 F +-0.2 (N) 188.9 712.67 P +1 F +-0.2 (. The first) 196.23 712.67 P +3 F +-0.2 (N) 241.47 712.67 P +1 F +-0.2 ( arguments are assigned to the corresponding formal parameters in) 248.81 712.67 P +0.33 (the way descibed above. A tuple containing the remaining arguments, if any, is then assigned to) 113.4 699.67 P +0.58 (the identifier following the star. This variable will always be a tuple: if there are no extra argu-) 113.4 686.67 P +(ments, its value is) 113.4 673.67 T +2 F +(\050\051) 194.99 673.67 T +1 F +(, if there is just one extra argument, it is a singleton tuple.) 208.19 673.67 T +-0.1 (Note that the \324variable length parameter list\325 feature only works at the top level of the parameter list;) 99 648.67 P +-0.15 (individual parameters use a model corresponding more closely to that of ordinary assignment. While) 99 635.67 P +0.36 (the latter model is generally preferable, because of the greater type safety it offers \050wrong-sized tu-) 99 622.67 P +0.18 (ples aren\325t silently mistreated\051, variable length parameter lists are a sufficiently accepted practice in) 99 609.67 P +-0.37 (most programming languages that a compromise has been worked out. \050And anyway, assignment has) 99 596.67 P +(no equivalent for empty argument lists.\051) 99 583.67 T +-0.07 (It is also possible to create anonymous functions \050functions not bound to a name\051, for immediate use) 99 558.67 P +(in expressions. This uses lambda forms, described in section \322Boolean operations\323 on page) 99 545.67 T +(35.) 502.58 545.67 T +0 14 Q +(7.6) 99 518.67 T +(Class definitions) 135 518.67 T +1 11 Q +(A class definition defines a class object \050see section \322The standard type hierarchy\323 on page) 99 493.67 T +(12\051:) 502.54 493.67 T +2 10 Q +(classdef: "class" classname [inheritance] ":" suite) 99 475.33 T +(inheritance: "\050" [expression_list] "\051") 99 463.33 T +(classname: identifier) 99 451.33 T +1 11 Q +0.41 0.05 (A class definition is an executable statement. It first evaluates the inheritance list, if present. Each) 99 426.67 B +-0.52 (item in the inheritance list should evaluate to a class object. The class\325s suite is then executed in a new) 99 413.67 P +-0.27 (execution frame \050see section \322Code blocks, execution frames, and name spaces\323 on page) 99 400.67 P +-0.27 (23\051, using a) 488.9 400.67 P +-0.11 (newly created local name space and the original global name space. \050Usually, the suite contains only) 99 387.67 P +0.25 (function definitions.\051 When the class\325s suite finishes execution, its execution frame is discarded but) 99 374.67 P +0.41 0.09 (its local name space is saved. A class object is then created using the inheritance list for the base) 99 361.67 B +0.41 0.01 (classes and the saved local name space for the attribute dictionary. The class name is bound to this) 99 348.67 B +(class object in the original local name space.) 99 335.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "49" 55 +%%Page: "50" 56 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(50) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "50" 56 +%%Page: "51" 57 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(51) 530 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +585 292.5 598.5 720 R +5 9 Q +(\245) 0 -90 592.5 720 TF +(Top-level components) 0 -90 592.5 711 TF +585 292.5 598.5 720 R +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 16 Q +(C) 99 709.33 T +0 12.8 Q +(HAPTER) 110.55 709.33 T +0 16 Q +(8:) 167.62 709.33 T +(T) 198 709.33 T +0 12.8 Q +(OP) 207.78 709.33 T +0 16 Q +(-) 226.27 709.33 T +0 12.8 Q +(LEVEL) 231.6 709.33 T +(COMPONENTS) 277.3 709.33 T +1 11 Q +0.14 (The Python interpreter can get its input from a number of sources: from a script passed to it as stan-) 99 672.67 P +-0.54 (dard input or as program argument, typed in interactively, from a module source file, etc. This chapter) 99 659.67 P +(gives the syntax used in these cases.) 99 646.67 T +0 14 Q +(8.1) 99 619.67 T +(Complete Python programs) 135 619.67 T +1 11 Q +-0.46 (While a language specification need not prescribe how the language interpreter is invoked, it is useful) 99 594.67 P +0.35 (to have a notion of a complete Python program. A complete Python program is executed in a mini-) 99 581.67 P +-0.51 (mally initialized environment: all built-in and standard modules are available, but none have been ini-) 99 568.67 P +0.92 (tialized, except for) 99 555.67 P +2 F +2.2 (sys) 186.68 555.67 P +1 F +0.92 ( \050various system services\051,) 206.48 555.67 P +2 F +2.2 (__builtin__) 329.6 555.67 P +1 F +0.92 ( \050built-in functions, exceptions) 402.2 555.67 P +-0.06 (and) 99 542.67 P +2 F +-0.16 (None) 117.57 542.67 P +1 F +-0.06 (\051 and) 143.97 542.67 P +2 F +-0.16 (__main__) 168.88 542.67 P +1 F +-0.06 (. The latter is used to provide the local and global name space for execu-) 221.68 542.67 P +(tion of the complete program.) 99 529.67 T +(The syntax for a complete Python program is that for file input, described in the next section.) 99 504.67 T +0.21 (The interpreter may also be invoked in interactive mode; in this case, it does not read and execute a) 99 479.67 P +0.41 0.02 (complete program but reads and executes one statement \050possibly compound\051 at a time. The initial) 99 466.67 B +-0.16 (environment is identical to that of a complete program; each statement is executed in the name space) 99 453.67 P +(of) 99 440.67 T +2 F +(__main__) 110.91 440.67 T +1 F +(.) 163.71 440.67 T +0.11 (Under UNIX , a complete program can be passed to the interpreter in three forms: with the) 99 415.67 P +4 F +0.11 (-c) 502.92 415.67 P +3 F +0.11 (string) 514.33 415.67 P +1 F +-0.2 (command line option, as a file passed as the first command line argument, or as standard input. If the) 99 402.67 P +-0.28 (file or standard input is a tty device, the interpreter enters interactive mode; otherwise, it executes the) 99 389.67 P +(file as a complete program.) 99 376.67 T +0 14 Q +(8.2) 99 349.67 T +(File input) 135 349.67 T +1 11 Q +(All input read from non-interactive files has the same form:) 99 324.67 T +2 10 Q +(file_input: \050NEWLINE | statement\051*) 99 306.33 T +1 11 Q +(This syntax is used in the following situations:) 99 281.67 T +(\245) 99 262.67 T +(when parsing a complete Python program \050from a file or from a string\051;) 113.4 262.67 T +(\245) 99 243.67 T +(when parsing a module;) 113.4 243.67 T +(\245) 99 224.67 T +(when parsing a string passed to the) 113.4 224.67 T +2 F +(exec) 270.13 224.67 T +1 F +( statement;) 296.53 224.67 T +0 14 Q +(8.3) 99 197.67 T +(Interactive input) 135 197.67 T +1 11 Q +(Input in interactive mode is parsed using the following grammar:) 99 172.67 T +2 10 Q +(interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE) 99 154.33 T +1 11 Q +-0.43 (Note that a \050top-level\051 compound statement must be followed by a blank line in interactive mode; this) 99 129.67 P +(is needed to help the parser detect the end of the input.) 99 116.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "51" 57 +%%Page: "52" 58 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 10 Q +0 X +0 0 0 1 0 0 0 K +(52) 76.5 37.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 14 Q +(8.4) 72 710.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(Expression input) 108 710.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +-0.1 (There are two forms of expression input. Both ignore leading whitespace. The string argument to) 72 685.67 P +2 F +-0.23 (eval\050\051) 500.4 685.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 F +(must have the following form:) 72 672.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(eval_input: expression_list NEWLINE*) 72 654.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(The input line read by) 72 629.67 T +2 F +(input\050\051) 171.9 629.67 T +1 F +( must have the following form:) 218.1 629.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +2 10 Q +(input_input: expression_list NEWLINE) 72 611.33 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +0.37 (Note: to read \324raw\325 input line without interpretation, you can use the built-in function) 72 586.67 P +2 F +0.89 (raw_input\050\051) 455.12 586.67 P +1 F +0.37 ( or) 527.72 586.67 P +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(the) 72 573.67 T +2 F +(readline\050\051) 88.19 573.67 T +1 F +( method of file objects.) 154.19 573.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "52" 58 +%%Page: "53" 59 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +1 10 Q +0 X +0 0 0 1 0 0 0 K +(53) 525.5 32.83 T +0 0 0 1 0 0 0 K +315 639 315 63 2 L +0.5 H +2 Z +N +85.5 639 85.5 63 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +(Symbols) 94.5 631 T +1 11 Q +(#) 94.5 617.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 104.5 617.67 T +(3) 264.5 617.67 T +(__abs__) 94.5 604.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 604.67 T +(22) 259 604.67 T +(__add__) 94.5 591.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 591.67 T +(21) 259 591.67 T +(__and__) 94.5 578.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 578.67 T +(21) 259 578.67 T +(__bases__) 94.5 565.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 145.75 565.67 T +(16) 259 565.67 T +(__builtin__) 94.5 552.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 552.67 T +(24) 242 552.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 552.67 T +0 0 0 1 0 0 0 K +1 11 Q +(51) 259 552.67 T +(__builtins__) 94.5 539.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 539.67 T +(24) 259 539.67 T +(__call__) 94.5 526.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 137.5 526.67 T +(15) 242 526.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 526.67 T +0 0 0 1 0 0 0 K +1 11 Q +(20) 259 526.67 T +(__class__) 94.5 513.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 143 513.67 T +(16) 259 513.67 T +(__cmp__) 94.5 500.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 140.25 500.67 T +(19) 259 500.67 T +(__coerce__) 94.5 487.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 148.5 487.67 T +(22) 259 487.67 T +(__del__) 94.5 474.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 474.67 T +(18) 259 474.67 T +(exception in) 112.5 461.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 170.5 461.67 T +(18) 259 461.67 T +(__delattr__) 94.5 448.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 448.67 T +(16) 242 448.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 448.67 T +0 0 0 1 0 0 0 K +1 11 Q +(20) 259 448.67 T +(__delitem__) 94.5 435.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 435.67 T +(20) 259 435.67 T +(__delslice__) 94.5 422.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 422.67 T +(21) 259 422.67 T +(__dict__) 94.5 409.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 137.5 409.67 T +(15) 225 409.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 236 409.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 242 409.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 409.67 T +0 0 0 1 0 0 0 K +1 11 Q +(20) 259 409.67 T +(__div__) 94.5 396.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 396.67 T +(21) 259 396.67 T +(__divmod__) 94.5 383.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 383.67 T +(21) 259 383.67 T +(__doc__) 94.5 370.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 137.5 370.67 T +(14) 242 370.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 253 370.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 259 370.67 T +(__file__) 94.5 357.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 357.67 T +(15) 259 357.67 T +(__float__) 94.5 344.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 140.25 344.67 T +(22) 259 344.67 T +(__getattr__) 94.5 331.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 331.67 T +(16) 242 331.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 331.67 T +0 0 0 1 0 0 0 K +1 11 Q +(19) 259 331.67 T +(__getitem__) 94.5 318.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 154 318.67 T +(18) 242 318.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 318.67 T +0 0 0 1 0 0 0 K +1 11 Q +(20) 259 318.67 T +(__getslice__) 94.5 305.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 305.67 T +(20) 259 305.67 T +(__hash__) 94.5 292.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 140.25 292.67 T +(19) 259 292.67 T +(__hex__) 94.5 279.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 279.67 T +(22) 259 279.67 T +(__init__) 94.5 266.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 134.75 266.67 T +(15) 242 266.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 266.67 T +0 0 0 1 0 0 0 K +1 11 Q +(18) 259 266.67 T +(__int__) 94.5 253.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 132 253.67 T +(22) 259 253.67 T +(__invert__) 94.5 240.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 145.75 240.67 T +(22) 259 240.67 T +(__len__) 94.5 227.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 134.75 227.67 T +(19) 242 227.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 253 227.67 T +0 0 0 1 0 0 0 K +1 11 Q +(20) 259 227.67 T +(__long__) 94.5 214.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 140.25 214.67 T +(22) 259 214.67 T +(__lshift__) 94.5 201.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 143 201.67 T +(21) 259 201.67 T +(__main__) 94.5 188.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 143 188.67 T +(24) 242 188.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 188.67 T +0 0 0 1 0 0 0 K +1 11 Q +(51) 259 188.67 T +(__members__) 94.5 175.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 162.25 175.67 T +(12) 259 175.67 T +(__methods__) 94.5 162.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 159.5 162.67 T +(12) 259 162.67 T +(__mod__) 94.5 149.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 140.25 149.67 T +(21) 259 149.67 T +(__mul__) 94.5 136.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 136.67 T +(21) 259 136.67 T +(__name__) 94.5 123.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 145.75 123.67 T +(14) 242 123.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 253 123.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 259 123.67 T +(__neg__) 94.5 110.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 110.67 T +(21) 259 110.67 T +(__nonzero__) 94.5 97.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . .) 156.75 97.67 T +(19) 242 97.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 253 97.67 T +0 0 0 1 0 0 0 K +1 11 Q +(20) 259 97.67 T +(__oct__) 94.5 84.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 84.67 T +(22) 259 84.67 T +(__or__) 94.5 71.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 129.25 71.67 T +(21) 259 71.67 T +(__pos__) 324 631.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 365.75 631.67 T +(21) 488.5 631.67 T +(__pow__) 324 618.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 368.5 618.67 T +(21) 488.5 618.67 T +(__radd__) 324 605.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 371.25 605.67 T +(21) 488.5 605.67 T +(__rand__) 324 592.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 371.25 592.67 T +(21) 488.5 592.67 T +(__rdiv__) 324 579.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 368.5 579.67 T +(21) 488.5 579.67 T +(__rdivmod__) 324 566.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 387.75 566.67 T +(21) 488.5 566.67 T +(__repr__) 324 553.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 368.5 553.67 T +(18) 471.5 553.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 482.5 553.67 T +0 0 0 1 0 0 0 K +1 11 Q +(19) 488.5 553.67 T +(__rlshift__) 324 540.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 376.75 540.67 T +(21) 488.5 540.67 T +(__rmod__) 324 527.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 374 527.67 T +(21) 488.5 527.67 T +(__rmul__) 324 514.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 371.25 514.67 T +(21) 488.5 514.67 T +(__ror__) 324 501.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 363 501.67 T +(21) 488.5 501.67 T +(__rpow__) 324 488.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 374 488.67 T +(21) 488.5 488.67 T +(__rrshift__) 324 475.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 376.75 475.67 T +(21) 488.5 475.67 T +(__rshift__) 324 462.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 374 462.67 T +(21) 488.5 462.67 T +(__rsub__) 324 449.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 368.5 449.67 T +(21) 488.5 449.67 T +(__rxor__) 324 436.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 368.5 436.67 T +(21) 488.5 436.67 T +(__self__) 324 423.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 365.75 423.67 T +(15) 488.5 423.67 T +(__setattr__) 324 410.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 376.75 410.67 T +(16) 471.5 410.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 410.67 T +0 0 0 1 0 0 0 K +1 11 Q +(19) 488.5 410.67 T +(__setitem__) 324 397.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 397.67 T +(20) 488.5 397.67 T +(__setslice__) 324 384.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 384.67 T +(20) 488.5 384.67 T +(__str__) 324 371.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 360.25 371.67 T +(19) 488.5 371.67 T +(__sub__) 324 358.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 365.75 358.67 T +(21) 488.5 358.67 T +(__xor__) 324 345.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 365.75 345.67 T +(21) 488.5 345.67 T +0 12 Q +(A) 324 324 T +1 11 Q +(abstraction) 324 310.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 376.75 310.67 T +(11) 488.5 310.67 T +(actual) 324 297.67 T +(parameter) 342 284.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 390.5 284.67 T +(48) 488.5 284.67 T +(addition) 324 271.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 365.75 271.67 T +(33) 488.5 271.67 T +(and) 324 258.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 343.75 258.67 T +(35) 488.5 258.67 T +(bit-wise) 342 245.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 245.67 T +(34) 488.5 245.67 T +(argument) 324 232.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 371.25 232.67 T +(48) 488.5 232.67 T +(default value) 342 219.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . .) 404.25 219.67 T +(31) 488.5 219.67 T +(function) 342 206.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 206.67 T +(14) 488.5 206.67 T +(keyword) 342 193.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 385 193.67 T +(31) 488.5 193.67 T +(arguments) 324 180.67 T +(positional) 342 167.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 390.5 167.67 T +(31) 488.5 167.67 T +(array of bytes) 324 154.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 387.75 154.67 T +(13) 488.5 154.67 T +(ASCII) 324 141.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 357.5 141.67 T +(1) 442.5 141.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 448 141.67 T +0 0 0 1 0 0 0 K +1 11 Q +(6) 454 141.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 459.5 141.67 T +0 0 0 1 0 0 0 K +1 11 Q +(7) 465.5 141.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 471 141.67 T +0 0 0 1 0 0 0 K +1 11 Q +(9) 477 141.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 141.67 T +0 0 0 1 0 0 0 K +1 11 Q +(13) 488.5 141.67 T +(assignment) 324 128.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 376.75 128.67 T +(13) 471.5 128.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 128.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 488.5 128.67 T +(attribute) 342 115.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 115.67 T +(40) 488.5 115.67 T +(class) 360 102.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 385 102.67 T +(16) 488.5 102.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +4.8 (I) 288 670 S +0 9.6 Q +4.8 (NDEX) 296.13 670 S +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "53" 59 +%%Page: "54" 60 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 12 Q +0 X +0 0 0 1 0 0 0 K +4.8 (I) 270 748 S +0 9.6 Q +4.8 (NDEX) 278.13 748 S +0 0 0 1 0 0 0 K +1 10 Q +(54) 76.5 32.83 T +0 0 0 1 0 0 0 K +297 720 297 63 2 L +0.5 H +2 Z +N +67.5 720 67.5 63 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(class instance) 112.5 712.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . .) 176 712.67 T +(16) 241 712.67 T +(attributes) 94.5 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 140.25 699.67 T +(39) 241 699.67 T +(formal parameter) 94.5 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . .) 176 686.67 T +(48) 241 686.67 T +(list) 94.5 673.67 T +(target) 112.5 660.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 143 660.67 T +(40) 241 660.67 T +(slicing) 94.5 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 129.25 647.67 T +(40) 241 647.67 T +(subscription) 94.5 634.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 154 634.67 T +(40) 241 634.67 T +(atom) 76.5 621.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . .) 101.75 621.67 T +(27) 241 621.67 T +(attribute) 76.5 608.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 118.25 608.67 T +(12) 241 608.67 T +(class) 94.5 595.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 121 595.67 T +(16) 241 595.67 T +(class instance) 94.5 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 159.5 582.67 T +(16) 241 582.67 T +(generic) 94.5 569.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 132 569.67 T +(12) 241 569.67 T +(special) 94.5 556.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 129.25 556.67 T +(12) 241 556.67 T +(attribute access) 76.5 543.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 543.67 T +(19) 241 543.67 T +(attribute search) 76.5 530.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 530.67 T +(15) 241 530.67 T +(AttributeError) 76.5 517.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . .) 143 517.67 T +(19) 207 517.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 218 517.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 224 517.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 517.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 241 517.67 T +0 12 Q +(B) 76.5 496 T +1 11 Q +(back-quotes) 76.5 482.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 134.75 482.67 T +(18) 224 482.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 482.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 241 482.67 T +(backslash) 76.5 469.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 123.75 469.67 T +(6) 246.5 469.67 T +(backslash character) 76.5 456.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 167.75 456.67 T +(3) 246.5 456.67 T +(binary arithmetic operations) 76.5 443.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . .) 206.25 443.67 T +(21) 241 443.67 T +(binding) 76.5 430.67 T +(name) 94.5 417.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . .) 123.75 417.67 T +(27) 190 417.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 201 417.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 207 417.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 218 417.67 T +0 0 0 1 0 0 0 K +1 11 Q +(48) 224 417.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 235 417.67 T +0 0 0 1 0 0 0 K +1 11 Q +(49) 241 417.67 T +(global) 112.5 404.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 143 404.67 T +(44) 241 404.67 T +(bitwise operations) 76.5 391.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 162.25 391.67 T +(21) 241 391.67 T +(blank line) 76.5 378.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 123.75 378.67 T +(4) 246.5 378.67 T +(block) 76.5 365.67 T +(code) 94.5 352.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 121 352.67 T +(23) 241 352.67 T +(BNF) 76.5 339.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 101.75 339.67 T +(1) 229.5 339.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 339.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 241 339.67 T +(break) 76.5 326.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 104.5 326.67 T +(42) 207 326.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 218 326.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 224 326.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 235 326.67 T +0 0 0 1 0 0 0 K +1 11 Q +(47) 241 326.67 T +(built-in) 76.5 313.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 112.75 313.67 T +(15) 224 313.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 313.67 T +0 0 0 1 0 0 0 K +1 11 Q +(32) 241 313.67 T +(built-in method) 76.5 300.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 300.67 T +(32) 241 300.67 T +(byte) 76.5 287.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 99 287.67 T +(13) 241 287.67 T +(bytecode) 76.5 274.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 121 274.67 T +(16) 241 274.67 T +(byte-compile) 76.5 261.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 140.25 261.67 T +(16) 241 261.67 T +0 12 Q +(C) 76.5 240 T +1 11 Q +(C) 76.5 226.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 88 226.67 T +(7) 178.5 226.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 184 226.67 T +0 0 0 1 0 0 0 K +1 11 Q +(12) 190 226.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 201 226.67 T +0 0 0 1 0 0 0 K +1 11 Q +(15) 207 226.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 218 226.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 224 226.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 226.67 T +0 0 0 1 0 0 0 K +1 11 Q +(34) 241 226.67 T +(call) 76.5 213.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 96.25 213.67 T +(31) 241 213.67 T +(built-in function) 94.5 200.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . .) 170.5 200.67 T +(32) 241 200.67 T +(built-in method) 94.5 187.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . .) 167.75 187.67 T +(32) 241 187.67 T +(class instance) 94.5 174.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 159.5 174.67 T +(32) 241 174.67 T +(class object) 94.5 161.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . .) 151.25 161.67 T +(15) 207 161.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 218 161.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 224 161.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 161.67 T +0 0 0 1 0 0 0 K +1 11 Q +(32) 241 161.67 T +(function) 94.5 148.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 134.75 148.67 T +(32) 224 148.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 148.67 T +0 0 0 1 0 0 0 K +1 11 Q +(48) 241 148.67 T +(user-defined) 112.5 135.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . .) 170.5 135.67 T +(32) 224 135.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 135.67 T +0 0 0 1 0 0 0 K +1 11 Q +(48) 241 135.67 T +(function invocation) 94.5 122.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . .) 184.25 122.67 T +(14) 241 122.67 T +(instance) 94.5 109.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 134.75 109.67 T +(32) 241 109.67 T +(method) 94.5 96.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 132 96.67 T +(32) 241 96.67 T +(procedure) 94.5 83.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 143 83.67 T +(39) 241 83.67 T +(callable) 76.5 70.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 115.5 70.67 T +(14) 224 70.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 70.67 T +0 0 0 1 0 0 0 K +1 11 Q +(31) 241 70.67 T +(characters) 306 712.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 354.75 712.67 T +(30) 470.5 712.67 T +(chr) 306 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . .) 324.5 699.67 T +(13) 470.5 699.67 T +(circular references) 306 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 393.25 686.67 T +(11) 470.5 686.67 T +(class) 306 673.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . .) 332.75 673.67 T +(15) 419.5 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 430.5 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 436.5 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(32) 453.5 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(49) 470.5 673.67 T +(class instance) 306 660.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 371.25 660.67 T +(15) 470.5 660.67 T +(clause) 306 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 338.25 647.67 T +(45) 470.5 647.67 T +(close) 306 634.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . .) 332.75 634.67 T +(11) 470.5 634.67 T +(code block) 306 621.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . .) 357.5 621.67 T +(23) 419.5 621.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 430.5 621.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 436.5 621.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 621.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 453.5 621.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 464.5 621.67 T +0 0 0 1 0 0 0 K +1 11 Q +(44) 470.5 621.67 T +(code generation phase) 306 608.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . .) 407 608.67 T +(41) 470.5 608.67 T +(code object) 306 595.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 360.25 595.67 T +(16) 470.5 595.67 T +(co_argcount) 324 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 582.67 T +(17) 470.5 582.67 T +(co_code) 324 569.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 365.75 569.67 T +(17) 470.5 569.67 T +(co_consts) 324 556.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 371.25 556.67 T +(17) 470.5 556.67 T +(co_filename) 324 543.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 543.67 T +(17) 470.5 543.67 T +(co_flags) 324 530.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 365.75 530.67 T +(17) 470.5 530.67 T +(co_names) 324 517.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 371.25 517.67 T +(17) 470.5 517.67 T +(co_nlocals) 324 504.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 376.75 504.67 T +(17) 470.5 504.67 T +(co_varnames) 324 491.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . .) 387.75 491.67 T +(17) 470.5 491.67 T +(coercion) 306 478.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 349.25 478.67 T +(27) 453.5 478.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 478.67 T +0 0 0 1 0 0 0 K +1 11 Q +(32) 470.5 478.67 T +(coercion rules) 306 465.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 371.25 465.67 T +(22) 470.5 465.67 T +(colon) 306 452.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 335.5 452.67 T +(45) 470.5 452.67 T +(comma) 306 439.67 T +(trailing) 324 426.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 360.25 426.67 T +(36) 453.5 426.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 426.67 T +0 0 0 1 0 0 0 K +1 11 Q +(42) 470.5 426.67 T +(comma operator) 306 413.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 413.67 T +(28) 470.5 413.67 T +(command line) 306 400.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 374 400.67 T +(51) 470.5 400.67 T +(comment) 306 387.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 352 387.67 T +(3) 476 387.67 T +(comparison) 306 374.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 363 374.67 T +(34) 470.5 374.67 T +(chaining) 324 361.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 365.75 361.67 T +(34) 470.5 361.67 T +(comparison operator) 306 348.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . .) 401.5 348.67 T +(9) 476 348.67 T +(compile) 306 335.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 346.5 335.67 T +(44) 470.5 335.67 T +(complex literal) 306 322.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 376.75 322.67 T +(8) 476 322.67 T +(complex number) 306 309.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . .) 385 309.67 T +(9) 442 309.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 309.67 T +0 0 0 1 0 0 0 K +1 11 Q +(13) 453.5 309.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 309.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 470.5 309.67 T +(constant) 306 296.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 346.5 296.67 T +(6) 476 296.67 T +(constructor) 306 283.67 T +(class) 324 270.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 349.25 270.67 T +(18) 470.5 270.67 T +(container) 306 257.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 352 257.67 T +(11) 453.5 257.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 257.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 470.5 257.67 T +(continue) 306 244.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . .) 349.25 244.67 T +(43) 436.5 244.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 244.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 453.5 244.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 464.5 244.67 T +0 0 0 1 0 0 0 K +1 11 Q +(47) 470.5 244.67 T +(conversion) 306 231.67 T +(arithmetic) 324 218.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 374 218.67 T +(27) 470.5 218.67 T +(string) 324 205.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 354.75 205.67 T +(18) 436.5 205.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 205.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 453.5 205.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 205.67 T +0 0 0 1 0 0 0 K +1 11 Q +(39) 470.5 205.67 T +(curly brace) 306 192.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 360.25 192.67 T +(4) 476 192.67 T +0 12 Q +(D) 306 171 T +1 11 Q +(data) 306 157.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 330 157.67 T +(11) 470.5 157.67 T +(datum) 306 144.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 338.25 144.67 T +(28) 470.5 144.67 T +(debugger) 306 131.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 352 131.67 T +(17) 470.5 131.67 T +(debugging) 306 118.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 357.5 118.67 T +(11) 470.5 118.67 T +(decimal literal) 306 105.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 374 105.67 T +(8) 476 105.67 T +(DEDENT token) 306 92.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . .) 382.25 92.67 T +(4) 459 92.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 92.67 T +0 0 0 1 0 0 0 K +1 11 Q +(45) 470.5 92.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "54" 60 +%%Page: "55" 61 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +0 X +0 0 0 1 0 0 0 K +4.8 (I) 288 748 S +0 9.6 Q +4.8 (NDEX) 296.13 748 S +0 0 0 1 0 0 0 K +1 10 Q +(55) 525.5 32.83 T +0 0 0 1 0 0 0 K +315 720 315 63 2 L +0.5 H +2 Z +N +85.5 720 85.5 63 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(definition) 94.5 712.67 T +(class) 112.5 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 137.5 699.67 T +(42) 242 699.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 699.67 T +0 0 0 1 0 0 0 K +1 11 Q +(49) 259 699.67 T +(function) 112.5 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 154 686.67 T +(42) 242 686.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 686.67 T +0 0 0 1 0 0 0 K +1 11 Q +(48) 259 686.67 T +(del) 94.5 673.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 112.75 673.67 T +(13) 191 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 202 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(18) 208 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 219 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(23) 225 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 236 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 242 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(41) 259 673.67 T +(delete) 94.5 660.67 T +(attribute) 112.5 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 647.67 T +(41) 259 647.67 T +(delimiter) 94.5 634.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 137.5 634.67 T +(9) 264.5 634.67 T +(dictionary) 94.5 621.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . .) 143 621.67 T +(14) 174 621.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 185 621.67 T +0 0 0 1 0 0 0 K +1 11 Q +(15) 191 621.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 202 621.67 T +0 0 0 1 0 0 0 K +1 11 Q +(19) 208 621.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 219 621.67 T +0 0 0 1 0 0 0 K +1 11 Q +(28) 225 621.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 236 621.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 242 621.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 621.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 259 621.67 T +(display) 94.5 608.67 T +(dictionary) 112.5 595.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 162.25 595.67 T +(28) 259 595.67 T +(tuple) 112.5 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 582.67 T +(28) 259 582.67 T +(division) 94.5 569.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 569.67 T +(33) 259 569.67 T +(divmod) 94.5 556.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 132 556.67 T +(33) 259 556.67 T +(double precision) 94.5 543.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . .) 173.25 543.67 T +(12) 259 543.67 T +0 12 Q +(E) 94.5 522 T +1 11 Q +(elif) 94.5 508.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 112.75 508.67 T +(45) 259 508.67 T +(Ellipsis) 94.5 495.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 132 495.67 T +(12) 259 495.67 T +(ellipsis) 94.5 482.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 129.25 482.67 T +(17) 259 482.67 T +(else) 94.5 469.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 115.5 469.67 T +(42) 225 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 236 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(45) 242 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 253 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(47) 259 469.67 T +(dangling) 112.5 456.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 456.67 T +(45) 259 456.67 T +(end-of-line character) 94.5 443.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . .) 189.75 443.67 T +(3) 264.5 443.67 T +(error) 94.5 430.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 121 430.67 T +(25) 259 430.67 T +(error handling) 94.5 417.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 162.25 417.67 T +(25) 259 417.67 T +(escape sequence) 94.5 404.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 170.5 404.67 T +(7) 264.5 404.67 T +(eval) 94.5 391.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 118.25 391.67 T +(23) 208 391.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 219 391.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 225 391.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 236 391.67 T +0 0 0 1 0 0 0 K +1 11 Q +(44) 242 391.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 391.67 T +0 0 0 1 0 0 0 K +1 11 Q +(52) 259 391.67 T +(except) 94.5 378.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 126.5 378.67 T +(47) 259 378.67 T +(except clause) 94.5 365.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 156.75 365.67 T +(23) 259 365.67 T +(exception) 94.5 352.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 143 352.67 T +(25) 242 352.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 352.67 T +0 0 0 1 0 0 0 K +1 11 Q +(42) 259 352.67 T +(class) 112.5 339.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 339.67 T +(47) 259 339.67 T +(raised by comparisons) 112.5 326.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . .) 214.5 326.67 T +(19) 259 326.67 T +(raising) 112.5 313.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 145.75 313.67 T +(42) 259 313.67 T +(exception handler) 94.5 300.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . .) 178.75 300.67 T +(25) 242 300.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 300.67 T +0 0 0 1 0 0 0 K +1 11 Q +(47) 259 300.67 T +(exec) 94.5 287.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 118.25 287.67 T +(23) 242 287.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 287.67 T +0 0 0 1 0 0 0 K +1 11 Q +(44) 259 287.67 T +(execfile) 94.5 274.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 134.75 274.67 T +(23) 242 274.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 274.67 T +0 0 0 1 0 0 0 K +1 11 Q +(44) 259 274.67 T +(execution model) 94.5 261.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . .) 173.25 261.67 T +(23) 259 261.67 T +(expression) 94.5 248.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 145.75 248.67 T +(27) 242 248.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 248.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 259 248.67 T +(lambda) 112.5 235.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 148.5 235.67 T +(35) 259 235.67 T +(expression input) 94.5 222.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 170.5 222.67 T +(52) 259 222.67 T +(expression list) 94.5 209.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 162.25 209.67 T +(36) 242 209.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 209.67 T +0 0 0 1 0 0 0 K +1 11 Q +(39) 259 209.67 T +(extended slice notation) 94.5 196.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . .) 200.75 196.67 T +(21) 259 196.67 T +(extended slice syntax) 94.5 183.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . .) 192.5 183.67 T +(17) 259 183.67 T +(extension) 94.5 170.67 T +(filename) 112.5 157.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 157.67 T +(43) 259 157.67 T +0 12 Q +(F) 94.5 136 T +1 11 Q +(fdopen) 94.5 122.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 129.25 122.67 T +(16) 259 122.67 T +(file) 94.5 109.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 112.75 109.67 T +(16) 242 109.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 109.67 T +0 0 0 1 0 0 0 K +1 11 Q +(52) 259 109.67 T +(finally) 94.5 96.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 126.5 96.67 T +(11) 225 96.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 236 96.67 T +0 0 0 1 0 0 0 K +1 11 Q +(42) 242 96.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 96.67 T +0 0 0 1 0 0 0 K +1 11 Q +(47) 259 96.67 T +(floating point) 94.5 83.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 159.5 83.67 T +(12) 259 83.67 T +(floating point literal) 94.5 70.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . .) 187 70.67 T +(8) 264.5 70.67 T +(floating point number) 324 712.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . .) 423.5 712.67 T +(27) 488.5 712.67 T +(floor) 324 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . .) 349.25 699.67 T +(33) 488.5 699.67 T +(flow of control) 324 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 393.25 686.67 T +(25) 488.5 686.67 T +(for) 324 673.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 341 673.67 T +(23) 437.5 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 448.5 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(42) 454.5 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 465.5 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 471.5 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 488.5 673.67 T +(form) 324 660.67 T +(lambda) 342 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 379.5 647.67 T +(35) 488.5 647.67 T +(formal) 324 634.67 T +(parameter) 342 621.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 390.5 621.67 T +(48) 488.5 621.67 T +(formfeed character) 324 608.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 412.5 608.67 T +(4) 494 608.67 T +(frame) 324 595.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 354.75 595.67 T +(17) 488.5 595.67 T +(execution) 342 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 390.5 582.67 T +(23) 471.5 582.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 582.67 T +0 0 0 1 0 0 0 K +1 11 Q +(49) 488.5 582.67 T +(frame object) 324 569.67 T +(f_back) 342 556.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 376.75 556.67 T +(17) 488.5 556.67 T +(f_builtins) 342 543.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 387.75 543.67 T +(17) 488.5 543.67 T +(f_code) 342 530.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 376.75 530.67 T +(17) 488.5 530.67 T +(f_globals) 342 517.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 387.75 517.67 T +(17) 488.5 517.67 T +(f_lasti) 342 504.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 374 504.67 T +(17) 488.5 504.67 T +(f_lineno) 342 491.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 491.67 T +(17) 488.5 491.67 T +(f_locals) 342 478.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 478.67 T +(17) 488.5 478.67 T +(f_owner) 342 465.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 465.67 T +(17) 488.5 465.67 T +(f_restricted) 342 452.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 396 452.67 T +(17) 488.5 452.67 T +(f_trace) 342 439.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 376.75 439.67 T +(17) 488.5 439.67 T +(from) 324 426.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 349.25 426.67 T +(6) 460 426.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 465.5 426.67 T +0 0 0 1 0 0 0 K +1 11 Q +(23) 471.5 426.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 426.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 488.5 426.67 T +(from x import *) 324 413.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 398.75 413.67 T +(43) 488.5 413.67 T +(function) 324 400.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 365.75 400.67 T +(14) 454.5 400.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 465.5 400.67 T +0 0 0 1 0 0 0 K +1 11 Q +(32) 471.5 400.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 400.67 T +0 0 0 1 0 0 0 K +1 11 Q +(48) 488.5 400.67 T +(anonymous) 342 387.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 396 387.67 T +(35) 488.5 387.67 T +(built-in) 342 374.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 379.5 374.67 T +(15) 488.5 374.67 T +(user-defined) 342 361.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . .) 401.5 361.67 T +(14) 471.5 361.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 361.67 T +0 0 0 1 0 0 0 K +1 11 Q +(48) 488.5 361.67 T +(function object) 324 348.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 396 348.67 T +(16) 488.5 348.67 T +(func_code) 342 335.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 393.25 335.67 T +(14) 488.5 335.67 T +(func_defaults) 342 322.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 407 322.67 T +(14) 488.5 322.67 T +(func_doc) 342 309.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 387.75 309.67 T +(14) 488.5 309.67 T +(func_globals) 342 296.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . .) 404.25 296.67 T +(14) 471.5 296.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 482.5 296.67 T +0 0 0 1 0 0 0 K +1 11 Q +(15) 488.5 296.67 T +(func_name) 342 283.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 396 283.67 T +(14) 488.5 283.67 T +0 12 Q +(G) 324 262 T +1 11 Q +(garbage collection) 324 248.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 409.75 248.67 T +(11) 488.5 248.67 T +(getlineno) 324 235.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 368.5 235.67 T +(17) 488.5 235.67 T +(global) 324 222.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . .) 354.75 222.67 T +(23) 403.5 222.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 414.5 222.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 420.5 222.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 431.5 222.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 437.5 222.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 448.5 222.67 T +0 0 0 1 0 0 0 K +1 11 Q +(41) 454.5 222.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 465.5 222.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 471.5 222.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 482.5 222.67 T +0 0 0 1 0 0 0 K +1 11 Q +(44) 488.5 222.67 T +(globals) 324 209.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 360.25 209.67 T +(24) 471.5 209.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 209.67 T +0 0 0 1 0 0 0 K +1 11 Q +(44) 488.5 209.67 T +(grammar) 324 196.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 368.5 196.67 T +(1) 494 196.67 T +0 12 Q +(H) 324 175 T +1 11 Q +(handle an exception) 324 161.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . .) 415.25 161.67 T +(25) 488.5 161.67 T +(handler) 324 148.67 T +(exception) 342 135.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 390.5 135.67 T +(17) 488.5 135.67 T +(hash) 324 122.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . .) 349.25 122.67 T +(19) 488.5 122.67 T +(hash character) 324 109.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 390.5 109.67 T +(3) 494 109.67 T +(hexadecimal literal) 324 96.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 412.5 96.67 T +(8) 494 96.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "55" 61 +%%Page: "56" 62 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 12 Q +0 X +0 0 0 1 0 0 0 K +4.8 (I) 270 748 S +0 9.6 Q +4.8 (NDEX) 278.13 748 S +0 0 0 1 0 0 0 K +1 10 Q +(56) 76.5 32.83 T +0 0 0 1 0 0 0 K +297 720 297 63 2 L +0.5 H +2 Z +N +67.5 720 67.5 63 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +(I) 76.5 712 T +1 11 Q +(id) 76.5 698.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . .) 90.75 698.67 T +(11) 241 698.67 T +(Identifier) 76.5 685.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 121 685.67 T +(5) 246.5 685.67 T +(identifier) 76.5 672.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 121 672.67 T +(27) 241 672.67 T +(special meaning) 94.5 659.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . .) 170.5 659.67 T +(6) 246.5 659.67 T +(if) 76.5 646.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . .) 88 646.67 T +(45) 241 646.67 T +(im_class) 76.5 633.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 118.25 633.67 T +(16) 241 633.67 T +(im_self) 76.5 620.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 112.75 620.67 T +(15) 241 620.67 T +(imaginary literal) 76.5 607.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 154 607.67 T +(8) 246.5 607.67 T +(immutable) 76.5 594.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 129.25 594.67 T +(13) 241 594.67 T +(import) 76.5 581.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 110 581.67 T +(6) 195.5 581.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 201 581.67 T +0 0 0 1 0 0 0 K +1 11 Q +(15) 207 581.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 218 581.67 T +0 0 0 1 0 0 0 K +1 11 Q +(23) 224 581.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 581.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 241 581.67 T +(ImportError) 76.5 568.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 134.75 568.67 T +(43) 241 568.67 T +(in) 76.5 555.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 90.75 555.67 T +(35) 224 555.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 555.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 241 555.67 T +(INDENT token) 76.5 542.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 148.5 542.67 T +(4) 246.5 542.67 T +(Indentation) 76.5 529.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 132 529.67 T +(4) 246.5 529.67 T +(indentation) 76.5 516.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 129.25 516.67 T +(4) 246.5 516.67 T +(indentation errors) 76.5 503.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 159.5 503.67 T +(5) 246.5 503.67 T +(index operation) 76.5 490.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 490.67 T +(13) 241 490.67 T +(IndexError) 76.5 477.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 129.25 477.67 T +(40) 241 477.67 T +(inheritance) 76.5 464.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 129.25 464.67 T +(49) 241 464.67 T +(initialization) 76.5 451.67 T +(module) 94.5 438.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 132 438.67 T +(43) 241 438.67 T +(input) 76.5 425.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 104.5 425.67 T +(52) 241 425.67 T +(instance) 76.5 412.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 118.25 412.67 T +(15) 207 412.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 218 412.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 224 412.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 412.67 T +0 0 0 1 0 0 0 K +1 11 Q +(32) 241 412.67 T +(call) 94.5 399.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 115.5 399.67 T +(20) 241 399.67 T +(class) 94.5 386.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 121 386.67 T +(16) 241 386.67 T +(integer) 76.5 373.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 112.75 373.67 T +(8) 212.5 373.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 218 373.67 T +0 0 0 1 0 0 0 K +1 11 Q +(12) 224 373.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 373.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 241 373.67 T +(long) 94.5 360.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 118.25 360.67 T +(8) 246.5 360.67 T +(integer literal) 76.5 347.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 140.25 347.67 T +(8) 246.5 347.67 T +(interactive mode) 76.5 334.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 154 334.67 T +(51) 241 334.67 T +(internal type) 76.5 321.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 137.5 321.67 T +(16) 241 321.67 T +(interpreter) 76.5 308.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 126.5 308.67 T +(51) 241 308.67 T +(invertion) 76.5 295.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 121 295.67 T +(32) 241 295.67 T +(is) 76.5 282.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 88 282.67 T +(11) 224 282.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 282.67 T +0 0 0 1 0 0 0 K +1 11 Q +(35) 241 282.67 T +(is not) 76.5 269.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 104.5 269.67 T +(35) 241 269.67 T +(item) 76.5 256.67 T +(selection) 94.5 243.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 137.5 243.67 T +(13) 241 243.67 T +(string) 94.5 230.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 123.75 230.67 T +(30) 241 230.67 T +0 12 Q +(K) 76.5 209 T +1 11 Q +(key) 76.5 195.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 96.25 195.67 T +(28) 241 195.67 T +(key/datum pair) 76.5 182.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 182.67 T +(28) 241 182.67 T +(keyword) 76.5 169.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 118.25 169.67 T +(5) 246.5 169.67 T +0 12 Q +(L) 76.5 148 T +1 11 Q +(Lambda) 76.5 134.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 118.25 134.67 T +(35) 241 134.67 T +(leading whitespace) 76.5 121.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 165 121.67 T +(4) 246.5 121.67 T +(len) 76.5 108.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . .) 93.5 108.67 T +(13) 241 108.67 T +(lexical analysis) 76.5 95.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 148.5 95.67 T +(3) 246.5 95.67 T +(lexical analyzer) 76.5 82.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 151.25 82.67 T +(5) 246.5 82.67 T +(lexical definitions) 76.5 69.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 159.5 69.67 T +(1) 246.5 69.67 T +(line) 306 712.67 T +(blank) 324 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 352 699.67 T +(4) 476 699.67 T +(continuation) 324 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 382.25 686.67 T +(3) 476 686.67 T +(joining) 324 673.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 360.25 673.67 T +(3) 476 673.67 T +(physical) 324 660.67 T +(split across) 342 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 396 647.67 T +(3) 476 647.67 T +(line joining) 306 634.67 T +(implicit) 324 621.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 363 621.67 T +(4) 476 621.67 T +(line structure) 306 608.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 368.5 608.67 T +(3) 476 608.67 T +(lines) 306 595.67 T +(logical) 324 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 357.5 582.67 T +(3) 476 582.67 T +(physical) 324 569.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 365.75 569.67 T +(3) 476 569.67 T +(list) 306 556.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . .) 324.5 556.67 T +(13) 402.5 556.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 413.5 556.67 T +0 0 0 1 0 0 0 K +1 11 Q +(28) 419.5 556.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 430.5 556.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 436.5 556.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 556.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 453.5 556.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 556.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 470.5 556.67 T +(empty) 324 543.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 354.75 543.67 T +(28) 470.5 543.67 T +(expression) 324 530.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . .) 376.75 530.67 T +(36) 453.5 530.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 530.67 T +0 0 0 1 0 0 0 K +1 11 Q +(39) 470.5 530.67 T +(target) 324 517.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 354.75 517.67 T +(40) 470.5 517.67 T +(deletion) 342 504.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 504.67 T +(41) 470.5 504.67 T +(Literal) 306 491.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 341 491.67 T +(6) 476 491.67 T +(literal) 306 478.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 335.5 478.67 T +(27) 470.5 478.67 T +(locals) 306 465.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 335.5 465.67 T +(24) 453.5 465.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 465.67 T +0 0 0 1 0 0 0 K +1 11 Q +(44) 470.5 465.67 T +(logical line) 306 452.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 360.25 452.67 T +(3) 476 452.67 T +(long integer) 306 439.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 363 439.67 T +(12) 453.5 439.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 439.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 470.5 439.67 T +(long integer literal) 306 426.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 390.5 426.67 T +(8) 476 426.67 T +(loop) 306 413.67 T +(over mutable sequence) 324 400.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . .) 429 400.67 T +(46) 470.5 400.67 T +0 12 Q +(M) 306 379 T +1 11 Q +(makefile) 306 365.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 349.25 365.67 T +(16) 470.5 365.67 T +(mapping) 306 352.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . .) 349.25 352.67 T +(13) 419.5 352.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 430.5 352.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 436.5 352.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 352.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 453.5 352.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 352.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 470.5 352.67 T +(method) 306 339.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 343.75 339.67 T +(32) 470.5 339.67 T +(bound) 324 326.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 354.75 326.67 T +(14) 470.5 326.67 T +(built-in) 324 313.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 360.25 313.67 T +(15) 470.5 313.67 T +(unbound) 324 300.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 365.75 300.67 T +(14) 470.5 300.67 T +(user-defined) 324 287.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 287.67 T +(14) 470.5 287.67 T +(creation) 342 274.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 274.67 T +(14) 470.5 274.67 T +(method object) 306 261.67 T +(__name__) 324 248.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 374 248.67 T +(14) 470.5 248.67 T +(im_class) 324 235.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 365.75 235.67 T +(14) 470.5 235.67 T +(im_func) 324 222.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 365.75 222.67 T +(14) 470.5 222.67 T +(im_func.__doc__) 324 209.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . .) 407 209.67 T +(14) 470.5 209.67 T +(im_self) 324 196.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 360.25 196.67 T +(14) 470.5 196.67 T +(minus) 306 183.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 338.25 183.67 T +(32) 470.5 183.67 T +(module) 306 170.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 343.75 170.67 T +(15) 436.5 170.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 170.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 453.5 170.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 170.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 470.5 170.67 T +(built-in) 324 157.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 360.25 157.67 T +(43) 470.5 157.67 T +(extension) 324 144.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 371.25 144.67 T +(12) 470.5 144.67 T +(importing) 324 131.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 371.25 131.67 T +(43) 470.5 131.67 T +(user-defined) 324 118.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 118.67 T +(43) 470.5 118.67 T +(modulo) 306 105.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 343.75 105.67 T +(33) 470.5 105.67 T +(multiplication) 306 92.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 371.25 92.67 T +(33) 470.5 92.67 T +(mutable) 306 79.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 346.5 79.67 T +(14) 436.5 79.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 447.5 79.67 T +0 0 0 1 0 0 0 K +1 11 Q +(39) 453.5 79.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 464.5 79.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 470.5 79.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "56" 62 +%%Page: "57" 63 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +0 X +0 0 0 1 0 0 0 K +4.8 (I) 288 748 S +0 9.6 Q +4.8 (NDEX) 296.13 748 S +0 0 0 1 0 0 0 K +1 10 Q +(57) 525.5 32.83 T +0 0 0 1 0 0 0 K +315 720 315 63 2 L +0.5 H +2 Z +N +85.5 720 85.5 63 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(mutable sequence) 94.5 712.67 T +(loop over) 112.5 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 159.5 699.67 T +(46) 259 699.67 T +0 12 Q +(N) 94.5 678 T +1 11 Q +(name) 94.5 664.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 123.75 664.67 T +(5) 247.5 664.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 664.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 259 664.67 T +(binding) 112.5 651.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 151.25 651.67 T +(23) 242 651.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 651.67 T +0 0 0 1 0 0 0 K +1 11 Q +(39) 259 651.67 T +(class) 112.5 638.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 638.67 T +(49) 259 638.67 T +(function) 112.5 625.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 625.67 T +(48) 259 625.67 T +(global) 112.5 612.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 143 612.67 T +(27) 259 612.67 T +(mangling) 112.5 599.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 159.5 599.67 T +(6) 264.5 599.67 T +(module) 112.5 586.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 148.5 586.67 T +(43) 259 586.67 T +(rebinding) 112.5 573.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 159.5 573.67 T +(23) 242 573.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 573.67 T +0 0 0 1 0 0 0 K +1 11 Q +(39) 259 573.67 T +(unbinding) 112.5 560.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 162.25 560.67 T +(23) 242 560.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 560.67 T +0 0 0 1 0 0 0 K +1 11 Q +(41) 259 560.67 T +(name space) 94.5 547.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 151.25 547.67 T +(23) 259 547.67 T +(global) 112.5 534.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 143 534.67 T +(14) 242 534.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 534.67 T +0 0 0 1 0 0 0 K +1 11 Q +(23) 259 534.67 T +(local) 112.5 521.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 521.67 T +(23) 259 521.67 T +(module) 112.5 508.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 148.5 508.67 T +(15) 259 508.67 T +(NameError) 94.5 495.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 495.67 T +(24) 242 495.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 495.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 259 495.67 T +(negation) 94.5 482.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 482.67 T +(32) 259 482.67 T +(NEWLINE token) 94.5 469.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . .) 176 469.67 T +(3) 236 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 241.5 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(4) 247.5 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(45) 259 469.67 T +(None) 94.5 456.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 123.75 456.67 T +(12) 242 456.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 456.67 T +0 0 0 1 0 0 0 K +1 11 Q +(39) 259 456.67 T +(not) 94.5 443.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 112.75 443.67 T +(35) 259 443.67 T +(not in) 94.5 430.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 123.75 430.67 T +(35) 259 430.67 T +(notation) 94.5 417.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 134.75 417.67 T +(1) 264.5 417.67 T +(null operation) 94.5 404.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 159.5 404.67 T +(41) 259 404.67 T +(number) 94.5 391.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 132 391.67 T +(8) 230.5 391.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 236 391.67 T +0 0 0 1 0 0 0 K +1 11 Q +(12) 242 391.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 391.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 259 391.67 T +(numbers) 94.5 378.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 137.5 378.67 T +(16) 259 378.67 T +(numeric) 94.5 365.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 365.67 T +(12) 259 365.67 T +(numeric arithmetic) 94.5 352.67 T +(mixed mode) 112.5 339.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 170.5 339.67 T +(22) 259 339.67 T +(numeric literal) 94.5 326.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 162.25 326.67 T +(8) 264.5 326.67 T +0 12 Q +(O) 94.5 305 T +1 11 Q +(object) 94.5 291.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 126.5 291.67 T +(11) 259 291.67 T +(address in memory) 112.5 278.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . .) 200.75 278.67 T +(11) 259 278.67 T +(container) 112.5 265.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 156.75 265.67 T +(11) 259 265.67 T +(identity) 112.5 252.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 151.25 252.67 T +(11) 259 252.67 T +(immutable) 112.5 239.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 165 239.67 T +(11) 259 239.67 T +(mutable) 112.5 226.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 151.25 226.67 T +(11) 259 226.67 T +(reference to external resource) 112.5 213.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. .) 247.5 213.67 T +(11) 259 213.67 T +(type) 112.5 200.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 200.67 T +(11) 259 200.67 T +(unreachable) 112.5 187.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 170.5 187.67 T +(11) 259 187.67 T +(value) 112.5 174.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 140.25 174.67 T +(11) 259 174.67 T +(object closure) 94.5 161.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 159.5 161.67 T +(14) 259 161.67 T +(octal literal) 94.5 148.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 148.5 148.67 T +(8) 264.5 148.67 T +(open) 94.5 135.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 121 135.67 T +(16) 259 135.67 T +(operation) 94.5 122.67 T +(arithmetic) 112.5 109.67 T +(binary) 130.5 96.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 162.25 96.67 T +(32) 259 96.67 T +(unary) 130.5 83.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 159.5 83.67 T +(32) 259 83.67 T +(bit-wise) 112.5 70.67 T +(binary) 360 712.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 393.25 712.67 T +(33) 488.5 712.67 T +(unary) 360 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 390.5 699.67 T +(32) 488.5 699.67 T +(boolean) 342 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 686.67 T +(35) 488.5 686.67 T +(null) 342 673.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 363 673.67 T +(41) 488.5 673.67 T +(shifting) 342 660.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 379.5 660.67 T +(33) 488.5 660.67 T +(operator) 324 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 365.75 647.67 T +(9) 494 647.67 T +(optimization) 324 634.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 385 634.67 T +(15) 488.5 634.67 T +(or) 324 621.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . . .) 338.25 621.67 T +(35) 488.5 621.67 T +(bit-wise) 342 608.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 608.67 T +(34) 488.5 608.67 T +(exclusive) 342 595.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 387.75 595.67 T +(34) 488.5 595.67 T +(inclusive) 342 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 385 582.67 T +(34) 488.5 582.67 T +(ord) 324 569.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . . .) 343.75 569.67 T +(13) 488.5 569.67 T +(output) 324 556.67 T +(standard) 342 543.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 385 543.67 T +(39) 471.5 543.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 543.67 T +0 0 0 1 0 0 0 K +1 11 Q +(41) 488.5 543.67 T +(OverflowError) 324 530.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 393.25 530.67 T +(12) 488.5 530.67 T +0 12 Q +(P) 324 509 T +1 11 Q +(parameter) 324 495.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 371.25 495.67 T +(48) 488.5 495.67 T +(parameter list) 324 482.67 T +(variable length) 342 469.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . .) 412.5 469.67 T +(48) 488.5 469.67 T +(parenthesized form) 324 456.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . .) 412.5 456.67 T +(28) 488.5 456.67 T +(parser) 324 443.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . .) 354.75 443.67 T +(3) 482.5 443.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 488 443.67 T +0 0 0 1 0 0 0 K +1 11 Q +(5) 494 443.67 T +(Pascal) 324 430.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . .) 357.5 430.67 T +(46) 488.5 430.67 T +(pass) 324 417.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 346.5 417.67 T +(41) 488.5 417.67 T +(path) 324 404.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 346.5 404.67 T +(43) 488.5 404.67 T +(plain integer) 324 391.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 385 391.67 T +(12) 471.5 391.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 391.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 488.5 391.67 T +(plain integer literal) 324 378.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 412.5 378.67 T +(8) 494 378.67 T +(plus) 324 365.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 346.5 365.67 T +(32) 488.5 365.67 T +(popen) 324 352.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 354.75 352.67 T +(16) 488.5 352.67 T +(pow) 324 339.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 346.5 339.67 T +(32) 488.5 339.67 T +(power operator) 324 326.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 396 326.67 T +(32) 488.5 326.67 T +(primary) 324 313.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 363 313.67 T +(29) 488.5 313.67 T +(print) 324 300.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 349.25 300.67 T +(19) 471.5 300.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 300.67 T +0 0 0 1 0 0 0 K +1 11 Q +(41) 488.5 300.67 T +(program) 324 287.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 365.75 287.67 T +(51) 488.5 287.67 T +(PYTHONPATH) 324 274.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 401.5 274.67 T +(43) 488.5 274.67 T +0 12 Q +(Q) 324 253 T +1 11 Q +(quotes) 324 239.67 T +(backward) 342 226.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 390.5 226.67 T +(18) 471.5 226.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 226.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 488.5 226.67 T +(double) 342 213.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 376.75 213.67 T +(6) 494 213.67 T +(reverse) 342 200.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 379.5 200.67 T +(18) 471.5 200.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 200.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 488.5 200.67 T +(single) 342 187.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 374 187.67 T +(6) 494 187.67 T +0 12 Q +(R) 324 166 T +1 11 Q +(raise) 324 152.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . .) 349.25 152.67 T +(42) 488.5 152.67 T +(raised an exception) 324 139.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . .) 412.5 139.67 T +(25) 488.5 139.67 T +(range) 324 126.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 352 126.67 T +(46) 488.5 126.67 T +(raw_input) 324 113.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 374 113.67 T +(52) 488.5 113.67 T +(readline) 324 100.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 363 100.67 T +(52) 488.5 100.67 T +(recursive) 324 87.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 368.5 87.67 T +(29) 488.5 87.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "57" 63 +%%Page: "58" 64 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 12 Q +0 X +0 0 0 1 0 0 0 K +4.8 (I) 270 748 S +0 9.6 Q +4.8 (NDEX) 278.13 748 S +0 0 0 1 0 0 0 K +1 10 Q +(58) 76.5 32.83 T +0 0 0 1 0 0 0 K +297 720 297 63 2 L +0.5 H +2 Z +N +67.5 720 67.5 63 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(reference) 76.5 712.67 T +(attribute) 94.5 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 134.75 699.67 T +(29) 241 699.67 T +(circular) 94.5 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 132 686.67 T +(11) 241 686.67 T +(count) 94.5 673.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 123.75 673.67 T +(18) 241 673.67 T +(counting) 94.5 660.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 137.5 660.67 T +(11) 241 660.67 T +(remainder) 76.5 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 126.5 647.67 T +(33) 241 647.67 T +(repr) 76.5 634.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 99 634.67 T +(18) 207 634.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 218 634.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 224 634.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 634.67 T +0 0 0 1 0 0 0 K +1 11 Q +(39) 241 634.67 T +(representation) 76.5 621.67 T +(integer) 94.5 608.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 129.25 608.67 T +(12) 241 608.67 T +(reserved word) 76.5 595.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 143 595.67 T +(5) 246.5 595.67 T +(restricted execution mode) 76.5 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . .) 195.25 582.67 T +(24) 241 582.67 T +(return) 76.5 569.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 107.25 569.67 T +(42) 224 569.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 569.67 T +0 0 0 1 0 0 0 K +1 11 Q +(47) 241 569.67 T +(RuntimeError) 76.5 556.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 143 556.67 T +(42) 241 556.67 T +0 12 Q +(S) 76.5 535 T +1 11 Q +(scope) 76.5 521.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 107.25 521.67 T +(24) 241 521.67 T +(script) 76.5 508.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 104.5 508.67 T +(23) 241 508.67 T +(search path) 76.5 495.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 132 495.67 T +(43) 241 495.67 T +(semicolon) 76.5 482.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 126.5 482.67 T +(45) 241 482.67 T +(sequence) 76.5 469.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . .) 121 469.67 T +(13) 139 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 150 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(16) 156 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 167 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 173 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 184 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 190 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 201 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(35) 207 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 218 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 224 469.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 469.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 241 469.67 T +(immutable) 94.5 456.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 145.75 456.67 T +(13) 241 456.67 T +(mutable) 94.5 443.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 134.75 443.67 T +(13) 241 443.67 T +(sign) 76.5 430.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . .) 99 430.67 T +(9) 246.5 430.67 T +(slice) 76.5 417.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 101.75 417.67 T +(20) 207 417.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 218 417.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 224 417.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 417.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 241 417.67 T +(boundary) 94.5 404.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . .) 140.25 404.67 T +(30) 224 404.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 404.67 T +0 0 0 1 0 0 0 K +1 11 Q +(41) 241 404.67 T +(extended) 94.5 391.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 137.5 391.67 T +(30) 241 391.67 T +(simple) 94.5 378.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 129.25 378.67 T +(30) 241 378.67 T +(Slice objects) 76.5 365.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 137.5 365.67 T +(17) 241 365.67 T +(slicing) 76.5 352.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 110 352.67 T +(13) 224 352.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 352.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 241 352.67 T +(space) 76.5 339.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 104.5 339.67 T +(4) 246.5 339.67 T +(space count) 76.5 326.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 132 326.67 T +(4) 246.5 326.67 T +(square bracket) 76.5 313.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 145.75 313.67 T +(4) 246.5 313.67 T +(stack) 76.5 300.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 104.5 300.67 T +(4) 246.5 300.67 T +(execution) 94.5 287.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 143 287.67 T +(17) 241 287.67 T +(stack frame) 76.5 274.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 132 274.67 T +(17) 241 274.67 T +(standard inpu) 76.5 261.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 140.25 261.67 T +(51) 241 261.67 T +(standard output) 76.5 248.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 248.67 T +(41) 241 248.67 T +(statement) 76.5 235.67 T +(assignment) 94.5 222.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 222.67 T +(13) 241 222.67 T +(compound) 94.5 209.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 145.75 209.67 T +(45) 241 209.67 T +(expression) 94.5 196.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 145.75 196.67 T +(39) 241 196.67 T +(loop) 94.5 183.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 118.25 183.67 T +(42) 207 183.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 218 183.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 224 183.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 183.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 241 183.67 T +(simple) 94.5 170.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 129.25 170.67 T +(39) 241 170.67 T +(statement grouping) 76.5 157.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 165 157.67 T +(4) 246.5 157.67 T +(statements) 76.5 144.67 T +(assignment) 94.5 131.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 148.5 131.67 T +(39) 241 131.67 T +(stderr) 76.5 118.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 107.25 118.67 T +(16) 241 118.67 T +(stdin) 76.5 105.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . .) 101.75 105.67 T +(16) 241 105.67 T +(stdio) 76.5 92.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . . .) 101.75 92.67 T +(16) 241 92.67 T +(stdout) 76.5 79.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 107.25 79.67 T +(16) 224 79.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 79.67 T +0 0 0 1 0 0 0 K +1 11 Q +(42) 241 79.67 T +(str) 76.5 66.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . . . .) 90.75 66.67 T +(19) 224 66.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 235 66.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 241 66.67 T +(string) 306 712.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 335.5 712.67 T +(13) 419.5 712.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 430.5 712.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 436.5 712.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 447.5 712.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 453.5 712.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 712.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 470.5 712.67 T +(triple-quoted) 324 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 385 699.67 T +(4) 476 699.67 T +(string literal) 306 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . .) 363 686.67 T +(6) 476 686.67 T +(concatenation) 324 673.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 390.5 673.67 T +(7) 476 673.67 T +(subscription) 306 660.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . .) 363 660.67 T +(13) 453.5 660.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 660.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 470.5 660.67 T +(subtraction) 306 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 360.25 647.67 T +(33) 470.5 647.67 T +(suite) 306 634.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 330 634.67 T +(45) 470.5 634.67 T +(suppression) 306 621.67 T +(newline) 324 608.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 363 608.67 T +(42) 470.5 608.67 T +(syntax) 306 595.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 338.25 595.67 T +(1) 459 595.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 595.67 T +0 0 0 1 0 0 0 K +1 11 Q +(27) 470.5 595.67 T +(SyntaxError) 306 582.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 363 582.67 T +(43) 470.5 582.67 T +(sys) 306 569.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 324.5 569.67 T +(42) 453.5 569.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 569.67 T +0 0 0 1 0 0 0 K +1 11 Q +(51) 470.5 569.67 T +(exc_traceback) 324 556.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . .) 390.5 556.67 T +(17) 453.5 556.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 464.5 556.67 T +0 0 0 1 0 0 0 K +1 11 Q +(47) 470.5 556.67 T +(exc_type) 324 543.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 368.5 543.67 T +(47) 470.5 543.67 T +(exc_value) 324 530.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 374 530.67 T +(47) 470.5 530.67 T +(last_traceback) 324 517.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 390.5 517.67 T +(17) 470.5 517.67 T +(sys.exc_traceback) 306 504.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 390.5 504.67 T +(18) 470.5 504.67 T +(sys.last_traceback) 306 491.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 390.5 491.67 T +(18) 470.5 491.67 T +(sys.modules) 306 478.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 365.75 478.67 T +(43) 470.5 478.67 T +(sys.path) 306 465.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . .) 346.5 465.67 T +(43) 470.5 465.67 T +(sys.stderr) 306 452.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 352 452.67 T +(16) 470.5 452.67 T +(sys.stdin) 306 439.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 349.25 439.67 T +(16) 470.5 439.67 T +(sys.stdout) 306 426.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 354.75 426.67 T +(16) 470.5 426.67 T +0 12 Q +(T) 306 405 T +1 11 Q +(tab) 306 391.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . . . .) 324.5 391.67 T +(4) 476 391.67 T +(target) 306 378.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . .) 335.5 378.67 T +(40) 470.5 378.67 T +(deletion) 324 365.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 363 365.67 T +(41) 470.5 365.67 T +(loop control) 324 352.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 352.67 T +(42) 470.5 352.67 T +(test) 306 339.67 T +(identity) 324 326.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 363 326.67 T +(35) 470.5 326.67 T +(membership) 324 313.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . .) 382.25 313.67 T +(35) 470.5 313.67 T +(token) 306 300.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . . . . . .) 335.5 300.67 T +(3) 476 300.67 T +(delimiter) 324 287.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 368.5 287.67 T +(5) 476 287.67 T +(identifier) 324 274.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 368.5 274.67 T +(5) 476 274.67 T +(keyword) 324 261.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 365.75 261.67 T +(5) 476 261.67 T +(literal) 324 248.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 354.75 248.67 T +(5) 476 248.67 T +(operator) 324 235.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 365.75 235.67 T +(5) 476 235.67 T +(tracback object) 306 222.67 T +(tb_frame) 324 209.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 368.5 209.67 T +(17) 470.5 209.67 T +(tb_lasti) 324 196.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 360.25 196.67 T +(17) 470.5 196.67 T +(tb_lineno) 324 183.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 371.25 183.67 T +(17) 470.5 183.67 T +(tb_next) 324 170.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 360.25 170.67 T +(17) 470.5 170.67 T +(trace) 306 157.67 T +(stack) 324 144.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 352 144.67 T +(17) 470.5 144.67 T +(traceback) 306 131.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 352 131.67 T +(42) 470.5 131.67 T +(traceback object) 306 118.67 T +(exc_traceback) 324 105.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 390.5 105.67 T +(17) 470.5 105.67 T +(last_traceback) 324 92.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 390.5 92.67 T +(17) 470.5 92.67 T +(transformation) 306 79.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 374 79.67 T +(15) 470.5 79.67 T +(triple-quoted strings) 306 66.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 398.75 66.67 T +(6) 476 66.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "58" 64 +%%Page: "59" 65 +612 792 0 FMBEGINPAGE +[0 0 0 1 0 0 0] +[ 0 1 1 0 1 0 0] +[ 1 0 1 0 0 1 0] +[ 1 1 0 0 0 0 1] +[ 1 0 0 0 0 1 1] +[ 0 1 0 0 1 0 1] +[ 0 0 1 0 1 1 0] + 7 FrameSetSepColors +FrameNoSep +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +0 12 Q +0 X +0 0 0 1 0 0 0 K +4.8 (I) 288 748 S +0 9.6 Q +4.8 (NDEX) 296.13 748 S +0 0 0 1 0 0 0 K +1 10 Q +(59) 525.5 32.83 T +0 0 0 1 0 0 0 K +315 720 315 63 2 L +0.5 H +2 Z +N +85.5 720 85.5 63 2 L +N +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +1 11 Q +(try) 94.5 712.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 110 712.67 T +(11) 208 712.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 219 712.67 T +0 0 0 1 0 0 0 K +1 11 Q +(17) 225 712.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 236 712.67 T +0 0 0 1 0 0 0 K +1 11 Q +(42) 242 712.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 712.67 T +0 0 0 1 0 0 0 K +1 11 Q +(47) 259 712.67 T +(finally) 112.5 699.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 145.75 699.67 T +(43) 259 699.67 T +(tuple) 94.5 686.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . .) 121 686.67 T +(13) 191 686.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 202 686.67 T +0 0 0 1 0 0 0 K +1 11 Q +(29) 208 686.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 219 686.67 T +0 0 0 1 0 0 0 K +1 11 Q +(30) 225 686.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 236 686.67 T +0 0 0 1 0 0 0 K +1 11 Q +(36) 242 686.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 686.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 259 686.67 T +(empty) 112.5 673.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . .) 143 673.67 T +(13) 225 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 236 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(28) 242 673.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 673.67 T +0 0 0 1 0 0 0 K +1 11 Q +(36) 259 673.67 T +(singleton) 112.5 660.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . .) 156.75 660.67 T +(13) 259 660.67 T +(type) 94.5 647.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 118.25 647.67 T +(11) 242 647.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 253 647.67 T +0 0 0 1 0 0 0 K +1 11 Q +(12) 259 647.67 T +(data) 112.5 634.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . . .) 134.75 634.67 T +(12) 259 634.67 T +(immutable) 130.5 621.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . .) 181.5 621.67 T +(28) 259 621.67 T +(hierarchy) 112.5 608.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . .) 159.5 608.67 T +(12) 259 608.67 T +(TypeError) 94.5 595.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . .) 145.75 595.67 T +(29) 208 595.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 219 595.67 T +0 0 0 1 0 0 0 K +1 11 Q +(31) 225 595.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 236 595.67 T +0 0 0 1 0 0 0 K +1 11 Q +(32) 242 595.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 595.67 T +0 0 0 1 0 0 0 K +1 11 Q +(40) 259 595.67 T +0 12 Q +(U) 94.5 574 T +1 11 Q +(UNIX) 94.5 560.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . . . .) 126.5 560.67 T +(4) 247.5 560.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 253 560.67 T +0 0 0 1 0 0 0 K +1 11 Q +(51) 259 560.67 T +(unrecognized escape sequences) 94.5 547.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . .) 236.5 547.67 T +(7) 264.5 547.67 T +(user-defined) 94.5 534.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 154 534.67 T +(14) 259 534.67 T +(user-defined function) 94.5 521.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . .) 192.5 521.67 T +(32) 259 521.67 T +0 12 Q +(V) 324 712 T +1 11 Q +(value) 324 698.67 T +(parameter) 342 685.67 T +(default) 360 672.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . .) 396 672.67 T +(48) 488.5 672.67 T +(writing) 342 659.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 379.5 659.67 T +(39) 488.5 659.67 T +(ValueError) 324 646.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . .) 376.75 646.67 T +(33) 488.5 646.67 T +(values) 324 633.67 T +(writing) 342 620.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . . .) 379.5 620.67 T +(41) 488.5 620.67 T +(Von Neumann) 324 607.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . .) 393.25 607.67 T +(11) 488.5 607.67 T +0 12 Q +(W) 324 586 T +1 11 Q +(while) 324 572.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +(. . . . . . . . . . . . . . . . . . .) 352 572.67 T +(42) 454.5 572.67 T +0 0 0 1 0 0 0 K +1 12 Q +(\320) 465.5 572.67 T +0 0 0 1 0 0 0 K +1 11 Q +(43) 471.5 572.67 T +0 0 0 1 0 0 0 K +1 12 Q +(,) 482.5 572.67 T +0 0 0 1 0 0 0 K +1 11 Q +(46) 488.5 572.67 T +(whitespace) 324 559.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . . . .) 376.75 559.67 T +(4) 494 559.67 T +0 12 Q +(X) 324 538 T +1 11 Q +(xor) 324 524.67 T +(bit-wise) 342 511.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . . . . . . .) 382.25 511.67 T +(34) 488.5 511.67 T +0 12 Q +(Z) 324 490 T +1 11 Q +(ZeroDivisionError) 324 476.67 T +0 0 0 1 0 0 0 K +0 0 0 1 0 0 0 K +( . . . . . . . . . . . . . .) 409.75 476.67 T +(33) 488.5 476.67 T +0 0 0 1 0 0 0 K +FMENDPAGE +%%EndPage: "59" 65 +%%Trailer +%%BoundingBox: 0 0 612 792 +%%PageOrder: Ascend +%%Pages: 65 +%%DocumentFonts: Helvetica-Bold +%%+ Times-Roman +%%+ Courier +%%+ Times-Italic +%%+ Times-Bold +%%+ Helvetica +%%+ Courier-Oblique +%%+ Courier-Bold +%%EOF diff --git a/Doc/ref/ref.tex b/Doc/ref/ref.tex deleted file mode 100644 index e63fa7c..0000000 --- a/Doc/ref/ref.tex +++ /dev/null @@ -1,68 +0,0 @@ -\documentstyle[twoside,11pt,myformat]{report} - -\title{Python Reference Manual} - -\input{boilerplate} - -% Tell \index to actually write the .idx file -\makeindex - -\begin{document} - -\pagenumbering{roman} - -\maketitle - -\input{copyright} - -\begin{abstract} - -\noindent -Python is a simple, yet powerful, interpreted programming language -that bridges the gap between C and shell programming, and is thus -ideally suited for ``throw-away programming'' and rapid prototyping. -Its syntax is put together from constructs borrowed from a variety of -other languages; most prominent are influences from ABC, C, Modula-3 -and Icon. - -The Python interpreter is easily extended with new functions and data -types implemented in C. Python is also suitable as an extension -language for highly customizable C applications such as editors or -window managers. - -Python is available for various operating systems, amongst which -several flavors of {\UNIX} (including Linux), the Apple Macintosh O.S., -MS-DOS, MS-Windows 3.1, Windows NT, and OS/2. - -This reference manual describes the syntax and ``core semantics'' of -the language. It is terse, but attempts to be exact and complete. -The semantics of non-essential built-in object types and of the -built-in functions and modules are described in the {\em Python -Library Reference}. For an informal introduction to the language, see -the {\em Python Tutorial}. - -\end{abstract} - -\pagebreak - -{ -\parskip = 0mm -\tableofcontents -} - -\pagebreak - -\pagenumbering{arabic} - -\include{ref1} % Introduction -\include{ref2} % Lexical analysis -\include{ref3} % Data model -\include{ref4} % Execution model -\include{ref5} % Expressions and conditions -\include{ref6} % Simple statements -\include{ref7} % Compound statements -\include{ref8} % Top-level components - -\input{ref.ind} - -\end{document} diff --git a/Doc/ref/ref1.tex b/Doc/ref/ref1.tex deleted file mode 100644 index 30bfcce..0000000 --- a/Doc/ref/ref1.tex +++ /dev/null @@ -1,81 +0,0 @@ -\chapter{Introduction} - -This reference manual describes the Python programming language. -It is not intended as a tutorial. - -While I am trying to be as precise as possible, I chose to use English -rather than formal specifications for everything except syntax and -lexical analysis. This should make the document more understandable -to the average reader, but will leave room for ambiguities. -Consequently, if you were coming from Mars and tried to re-implement -Python from this document alone, you might have to guess things and in -fact you would probably end up implementing quite a different language. -On the other hand, if you are using -Python and wonder what the precise rules about a particular area of -the language are, you should definitely be able to find them here. - -It is dangerous to add too many implementation details to a language -reference document --- the implementation may change, and other -implementations of the same language may work differently. On the -other hand, there is currently only one Python implementation, and -its particular quirks are sometimes worth being mentioned, especially -where the implementation imposes additional limitations. Therefore, -you'll find short ``implementation notes'' sprinkled throughout the -text. - -Every Python implementation comes with a number of built-in and -standard modules. These are not documented here, but in the separate -{\em Python Library Reference} document. A few built-in modules are -mentioned when they interact in a significant way with the language -definition. - -\section{Notation} - -The descriptions of lexical analysis and syntax use a modified BNF -grammar notation. This uses the following style of definition: -\index{BNF} -\index{grammar} -\index{syntax} -\index{notation} - -\begin{verbatim} -name: lc_letter (lc_letter | "_")* -lc_letter: "a"..."z" -\end{verbatim} - -The first line says that a \verb@name@ is an \verb@lc_letter@ followed by -a sequence of zero or more \verb@lc_letter@s and underscores. An -\verb@lc_letter@ in turn is any of the single characters `a' through `z'. -(This rule is actually adhered to for the names defined in lexical and -grammar rules in this document.) - -Each rule begins with a name (which is the name defined by the rule) -and a colon. A vertical bar (\verb@|@) is used to separate -alternatives; it is the least binding operator in this notation. A -star (\verb@*@) means zero or more repetitions of the preceding item; -likewise, a plus (\verb@+@) means one or more repetitions, and a -phrase enclosed in square brackets (\verb@[ ]@) means zero or one -occurrences (in other words, the enclosed phrase is optional). The -\verb@*@ and \verb@+@ operators bind as tightly as possible; -parentheses are used for grouping. Literal strings are enclosed in -quotes. White space is only meaningful to separate tokens. -Rules are normally contained on a single line; rules with many -alternatives may be formatted alternatively with each line after the -first beginning with a vertical bar. - -In lexical definitions (as the example above), two more conventions -are used: Two literal characters separated by three dots mean a choice -of any single character in the given (inclusive) range of \ASCII{} -characters. A phrase between angular brackets (\verb@<...>@) gives an -informal description of the symbol defined; e.g. this could be used -to describe the notion of `control character' if needed. -\index{lexical definitions} -\index{ASCII} - -Even though the notation used is almost the same, there is a big -difference between the meaning of lexical and syntactic definitions: -a lexical definition operates on the individual characters of the -input source, while a syntax definition operates on the stream of -tokens generated by the lexical analysis. All uses of BNF in the next -chapter (``Lexical Analysis'') are lexical definitions; uses in -subsequent chapters are syntactic definitions. diff --git a/Doc/ref/ref2.tex b/Doc/ref/ref2.tex deleted file mode 100644 index b093998..0000000 --- a/Doc/ref/ref2.tex +++ /dev/null @@ -1,372 +0,0 @@ -\chapter{Lexical analysis} - -A Python program is read by a {\em parser}. Input to the parser is a -stream of {\em tokens}, generated by the {\em lexical analyzer}. This -chapter describes how the lexical analyzer breaks a file into tokens. -\index{lexical analysis} -\index{parser} -\index{token} - -\section{Line structure} - -A Python program is divided in a number of logical lines. The end of -a logical line is represented by the token NEWLINE. Statements cannot -cross logical line boundaries except where NEWLINE is allowed by the -syntax (e.g. between statements in compound statements). -\index{line structure} -\index{logical line} -\index{NEWLINE token} - -\subsection{Comments} - -A comment starts with a hash character (\verb@#@) that is not part of -a string literal, and ends at the end of the physical line. A comment -always signifies the end of the logical line. Comments are ignored by -the syntax. -\index{comment} -\index{logical line} -\index{physical line} -\index{hash character} - -\subsection{Explicit line joining} - -Two or more physical lines may be joined into logical lines using -backslash characters (\verb/\/), as follows: when a physical line ends -in a backslash that is not part of a string literal or comment, it is -joined with the following forming a single logical line, deleting the -backslash and the following end-of-line character. For example: -\index{physical line} -\index{line joining} -\index{line continuation} -\index{backslash character} -% -\begin{verbatim} -if 1900 < year < 2100 and 1 <= month <= 12 \ - and 1 <= day <= 31 and 0 <= hour < 24 \ - and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date - return 1 -\end{verbatim} - -A line ending in a backslash cannot carry a comment; a backslash does -not continue a comment (but it does continue a string literal, see -below). - -\subsection{Implicit line joining} - -Expressions in parentheses, square brackets or curly braces can be -split over more than one physical line without using backslashes. -For example: - -\begin{verbatim} -month_names = ['Januari', 'Februari', 'Maart', # These are the - 'April', 'Mei', 'Juni', # Dutch names - 'Juli', 'Augustus', 'September', # for the months - 'Oktober', 'November', 'December'] # of the year -\end{verbatim} - -Implicitly continued lines can carry comments. The indentation of the -continuation lines is not important. Blank continuation lines are -allowed. - -\subsection{Blank lines} - -A logical line that contains only spaces, tabs, and possibly a -comment, is ignored (i.e., no NEWLINE token is generated), except that -during interactive input of statements, an entirely blank logical line -terminates a multi-line statement. -\index{blank line} - -\subsection{Indentation} - -Leading whitespace (spaces and tabs) at the beginning of a logical -line is used to compute the indentation level of the line, which in -turn is used to determine the grouping of statements. -\index{indentation} -\index{whitespace} -\index{leading whitespace} -\index{space} -\index{tab} -\index{grouping} -\index{statement grouping} - -First, tabs are replaced (from left to right) by one to eight spaces -such that the total number of characters up to there is a multiple of -eight (this is intended to be the same rule as used by {\UNIX}). The -total number of spaces preceding the first non-blank character then -determines the line's indentation. Indentation cannot be split over -multiple physical lines using backslashes. - -The indentation levels of consecutive lines are used to generate -INDENT and DEDENT tokens, using a stack, as follows. -\index{INDENT token} -\index{DEDENT token} - -Before the first line of the file is read, a single zero is pushed on -the stack; this will never be popped off again. The numbers pushed on -the stack will always be strictly increasing from bottom to top. At -the beginning of each logical line, the line's indentation level is -compared to the top of the stack. If it is equal, nothing happens. -If it is larger, it is pushed on the stack, and one INDENT token is -generated. If it is smaller, it {\em must} be one of the numbers -occurring on the stack; all numbers on the stack that are larger are -popped off, and for each number popped off a DEDENT token is -generated. At the end of the file, a DEDENT token is generated for -each number remaining on the stack that is larger than zero. - -Here is an example of a correctly (though confusingly) indented piece -of Python code: - -\begin{verbatim} -def perm(l): - # Compute the list of all permutations of l - - if len(l) <= 1: - return [l] - r = [] - for i in range(len(l)): - s = l[:i] + l[i+1:] - p = perm(s) - for x in p: - r.append(l[i:i+1] + x) - return r -\end{verbatim} - -The following example shows various indentation errors: - -\begin{verbatim} - def perm(l): # error: first line indented - for i in range(len(l)): # error: not indented - s = l[:i] + l[i+1:] - p = perm(l[:i] + l[i+1:]) # error: unexpected indent - for x in p: - r.append(l[i:i+1] + x) - return r # error: inconsistent dedent -\end{verbatim} - -(Actually, the first three errors are detected by the parser; only the -last error is found by the lexical analyzer --- the indentation of -\verb@return r@ does not match a level popped off the stack.) - -\section{Other tokens} - -Besides NEWLINE, INDENT and DEDENT, the following categories of tokens -exist: identifiers, keywords, literals, operators, and delimiters. -Spaces and tabs are not tokens, but serve to delimit tokens. Where -ambiguity exists, a token comprises the longest possible string that -forms a legal token, when read from left to right. - -\section{Identifiers} - -Identifiers (also referred to as names) are described by the following -lexical definitions: -\index{identifier} -\index{name} - -\begin{verbatim} -identifier: (letter|"_") (letter|digit|"_")* -letter: lowercase | uppercase -lowercase: "a"..."z" -uppercase: "A"..."Z" -digit: "0"..."9" -\end{verbatim} - -Identifiers are unlimited in length. Case is significant. - -\subsection{Keywords} - -The following identifiers are used as reserved words, or {\em -keywords} of the language, and cannot be used as ordinary -identifiers. They must be spelled exactly as written here: -\index{keyword} -\index{reserved word} - -\begin{verbatim} -and elif global not try -break else if or while -class except import pass -continue finally in print -def for is raise -del from lambda return -\end{verbatim} - -% When adding keywords, pipe it through keywords.py for reformatting - -\section{Literals} \label{literals} - -Literals are notations for constant values of some built-in types. -\index{literal} -\index{constant} - -\subsection{String literals} - -String literals are described by the following lexical definitions: -\index{string literal} - -\begin{verbatim} -stringliteral: shortstring | longstring -shortstring: "'" shortstringitem* "'" | '"' shortstringitem* '"' -longstring: "'''" longstringitem* "'''" | '"""' longstringitem* '"""' -shortstringitem: shortstringchar | escapeseq -longstringitem: longstringchar | escapeseq -shortstringchar: <any ASCII character except "\" or newline or the quote> -longstringchar: <any ASCII character except "\"> -escapeseq: "\" <any ASCII character> -\end{verbatim} -\index{ASCII} - -In ``long strings'' (strings surrounded by sets of three quotes), -unescaped newlines and quotes are allowed (and are retained), except -that three unescaped quotes in a row terminate the string. (A -``quote'' is the character used to open the string, i.e. either -\verb/'/ or \verb/"/.) - -Escape sequences in strings are interpreted according to rules similar -to those used by Standard C. The recognized escape sequences are: -\index{physical line} -\index{escape sequence} -\index{Standard C} -\index{C} - -\begin{center} -\begin{tabular}{|l|l|} -\hline -\verb/\/{\em newline} & Ignored \\ -\verb/\\/ & Backslash (\verb/\/) \\ -\verb/\'/ & Single quote (\verb/'/) \\ -\verb/\"/ & Double quote (\verb/"/) \\ -\verb/\a/ & \ASCII{} Bell (BEL) \\ -\verb/\b/ & \ASCII{} Backspace (BS) \\ -%\verb/\E/ & \ASCII{} Escape (ESC) \\ -\verb/\f/ & \ASCII{} Formfeed (FF) \\ -\verb/\n/ & \ASCII{} Linefeed (LF) \\ -\verb/\r/ & \ASCII{} Carriage Return (CR) \\ -\verb/\t/ & \ASCII{} Horizontal Tab (TAB) \\ -\verb/\v/ & \ASCII{} Vertical Tab (VT) \\ -\verb/\/{\em ooo} & \ASCII{} character with octal value {\em ooo} \\ -\verb/\x/{\em xx...} & \ASCII{} character with hex value {\em xx...} \\ -\hline -\end{tabular} -\end{center} -\index{ASCII} - -In strict compatibility with Standard C, up to three octal digits are -accepted, but an unlimited number of hex digits is taken to be part of -the hex escape (and then the lower 8 bits of the resulting hex number -are used in all current implementations...). - -All unrecognized escape sequences are left in the string unchanged, -i.e., {\em the backslash is left in the string.} (This behavior is -useful when debugging: if an escape sequence is mistyped, the -resulting output is more easily recognized as broken. It also helps a -great deal for string literals used as regular expressions or -otherwise passed to other modules that do their own escape handling.) -\index{unrecognized escape sequence} - -\subsection{Numeric literals} - -There are three types of numeric literals: plain integers, long -integers, and floating point numbers. -\index{number} -\index{numeric literal} -\index{integer literal} -\index{plain integer literal} -\index{long integer literal} -\index{floating point literal} -\index{hexadecimal literal} -\index{octal literal} -\index{decimal literal} - -Integer and long integer literals are described by the following -lexical definitions: - -\begin{verbatim} -longinteger: integer ("l"|"L") -integer: decimalinteger | octinteger | hexinteger -decimalinteger: nonzerodigit digit* | "0" -octinteger: "0" octdigit+ -hexinteger: "0" ("x"|"X") hexdigit+ - -nonzerodigit: "1"..."9" -octdigit: "0"..."7" -hexdigit: digit|"a"..."f"|"A"..."F" -\end{verbatim} - -Although both lower case `l' and upper case `L' are allowed as suffix -for long integers, it is strongly recommended to always use `L', since -the letter `l' looks too much like the digit `1'. - -Plain integer decimal literals must be at most 2147483647 (i.e., the -largest positive integer, using 32-bit arithmetic). Plain octal and -hexadecimal literals may be as large as 4294967295, but values larger -than 2147483647 are converted to a negative value by subtracting -4294967296. There is no limit for long integer literals apart from -what can be stored in available memory. - -Some examples of plain and long integer literals: - -\begin{verbatim} -7 2147483647 0177 0x80000000 -3L 79228162514264337593543950336L 0377L 0x100000000L -\end{verbatim} - -Floating point literals are described by the following lexical -definitions: - -\begin{verbatim} -floatnumber: pointfloat | exponentfloat -pointfloat: [intpart] fraction | intpart "." -exponentfloat: (intpart | pointfloat) exponent -intpart: digit+ -fraction: "." digit+ -exponent: ("e"|"E") ["+"|"-"] digit+ -\end{verbatim} - -The allowed range of floating point literals is -implementation-dependent. - -Some examples of floating point literals: - -\begin{verbatim} -3.14 10. .001 1e100 3.14e-10 -\end{verbatim} - -Note that numeric literals do not include a sign; a phrase like -\verb@-1@ is actually an expression composed of the operator -\verb@-@ and the literal \verb@1@. - -\section{Operators} - -The following tokens are operators: -\index{operators} - -\begin{verbatim} -+ - * / % -<< >> & | ^ ~ -< == > <= <> != >= -\end{verbatim} - -The comparison operators \verb@<>@ and \verb@!=@ are alternate -spellings of the same operator. - -\section{Delimiters} - -The following tokens serve as delimiters or otherwise have a special -meaning: -\index{delimiters} - -\begin{verbatim} -( ) [ ] { } -, : . " ` ' -= ; -\end{verbatim} - -The following printing \ASCII{} characters are not used in Python. Their -occurrence outside string literals and comments is an unconditional -error: -\index{ASCII} - -\begin{verbatim} -@ $ ? -\end{verbatim} - -They may be used by future versions of the language though! diff --git a/Doc/ref/ref3.tex b/Doc/ref/ref3.tex deleted file mode 100644 index ca3525a..0000000 --- a/Doc/ref/ref3.tex +++ /dev/null @@ -1,885 +0,0 @@ -\chapter{Data model} - -\section{Objects, values and types} - -{\em Objects} are Python's abstraction for data. All data in a Python -program is represented by objects or by relations between objects. -(In a sense, and in conformance to Von Neumann's model of a -``stored program computer'', code is also represented by objects.) -\index{object} -\index{data} - -Every object has an identity, a type and a value. An object's {\em -identity} never changes once it has been created; you may think of it -as the object's address in memory. An object's {\em type} is also -unchangeable. It determines the operations that an object supports -(e.g. ``does it have a length?'') and also defines the possible -values for objects of that type. The {\em value} of some objects can -change. Objects whose value can change are said to be {\em mutable}; -objects whose value is unchangeable once they are created are called -{\em immutable}. The type determines an object's (im)mutability. -\index{identity of an object} -\index{value of an object} -\index{type of an object} -\index{mutable object} -\index{immutable object} - -Objects are never explicitly destroyed; however, when they become -unreachable they may be garbage-collected. An implementation is -allowed to delay garbage collection or omit it altogether --- it is a -matter of implementation quality how garbage collection is -implemented, as long as no objects are collected that are still -reachable. (Implementation note: the current implementation uses a -reference-counting scheme which collects most objects as soon as they -become unreachable, but never collects garbage containing circular -references.) -\index{garbage collection} -\index{reference counting} -\index{unreachable object} - -Note that the use of the implementation's tracing or debugging -facilities may keep objects alive that would normally be collectable. - -Some objects contain references to ``external'' resources such as open -files or windows. It is understood that these resources are freed -when the object is garbage-collected, but since garbage collection is -not guaranteed to happen, such objects also provide an explicit way to -release the external resource, usually a \verb@close@ method. -Programs are strongly recommended to always explicitly close such -objects. - -Some objects contain references to other objects; these are called -{\em containers}. Examples of containers are tuples, lists and -dictionaries. The references are part of a container's value. In -most cases, when we talk about the value of a container, we imply the -values, not the identities of the contained objects; however, when we -talk about the (im)mutability of a container, only the identities of -the immediately contained objects are implied. (So, if an immutable -container contains a reference to a mutable object, its value changes -if that mutable object is changed.) -\index{container} - -Types affect almost all aspects of objects' lives. Even the meaning -of object identity is affected in some sense: for immutable types, -operations that compute new values may actually return a reference to -any existing object with the same type and value, while for mutable -objects this is not allowed. E.g. after - -\begin{verbatim} -a = 1; b = 1; c = []; d = [] -\end{verbatim} - -\verb@a@ and \verb@b@ may or may not refer to the same object with the -value one, depending on the implementation, but \verb@c@ and \verb@d@ -are guaranteed to refer to two different, unique, newly created empty -lists. - -\section{The standard type hierarchy} \label{types} - -Below is a list of the types that are built into Python. Extension -modules written in C can define additional types. Future versions of -Python may add types to the type hierarchy (e.g. rational or complex -numbers, efficiently stored arrays of integers, etc.). -\index{type} -\indexii{data}{type} -\indexii{type}{hierarchy} -\indexii{extension}{module} -\index{C} - -Some of the type descriptions below contain a paragraph listing -`special attributes'. These are attributes that provide access to the -implementation and are not intended for general use. Their definition -may change in the future. There are also some `generic' special -attributes, not listed with the individual objects: \verb@__methods__@ -is a list of the method names of a built-in object, if it has any; -\verb@__members__@ is a list of the data attribute names of a built-in -object, if it has any. -\index{attribute} -\indexii{special}{attribute} -\indexiii{generic}{special}{attribute} -\ttindex{__methods__} -\ttindex{__members__} - -\begin{description} - -\item[None] -This type has a single value. There is a single object with this value. -This object is accessed through the built-in name \verb@None@. -It is returned from functions that don't explicitly return an object. -\ttindex{None} -\obindex{None@{\tt None}} - -\item[Numbers] -These are created by numeric literals and returned as results by -arithmetic operators and arithmetic built-in functions. Numeric -objects are immutable; once created their value never changes. Python -numbers are of course strongly related to mathematical numbers, but -subject to the limitations of numerical representation in computers. -\obindex{number} -\obindex{numeric} - -Python distinguishes between integers and floating point numbers: - -\begin{description} -\item[Integers] -These represent elements from the mathematical set of whole numbers. -\obindex{integer} - -There are two types of integers: - -\begin{description} - -\item[Plain integers] -These represent numbers in the range -2147483648 through 2147483647. -(The range may be larger on machines with a larger natural word -size, but not smaller.) -When the result of an operation falls outside this range, the -exception \verb@OverflowError@ is raised. -For the purpose of shift and mask operations, integers are assumed to -have a binary, 2's complement notation using 32 or more bits, and -hiding no bits from the user (i.e., all 4294967296 different bit -patterns correspond to different values). -\obindex{plain integer} - -\item[Long integers] -These represent numbers in an unlimited range, subject to available -(virtual) memory only. For the purpose of shift and mask operations, -a binary representation is assumed, and negative numbers are -represented in a variant of 2's complement which gives the illusion of -an infinite string of sign bits extending to the left. -\obindex{long integer} - -\end{description} % Integers - -The rules for integer representation are intended to give the most -meaningful interpretation of shift and mask operations involving -negative integers and the least surprises when switching between the -plain and long integer domains. For any operation except left shift, -if it yields a result in the plain integer domain without causing -overflow, it will yield the same result in the long integer domain or -when using mixed operands. -\indexii{integer}{representation} - -\item[Floating point numbers] -These represent machine-level double precision floating point numbers. -You are at the mercy of the underlying machine architecture and -C implementation for the accepted range and handling of overflow. -\obindex{floating point} -\indexii{floating point}{number} -\index{C} - -\end{description} % Numbers - -\item[Sequences] -These represent finite ordered sets indexed by natural numbers. -The built-in function \verb@len()@ returns the number of elements -of a sequence. When this number is \var{n}, the index set contains -the numbers 0, 1, \ldots, \var{n}-1. Element \var{i} of sequence -\var{a} is selected by \code{\var{a}[\var{i}]}. -\obindex{seqence} -\bifuncindex{len} -\index{index operation} -\index{item selection} -\index{subscription} - -Sequences also support slicing: \verb@a[i:j]@ selects all elements -with index \var{k} such that \var{i} \code{<=} \var{k} \code{<} -\var{j}. When used as an expression, a slice is a sequence of the -same type --- this implies that the index set is renumbered so that it -starts at 0 again. -\index{slicing} - -Sequences are distinguished according to their mutability: - -\begin{description} -% -\item[Immutable sequences] -An object of an immutable sequence type cannot change once it is -created. (If the object contains references to other objects, -these other objects may be mutable and may be changed; however -the collection of objects directly referenced by an immutable object -cannot change.) -\obindex{immutable sequence} -\obindex{immutable} - -The following types are immutable sequences: - -\begin{description} - -\item[Strings] -The elements of a string are characters. There is no separate -character type; a character is represented by a string of one element. -Characters represent (at least) 8-bit bytes. The built-in -functions \verb@chr()@ and \verb@ord()@ convert between characters -and nonnegative integers representing the byte values. -Bytes with the values 0-127 represent the corresponding \ASCII{} values. -The string data type is also used to represent arrays of bytes, e.g. -to hold data read from a file. -\obindex{string} -\index{character} -\index{byte} -\index{ASCII} -\bifuncindex{chr} -\bifuncindex{ord} - -(On systems whose native character set is not \ASCII{}, strings may use -EBCDIC in their internal representation, provided the functions -\verb@chr()@ and \verb@ord()@ implement a mapping between \ASCII{} and -EBCDIC, and string comparison preserves the \ASCII{} order. -Or perhaps someone can propose a better rule?) -\index{ASCII} -\index{EBCDIC} -\index{character set} -\indexii{string}{comparison} -\bifuncindex{chr} -\bifuncindex{ord} - -\item[Tuples] -The elements of a tuple are arbitrary Python objects. -Tuples of two or more elements are formed by comma-separated lists -of expressions. A tuple of one element (a `singleton') can be formed -by affixing a comma to an expression (an expression by itself does -not create a tuple, since parentheses must be usable for grouping of -expressions). An empty tuple can be formed by enclosing `nothing' in -parentheses. -\obindex{tuple} -\indexii{singleton}{tuple} -\indexii{empty}{tuple} - -\end{description} % Immutable sequences - -\item[Mutable sequences] -Mutable sequences can be changed after they are created. The -subscription and slicing notations can be used as the target of -assignment and \verb@del@ (delete) statements. -\obindex{mutable sequece} -\obindex{mutable} -\indexii{assignment}{statement} -\index{delete} -\stindex{del} -\index{subscription} -\index{slicing} - -There is currently a single mutable sequence type: - -\begin{description} - -\item[Lists] -The elements of a list are arbitrary Python objects. Lists are formed -by placing a comma-separated list of expressions in square brackets. -(Note that there are no special cases needed to form lists of length 0 -or 1.) -\obindex{list} - -\end{description} % Mutable sequences - -\end{description} % Sequences - -\item[Mapping types] -These represent finite sets of objects indexed by arbitrary index sets. -The subscript notation \verb@a[k]@ selects the element indexed -by \verb@k@ from the mapping \verb@a@; this can be used in -expressions and as the target of assignments or \verb@del@ statements. -The built-in function \verb@len()@ returns the number of elements -in a mapping. -\bifuncindex{len} -\index{subscription} -\obindex{mapping} - -There is currently a single mapping type: - -\begin{description} - -\item[Dictionaries] -These represent finite sets of objects indexed by almost arbitrary -values. The only types of values not acceptable as keys are values -containing lists or dictionaries or other mutable types that are -compared by value rather than by object identity --- the reason being -that the implementation requires that a key's hash value be constant. -Numeric types used for keys obey the normal rules for numeric -comparison: if two numbers compare equal (e.g. 1 and 1.0) then they -can be used interchangeably to index the same dictionary entry. - -Dictionaries are mutable; they are created by the \verb@{...}@ -notation (see section \ref{dict}). -\obindex{dictionary} -\obindex{mutable} - -\end{description} % Mapping types - -\item[Callable types] -These are the types to which the function call (invocation) operation, -written as \verb@function(argument, argument, ...)@, can be applied: -\indexii{function}{call} -\index{invocation} -\indexii{function}{argument} -\obindex{callable} - -\begin{description} - -\item[User-defined functions] -A user-defined function object is created by a function definition -(see section \ref{function}). It should be called with an argument -list containing the same number of items as the function's formal -parameter list. -\indexii{user-defined}{function} -\obindex{function} -\obindex{user-defined function} - -Special read-only attributes: \verb@func_code@ is the code object -representing the compiled function body, and \verb@func_globals@ is (a -reference to) the dictionary that holds the function's global -variables --- it implements the global name space of the module in -which the function was defined. -\ttindex{func_code} -\ttindex{func_globals} -\indexii{global}{name space} - -\item[User-defined methods] -A user-defined method (a.k.a. {\em object closure}) is a pair of a -class instance object and a user-defined function. It should be -called with an argument list containing one item less than the number -of items in the function's formal parameter list. When called, the -class instance becomes the first argument, and the call arguments are -shifted one to the right. -\obindex{method} -\obindex{user-defined method} -\indexii{user-defined}{method} -\index{object closure} - -Special read-only attributes: \verb@im_self@ is the class instance -object, \verb@im_func@ is the function object. -\ttindex{im_func} -\ttindex{im_self} - -\item[Built-in functions] -A built-in function object is a wrapper around a C function. Examples -of built-in functions are \verb@len@ and \verb@math.sin@. There -are no special attributes. The number and type of the arguments are -determined by the C function. -\obindex{built-in function} -\obindex{function} -\index{C} - -\item[Built-in methods] -This is really a different disguise of a built-in function, this time -containing an object passed to the C function as an implicit extra -argument. An example of a built-in method is \verb@list.append@ if -\verb@list@ is a list object. -\obindex{built-in method} -\obindex{method} -\indexii{built-in}{method} - -\item[Classes] -Class objects are described below. When a class object is called as a -function, a new class instance (also described below) is created and -returned. This implies a call to the class's \verb@__init__@ method -if it has one. Any arguments are passed on to the \verb@__init__@ -method --- if there is no \verb@__init__@ method, the class must be called -without arguments. -\ttindex{__init__} -\obindex{class} -\obindex{class instance} -\obindex{instance} -\indexii{class object}{call} - -\end{description} - -\item[Modules] -Modules are imported by the \verb@import@ statement (see section -\ref{import}). A module object is a container for a module's name -space, which is a dictionary (the same dictionary as referenced by the -\verb@func_globals@ attribute of functions defined in the module). -Module attribute references are translated to lookups in this -dictionary. A module object does not contain the code object used to -initialize the module (since it isn't needed once the initialization -is done). -\stindex{import} -\obindex{module} - -Attribute assignment update the module's name space dictionary. - -Special read-only attribute: \verb@__dict__@ yields the module's name -space as a dictionary object. Predefined attributes: \verb@__name__@ -yields the module's name as a string object; \verb@__doc__@ yields the -module's documentation string as a string object, or -\verb@None@ if no documentation string was found. -\ttindex{__dict__} -\ttindex{__name__} -\ttindex{__doc__} -\indexii{module}{name space} - -\item[Classes] -Class objects are created by class definitions (see section -\ref{class}). A class is a container for a dictionary containing the -class's name space. Class attribute references are translated to -lookups in this dictionary. When an attribute name is not found -there, the attribute search continues in the base classes. The search -is depth-first, left-to-right in the order of their occurrence in the -base class list. -\obindex{class} -\obindex{class instance} -\obindex{instance} -\indexii{class object}{call} -\index{container} -\obindex{dictionary} -\indexii{class}{attribute} - -Class attribute assignments update the class's dictionary, never the -dictionary of a base class. -\indexiii{class}{attribute}{assignment} - -A class can be called as a function to yield a class instance (see -above). -\indexii{class object}{call} - -Special read-only attributes: \verb@__dict__@ yields the dictionary -containing the class's name space; \verb@__bases__@ yields a tuple -(possibly empty or a singleton) containing the base classes, in the -order of their occurrence in the base class list. -\ttindex{__dict__} -\ttindex{__bases__} - -\item[Class instances] -A class instance is created by calling a class object as a -function. A class instance has a dictionary in which -attribute references are searched. When an attribute is not found -there, and the instance's class has an attribute by that name, and -that class attribute is a user-defined function (and in no other -cases), the instance attribute reference yields a user-defined method -object (see above) constructed from the instance and the function. -\obindex{class instance} -\obindex{instance} -\indexii{class}{instance} -\indexii{class instance}{attribute} - -Attribute assignments update the instance's dictionary. -\indexiii{class instance}{attribute}{assignment} - -Class instances can pretend to be numbers, sequences, or mappings if -they have methods with certain special names. These are described in -section \ref{specialnames}. -\obindex{number} -\obindex{sequence} -\obindex{mapping} - -Special read-only attributes: \verb@__dict__@ yields the attribute -dictionary; \verb@__class__@ yields the instance's class. -\ttindex{__dict__} -\ttindex{__class__} - -\item[Files] -A file object represents an open file. (It is a wrapper around a C -{\tt stdio} file pointer.) File objects are created by the -\verb@open()@ built-in function, and also by \verb@posix.popen()@ and -the \verb@makefile@ method of socket objects. \verb@sys.stdin@, -\verb@sys.stdout@ and \verb@sys.stderr@ are file objects corresponding -to the interpreter's standard input, output and error streams. -See the Python Library Reference for methods of file objects and other -details. -\obindex{file} -\index{C} -\index{stdio} -\bifuncindex{open} -\bifuncindex{popen} -\bifuncindex{makefile} -\ttindex{stdin} -\ttindex{stdout} -\ttindex{stderr} -\ttindex{sys.stdin} -\ttindex{sys.stdout} -\ttindex{sys.stderr} - -\item[Internal types] -A few types used internally by the interpreter are exposed to the user. -Their definition may change with future versions of the interpreter, -but they are mentioned here for completeness. -\index{internal type} - -\begin{description} - -\item[Code objects] -Code objects represent ``pseudo-compiled'' executable Python code. -The difference between a code -object and a function object is that the function object contains an -explicit reference to the function's context (the module in which it -was defined) while a code object contains no context. -\obindex{code} - -Special read-only attributes: \verb@co_code@ is a string representing -the sequence of instructions; \verb@co_consts@ is a list of literals -used by the code; \verb@co_names@ is a list of names (strings) used by -the code; \verb@co_filename@ is the filename from which the code was -compiled. (To find out the line numbers, you would have to decode the -instructions; the standard library module \verb@dis@ contains an -example of how to do this.) -\ttindex{co_code} -\ttindex{co_consts} -\ttindex{co_names} -\ttindex{co_filename} - -\item[Frame objects] -Frame objects represent execution frames. They may occur in traceback -objects (see below). -\obindex{frame} - -Special read-only attributes: \verb@f_back@ is to the previous -stack frame (towards the caller), or \verb@None@ if this is the bottom -stack frame; \verb@f_code@ is the code object being executed in this -frame; \verb@f_globals@ is the dictionary used to look up global -variables; \verb@f_locals@ is used for local variables; -\verb@f_lineno@ gives the line number and \verb@f_lasti@ gives the -precise instruction (this is an index into the instruction string of -the code object). -\ttindex{f_back} -\ttindex{f_code} -\ttindex{f_globals} -\ttindex{f_locals} -\ttindex{f_lineno} -\ttindex{f_lasti} - -\item[Traceback objects] \label{traceback} -Traceback objects represent a stack trace of an exception. A -traceback object is created when an exception occurs. When the search -for an exception handler unwinds the execution stack, at each unwound -level a traceback object is inserted in front of the current -traceback. When an exception handler is entered -(see also section \ref{try}), the stack trace is -made available to the program as \verb@sys.exc_traceback@. When the -program contains no suitable handler, the stack trace is written -(nicely formatted) to the standard error stream; if the interpreter is -interactive, it is also made available to the user as -\verb@sys.last_traceback@. -\obindex{traceback} -\indexii{stack}{trace} -\indexii{exception}{handler} -\indexii{execution}{stack} -\ttindex{exc_traceback} -\ttindex{last_traceback} -\ttindex{sys.exc_traceback} -\ttindex{sys.last_traceback} - -Special read-only attributes: \verb@tb_next@ is the next level in the -stack trace (towards the frame where the exception occurred), or -\verb@None@ if there is no next level; \verb@tb_frame@ points to the -execution frame of the current level; \verb@tb_lineno@ gives the line -number where the exception occurred; \verb@tb_lasti@ indicates the -precise instruction. The line number and last instruction in the -traceback may differ from the line number of its frame object if the -exception occurred in a \verb@try@ statement with no matching -\verb@except@ clause or with a \verb@finally@ clause. -\ttindex{tb_next} -\ttindex{tb_frame} -\ttindex{tb_lineno} -\ttindex{tb_lasti} -\stindex{try} - -\end{description} % Internal types - -\end{description} % Types - - -\section{Special method names} \label{specialnames} - -A class can implement certain operations that are invoked by special -syntax (such as subscription or arithmetic operations) by defining -methods with special names. For instance, if a class defines a -method named \verb@__getitem__@, and \verb@x@ is an instance of this -class, then \verb@x[i]@ is equivalent to \verb@x.__getitem__(i)@. -(The reverse is not true --- if \verb@x@ is a list object, -\verb@x.__getitem__(i)@ is not equivalent to \verb@x[i]@.) -\ttindex{__getitem__} - -Except for \verb@__repr__@, \verb@__str__@ and \verb@__cmp__@, -attempts to execute an -operation raise an exception when no appropriate method is defined. -For \verb@__repr__@, the default is to return a string describing the -object's class and address. -For \verb@__cmp__@, the default is to compare instances based on their -address. -For \verb@__str__@, the default is to use \verb@__repr__@. -\ttindex{__repr__} -\ttindex{__str__} -\ttindex{__cmp__} - - -\subsection{Special methods for any type} - -\begin{description} - -\item[{\tt __init__(self, args...)}] -Called when the instance is created. The arguments are those passed -to the class constructor expression. If a base class has an -\code{__init__} method the derived class's \code{__init__} method must -explicitly call it to ensure proper initialization of the base class -part of the instance. -\ttindex{__init__} -\indexii{class}{constructor} - - -\item[{\tt __del__(self)}] -Called when the instance is about to be destroyed. If a base class -has an \code{__del__} method the derived class's \code{__del__} method -must explicitly call it to ensure proper deletion of the base class -part of the instance. Note that it is possible for the \code{__del__} -method to postpone destruction of the instance by creating a new -reference to it. It may then be called at a later time when this new -reference is deleted. It is not guaranteed that -\code{__del__} methods are called for objects that still exist when -the interpreter exits. -If an exception occurs in a \code{__del__} method, it is ignored, and -a warning is printed on stderr. -\ttindex{__del__} -\stindex{del} - -Note that \code{del x} doesn't directly call \code{x.__del__} --- the -former decrements the reference count for \code{x} by one, but -\code{x.__del__} is only called when its reference count reaches zero. - -\strong{Warning:} due to the precarious circumstances under which -\code{__del__} methods are executed, exceptions that occur during -their execution are \emph{ignored}. - -\item[{\tt __repr__(self)}] -Called by the \verb@repr()@ built-in function and by string conversions -(reverse or backward quotes) to compute the string representation of an object. -\ttindex{__repr__} -\bifuncindex{repr} -\indexii{string}{conversion} -\indexii{reverse}{quotes} -\indexii{backward}{quotes} -\index{back-quotes} - -\item[{\tt __str__(self)}] -Called by the \verb@str()@ built-in function and by the \verb@print@ -statement compute the string representation of an object. -\ttindex{__str__} -\bifuncindex{str} -\stindex{print} - -\item[{\tt __cmp__(self, other)}] -Called by all comparison operations. Should return -1 if -\verb@self < other@, 0 if \verb@self == other@, +1 if -\verb@self > other@. If no \code{__cmp__} operation is defined, class -instances are compared by object identity (``address''). -(Implementation note: due to limitations in the interpreter, -exceptions raised by comparisons are ignored, and the objects will be -considered equal in this case.) -\ttindex{__cmp__} -\bifuncindex{cmp} -\index{comparisons} - -\item[{\tt __hash__(self)}] -Called for the key object for dictionary operations, -and by the built-in function -\code{hash()}. Should return a 32-bit integer usable as a hash value -for dictionary operations. The only required property is that objects -which compare equal have the same hash value; it is advised to somehow -mix together (e.g. using exclusive or) the hash values for the -components of the object that also play a part in comparison of -objects. If a class does not define a \code{__cmp__} method it should -not define a \code{__hash__} operation either; if it defines -\code{__cmp__} but not \code{__hash__} its instances will not be -usable as dictionary keys. If a class defines mutable objects and -implements a \code{__cmp__} method it should not implement -\code{__hash__}, since the dictionary implementation assumes that a -key's hash value is a constant. -\obindex{dictionary} -\ttindex{__cmp__} -\ttindex{__hash__} -\bifuncindex{hash} - -\item[{\tt __call__(self, *args)}] -Called when the instance is ``called'' as a function. -\ttindex{__call__} -\indexii{call}{instance} - -\end{description} - - -\subsection{Special methods for attribute access} - -The following methods can be used to change the meaning of attribute -access for class instances. - -\begin{description} - -\item[{\tt __getattr__(self, name)}] -Called when an attribute lookup has not found the attribute in the -usual places (i.e. it is not an instance attribute nor is it found in -the class tree for \code{self}). \code{name} is the attribute name. -\ttindex{__getattr__} - -Note that if the attribute is found through the normal mechanism, -\code{__getattr__} is not called. (This is an asymmetry between -\code{__getattr__} and \code{__setattr__}.) -This is done both for efficiency reasons and because otherwise -\code{__getattr__} would have no way to access other attributes of the -instance. -Note that at least for instance variables, \code{__getattr__} can fake -total control by simply not inserting any values in the instance -attribute dictionary. -\ttindex{__setattr__} - -\item[{\tt __setattr__(self, name, value)}] -Called when an attribute assignment is attempted. This is called -instead of the normal mechanism (i.e. store the value as an instance -attribute). \code{name} is the attribute name, \code{value} is the -value to be assigned to it. -\ttindex{__setattr__} - -If \code{__setattr__} wants to assign to an instance attribute, it -should not simply execute \code{self.\var{name} = value} --- this would -cause a recursive call. Instead, it should insert the value in the -dictionary of instance attributes, e.g. \code{self.__dict__[name] = -value}. -\ttindex{__dict__} - -\item[{\tt __delattr__(self, name)}] -Like \code{__setattr__} but for attribute deletion instead of -assignment. -\ttindex{__delattr__} - -\end{description} - - -\subsection{Special methods for sequence and mapping types} - -\begin{description} - -\item[{\tt __len__(self)}] -Called to implement the built-in function \verb@len()@. Should return -the length of the object, an integer \verb@>=@ 0. Also, an object -whose \verb@__len__()@ method returns 0 is considered to be false in a -Boolean context. -\ttindex{__len__} - -\item[{\tt __getitem__(self, key)}] -Called to implement evaluation of \verb@self[key]@. Note that the -special interpretation of negative keys (if the class wishes to -emulate a sequence type) is up to the \verb@__getitem__@ method. -\ttindex{__getitem__} - -\item[{\tt __setitem__(self, key, value)}] -Called to implement assignment to \verb@self[key]@. Same note as for -\verb@__getitem__@. -\ttindex{__setitem__} - -\item[{\tt __delitem__(self, key)}] -Called to implement deletion of \verb@self[key]@. Same note as for -\verb@__getitem__@. -\ttindex{__delitem__} - -\end{description} - - -\subsection{Special methods for sequence types} - -\begin{description} - -\item[{\tt __getslice__(self, i, j)}] -Called to implement evaluation of \verb@self[i:j]@. Note that missing -\verb@i@ or \verb@j@ are replaced by 0 or \verb@len(self)@, -respectively, and \verb@len(self)@ has been added (once) to originally -negative \verb@i@ or \verb@j@ by the time this function is called -(unlike for \verb@__getitem__@). -\ttindex{__getslice__} - -\item[{\tt __setslice__(self, i, j, sequence)}] -Called to implement assignment to \verb@self[i:j]@. Same notes as for -\verb@__getslice__@. -\ttindex{__setslice__} - -\item[{\tt __delslice__(self, i, j)}] -Called to implement deletion of \verb@self[i:j]@. Same notes as for -\verb@__getslice__@. -\ttindex{__delslice__} - -\end{description} - - -\subsection{Special methods for numeric types} - -\begin{description} - -\item[{\tt __add__(self, other)}]\itemjoin -\item[{\tt __sub__(self, other)}]\itemjoin -\item[{\tt __mul__(self, other)}]\itemjoin -\item[{\tt __div__(self, other)}]\itemjoin -\item[{\tt __mod__(self, other)}]\itemjoin -\item[{\tt __divmod__(self, other)}]\itemjoin -\item[{\tt __pow__(self, other)}]\itemjoin -\item[{\tt __lshift__(self, other)}]\itemjoin -\item[{\tt __rshift__(self, other)}]\itemjoin -\item[{\tt __and__(self, other)}]\itemjoin -\item[{\tt __xor__(self, other)}]\itemjoin -\item[{\tt __or__(self, other)}]\itembreak -Called to implement the binary arithmetic operations (\verb@+@, -\verb@-@, \verb@*@, \verb@/@, \verb@%@, \verb@divmod()@, \verb@pow()@, -\verb@<<@, \verb@>>@, \verb@&@, \verb@^@, \verb@|@). -\ttindex{__or__} -\ttindex{__xor__} -\ttindex{__and__} -\ttindex{__rshift__} -\ttindex{__lshift__} -\ttindex{__pow__} -\ttindex{__divmod__} -\ttindex{__mod__} -\ttindex{__div__} -\ttindex{__mul__} -\ttindex{__sub__} -\ttindex{__add__} - -\item[{\tt __neg__(self)}]\itemjoin -\item[{\tt __pos__(self)}]\itemjoin -\item[{\tt __abs__(self)}]\itemjoin -\item[{\tt __invert__(self)}]\itembreak -Called to implement the unary arithmetic operations (\verb@-@, \verb@+@, -\verb@abs()@ and \verb@~@). -\ttindex{__invert__} -\ttindex{__abs__} -\ttindex{__pos__} -\ttindex{__neg__} - -\item[{\tt __nonzero__(self)}] -Called to implement boolean testing; should return 0 or 1. An -alternative name for this method is \verb@__len__@. -\ttindex{__nonzero__} - -\item[{\tt __coerce__(self, other)}] -Called to implement ``mixed-mode'' numeric arithmetic. Should either -return a tuple containing self and other converted to a common numeric -type, or None if no way of conversion is known. When the common type -would be the type of other, it is sufficient to return None, since the -interpreter will also ask the other object to attempt a coercion (but -sometimes, if the implementation of the other type cannot be changed, -it is useful to do the conversion to the other type here). -\ttindex{__coerce__} - -Note that this method is not called to coerce the arguments to \verb@+@ -and \verb@*@, because these are also used to implement sequence -concatenation and repetition, respectively. Also note that, for the -same reason, in \verb@n*x@, where \verb@n@ is a built-in number and -\verb@x@ is an instance, a call to \verb@x.__mul__(n)@ is made.% -\footnote{The interpreter should really distinguish between -user-defined classes implementing sequences, mappings or numbers, but -currently it doesn't --- hence this strange exception.} -\ttindex{__mul__} - -\item[{\tt __int__(self)}]\itemjoin -\item[{\tt __long__(self)}]\itemjoin -\item[{\tt __float__(self)}]\itembreak -Called to implement the built-in functions \verb@int()@, \verb@long()@ -and \verb@float()@. Should return a value of the appropriate type. -\ttindex{__float__} -\ttindex{__long__} -\ttindex{__int__} - -\item[{\tt __oct__(self)}]\itemjoin -\item[{\tt __hex__(self)}]\itembreak -Called to implement the built-in functions \verb@oct()@ and -\verb@hex()@. Should return a string value. -\ttindex{__hex__} -\ttindex{__oct__} - -\end{description} diff --git a/Doc/ref/ref4.tex b/Doc/ref/ref4.tex deleted file mode 100644 index 4b4d522..0000000 --- a/Doc/ref/ref4.tex +++ /dev/null @@ -1,201 +0,0 @@ -\chapter{Execution model} -\index{execution model} - -\section{Code blocks, execution frames, and name spaces} \label{execframes} -\index{code block} -\indexii{execution}{frame} -\index{name space} - -A {\em code block} is a piece of Python program text that can be -executed as a unit, such as a module, a class definition or a function -body. Some code blocks (like modules) are executed only once, others -(like function bodies) may be executed many times. Code blocks may -textually contain other code blocks. Code blocks may invoke other -code blocks (that may or may not be textually contained in them) as -part of their execution, e.g. by invoking (calling) a function. -\index{code block} -\indexii{code}{block} - -The following are code blocks: A module is a code block. A function -body is a code block. A class definition is a code block. Each -command typed interactively is a separate code block; a script file is -a code block. The string argument passed to the built-in function -\verb@eval@ and to the \verb@exec@ statement are code blocks. -And finally, the -expression read and evaluated by the built-in function \verb@input@ is -a code block. - -A code block is executed in an execution frame. An {\em execution -frame} contains some administrative information (used for debugging), -determines where and how execution continues after the code block's -execution has completed, and (perhaps most importantly) defines two -name spaces, the local and the global name space, that affect -execution of the code block. -\indexii{execution}{frame} - -A {\em name space} is a mapping from names (identifiers) to objects. -A particular name space may be referenced by more than one execution -frame, and from other places as well. Adding a name to a name space -is called {\em binding} a name (to an object); changing the mapping of -a name is called {\em rebinding}; removing a name is {\em unbinding}. -Name spaces are functionally equivalent to dictionaries. -\index{name space} -\indexii{binding}{name} -\indexii{rebinding}{name} -\indexii{unbinding}{name} - -The {\em local name space} of an execution frame determines the default -place where names are defined and searched. The {\em global name -space} determines the place where names listed in \verb@global@ -statements are defined and searched, and where names that are not -explicitly bound in the current code block are searched. -\indexii{local}{name space} -\indexii{global}{name space} -\stindex{global} - -Whether a name is local or global in a code block is determined by -static inspection of the source text for the code block: in the -absence of \verb@global@ statements, a name that is bound anywhere in -the code block is local in the entire code block; all other names are -considered global. The \verb@global@ statement forces global -interpretation of selected names throughout the code block. The -following constructs bind names: formal parameters, \verb@import@ -statements, class and function definitions (these bind the class or -function name), and targets that are identifiers if occurring in an -assignment, \verb@for@ loop header, or \verb@except@ clause header. - -A target occurring in a \verb@del@ statement is also considered bound -for this purpose (though the actual semantics are to ``unbind'' the -name). - -When a global name is not found in the global name space, it is -searched in the list of ``built-in'' names (which is actually the -global name space of the module \verb@__builtin__@). When a name is not -found at all, the \verb@NameError@ exception is raised.% -\footnote{If the code block contains {\tt exec} statements or the -construct {\tt from \ldots import *}, the semantics of names not -explicitly mentioned in a {\tt global} statement change subtly: name -lookup first searches the local name space, then the global one, then -the built-in one.} -\bimodindex{__builtin__} -\stindex{from} -\stindex{exec} -\stindex{global} -\ttindex{NameError} - -The following table lists the meaning of the local and global name -space for various types of code blocks. The name space for a -particular module is automatically created when the module is first -referenced. Note that in almost all cases, the global name space is -the name space of the containing module --- scopes in Python do not -nest! - -\begin{center} -\begin{tabular}{|l|l|l|l|} -\hline -Code block type & Global name space & Local name space & Notes \\ -\hline -Module & n.s. for this module & same as global & \\ -Script & n.s. for \verb@__main__@ & same as global & \\ -Interactive command & n.s. for \verb@__main__@ & same as global & \\ -Class definition & global n.s. of containing block & new n.s. & \\ -Function body & global n.s. of containing block & new n.s. & (2) \\ -String passed to \verb@exec@ statement - & global n.s. of containing block - & local n.s. of containing block & (1) \\ -String passed to \verb@eval()@ - & global n.s. of caller & local n.s. of caller & (1) \\ -File read by \verb@execfile()@ - & global n.s. of caller & local n.s. of caller & (1) \\ -Expression read by \verb@input@ - & global n.s. of caller & local n.s. of caller & \\ -\hline -\end{tabular} -\end{center} -\bimodindex{__main__} - -Notes: - -\begin{description} - -\item[n.s.] means {\em name space} - -\item[(1)] The global and local name space for these can be -overridden with optional extra arguments. - -\item[(2)] The body of lambda forms (see section \ref{lambda}) is -treated exactly the same as a (nested) function definition. Lambda -forms have their own name space consisting of their formal arguments. -\indexii{lambda}{form} - -\end{description} - -The built-in functions \verb@globals()@ and \verb@locals()@ returns a -dictionary representing the current global and local name space, -respectively. The effect of modifications to this dictionary on the -name space are undefined.% -\footnote{The current implementations return the dictionary actually -used to implement the name space, {\em except} for functions, where -the optimizer may cause the local name space to be implemented -differently, and \verb@locals()@ returns a read-only dictionary.} - -\section{Exceptions} - -Exceptions are a means of breaking out of the normal flow of control -of a code block in order to handle errors or other exceptional -conditions. An exception is {\em raised} at the point where the error -is detected; it may be {\em handled} by the surrounding code block or -by any code block that directly or indirectly invoked the code block -where the error occurred. -\index{exception} -\index{raise an exception} -\index{handle an exception} -\index{exception handler} -\index{errors} -\index{error handling} - -The Python interpreter raises an exception when it detects an run-time -error (such as division by zero). A Python program can also -explicitly raise an exception with the \verb@raise@ statement. -Exception handlers are specified with the \verb@try...except@ -statement. - -Python uses the ``termination'' model of error handling: an exception -handler can find out what happened and continue execution at an outer -level, but it cannot repair the cause of the error and retry the -failing operation (except by re-entering the the offending piece of -code from the top). - -When an exception is not handled at all, the interpreter terminates -execution of the program, or returns to its interactive main loop. - -Exceptions are identified by string objects or class instances. Two -different string objects with the same value identify different -exceptions. An exception can be raised with a class instance. Such -exceptions are caught by specifying an except clause that has the -class name (or a base class) as the condition. - -When an exception is raised, an object (maybe \verb@None@) is passed -as the exception's ``parameter''; this object does not affect the -selection of an exception handler, but is passed to the selected -exception handler as additional information. For exceptions raised -with a class instance, the instance is passed as the ``parameter''. - -For example: - -\begin{verbatim} ->>> class Error: -... def __init__(self, msg): self.msg = msg -... ->>> class SpecificError(Error): pass -... ->>> try: -... raise SpecificError('broken') -... except Error, obj: -... print obj.msg -... -broken -\end{verbatim} - -See also the description of the \verb@try@ and \verb@raise@ -statements. diff --git a/Doc/ref/ref5.tex b/Doc/ref/ref5.tex deleted file mode 100644 index b2fea3c..0000000 --- a/Doc/ref/ref5.tex +++ /dev/null @@ -1,759 +0,0 @@ -\chapter{Expressions and conditions} -\index{expression} -\index{condition} - -{\bf Note:} In this and the following chapters, extended BNF notation -will be used to describe syntax, not lexical analysis. -\index{BNF} - -This chapter explains the meaning of the elements of expressions and -conditions. Conditions are a superset of expressions, and a condition -may be used wherever an expression is required by enclosing it in -parentheses. The only places where expressions are used in the syntax -instead of conditions is in expression statements and on the -right-hand side of assignment statements; this catches some nasty bugs -like accidentally writing \verb@x == 1@ instead of \verb@x = 1@. -\indexii{assignment}{statement} - -The comma plays several roles in Python's syntax. It is usually an -operator with a lower precedence than all others, but occasionally -serves other purposes as well; e.g. it separates function arguments, -is used in list and dictionary constructors, and has special semantics -in \verb@print@ statements. -\index{comma} - -When (one alternative of) a syntax rule has the form - -\begin{verbatim} -name: othername -\end{verbatim} - -and no semantics are given, the semantics of this form of \verb@name@ -are the same as for \verb@othername@. -\index{syntax} - -\section{Arithmetic conversions} -\indexii{arithmetic}{conversion} - -When a description of an arithmetic operator below uses the phrase -``the numeric arguments are converted to a common type'', -this both means that if either argument is not a number, a -\verb@TypeError@ exception is raised, and that otherwise -the following conversions are applied: -\exindex{TypeError} -\indexii{floating point}{number} -\indexii{long}{integer} -\indexii{plain}{integer} - -\begin{itemize} -\item first, if either argument is a floating point number, - the other is converted to floating point; -\item else, if either argument is a long integer, - the other is converted to long integer; -\item otherwise, both must be plain integers and no conversion - is necessary. -\end{itemize} - -\section{Atoms} -\index{atom} - -Atoms are the most basic elements of expressions. Forms enclosed in -reverse quotes or in parentheses, brackets or braces are also -categorized syntactically as atoms. The syntax for atoms is: - -\begin{verbatim} -atom: identifier | literal | enclosure -enclosure: parenth_form|list_display|dict_display|string_conversion -\end{verbatim} - -\subsection{Identifiers (Names)} -\index{name} -\index{identifier} - -An identifier occurring as an atom is a reference to a local, global -or built-in name binding. If a name is assigned to anywhere in a code -block (even in unreachable code), and is not mentioned in a -\verb@global@ statement in that code block, then it refers to a local -name throughout that code block. When it is not assigned to anywhere -in the block, or when it is assigned to but also explicitly listed in -a \verb@global@ statement, it refers to a global name if one exists, -else to a built-in name (and this binding may dynamically change). -\indexii{name}{binding} -\index{code block} -\stindex{global} -\indexii{built-in}{name} -\indexii{global}{name} - -When the name is bound to an object, evaluation of the atom yields -that object. When a name is not bound, an attempt to evaluate it -raises a \verb@NameError@ exception. -\exindex{NameError} - -\subsection{Literals} -\index{literal} - -Python knows string and numeric literals: - -\begin{verbatim} -literal: stringliteral | integer | longinteger | floatnumber -\end{verbatim} - -Evaluation of a literal yields an object of the given type (string, -integer, long integer, floating point number) with the given value. -The value may be approximated in the case of floating point literals. -See section \ref{literals} for details. - -All literals correspond to immutable data types, and hence the -object's identity is less important than its value. Multiple -evaluations of literals with the same value (either the same -occurrence in the program text or a different occurrence) may obtain -the same object or a different object with the same value. -\indexiii{immutable}{data}{type} - -(In the original implementation, all literals in the same code block -with the same type and value yield the same object.) - -\subsection{Parenthesized forms} -\index{parenthesized form} - -A parenthesized form is an optional condition list enclosed in -parentheses: - -\begin{verbatim} -parenth_form: "(" [condition_list] ")" -\end{verbatim} - -A parenthesized condition list yields whatever that condition list -yields. - -An empty pair of parentheses yields an empty tuple object. Since -tuples are immutable, the rules for literals apply here. -\indexii{empty}{tuple} - -(Note that tuples are not formed by the parentheses, but rather by use -of the comma operator. The exception is the empty tuple, for which -parentheses {\em are} required --- allowing unparenthesized ``nothing'' -in expressions would cause ambiguities and allow common typos to -pass uncaught.) -\index{comma} -\indexii{tuple}{display} - -\subsection{List displays} -\indexii{list}{display} - -A list display is a possibly empty series of conditions enclosed in -square brackets: - -\begin{verbatim} -list_display: "[" [condition_list] "]" -\end{verbatim} - -A list display yields a new list object. -\obindex{list} - -If it has no condition list, the list object has no items. Otherwise, -the elements of the condition list are evaluated from left to right -and inserted in the list object in that order. -\indexii{empty}{list} - -\subsection{Dictionary displays} \label{dict} -\indexii{dictionary}{display} - -A dictionary display is a possibly empty series of key/datum pairs -enclosed in curly braces: -\index{key} -\index{datum} -\index{key/datum pair} - -\begin{verbatim} -dict_display: "{" [key_datum_list] "}" -key_datum_list: key_datum ("," key_datum)* [","] -key_datum: condition ":" condition -\end{verbatim} - -A dictionary display yields a new dictionary object. -\obindex{dictionary} - -The key/datum pairs are evaluated from left to right to define the -entries of the dictionary: each key object is used as a key into the -dictionary to store the corresponding datum. - -Restrictions on the types of the key values are listed earlier in -section \ref{types}. -Clashes between duplicate keys are not detected; the last -datum (textually rightmost in the display) stored for a given key -value prevails. -\exindex{TypeError} - -\subsection{String conversions} -\indexii{string}{conversion} -\indexii{reverse}{quotes} -\indexii{backward}{quotes} -\index{back-quotes} - -A string conversion is a condition list enclosed in reverse (or -backward) quotes: - -\begin{verbatim} -string_conversion: "`" condition_list "`" -\end{verbatim} - -A string conversion evaluates the contained condition list and -converts the resulting object into a string according to rules -specific to its type. - -If the object is a string, a number, \verb@None@, or a tuple, list or -dictionary containing only objects whose type is one of these, the -resulting string is a valid Python expression which can be passed to -the built-in function \verb@eval()@ to yield an expression with the -same value (or an approximation, if floating point numbers are -involved). - -(In particular, converting a string adds quotes around it and converts -``funny'' characters to escape sequences that are safe to print.) - -It is illegal to attempt to convert recursive objects (e.g. lists or -dictionaries that contain a reference to themselves, directly or -indirectly.) -\obindex{recursive} - -The built-in function \verb@repr()@ performs exactly the same -conversion in its argument as enclosing it it reverse quotes does. -The built-in function \verb@str()@ performs a similar but more -user-friendly conversion. -\bifuncindex{repr} -\bifuncindex{str} - -\section{Primaries} \label{primaries} -\index{primary} - -Primaries represent the most tightly bound operations of the language. -Their syntax is: - -\begin{verbatim} -primary: atom | attributeref | subscription | slicing | call -\end{verbatim} - -\subsection{Attribute references} -\indexii{attribute}{reference} - -An attribute reference is a primary followed by a period and a name: - -\begin{verbatim} -attributeref: primary "." identifier -\end{verbatim} - -The primary must evaluate to an object of a type that supports -attribute references, e.g. a module or a list. This object is then -asked to produce the attribute whose name is the identifier. If this -attribute is not available, the exception \verb@AttributeError@ is -raised. Otherwise, the type and value of the object produced is -determined by the object. Multiple evaluations of the same attribute -reference may yield different objects. -\obindex{module} -\obindex{list} - -\subsection{Subscriptions} -\index{subscription} - -A subscription selects an item of a sequence (string, tuple or list) -or mapping (dictionary) object: -\obindex{sequence} -\obindex{mapping} -\obindex{string} -\obindex{tuple} -\obindex{list} -\obindex{dictionary} -\indexii{sequence}{item} - -\begin{verbatim} -subscription: primary "[" condition "]" -\end{verbatim} - -The primary must evaluate to an object of a sequence or mapping type. - -If it is a mapping, the condition must evaluate to an object whose -value is one of the keys of the mapping, and the subscription selects -the value in the mapping that corresponds to that key. - -If it is a sequence, the condition must evaluate to a plain integer. -If this value is negative, the length of the sequence is added to it -(so that, e.g. \verb@x[-1]@ selects the last item of \verb@x@.) -The resulting value must be a nonnegative integer smaller than the -number of items in the sequence, and the subscription selects the item -whose index is that value (counting from zero). - -A string's items are characters. A character is not a separate data -type but a string of exactly one character. -\index{character} -\indexii{string}{item} - -\subsection{Slicings} -\index{slicing} -\index{slice} - -A slicing (or slice) selects a range of items in a sequence (string, -tuple or list) object: -\obindex{sequence} -\obindex{string} -\obindex{tuple} -\obindex{list} - -\begin{verbatim} -slicing: primary "[" [condition] ":" [condition] "]" -\end{verbatim} - -The primary must evaluate to a sequence object. The lower and upper -bound expressions, if present, must evaluate to plain integers; -defaults are zero and the sequence's length, respectively. If either -bound is negative, the sequence's length is added to it. The slicing -now selects all items with index \var{k} such that -\code{\var{i} <= \var{k} < \var{j}} where \var{i} -and \var{j} are the specified lower and upper bounds. This may be an -empty sequence. It is not an error if \var{i} or \var{j} lie outside the -range of valid indexes (such items don't exist so they aren't -selected). - -\subsection{Calls} \label{calls} -\index{call} - -A call calls a callable object (e.g. a function) with a possibly empty -series of arguments:\footnote{The new syntax for keyword arguments is -not yet documented in this manual. See chapter 12 of the Tutorial.} -\obindex{callable} - -\begin{verbatim} -call: primary "(" [condition_list] ")" -\end{verbatim} - -The primary must evaluate to a callable object (user-defined -functions, built-in functions, methods of built-in objects, class -objects, and methods of class instances are callable). If it is a -class, the argument list must be empty; otherwise, the arguments are -evaluated. - -A call always returns some value, possibly \verb@None@, unless it -raises an exception. How this value is computed depends on the type -of the callable object. If it is: - -\begin{description} - -\item[a user-defined function:] the code block for the function is -executed, passing it the argument list. The first thing the code -block will do is bind the formal parameters to the arguments; this is -described in section \ref{function}. When the code block executes a -\verb@return@ statement, this specifies the return value of the -function call. -\indexii{function}{call} -\indexiii{user-defined}{function}{call} -\obindex{user-defined function} -\obindex{function} - -\item[a built-in function or method:] the result is up to the -interpreter; see the library reference manual for the descriptions of -built-in functions and methods. -\indexii{function}{call} -\indexii{built-in function}{call} -\indexii{method}{call} -\indexii{built-in method}{call} -\obindex{built-in method} -\obindex{built-in function} -\obindex{method} -\obindex{function} - -\item[a class object:] a new instance of that class is returned. -\obindex{class} -\indexii{class object}{call} - -\item[a class instance method:] the corresponding user-defined -function is called, with an argument list that is one longer than the -argument list of the call: the instance becomes the first argument. -\obindex{class instance} -\obindex{instance} -\indexii{instance}{call} -\indexii{class instance}{call} - -\end{description} - -\section{Unary arithmetic operations} -\indexiii{unary}{arithmetic}{operation} -\indexiii{unary}{bit-wise}{operation} - -All unary arithmetic (and bit-wise) operations have the same priority: - -\begin{verbatim} -u_expr: primary | "-" u_expr | "+" u_expr | "~" u_expr -\end{verbatim} - -The unary \verb@"-"@ (minus) operator yields the negation of its -numeric argument. -\index{negation} -\index{minus} - -The unary \verb@"+"@ (plus) operator yields its numeric argument -unchanged. -\index{plus} - -The unary \verb@"~"@ (invert) operator yields the bit-wise inversion -of its plain or long integer argument. The bit-wise inversion of -\verb@x@ is defined as \verb@-(x+1)@. -\index{inversion} - -In all three cases, if the argument does not have the proper type, -a \verb@TypeError@ exception is raised. -\exindex{TypeError} - -\section{Binary arithmetic operations} -\indexiii{binary}{arithmetic}{operation} - -The binary arithmetic operations have the conventional priority -levels. Note that some of these operations also apply to certain -non-numeric types. There is no ``power'' operator, so there are only -two levels, one for multiplicative operators and one for additive -operators: - -\begin{verbatim} -m_expr: u_expr | m_expr "*" u_expr - | m_expr "/" u_expr | m_expr "%" u_expr -a_expr: m_expr | aexpr "+" m_expr | aexpr "-" m_expr -\end{verbatim} - -The \verb@"*"@ (multiplication) operator yields the product of its -arguments. The arguments must either both be numbers, or one argument -must be a plain integer and the other must be a sequence. In the -former case, the numbers are converted to a common type and then -multiplied together. In the latter case, sequence repetition is -performed; a negative repetition factor yields an empty sequence. -\index{multiplication} - -The \verb@"/"@ (division) operator yields the quotient of its -arguments. The numeric arguments are first converted to a common -type. Plain or long integer division yields an integer of the same -type; the result is that of mathematical division with the `floor' -function applied to the result. Division by zero raises the -\verb@ZeroDivisionError@ exception. -\exindex{ZeroDivisionError} -\index{division} - -The \verb@"%"@ (modulo) operator yields the remainder from the -division of the first argument by the second. The numeric arguments -are first converted to a common type. A zero right argument raises -the \verb@ZeroDivisionError@ exception. The arguments may be floating -point numbers, e.g. \verb@3.14 % 0.7@ equals \verb@0.34@. The modulo -operator always yields a result with the same sign as its second -operand (or zero); the absolute value of the result is strictly -smaller than the second operand. -\index{modulo} - -The integer division and modulo operators are connected by the -following identity: \verb@x == (x/y)*y + (x%y)@. Integer division and -modulo are also connected with the built-in function \verb@divmod()@: -\verb@divmod(x, y) == (x/y, x%y)@. These identities don't hold for -floating point numbers; there a similar identity holds where -\verb@x/y@ is replaced by \verb@floor(x/y)@). - -The \verb@"+"@ (addition) operator yields the sum of its arguments. -The arguments must either both be numbers, or both sequences of the -same type. In the former case, the numbers are converted to a common -type and then added together. In the latter case, the sequences are -concatenated. -\index{addition} - -The \verb@"-"@ (subtraction) operator yields the difference of its -arguments. The numeric arguments are first converted to a common -type. -\index{subtraction} - -\section{Shifting operations} -\indexii{shifting}{operation} - -The shifting operations have lower priority than the arithmetic -operations: - -\begin{verbatim} -shift_expr: a_expr | shift_expr ( "<<" | ">>" ) a_expr -\end{verbatim} - -These operators accept plain or long integers as arguments. The -arguments are converted to a common type. They shift the first -argument to the left or right by the number of bits given by the -second argument. - -A right shift by \var{n} bits is defined as division by -\code{pow(2,\var{n})}. A left shift by \var{n} bits is defined as -multiplication with \code{pow(2,\var{n})}; for plain integers there is -no overflow check so this drops bits and flips the sign if the result -is not less than \code{pow(2,31)} in absolute value. - -Negative shift counts raise a \verb@ValueError@ exception. -\exindex{ValueError} - -\section{Binary bit-wise operations} -\indexiii{binary}{bit-wise}{operation} - -Each of the three bitwise operations has a different priority level: - -\begin{verbatim} -and_expr: shift_expr | and_expr "&" shift_expr -xor_expr: and_expr | xor_expr "^" and_expr -or_expr: xor_expr | or_expr "|" xor_expr -\end{verbatim} - -The \verb@"&"@ operator yields the bitwise AND of its arguments, which -must be plain or long integers. The arguments are converted to a -common type. -\indexii{bit-wise}{and} - -The \verb@"^"@ operator yields the bitwise XOR (exclusive OR) of its -arguments, which must be plain or long integers. The arguments are -converted to a common type. -\indexii{bit-wise}{xor} -\indexii{exclusive}{or} - -The \verb@"|"@ operator yields the bitwise (inclusive) OR of its -arguments, which must be plain or long integers. The arguments are -converted to a common type. -\indexii{bit-wise}{or} -\indexii{inclusive}{or} - -\section{Comparisons} -\index{comparison} - -Contrary to C, all comparison operations in Python have the same -priority, which is lower than that of any arithmetic, shifting or -bitwise operation. Also contrary to C, expressions like -\verb@a < b < c@ have the interpretation that is conventional in -mathematics: -\index{C} - -\begin{verbatim} -comparison: or_expr (comp_operator or_expr)* -comp_operator: "<"|">"|"=="|">="|"<="|"<>"|"!="|"is" ["not"]|["not"] "in" -\end{verbatim} - -Comparisons yield integer values: 1 for true, 0 for false. - -Comparisons can be chained arbitrarily, e.g. \code{x < y <= z} is -equivalent to \code{x < y and y <= z}, except that \code{y} is -evaluated only once (but in both cases \code{z} is not evaluated at all -when \code{x < y} is found to be false). -\indexii{chaining}{comparisons} - -Formally, if \var{a}, \var{b}, \var{c}, \ldots, \var{y}, \var{z} are -expressions and \var{opa}, \var{opb}, \ldots, \var{opy} are comparison -operators, then \var{a opa b opb c} \ldots \var{y opy z} is equivalent -to \var{a opa b} \code{and} \var{b opb c} \code{and} \ldots \code{and} -\var{y opy z}, except that each expression is evaluated at most once. - -Note that \var{a opa b opb c} doesn't imply any kind of comparison -between \var{a} and \var{c}, so that e.g.\ \code{x < y > z} is -perfectly legal (though perhaps not pretty). - -The forms \verb@<>@ and \verb@!=@ are equivalent; for consistency with -C, \verb@!=@ is preferred; where \verb@!=@ is mentioned below -\verb@<>@ is also implied. - -The operators {\tt "<", ">", "==", ">=", "<="}, and {\tt "!="} compare -the values of two objects. The objects needn't have the same type. -If both are numbers, they are coverted to a common type. Otherwise, -objects of different types {\em always} compare unequal, and are -ordered consistently but arbitrarily. - -(This unusual definition of comparison is done to simplify the -definition of operations like sorting and the \verb@in@ and -\verb@not@ \verb@in@ operators.) - -Comparison of objects of the same type depends on the type: - -\begin{itemize} - -\item -Numbers are compared arithmetically. - -\item -Strings are compared lexicographically using the numeric equivalents -(the result of the built-in function \verb@ord@) of their characters. - -\item -Tuples and lists are compared lexicographically using comparison of -corresponding items. - -\item -Mappings (dictionaries) are compared through lexicographic -comparison of their sorted (key, value) lists.% -\footnote{This is expensive since it requires sorting the keys first, -but about the only sensible definition. An earlier version of Python -compared dictionaries by identity only, but this caused surprises -because people expected to be able to test a dictionary for emptiness -by comparing it to {\tt \{\}}.} - -\item -Most other types compare unequal unless they are the same object; -the choice whether one object is considered smaller or larger than -another one is made arbitrarily but consistently within one -execution of a program. - -\end{itemize} - -The operators \verb@in@ and \verb@not in@ test for sequence -membership: if \var{y} is a sequence, \code{\var{x} in \var{y}} is -true if and only if there exists an index \var{i} such that -\code{\var{x} = \var{y}[\var{i}]}. -\code{\var{x} not in \var{y}} yields the inverse truth value. The -exception \verb@TypeError@ is raised when \var{y} is not a sequence, -or when \var{y} is a string and \var{x} is not a string of length one.% -\footnote{The latter restriction is sometimes a nuisance.} -\opindex{in} -\opindex{not in} -\indexii{membership}{test} -\obindex{sequence} - -The operators \verb@is@ and \verb@is not@ test for object identity: -\var{x} \code{is} \var{y} is true if and only if \var{x} and \var{y} -are the same object. \var{x} \code{is not} \var{y} yields the inverse -truth value. -\opindex{is} -\opindex{is not} -\indexii{identity}{test} - -\section{Boolean operations} \label{Booleans} -\indexii{Boolean}{operation} - -Boolean operations have the lowest priority of all Python operations: - -\begin{verbatim} -condition: or_test | lambda_form -or_test: and_test | or_test "or" and_test -and_test: not_test | and_test "and" not_test -not_test: comparison | "not" not_test -lambda_form: "lambda" [parameter_list]: condition -\end{verbatim} - -In the context of Boolean operations, and also when conditions are -used by control flow statements, the following values are interpreted -as false: \verb@None@, numeric zero of all types, empty sequences -(strings, tuples and lists), and empty mappings (dictionaries). All -other values are interpreted as true. - -The operator \verb@not@ yields 1 if its argument is false, 0 otherwise. -\opindex{not} - -The condition \var{x} \verb@and@ \var{y} first evaluates \var{x}; if -\var{x} is false, its value is returned; otherwise, \var{y} is -evaluated and the resulting value is returned. -\opindex{and} - -The condition \var{x} \verb@or@ \var{y} first evaluates \var{x}; if -\var{x} is true, its value is returned; otherwise, \var{y} is -evaluated and the resulting value is returned. -\opindex{or} - -(Note that \verb@and@ and \verb@or@ do not restrict the value and type -they return to 0 and 1, but rather return the last evaluated argument. -This is sometimes useful, e.g. if \verb@s@ is a string that should be -replaced by a default value if it is empty, the expression -\verb@s or 'foo'@ yields the desired value. Because \verb@not@ has to -invent a value anyway, it does not bother to return a value of the -same type as its argument, so e.g. \verb@not 'foo'@ yields \verb@0@, -not \verb@''@.) - -Lambda forms (lambda expressions) have the same syntactic position as -conditions. They are a shorthand to create anonymous functions; the -expression {\em {\tt lambda} arguments{\tt :} condition} -yields a function object that behaves virtually identical to one -defined with -{\em {\tt def} name {\tt (}arguments{\tt ): return} condition}. -See section \ref{function} for the syntax of -parameter lists. Note that functions created with lambda forms cannot -contain statements. -\label{lambda} -\indexii{lambda}{expression} -\indexii{lambda}{form} -\indexii{anonmymous}{function} - -\section{Expression lists and condition lists} -\indexii{expression}{list} -\indexii{condition}{list} - -\begin{verbatim} -expression_list: or_expr ("," or_expr)* [","] -condintion_list: condition ("," condition)* [","] -\end{verbatim} - -The only difference between expression lists and condition lists is -the lowest priority of operators that can be used in them without -being enclosed in parentheses; condition lists allow all operators, -while expression lists don't allow comparisons and Boolean operators -(they do allow bitwise and shift operators though). - -Expression lists are used in expression statements and assignments; -condition lists are used everywhere else where a list of -comma-separated values is required. - -An expression (condition) list containing at least one comma yields a -tuple. The length of the tuple is the number of expressions -(conditions) in the list. The expressions (conditions) are evaluated -from left to right. (Condition lists are used syntactically is a few -places where no tuple is constructed but a list of values is needed -nevertheless.) -\obindex{tuple} - -The trailing comma is required only to create a single tuple (a.k.a. a -{\em singleton}); it is optional in all other cases. A single -expression (condition) without a trailing comma doesn't create a -tuple, but rather yields the value of that expression (condition). -\indexii{trailing}{comma} - -(To create an empty tuple, use an empty pair of parentheses: -\verb@()@.) - -\section{Summary} - -The following table summarizes the operator precedences in Python, -from lowest precedence (least binding) to highest precedence (most -binding). Operators in the same box have the same precedence. Unless -the syntax is explicitly given, operators are binary. Operators in -the same box group left to right (except for comparisons, which -chain from left to right --- see above). - -\begin{center} -\begin{tabular}{|c|c|} -\hline -\code{or} & Boolean OR \\ -\hline -\code{and} & Boolean AND \\ -\hline -\code{not} \var{x} & Boolean NOT \\ -\hline -\code{in}, \code{not} \code{in} & Membership tests \\ -\code{is}, \code{is} \code{not} & Identity tests \\ -\code{<}, \code{<=}, \code{>}, \code{>=}, \code{<>}, \code{!=}, \code{=} & - Comparisons \\ -\hline -\code{|} & Bitwise OR \\ -\hline -\code{\^} & Bitwise XOR \\ -\hline -\code{\&} & Bitwise AND \\ -\hline -\code{<<}, \code{>>} & Shifts \\ -\hline -\code{+}, \code{-} & Addition and subtraction \\ -\hline -\code{*}, \code{/}, \code{\%} & Multiplication, division, remainder \\ -\hline -\code{+\var{x}}, \code{-\var{x}} & Positive, negative \\ -\code{\~\var{x}} & Bitwise not \\ -\hline -\code{\var{x}.\var{attribute}} & Attribute reference \\ -\code{\var{x}[\var{index}]} & Subscription \\ -\code{\var{x}[\var{index}:\var{index}]} & Slicing \\ -\code{\var{f}(\var{arguments}...)} & Function call \\ -\hline -\code{(\var{expressions}\ldots)} & Binding or tuple display \\ -\code{[\var{expressions}\ldots]} & List display \\ -\code{\{\var{key}:\var{datum}\ldots\}} & Dictionary display \\ -\code{`\var{expression}\ldots`} & String conversion \\ -\hline -\end{tabular} -\end{center} diff --git a/Doc/ref/ref6.tex b/Doc/ref/ref6.tex deleted file mode 100644 index 5bd468c..0000000 --- a/Doc/ref/ref6.tex +++ /dev/null @@ -1,512 +0,0 @@ -\chapter{Simple statements} -\indexii{simple}{statement} - -Simple statements are comprised within a single logical line. -Several simple statements may occur on a single line separated -by semicolons. The syntax for simple statements is: - -\begin{verbatim} -simple_stmt: expression_stmt - | assignment_stmt - | pass_stmt - | del_stmt - | print_stmt - | return_stmt - | raise_stmt - | break_stmt - | continue_stmt - | import_stmt - | global_stmt - | exec_stmt -\end{verbatim} - -\section{Expression statements} -\indexii{expression}{statement} - -Expression statements are used (mostly interactively) to compute and -write a value, or (usually) to call a procedure (a function that -returns no meaningful result; in Python, procedures return the value -\verb@None@): - -\begin{verbatim} -expression_stmt: condition_list -\end{verbatim} - -An expression statement evaluates the condition list (which may be a -single condition). -\indexii{expression}{list} - -In interactive mode, if the value is not \verb@None@, it is converted -to a string using the rules for string conversions (expressions in -reverse quotes), and the resulting string is written to standard -output (see section \ref{print}) on a line by itself. -(The exception for \verb@None@ is made so that procedure calls, which -are syntactically equivalent to expressions, do not cause any output.) -\ttindex{None} -\indexii{string}{conversion} -\index{output} -\indexii{standard}{output} -\indexii{writing}{values} -\indexii{procedure}{call} - -\section{Assignment statements} -\indexii{assignment}{statement} - -Assignment statements are used to (re)bind names to values and to -modify attributes or items of mutable objects: -\indexii{binding}{name} -\indexii{rebinding}{name} -\obindex{mutable} -\indexii{attribute}{assignment} - -\begin{verbatim} -assignment_stmt: (target_list "=")+ expression_list -target_list: target ("," target)* [","] -target: identifier | "(" target_list ")" | "[" target_list "]" - | attributeref | subscription | slicing -\end{verbatim} - -(See section \ref{primaries} for the syntax definitions for the last -three symbols.) - -An assignment statement evaluates the expression list (remember that -this can be a single expression or a comma-separated list, the latter -yielding a tuple) and assigns the single resulting object to each of -the target lists, from left to right. -\indexii{expression}{list} - -Assignment is defined recursively depending on the form of the target -(list). When a target is part of a mutable object (an attribute -reference, subscription or slicing), the mutable object must -ultimately perform the assignment and decide about its validity, and -may raise an exception if the assignment is unacceptable. The rules -observed by various types and the exceptions raised are given with the -definition of the object types (see section \ref{types}). -\index{target} -\indexii{target}{list} - -Assignment of an object to a target list is recursively defined as -follows. -\indexiii{target}{list}{assignment} - -\begin{itemize} -\item -If the target list is a single target: the object is assigned to that -target. - -\item -If the target list is a comma-separated list of targets: the object -must be a tuple with the same number of items as the list contains -targets, and the items are assigned, from left to right, to the -corresponding targets. - -\end{itemize} - -Assignment of an object to a single target is recursively defined as -follows. - -\begin{itemize} % nested - -\item -If the target is an identifier (name): - -\begin{itemize} - -\item -If the name does not occur in a \verb@global@ statement in the current -code block: the name is bound to the object in the current local name -space. -\stindex{global} - -\item -Otherwise: the name is bound to the object in the current global name -space. - -\end{itemize} % nested - -The name is rebound if it was already bound. - -\item -If the target is a target list enclosed in parentheses: the object is -assigned to that target list as described above. - -\item -If the target is a target list enclosed in square brackets: the object -must be a list with the same number of items as the target list -contains targets, and its items are assigned, from left to right, to -the corresponding targets. - -\item -If the target is an attribute reference: The primary expression in the -reference is evaluated. It should yield an object with assignable -attributes; if this is not the case, \verb@TypeError@ is raised. That -object is then asked to assign the assigned object to the given -attribute; if it cannot perform the assignment, it raises an exception -(usually but not necessarily \verb@AttributeError@). -\indexii{attribute}{assignment} - -\item -If the target is a subscription: The primary expression in the -reference is evaluated. It should yield either a mutable sequence -(list) object or a mapping (dictionary) object. Next, the subscript -expression is evaluated. -\indexii{subscription}{assignment} -\obindex{mutable} - -If the primary is a mutable sequence object (a list), the subscript -must yield a plain integer. If it is negative, the sequence's length -is added to it. The resulting value must be a nonnegative integer -less than the sequence's length, and the sequence is asked to assign -the assigned object to its item with that index. If the index is out -of range, \verb@IndexError@ is raised (assignment to a subscripted -sequence cannot add new items to a list). -\obindex{sequence} -\obindex{list} - -If the primary is a mapping (dictionary) object, the subscript must -have a type compatible with the mapping's key type, and the mapping is -then asked to create a key/datum pair which maps the subscript to -the assigned object. This can either replace an existing key/value -pair with the same key value, or insert a new key/value pair (if no -key with the same value existed). -\obindex{mapping} -\obindex{dictionary} - -\item -If the target is a slicing: The primary expression in the reference is -evaluated. It should yield a mutable sequence object (e.g. a list). The -assigned object should be a sequence object of the same type. Next, -the lower and upper bound expressions are evaluated, insofar they are -present; defaults are zero and the sequence's length. The bounds -should evaluate to (small) integers. If either bound is negative, the -sequence's length is added to it. The resulting bounds are clipped to -lie between zero and the sequence's length, inclusive. Finally, the -sequence object is asked to replace the slice with the items of the -assigned sequence. The length of the slice may be different from the -length of the assigned sequence, thus changing the length of the -target sequence, if the object allows it. -\indexii{slicing}{assignment} - -\end{itemize} - -(In the current implementation, the syntax for targets is taken -to be the same as for expressions, and invalid syntax is rejected -during the code generation phase, causing less detailed error -messages.) - -WARNING: Although the definition of assignment implies that overlaps -between the left-hand side and the right-hand side are `safe' (e.g. -\verb@a, b = b, a@ swaps two variables), overlaps within the -collection of assigned-to variables are not safe! For instance, the -following program prints \code@[0, 2]@: - -\begin{verbatim} -x = [0, 1] -i = 0 -i, x[i] = 1, 2 -print x -\end{verbatim} - - -\section{The {\tt pass} statement} -\stindex{pass} - -\begin{verbatim} -pass_stmt: "pass" -\end{verbatim} - -\verb@pass@ is a null operation --- when it is executed, nothing -happens. It is useful as a placeholder when a statement is -required syntactically, but no code needs to be executed, for example: -\indexii{null}{operation} - -\begin{verbatim} -def f(arg): pass # a function that does nothing (yet) - -class C: pass # a class with no methods (yet) -\end{verbatim} - -\section{The {\tt del} statement} -\stindex{del} - -\begin{verbatim} -del_stmt: "del" target_list -\end{verbatim} - -Deletion is recursively defined very similar to the way assignment is -defined. Rather that spelling it out in full details, here are some -hints. -\indexii{deletion}{target} -\indexiii{deletion}{target}{list} - -Deletion of a target list recursively deletes each target, from left -to right. - -Deletion of a name removes the binding of that name (which must exist) -from the local or global name space, depending on whether the name -occurs in a \verb@global@ statement in the same code block. -\stindex{global} -\indexii{unbinding}{name} - -Deletion of attribute references, subscriptions and slicings -is passed to the primary object involved; deletion of a slicing -is in general equivalent to assignment of an empty slice of the -right type (but even this is determined by the sliced object). -\indexii{attribute}{deletion} - -\section{The {\tt print} statement} \label{print} -\stindex{print} - -\begin{verbatim} -print_stmt: "print" [ condition ("," condition)* [","] ] -\end{verbatim} - -\verb@print@ evaluates each condition in turn and writes the resulting -object to standard output (see below). If an object is not a string, -it is first converted to a string using the rules for string -conversions. The (resulting or original) string is then written. A -space is written before each object is (converted and) written, unless -the output system believes it is positioned at the beginning of a -line. This is the case: (1) when no characters have yet been written -to standard output; or (2) when the last character written to standard -output is \verb/\n/; or (3) when the last write operation on standard -output was not a \verb@print@ statement. (In some cases it may be -functional to write an empty string to standard output for this -reason.) -\index{output} -\indexii{writing}{values} - -A \verb/"\n"/ character is written at the end, unless the \verb@print@ -statement ends with a comma. This is the only action if the statement -contains just the keyword \verb@print@. -\indexii{trailing}{comma} -\indexii{newline}{suppression} - -Standard output is defined as the file object named \verb@stdout@ -in the built-in module \verb@sys@. If no such object exists, -or if it is not a writable file, a \verb@RuntimeError@ exception is raised. -(The original implementation attempts to write to the system's original -standard output instead, but this is not safe, and should be fixed.) -\indexii{standard}{output} -\bimodindex{sys} -\ttindex{stdout} -\exindex{RuntimeError} - -\section{The {\tt return} statement} -\stindex{return} - -\begin{verbatim} -return_stmt: "return" [condition_list] -\end{verbatim} - -\verb@return@ may only occur syntactically nested in a function -definition, not within a nested class definition. -\indexii{function}{definition} -\indexii{class}{definition} - -If a condition list is present, it is evaluated, else \verb@None@ -is substituted. - -\verb@return@ leaves the current function call with the condition -list (or \verb@None@) as return value. - -When \verb@return@ passes control out of a \verb@try@ statement -with a \verb@finally@ clause, that finally clause is executed -before really leaving the function. -\kwindex{finally} - -\section{The {\tt raise} statement} -\stindex{raise} - -\begin{verbatim} -raise_stmt: "raise" condition ["," condition ["," condition]] -\end{verbatim} - -\verb@raise@ evaluates its first condition, which must yield -a string, class, or instance object. If there is a second condition, -this is evaluated, else \verb@None@ is substituted. If the first -condition is a class object, then the second condition must be an -instance of that class or one of its derivatives. If the first -condition is an instance object, the second condition must be -\verb@None@. -\index{exception} -\indexii{raising}{exception} - -If the first object is a class or string, it then raises the exception -identified by the first object, with the second one (or \verb@None@) -as its parameter. If the first object is an instance, it raises the -exception identified by the class of the object, with the instance as -its parameter (and there should be no second object, or the second -object should be \verb@None@). - -If a third object is present, and it it not \verb@None@, it should be -a traceback object (see section \ref{traceback}), and it is -substituted instead of the current location as the place where the -exception occurred. This is useful to re-raise an exception -transparently in an except clause. -\obindex{traceback} - -\section{The {\tt break} statement} -\stindex{break} - -\begin{verbatim} -break_stmt: "break" -\end{verbatim} - -\verb@break@ may only occur syntactically nested in a \verb@for@ -or \verb@while@ loop, but not nested in a function or class definition -within that loop. -\stindex{for} -\stindex{while} -\indexii{loop}{statement} - -It terminates the nearest enclosing loop, skipping the optional -\verb@else@ clause if the loop has one. -\kwindex{else} - -If a \verb@for@ loop is terminated by \verb@break@, the loop control -target keeps its current value. -\indexii{loop control}{target} - -When \verb@break@ passes control out of a \verb@try@ statement -with a \verb@finally@ clause, that finally clause is executed -before really leaving the loop. -\kwindex{finally} - -\section{The {\tt continue} statement} -\stindex{continue} - -\begin{verbatim} -continue_stmt: "continue" -\end{verbatim} - -\verb@continue@ may only occur syntactically nested in a \verb@for@ or -\verb@while@ loop, but not nested in a function or class definition or -\verb@try@ statement within that loop.\footnote{Except that it may -currently occur within an {\tt except} clause.} -\stindex{for} -\stindex{while} -\indexii{loop}{statement} -\kwindex{finally} - -It continues with the next cycle of the nearest enclosing loop. - -\section{The {\tt import} statement} \label{import} -\stindex{import} - -\begin{verbatim} -import_stmt: "import" identifier ("," identifier)* - | "from" identifier "import" identifier ("," identifier)* - | "from" identifier "import" "*" -\end{verbatim} - -Import statements are executed in two steps: (1) find a module, and -initialize it if necessary; (2) define a name or names in the local -name space (of the scope where the \verb@import@ statement occurs). -The first form (without \verb@from@) repeats these steps for each -identifier in the list, the \verb@from@ form performs them once, with -the first identifier specifying the module name. -\indexii{importing}{module} -\indexii{name}{binding} -\kwindex{from} - -The system maintains a table of modules that have been initialized, -indexed by module name. (The current implementation makes this table -accessible as \verb@sys.modules@.) When a module name is found in -this table, step (1) is finished. If not, a search for a module -definition is started. This first looks for a built-in module -definition, and if no built-in module if the given name is found, it -searches a user-specified list of directories for a file whose name is -the module name with extension \verb@".py"@. (The current -implementation uses the list of strings \verb@sys.path@ as the search -path; it is initialized from the shell environment variable -\verb@$PYTHONPATH@, with an installation-dependent default.) -\ttindex{modules} -\ttindex{sys.modules} -\indexii{module}{name} -\indexii{built-in}{module} -\indexii{user-defined}{module} -\bimodindex{sys} -\ttindex{path} -\ttindex{sys.path} -\indexii{filename}{extension} - -If a built-in module is found, its built-in initialization code is -executed and step (1) is finished. If no matching file is found, -\verb@ImportError@ is raised. If a file is found, it is parsed, -yielding an executable code block. If a syntax error occurs, -\verb@SyntaxError@ is raised. Otherwise, an empty module of the given -name is created and inserted in the module table, and then the code -block is executed in the context of this module. Exceptions during -this execution terminate step (1). -\indexii{module}{initialization} -\exindex{SyntaxError} -\exindex{ImportError} -\index{code block} - -When step (1) finishes without raising an exception, step (2) can -begin. - -The first form of \verb@import@ statement binds the module name in the -local name space to the module object, and then goes on to import the -next identifier, if any. The \verb@from@ from does not bind the -module name: it goes through the list of identifiers, looks each one -of them up in the module found in step (1), and binds the name in the -local name space to the object thus found. If a name is not found, -\verb@ImportError@ is raised. If the list of identifiers is replaced -by a star (\verb@*@), all names defined in the module are bound, -except those beginning with an underscore(\verb@_@). -\indexii{name}{binding} -\exindex{ImportError} - -Names bound by import statements may not occur in \verb@global@ -statements in the same scope. -\stindex{global} - -The \verb@from@ form with \verb@*@ may only occur in a module scope. -\kwindex{from} -\ttindex{from ... import *} - -(The current implementation does not enforce the latter two -restrictions, but programs should not abuse this freedom, as future -implementations may enforce them or silently change the meaning of the -program.) - -\section{The {\tt global} statement} \label{global} -\stindex{global} - -\begin{verbatim} -global_stmt: "global" identifier ("," identifier)* -\end{verbatim} - -The \verb@global@ statement is a declaration which holds for the -entire current code block. It means that the listed identifiers are to be -interpreted as globals. While {\em using} global names is automatic -if they are not defined in the local scope, {\em assigning} to global -names would be impossible without \verb@global@. -\indexiii{global}{name}{binding} - -Names listed in a \verb@global@ statement must not be used in the same -code block before that \verb@global@ statement is executed. - -Names listed in a \verb@global@ statement must not be defined as formal -parameters or in a \verb@for@ loop control target, \verb@class@ -definition, function definition, or \verb@import@ statement. - -(The current implementation does not enforce the latter two -restrictions, but programs should not abuse this freedom, as future -implementations may enforce them or silently change the meaning of the -program.) - -Note: the \verb@global@ is a directive to the parser. Therefore, it -applies only to code parsed at the same time as the \verb@global@ -statement. In particular, a \verb@global@ statement contained in an -\verb@exec@ statement does not affect the code block {\em containing} -the \verb@exec@ statement, and code contained in an \verb@exec@ -statement is unaffected by \verb@global@ statements in the code -containing the \verb@exec@ statement. The same applies to the -\verb@eval()@, \verb@execfie()@ and \verb@compile()@ functions. -\stindex{exec} -\ttindex{eval} -\ttindex{execfile} -\ttindex{compile} diff --git a/Doc/ref/ref7.tex b/Doc/ref/ref7.tex deleted file mode 100644 index 9bce121..0000000 --- a/Doc/ref/ref7.tex +++ /dev/null @@ -1,391 +0,0 @@ -\chapter{Compound statements} -\indexii{compound}{statement} - -Compound statements contain (groups of) other statements; they affect -or control the execution of those other statements in some way. In -general, compound statements span multiple lines, although in simple -incarnations a whole compound statement may be contained in one line. - -The \verb@if@, \verb@while@ and \verb@for@ statements implement -traditional control flow constructs. \verb@try@ specifies exception -handlers and/or cleanup code for a group of statements. Function and -class definitions are also syntactically compound statements. - -Compound statements consist of one or more `clauses'. A clause -consists of a header and a `suite'. The clause headers of a -particular compound statement are all at the same indentation level. -Each clause header begins with a uniquely identifying keyword and ends -with a colon. A suite is a group of statements controlled by a -clause. A suite can be one or more semicolon-separated simple -statements on the same line as the header, following the header's -colon, or it can be one or more indented statements on subsequent -lines. Only the latter form of suite can contain nested compound -statements; the following is illegal, mostly because it wouldn't be -clear to which \verb@if@ clause a following \verb@else@ clause would -belong: -\index{clause} -\index{suite} - -\begin{verbatim} -if test1: if test2: print x -\end{verbatim} - -Also note that the semicolon binds tighter than the colon in this -context, so that in the following example, either all or none of the -\verb@print@ statements are executed: - -\begin{verbatim} -if x < y < z: print x; print y; print z -\end{verbatim} - -Summarizing: - -\begin{verbatim} -compound_stmt: if_stmt | while_stmt | for_stmt - | try_stmt | funcdef | classdef -suite: stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT -statement: stmt_list NEWLINE | compound_stmt -stmt_list: simple_stmt (";" simple_stmt)* [";"] -\end{verbatim} - -Note that statements always end in a \verb@NEWLINE@ possibly followed -by a \verb@DEDENT@. -\index{NEWLINE token} -\index{DEDENT token} - -Also note that optional continuation clauses always begin with a -keyword that cannot start a statement, thus there are no ambiguities -(the `dangling \verb@else@' problem is solved in Python by requiring -nested \verb@if@ statements to be indented). -\indexii{dangling}{else} - -The formatting of the grammar rules in the following sections places -each clause on a separate line for clarity. - -\section{The {\tt if} statement} -\stindex{if} - -The \verb@if@ statement is used for conditional execution: - -\begin{verbatim} -if_stmt: "if" condition ":" suite - ("elif" condition ":" suite)* - ["else" ":" suite] -\end{verbatim} - -It selects exactly one of the suites by evaluating the conditions one -by one until one is found to be true (see section \ref{Booleans} for -the definition of true and false); then that suite is executed (and no -other part of the \verb@if@ statement is executed or evaluated). If -all conditions are false, the suite of the \verb@else@ clause, if -present, is executed. -\kwindex{elif} -\kwindex{else} - -\section{The {\tt while} statement} -\stindex{while} -\indexii{loop}{statement} - -The \verb@while@ statement is used for repeated execution as long as a -condition is true: - -\begin{verbatim} -while_stmt: "while" condition ":" suite - ["else" ":" suite] -\end{verbatim} - -This repeatedly tests the condition and, if it is true, executes the -first suite; if the condition is false (which may be the first time it -is tested) the suite of the \verb@else@ clause, if present, is -executed and the loop terminates. -\kwindex{else} - -A \verb@break@ statement executed in the first suite terminates the -loop without executing the \verb@else@ clause's suite. A -\verb@continue@ statement executed in the first suite skips the rest -of the suite and goes back to testing the condition. -\stindex{break} -\stindex{continue} - -\section{The {\tt for} statement} -\stindex{for} -\indexii{loop}{statement} - -The \verb@for@ statement is used to iterate over the elements of a -sequence (string, tuple or list): -\obindex{sequence} - -\begin{verbatim} -for_stmt: "for" target_list "in" condition_list ":" suite - ["else" ":" suite] -\end{verbatim} - -The condition list is evaluated once; it should yield a sequence. The -suite is then executed once for each item in the sequence, in the -order of ascending indices. Each item in turn is assigned to the -target list using the standard rules for assignments, and then the -suite is executed. When the items are exhausted (which is immediately -when the sequence is empty), the suite in the \verb@else@ clause, if -present, is executed, and the loop terminates. -\kwindex{in} -\kwindex{else} -\indexii{target}{list} - -A \verb@break@ statement executed in the first suite terminates the -loop without executing the \verb@else@ clause's suite. A -\verb@continue@ statement executed in the first suite skips the rest -of the suite and continues with the next item, or with the \verb@else@ -clause if there was no next item. -\stindex{break} -\stindex{continue} - -The suite may assign to the variable(s) in the target list; this does -not affect the next item assigned to it. - -The target list is not deleted when the loop is finished, but if the -sequence is empty, it will not have been assigned to at all by the -loop. - -Hint: the built-in function \verb@range()@ returns a sequence of -integers suitable to emulate the effect of Pascal's -\verb@for i := a to b do@; -e.g. \verb@range(3)@ returns the list \verb@[0, 1, 2]@. -\bifuncindex{range} -\index{Pascal} - -{\bf Warning:} There is a subtlety when the sequence is being modified -by the loop (this can only occur for mutable sequences, i.e. lists). -An internal counter is used to keep track of which item is used next, -and this is incremented on each iteration. When this counter has -reached the length of the sequence the loop terminates. This means that -if the suite deletes the current (or a previous) item from the -sequence, the next item will be skipped (since it gets the index of -the current item which has already been treated). Likewise, if the -suite inserts an item in the sequence before the current item, the -current item will be treated again the next time through the loop. -This can lead to nasty bugs that can be avoided by making a temporary -copy using a slice of the whole sequence, e.g. -\index{loop!over mutable sequence} -\index{mutable sequence!loop over} - -\begin{verbatim} -for x in a[:]: - if x < 0: a.remove(x) -\end{verbatim} - -\section{The {\tt try} statement} \label{try} -\stindex{try} - -The \verb@try@ statement specifies exception handlers and/or cleanup -code for a group of statements: - -\begin{verbatim} -try_stmt: try_exc_stmt | try_fin_stmt -try_exc_stmt: "try" ":" suite - ("except" [condition ["," target]] ":" suite)+ - ["else" ":" suite] -try_fin_stmt: "try" ":" suite - "finally" ":" suite -\end{verbatim} - -There are two forms of \verb@try@ statement: \verb@try...except@ and -\verb@try...finally@. These forms cannot be mixed. - -The \verb@try...except@ form specifies one or more exception handlers -(the \verb@except@ clauses). When no exception occurs in the -\verb@try@ clause, no exception handler is executed. When an -exception occurs in the \verb@try@ suite, a search for an exception -handler is started. This inspects the except clauses in turn until -one is found that matches the exception. A condition-less except -clause, if present, must be last; it matches any exception. For an -except clause with a condition, that condition is evaluated, and the -clause matches the exception if the resulting object is ``compatible'' -with the exception. An object is compatible with an exception if it -is either the object that identifies the exception, or (for exceptions -that are classes) it is a base class of the exception, or it is a -tuple containing an item that is compatible with the exception. Note -that the object identities must match, i.e. it must be the same -object, not just an object with the same value. -\kwindex{except} - -If no except clause matches the exception, the search for an exception -handler continues in the surrounding code and on the invocation stack. - -If the evaluation of a condition in the header of an except clause -raises an exception, the original search for a handler is cancelled -and a search starts for the new exception in the surrounding code and -on the call stack (it is treated as if the entire \verb@try@ statement -raised the exception). - -When a matching except clause is found, the exception's parameter is -assigned to the target specified in that except clause, if present, -and the except clause's suite is executed. When the end of this suite -is reached, execution continues normally after the entire try -statement. (This means that if two nested handlers exist for the same -exception, and the exception occurs in the try clause of the inner -handler, the outer handler will not handle the exception.) - -Before an except clause's suite is executed, details about the -exception are assigned to three variables in the \verb@sys@ module: -\verb@sys.exc_type@ receives the object identifying the exception; -\verb@sys.exc_value@ receives the exception's parameter; -\verb@sys.exc_traceback@ receives a traceback object (see section -\ref{traceback}) identifying the point in the program where the -exception occurred. -\bimodindex{sys} -\ttindex{exc_type} -\ttindex{exc_value} -\ttindex{exc_traceback} -\obindex{traceback} - -The optional \verb@else@ clause is executed when no exception occurs -in the \verb@try@ clause. Exceptions in the \verb@else@ clause are -not handled by the preceding \verb@except@ clauses. -\kwindex{else} - -The \verb@try...finally@ form specifies a `cleanup' handler. The -\verb@try@ clause is executed. When no exception occurs, the -\verb@finally@ clause is executed. When an exception occurs in the -\verb@try@ clause, the exception is temporarily saved, the -\verb@finally@ clause is executed, and then the saved exception is -re-raised. If the \verb@finally@ clause raises another exception or -executes a \verb@return@, \verb@break@ or \verb@continue@ statement, -the saved exception is lost. -\kwindex{finally} - -When a \verb@return@ or \verb@break@ statement is executed in the -\verb@try@ suite of a \verb@try...finally@ statement, the -\verb@finally@ clause is also executed `on the way out'. A -\verb@continue@ statement is illegal in the \verb@try@ clause. (The -reason is a problem with the current implementation --- this -restriction may be lifted in the future). -\stindex{return} -\stindex{break} -\stindex{continue} - -\section{Function definitions} \label{function} -\indexii{function}{definition} - -A function definition defines a user-defined function object (see -section \ref{types}):\footnote{The new syntax to receive arbitrary -keyword arguments is not yet documented in this manual. See chapter -12 of the Tutorial.} -\obindex{user-defined function} -\obindex{function} - -\begin{verbatim} -funcdef: "def" funcname "(" [parameter_list] ")" ":" suite -parameter_list: (defparameter ",")* ("*" identifier [, "**" identifier] - | "**" identifier - | defparameter [","]) -defparameter: parameter ["=" condition] -sublist: parameter ("," parameter)* [","] -parameter: identifier | "(" sublist ")" -funcname: identifier -\end{verbatim} - -A function definition is an executable statement. Its execution binds -the function name in the current local name space to a function object -(a wrapper around the executable code for the function). This -function object contains a reference to the current global name space -as the global name space to be used when the function is called. -\indexii{function}{name} -\indexii{name}{binding} - -The function definition does not execute the function body; this gets -executed only when the function is called. - -When one or more top-level parameters have the form {\em parameter = -condition}, the function is said to have ``default parameter values''. -Default parameter values are evaluated when the function definition is -executed. For a parameter with a default value, the correponding -argument may be omitted from a call, in which case the parameter's -default value is substituted. If a parameter has a default value, all -following parameters must also have a default value --- this is a -syntactic restriction that is not expressed by the grammar.% -\footnote{Currently this is not checked; instead, -{\tt def f(a=1,b)} is interpreted as {\tt def f(a=1,b=None)}.} -\indexiii{default}{parameter}{value} - -Function call semantics are described in section \ref{calls}. When a -user-defined function is called, first missing arguments for which a -default value exists are supplied; then the arguments (a.k.a. actual -parameters) are bound to the (formal) parameters, as follows: -\indexii{function}{call} -\indexiii{user-defined}{function}{call} -\index{parameter} -\index{argument} -\indexii{parameter}{formal} -\indexii{parameter}{actual} - -\begin{itemize} - -\item -If there are no formal parameters, there must be no arguments. - -\item -If the formal parameter list does not end in a star followed by an -identifier, there must be exactly as many arguments as there are -parameters in the formal parameter list (at the top level); the -arguments are assigned to the formal parameters one by one. Note that -the presence or absence of a trailing comma at the top level in either -the formal or the actual parameter list makes no difference. The -assignment to a formal parameter is performed as if the parameter -occurs on the left hand side of an assignment statement whose right -hand side's value is that of the argument. - -\item -If the formal parameter list ends in a star followed by an identifier, -preceded by zero or more comma-followed parameters, there must be at -least as many arguments as there are parameters preceding the star. -Call this number {\em N}. The first {\em N} arguments are assigned to -the corresponding formal parameters in the way descibed above. A -tuple containing the remaining arguments, if any, is then assigned to -the identifier following the star. This variable will always be a -tuple: if there are no extra arguments, its value is \verb@()@, if -there is just one extra argument, it is a singleton tuple. -\indexii{variable length}{parameter list} - -\end{itemize} - -Note that the `variable length parameter list' feature only works at -the top level of the parameter list; individual parameters use a model -corresponding more closely to that of ordinary assignment. While the -latter model is generally preferable, because of the greater type -safety it offers (wrong-sized tuples aren't silently mistreated), -variable length parameter lists are a sufficiently accepted practice -in most programming languages that a compromise has been worked out. -(And anyway, assignment has no equivalent for empty argument lists.) - -It is also possible to create anonymous functions (functions not bound -to a name), for immediate use in expressions. This uses lambda forms, -described in section \ref{lambda}. -\indexii{lambda}{form} - -\section{Class definitions} \label{class} -\indexii{class}{definition} - -A class definition defines a class object (see section \ref{types}): -\obindex{class} - -\begin{verbatim} -classdef: "class" classname [inheritance] ":" suite -inheritance: "(" [condition_list] ")" -classname: identifier -\end{verbatim} - -A class definition is an executable statement. It first evaluates the -inheritance list, if present. Each item in the inheritance list -should evaluate to a class object. The class's suite is then executed -in a new execution frame (see section \ref{execframes}), using a newly -created local name space and the original global name space. -(Usually, the suite contains only function definitions.) When the -class's suite finishes execution, its execution frame is discarded but -its local name space is saved. A class object is then created using -the inheritance list for the base classes and the saved local name -space for the attribute dictionary. The class name is bound to this -class object in the original local name space. -\index{inheritance} -\indexii{class}{name} -\indexii{name}{binding} -\indexii{execution}{frame} diff --git a/Doc/ref/ref8.tex b/Doc/ref/ref8.tex deleted file mode 100644 index a9e688a..0000000 --- a/Doc/ref/ref8.tex +++ /dev/null @@ -1,105 +0,0 @@ -\chapter{Top-level components} - -The Python interpreter can get its input from a number of sources: -from a script passed to it as standard input or as program argument, -typed in interactively, from a module source file, etc. This chapter -gives the syntax used in these cases. -\index{interpreter} - -\section{Complete Python programs} -\index{program} - -While a language specification need not prescribe how the language -interpreter is invoked, it is useful to have a notion of a complete -Python program. A complete Python program is executed in a minimally -initialized environment: all built-in and standard modules are -available, but none have been initialized, except for \verb@sys@ -(various system services), \verb@__builtin__@ (built-in functions, -exceptions and \verb@None@) and \verb@__main__@. The latter is used -to provide the local and global name space for execution of the -complete program. -\bimodindex{sys} -\bimodindex{__main__} -\bimodindex{__builtin__} - -The syntax for a complete Python program is that for file input, -described in the next section. - -The interpreter may also be invoked in interactive mode; in this case, -it does not read and execute a complete program but reads and executes -one statement (possibly compound) at a time. The initial environment -is identical to that of a complete program; each statement is executed -in the name space of \verb@__main__@. -\index{interactive mode} -\bimodindex{__main__} - -Under {\UNIX}, a complete program can be passed to the interpreter in -three forms: with the {\bf -c} {\it string} command line option, as a -file passed as the first command line argument, or as standard input. -If the file or standard input is a tty device, the interpreter enters -interactive mode; otherwise, it executes the file as a complete -program. -\index{UNIX} -\index{command line} -\index{standard input} - -\section{File input} - -All input read from non-interactive files has the same form: - -\begin{verbatim} -file_input: (NEWLINE | statement)* -\end{verbatim} - -This syntax is used in the following situations: - -\begin{itemize} - -\item when parsing a complete Python program (from a file or from a string); - -\item when parsing a module; - -\item when parsing a string passed to the \verb@exec@ statement; - -\end{itemize} - -\section{Interactive input} - -Input in interactive mode is parsed using the following grammar: - -\begin{verbatim} -interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE -\end{verbatim} - -Note that a (top-level) compound statement must be followed by a blank -line in interactive mode; this is needed to help the parser detect the -end of the input. - -\section{Expression input} -\index{input} - -There are two forms of expression input. Both ignore leading -whitespace. - -The string argument to \verb@eval()@ must have the following form: -\bifuncindex{eval} - -\begin{verbatim} -eval_input: condition_list NEWLINE* -\end{verbatim} - -The input line read by \verb@input()@ must have the following form: -\bifuncindex{input} - -\begin{verbatim} -input_input: condition_list NEWLINE -\end{verbatim} - -Note: to read `raw' input line without interpretation, you can use the -built-in function \verb@raw_input()@ or the \verb@readline()@ method -of file objects. -\obindex{file} -\index{input!raw} -\index{raw input} -\bifuncindex{raw_index} -\ttindex{readline} diff --git a/Doc/ref1.tex b/Doc/ref1.tex deleted file mode 100644 index 30bfcce..0000000 --- a/Doc/ref1.tex +++ /dev/null @@ -1,81 +0,0 @@ -\chapter{Introduction} - -This reference manual describes the Python programming language. -It is not intended as a tutorial. - -While I am trying to be as precise as possible, I chose to use English -rather than formal specifications for everything except syntax and -lexical analysis. This should make the document more understandable -to the average reader, but will leave room for ambiguities. -Consequently, if you were coming from Mars and tried to re-implement -Python from this document alone, you might have to guess things and in -fact you would probably end up implementing quite a different language. -On the other hand, if you are using -Python and wonder what the precise rules about a particular area of -the language are, you should definitely be able to find them here. - -It is dangerous to add too many implementation details to a language -reference document --- the implementation may change, and other -implementations of the same language may work differently. On the -other hand, there is currently only one Python implementation, and -its particular quirks are sometimes worth being mentioned, especially -where the implementation imposes additional limitations. Therefore, -you'll find short ``implementation notes'' sprinkled throughout the -text. - -Every Python implementation comes with a number of built-in and -standard modules. These are not documented here, but in the separate -{\em Python Library Reference} document. A few built-in modules are -mentioned when they interact in a significant way with the language -definition. - -\section{Notation} - -The descriptions of lexical analysis and syntax use a modified BNF -grammar notation. This uses the following style of definition: -\index{BNF} -\index{grammar} -\index{syntax} -\index{notation} - -\begin{verbatim} -name: lc_letter (lc_letter | "_")* -lc_letter: "a"..."z" -\end{verbatim} - -The first line says that a \verb@name@ is an \verb@lc_letter@ followed by -a sequence of zero or more \verb@lc_letter@s and underscores. An -\verb@lc_letter@ in turn is any of the single characters `a' through `z'. -(This rule is actually adhered to for the names defined in lexical and -grammar rules in this document.) - -Each rule begins with a name (which is the name defined by the rule) -and a colon. A vertical bar (\verb@|@) is used to separate -alternatives; it is the least binding operator in this notation. A -star (\verb@*@) means zero or more repetitions of the preceding item; -likewise, a plus (\verb@+@) means one or more repetitions, and a -phrase enclosed in square brackets (\verb@[ ]@) means zero or one -occurrences (in other words, the enclosed phrase is optional). The -\verb@*@ and \verb@+@ operators bind as tightly as possible; -parentheses are used for grouping. Literal strings are enclosed in -quotes. White space is only meaningful to separate tokens. -Rules are normally contained on a single line; rules with many -alternatives may be formatted alternatively with each line after the -first beginning with a vertical bar. - -In lexical definitions (as the example above), two more conventions -are used: Two literal characters separated by three dots mean a choice -of any single character in the given (inclusive) range of \ASCII{} -characters. A phrase between angular brackets (\verb@<...>@) gives an -informal description of the symbol defined; e.g. this could be used -to describe the notion of `control character' if needed. -\index{lexical definitions} -\index{ASCII} - -Even though the notation used is almost the same, there is a big -difference between the meaning of lexical and syntactic definitions: -a lexical definition operates on the individual characters of the -input source, while a syntax definition operates on the stream of -tokens generated by the lexical analysis. All uses of BNF in the next -chapter (``Lexical Analysis'') are lexical definitions; uses in -subsequent chapters are syntactic definitions. diff --git a/Doc/ref2.tex b/Doc/ref2.tex deleted file mode 100644 index b093998..0000000 --- a/Doc/ref2.tex +++ /dev/null @@ -1,372 +0,0 @@ -\chapter{Lexical analysis} - -A Python program is read by a {\em parser}. Input to the parser is a -stream of {\em tokens}, generated by the {\em lexical analyzer}. This -chapter describes how the lexical analyzer breaks a file into tokens. -\index{lexical analysis} -\index{parser} -\index{token} - -\section{Line structure} - -A Python program is divided in a number of logical lines. The end of -a logical line is represented by the token NEWLINE. Statements cannot -cross logical line boundaries except where NEWLINE is allowed by the -syntax (e.g. between statements in compound statements). -\index{line structure} -\index{logical line} -\index{NEWLINE token} - -\subsection{Comments} - -A comment starts with a hash character (\verb@#@) that is not part of -a string literal, and ends at the end of the physical line. A comment -always signifies the end of the logical line. Comments are ignored by -the syntax. -\index{comment} -\index{logical line} -\index{physical line} -\index{hash character} - -\subsection{Explicit line joining} - -Two or more physical lines may be joined into logical lines using -backslash characters (\verb/\/), as follows: when a physical line ends -in a backslash that is not part of a string literal or comment, it is -joined with the following forming a single logical line, deleting the -backslash and the following end-of-line character. For example: -\index{physical line} -\index{line joining} -\index{line continuation} -\index{backslash character} -% -\begin{verbatim} -if 1900 < year < 2100 and 1 <= month <= 12 \ - and 1 <= day <= 31 and 0 <= hour < 24 \ - and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date - return 1 -\end{verbatim} - -A line ending in a backslash cannot carry a comment; a backslash does -not continue a comment (but it does continue a string literal, see -below). - -\subsection{Implicit line joining} - -Expressions in parentheses, square brackets or curly braces can be -split over more than one physical line without using backslashes. -For example: - -\begin{verbatim} -month_names = ['Januari', 'Februari', 'Maart', # These are the - 'April', 'Mei', 'Juni', # Dutch names - 'Juli', 'Augustus', 'September', # for the months - 'Oktober', 'November', 'December'] # of the year -\end{verbatim} - -Implicitly continued lines can carry comments. The indentation of the -continuation lines is not important. Blank continuation lines are -allowed. - -\subsection{Blank lines} - -A logical line that contains only spaces, tabs, and possibly a -comment, is ignored (i.e., no NEWLINE token is generated), except that -during interactive input of statements, an entirely blank logical line -terminates a multi-line statement. -\index{blank line} - -\subsection{Indentation} - -Leading whitespace (spaces and tabs) at the beginning of a logical -line is used to compute the indentation level of the line, which in -turn is used to determine the grouping of statements. -\index{indentation} -\index{whitespace} -\index{leading whitespace} -\index{space} -\index{tab} -\index{grouping} -\index{statement grouping} - -First, tabs are replaced (from left to right) by one to eight spaces -such that the total number of characters up to there is a multiple of -eight (this is intended to be the same rule as used by {\UNIX}). The -total number of spaces preceding the first non-blank character then -determines the line's indentation. Indentation cannot be split over -multiple physical lines using backslashes. - -The indentation levels of consecutive lines are used to generate -INDENT and DEDENT tokens, using a stack, as follows. -\index{INDENT token} -\index{DEDENT token} - -Before the first line of the file is read, a single zero is pushed on -the stack; this will never be popped off again. The numbers pushed on -the stack will always be strictly increasing from bottom to top. At -the beginning of each logical line, the line's indentation level is -compared to the top of the stack. If it is equal, nothing happens. -If it is larger, it is pushed on the stack, and one INDENT token is -generated. If it is smaller, it {\em must} be one of the numbers -occurring on the stack; all numbers on the stack that are larger are -popped off, and for each number popped off a DEDENT token is -generated. At the end of the file, a DEDENT token is generated for -each number remaining on the stack that is larger than zero. - -Here is an example of a correctly (though confusingly) indented piece -of Python code: - -\begin{verbatim} -def perm(l): - # Compute the list of all permutations of l - - if len(l) <= 1: - return [l] - r = [] - for i in range(len(l)): - s = l[:i] + l[i+1:] - p = perm(s) - for x in p: - r.append(l[i:i+1] + x) - return r -\end{verbatim} - -The following example shows various indentation errors: - -\begin{verbatim} - def perm(l): # error: first line indented - for i in range(len(l)): # error: not indented - s = l[:i] + l[i+1:] - p = perm(l[:i] + l[i+1:]) # error: unexpected indent - for x in p: - r.append(l[i:i+1] + x) - return r # error: inconsistent dedent -\end{verbatim} - -(Actually, the first three errors are detected by the parser; only the -last error is found by the lexical analyzer --- the indentation of -\verb@return r@ does not match a level popped off the stack.) - -\section{Other tokens} - -Besides NEWLINE, INDENT and DEDENT, the following categories of tokens -exist: identifiers, keywords, literals, operators, and delimiters. -Spaces and tabs are not tokens, but serve to delimit tokens. Where -ambiguity exists, a token comprises the longest possible string that -forms a legal token, when read from left to right. - -\section{Identifiers} - -Identifiers (also referred to as names) are described by the following -lexical definitions: -\index{identifier} -\index{name} - -\begin{verbatim} -identifier: (letter|"_") (letter|digit|"_")* -letter: lowercase | uppercase -lowercase: "a"..."z" -uppercase: "A"..."Z" -digit: "0"..."9" -\end{verbatim} - -Identifiers are unlimited in length. Case is significant. - -\subsection{Keywords} - -The following identifiers are used as reserved words, or {\em -keywords} of the language, and cannot be used as ordinary -identifiers. They must be spelled exactly as written here: -\index{keyword} -\index{reserved word} - -\begin{verbatim} -and elif global not try -break else if or while -class except import pass -continue finally in print -def for is raise -del from lambda return -\end{verbatim} - -% When adding keywords, pipe it through keywords.py for reformatting - -\section{Literals} \label{literals} - -Literals are notations for constant values of some built-in types. -\index{literal} -\index{constant} - -\subsection{String literals} - -String literals are described by the following lexical definitions: -\index{string literal} - -\begin{verbatim} -stringliteral: shortstring | longstring -shortstring: "'" shortstringitem* "'" | '"' shortstringitem* '"' -longstring: "'''" longstringitem* "'''" | '"""' longstringitem* '"""' -shortstringitem: shortstringchar | escapeseq -longstringitem: longstringchar | escapeseq -shortstringchar: <any ASCII character except "\" or newline or the quote> -longstringchar: <any ASCII character except "\"> -escapeseq: "\" <any ASCII character> -\end{verbatim} -\index{ASCII} - -In ``long strings'' (strings surrounded by sets of three quotes), -unescaped newlines and quotes are allowed (and are retained), except -that three unescaped quotes in a row terminate the string. (A -``quote'' is the character used to open the string, i.e. either -\verb/'/ or \verb/"/.) - -Escape sequences in strings are interpreted according to rules similar -to those used by Standard C. The recognized escape sequences are: -\index{physical line} -\index{escape sequence} -\index{Standard C} -\index{C} - -\begin{center} -\begin{tabular}{|l|l|} -\hline -\verb/\/{\em newline} & Ignored \\ -\verb/\\/ & Backslash (\verb/\/) \\ -\verb/\'/ & Single quote (\verb/'/) \\ -\verb/\"/ & Double quote (\verb/"/) \\ -\verb/\a/ & \ASCII{} Bell (BEL) \\ -\verb/\b/ & \ASCII{} Backspace (BS) \\ -%\verb/\E/ & \ASCII{} Escape (ESC) \\ -\verb/\f/ & \ASCII{} Formfeed (FF) \\ -\verb/\n/ & \ASCII{} Linefeed (LF) \\ -\verb/\r/ & \ASCII{} Carriage Return (CR) \\ -\verb/\t/ & \ASCII{} Horizontal Tab (TAB) \\ -\verb/\v/ & \ASCII{} Vertical Tab (VT) \\ -\verb/\/{\em ooo} & \ASCII{} character with octal value {\em ooo} \\ -\verb/\x/{\em xx...} & \ASCII{} character with hex value {\em xx...} \\ -\hline -\end{tabular} -\end{center} -\index{ASCII} - -In strict compatibility with Standard C, up to three octal digits are -accepted, but an unlimited number of hex digits is taken to be part of -the hex escape (and then the lower 8 bits of the resulting hex number -are used in all current implementations...). - -All unrecognized escape sequences are left in the string unchanged, -i.e., {\em the backslash is left in the string.} (This behavior is -useful when debugging: if an escape sequence is mistyped, the -resulting output is more easily recognized as broken. It also helps a -great deal for string literals used as regular expressions or -otherwise passed to other modules that do their own escape handling.) -\index{unrecognized escape sequence} - -\subsection{Numeric literals} - -There are three types of numeric literals: plain integers, long -integers, and floating point numbers. -\index{number} -\index{numeric literal} -\index{integer literal} -\index{plain integer literal} -\index{long integer literal} -\index{floating point literal} -\index{hexadecimal literal} -\index{octal literal} -\index{decimal literal} - -Integer and long integer literals are described by the following -lexical definitions: - -\begin{verbatim} -longinteger: integer ("l"|"L") -integer: decimalinteger | octinteger | hexinteger -decimalinteger: nonzerodigit digit* | "0" -octinteger: "0" octdigit+ -hexinteger: "0" ("x"|"X") hexdigit+ - -nonzerodigit: "1"..."9" -octdigit: "0"..."7" -hexdigit: digit|"a"..."f"|"A"..."F" -\end{verbatim} - -Although both lower case `l' and upper case `L' are allowed as suffix -for long integers, it is strongly recommended to always use `L', since -the letter `l' looks too much like the digit `1'. - -Plain integer decimal literals must be at most 2147483647 (i.e., the -largest positive integer, using 32-bit arithmetic). Plain octal and -hexadecimal literals may be as large as 4294967295, but values larger -than 2147483647 are converted to a negative value by subtracting -4294967296. There is no limit for long integer literals apart from -what can be stored in available memory. - -Some examples of plain and long integer literals: - -\begin{verbatim} -7 2147483647 0177 0x80000000 -3L 79228162514264337593543950336L 0377L 0x100000000L -\end{verbatim} - -Floating point literals are described by the following lexical -definitions: - -\begin{verbatim} -floatnumber: pointfloat | exponentfloat -pointfloat: [intpart] fraction | intpart "." -exponentfloat: (intpart | pointfloat) exponent -intpart: digit+ -fraction: "." digit+ -exponent: ("e"|"E") ["+"|"-"] digit+ -\end{verbatim} - -The allowed range of floating point literals is -implementation-dependent. - -Some examples of floating point literals: - -\begin{verbatim} -3.14 10. .001 1e100 3.14e-10 -\end{verbatim} - -Note that numeric literals do not include a sign; a phrase like -\verb@-1@ is actually an expression composed of the operator -\verb@-@ and the literal \verb@1@. - -\section{Operators} - -The following tokens are operators: -\index{operators} - -\begin{verbatim} -+ - * / % -<< >> & | ^ ~ -< == > <= <> != >= -\end{verbatim} - -The comparison operators \verb@<>@ and \verb@!=@ are alternate -spellings of the same operator. - -\section{Delimiters} - -The following tokens serve as delimiters or otherwise have a special -meaning: -\index{delimiters} - -\begin{verbatim} -( ) [ ] { } -, : . " ` ' -= ; -\end{verbatim} - -The following printing \ASCII{} characters are not used in Python. Their -occurrence outside string literals and comments is an unconditional -error: -\index{ASCII} - -\begin{verbatim} -@ $ ? -\end{verbatim} - -They may be used by future versions of the language though! diff --git a/Doc/ref3.tex b/Doc/ref3.tex deleted file mode 100644 index ca3525a..0000000 --- a/Doc/ref3.tex +++ /dev/null @@ -1,885 +0,0 @@ -\chapter{Data model} - -\section{Objects, values and types} - -{\em Objects} are Python's abstraction for data. All data in a Python -program is represented by objects or by relations between objects. -(In a sense, and in conformance to Von Neumann's model of a -``stored program computer'', code is also represented by objects.) -\index{object} -\index{data} - -Every object has an identity, a type and a value. An object's {\em -identity} never changes once it has been created; you may think of it -as the object's address in memory. An object's {\em type} is also -unchangeable. It determines the operations that an object supports -(e.g. ``does it have a length?'') and also defines the possible -values for objects of that type. The {\em value} of some objects can -change. Objects whose value can change are said to be {\em mutable}; -objects whose value is unchangeable once they are created are called -{\em immutable}. The type determines an object's (im)mutability. -\index{identity of an object} -\index{value of an object} -\index{type of an object} -\index{mutable object} -\index{immutable object} - -Objects are never explicitly destroyed; however, when they become -unreachable they may be garbage-collected. An implementation is -allowed to delay garbage collection or omit it altogether --- it is a -matter of implementation quality how garbage collection is -implemented, as long as no objects are collected that are still -reachable. (Implementation note: the current implementation uses a -reference-counting scheme which collects most objects as soon as they -become unreachable, but never collects garbage containing circular -references.) -\index{garbage collection} -\index{reference counting} -\index{unreachable object} - -Note that the use of the implementation's tracing or debugging -facilities may keep objects alive that would normally be collectable. - -Some objects contain references to ``external'' resources such as open -files or windows. It is understood that these resources are freed -when the object is garbage-collected, but since garbage collection is -not guaranteed to happen, such objects also provide an explicit way to -release the external resource, usually a \verb@close@ method. -Programs are strongly recommended to always explicitly close such -objects. - -Some objects contain references to other objects; these are called -{\em containers}. Examples of containers are tuples, lists and -dictionaries. The references are part of a container's value. In -most cases, when we talk about the value of a container, we imply the -values, not the identities of the contained objects; however, when we -talk about the (im)mutability of a container, only the identities of -the immediately contained objects are implied. (So, if an immutable -container contains a reference to a mutable object, its value changes -if that mutable object is changed.) -\index{container} - -Types affect almost all aspects of objects' lives. Even the meaning -of object identity is affected in some sense: for immutable types, -operations that compute new values may actually return a reference to -any existing object with the same type and value, while for mutable -objects this is not allowed. E.g. after - -\begin{verbatim} -a = 1; b = 1; c = []; d = [] -\end{verbatim} - -\verb@a@ and \verb@b@ may or may not refer to the same object with the -value one, depending on the implementation, but \verb@c@ and \verb@d@ -are guaranteed to refer to two different, unique, newly created empty -lists. - -\section{The standard type hierarchy} \label{types} - -Below is a list of the types that are built into Python. Extension -modules written in C can define additional types. Future versions of -Python may add types to the type hierarchy (e.g. rational or complex -numbers, efficiently stored arrays of integers, etc.). -\index{type} -\indexii{data}{type} -\indexii{type}{hierarchy} -\indexii{extension}{module} -\index{C} - -Some of the type descriptions below contain a paragraph listing -`special attributes'. These are attributes that provide access to the -implementation and are not intended for general use. Their definition -may change in the future. There are also some `generic' special -attributes, not listed with the individual objects: \verb@__methods__@ -is a list of the method names of a built-in object, if it has any; -\verb@__members__@ is a list of the data attribute names of a built-in -object, if it has any. -\index{attribute} -\indexii{special}{attribute} -\indexiii{generic}{special}{attribute} -\ttindex{__methods__} -\ttindex{__members__} - -\begin{description} - -\item[None] -This type has a single value. There is a single object with this value. -This object is accessed through the built-in name \verb@None@. -It is returned from functions that don't explicitly return an object. -\ttindex{None} -\obindex{None@{\tt None}} - -\item[Numbers] -These are created by numeric literals and returned as results by -arithmetic operators and arithmetic built-in functions. Numeric -objects are immutable; once created their value never changes. Python -numbers are of course strongly related to mathematical numbers, but -subject to the limitations of numerical representation in computers. -\obindex{number} -\obindex{numeric} - -Python distinguishes between integers and floating point numbers: - -\begin{description} -\item[Integers] -These represent elements from the mathematical set of whole numbers. -\obindex{integer} - -There are two types of integers: - -\begin{description} - -\item[Plain integers] -These represent numbers in the range -2147483648 through 2147483647. -(The range may be larger on machines with a larger natural word -size, but not smaller.) -When the result of an operation falls outside this range, the -exception \verb@OverflowError@ is raised. -For the purpose of shift and mask operations, integers are assumed to -have a binary, 2's complement notation using 32 or more bits, and -hiding no bits from the user (i.e., all 4294967296 different bit -patterns correspond to different values). -\obindex{plain integer} - -\item[Long integers] -These represent numbers in an unlimited range, subject to available -(virtual) memory only. For the purpose of shift and mask operations, -a binary representation is assumed, and negative numbers are -represented in a variant of 2's complement which gives the illusion of -an infinite string of sign bits extending to the left. -\obindex{long integer} - -\end{description} % Integers - -The rules for integer representation are intended to give the most -meaningful interpretation of shift and mask operations involving -negative integers and the least surprises when switching between the -plain and long integer domains. For any operation except left shift, -if it yields a result in the plain integer domain without causing -overflow, it will yield the same result in the long integer domain or -when using mixed operands. -\indexii{integer}{representation} - -\item[Floating point numbers] -These represent machine-level double precision floating point numbers. -You are at the mercy of the underlying machine architecture and -C implementation for the accepted range and handling of overflow. -\obindex{floating point} -\indexii{floating point}{number} -\index{C} - -\end{description} % Numbers - -\item[Sequences] -These represent finite ordered sets indexed by natural numbers. -The built-in function \verb@len()@ returns the number of elements -of a sequence. When this number is \var{n}, the index set contains -the numbers 0, 1, \ldots, \var{n}-1. Element \var{i} of sequence -\var{a} is selected by \code{\var{a}[\var{i}]}. -\obindex{seqence} -\bifuncindex{len} -\index{index operation} -\index{item selection} -\index{subscription} - -Sequences also support slicing: \verb@a[i:j]@ selects all elements -with index \var{k} such that \var{i} \code{<=} \var{k} \code{<} -\var{j}. When used as an expression, a slice is a sequence of the -same type --- this implies that the index set is renumbered so that it -starts at 0 again. -\index{slicing} - -Sequences are distinguished according to their mutability: - -\begin{description} -% -\item[Immutable sequences] -An object of an immutable sequence type cannot change once it is -created. (If the object contains references to other objects, -these other objects may be mutable and may be changed; however -the collection of objects directly referenced by an immutable object -cannot change.) -\obindex{immutable sequence} -\obindex{immutable} - -The following types are immutable sequences: - -\begin{description} - -\item[Strings] -The elements of a string are characters. There is no separate -character type; a character is represented by a string of one element. -Characters represent (at least) 8-bit bytes. The built-in -functions \verb@chr()@ and \verb@ord()@ convert between characters -and nonnegative integers representing the byte values. -Bytes with the values 0-127 represent the corresponding \ASCII{} values. -The string data type is also used to represent arrays of bytes, e.g. -to hold data read from a file. -\obindex{string} -\index{character} -\index{byte} -\index{ASCII} -\bifuncindex{chr} -\bifuncindex{ord} - -(On systems whose native character set is not \ASCII{}, strings may use -EBCDIC in their internal representation, provided the functions -\verb@chr()@ and \verb@ord()@ implement a mapping between \ASCII{} and -EBCDIC, and string comparison preserves the \ASCII{} order. -Or perhaps someone can propose a better rule?) -\index{ASCII} -\index{EBCDIC} -\index{character set} -\indexii{string}{comparison} -\bifuncindex{chr} -\bifuncindex{ord} - -\item[Tuples] -The elements of a tuple are arbitrary Python objects. -Tuples of two or more elements are formed by comma-separated lists -of expressions. A tuple of one element (a `singleton') can be formed -by affixing a comma to an expression (an expression by itself does -not create a tuple, since parentheses must be usable for grouping of -expressions). An empty tuple can be formed by enclosing `nothing' in -parentheses. -\obindex{tuple} -\indexii{singleton}{tuple} -\indexii{empty}{tuple} - -\end{description} % Immutable sequences - -\item[Mutable sequences] -Mutable sequences can be changed after they are created. The -subscription and slicing notations can be used as the target of -assignment and \verb@del@ (delete) statements. -\obindex{mutable sequece} -\obindex{mutable} -\indexii{assignment}{statement} -\index{delete} -\stindex{del} -\index{subscription} -\index{slicing} - -There is currently a single mutable sequence type: - -\begin{description} - -\item[Lists] -The elements of a list are arbitrary Python objects. Lists are formed -by placing a comma-separated list of expressions in square brackets. -(Note that there are no special cases needed to form lists of length 0 -or 1.) -\obindex{list} - -\end{description} % Mutable sequences - -\end{description} % Sequences - -\item[Mapping types] -These represent finite sets of objects indexed by arbitrary index sets. -The subscript notation \verb@a[k]@ selects the element indexed -by \verb@k@ from the mapping \verb@a@; this can be used in -expressions and as the target of assignments or \verb@del@ statements. -The built-in function \verb@len()@ returns the number of elements -in a mapping. -\bifuncindex{len} -\index{subscription} -\obindex{mapping} - -There is currently a single mapping type: - -\begin{description} - -\item[Dictionaries] -These represent finite sets of objects indexed by almost arbitrary -values. The only types of values not acceptable as keys are values -containing lists or dictionaries or other mutable types that are -compared by value rather than by object identity --- the reason being -that the implementation requires that a key's hash value be constant. -Numeric types used for keys obey the normal rules for numeric -comparison: if two numbers compare equal (e.g. 1 and 1.0) then they -can be used interchangeably to index the same dictionary entry. - -Dictionaries are mutable; they are created by the \verb@{...}@ -notation (see section \ref{dict}). -\obindex{dictionary} -\obindex{mutable} - -\end{description} % Mapping types - -\item[Callable types] -These are the types to which the function call (invocation) operation, -written as \verb@function(argument, argument, ...)@, can be applied: -\indexii{function}{call} -\index{invocation} -\indexii{function}{argument} -\obindex{callable} - -\begin{description} - -\item[User-defined functions] -A user-defined function object is created by a function definition -(see section \ref{function}). It should be called with an argument -list containing the same number of items as the function's formal -parameter list. -\indexii{user-defined}{function} -\obindex{function} -\obindex{user-defined function} - -Special read-only attributes: \verb@func_code@ is the code object -representing the compiled function body, and \verb@func_globals@ is (a -reference to) the dictionary that holds the function's global -variables --- it implements the global name space of the module in -which the function was defined. -\ttindex{func_code} -\ttindex{func_globals} -\indexii{global}{name space} - -\item[User-defined methods] -A user-defined method (a.k.a. {\em object closure}) is a pair of a -class instance object and a user-defined function. It should be -called with an argument list containing one item less than the number -of items in the function's formal parameter list. When called, the -class instance becomes the first argument, and the call arguments are -shifted one to the right. -\obindex{method} -\obindex{user-defined method} -\indexii{user-defined}{method} -\index{object closure} - -Special read-only attributes: \verb@im_self@ is the class instance -object, \verb@im_func@ is the function object. -\ttindex{im_func} -\ttindex{im_self} - -\item[Built-in functions] -A built-in function object is a wrapper around a C function. Examples -of built-in functions are \verb@len@ and \verb@math.sin@. There -are no special attributes. The number and type of the arguments are -determined by the C function. -\obindex{built-in function} -\obindex{function} -\index{C} - -\item[Built-in methods] -This is really a different disguise of a built-in function, this time -containing an object passed to the C function as an implicit extra -argument. An example of a built-in method is \verb@list.append@ if -\verb@list@ is a list object. -\obindex{built-in method} -\obindex{method} -\indexii{built-in}{method} - -\item[Classes] -Class objects are described below. When a class object is called as a -function, a new class instance (also described below) is created and -returned. This implies a call to the class's \verb@__init__@ method -if it has one. Any arguments are passed on to the \verb@__init__@ -method --- if there is no \verb@__init__@ method, the class must be called -without arguments. -\ttindex{__init__} -\obindex{class} -\obindex{class instance} -\obindex{instance} -\indexii{class object}{call} - -\end{description} - -\item[Modules] -Modules are imported by the \verb@import@ statement (see section -\ref{import}). A module object is a container for a module's name -space, which is a dictionary (the same dictionary as referenced by the -\verb@func_globals@ attribute of functions defined in the module). -Module attribute references are translated to lookups in this -dictionary. A module object does not contain the code object used to -initialize the module (since it isn't needed once the initialization -is done). -\stindex{import} -\obindex{module} - -Attribute assignment update the module's name space dictionary. - -Special read-only attribute: \verb@__dict__@ yields the module's name -space as a dictionary object. Predefined attributes: \verb@__name__@ -yields the module's name as a string object; \verb@__doc__@ yields the -module's documentation string as a string object, or -\verb@None@ if no documentation string was found. -\ttindex{__dict__} -\ttindex{__name__} -\ttindex{__doc__} -\indexii{module}{name space} - -\item[Classes] -Class objects are created by class definitions (see section -\ref{class}). A class is a container for a dictionary containing the -class's name space. Class attribute references are translated to -lookups in this dictionary. When an attribute name is not found -there, the attribute search continues in the base classes. The search -is depth-first, left-to-right in the order of their occurrence in the -base class list. -\obindex{class} -\obindex{class instance} -\obindex{instance} -\indexii{class object}{call} -\index{container} -\obindex{dictionary} -\indexii{class}{attribute} - -Class attribute assignments update the class's dictionary, never the -dictionary of a base class. -\indexiii{class}{attribute}{assignment} - -A class can be called as a function to yield a class instance (see -above). -\indexii{class object}{call} - -Special read-only attributes: \verb@__dict__@ yields the dictionary -containing the class's name space; \verb@__bases__@ yields a tuple -(possibly empty or a singleton) containing the base classes, in the -order of their occurrence in the base class list. -\ttindex{__dict__} -\ttindex{__bases__} - -\item[Class instances] -A class instance is created by calling a class object as a -function. A class instance has a dictionary in which -attribute references are searched. When an attribute is not found -there, and the instance's class has an attribute by that name, and -that class attribute is a user-defined function (and in no other -cases), the instance attribute reference yields a user-defined method -object (see above) constructed from the instance and the function. -\obindex{class instance} -\obindex{instance} -\indexii{class}{instance} -\indexii{class instance}{attribute} - -Attribute assignments update the instance's dictionary. -\indexiii{class instance}{attribute}{assignment} - -Class instances can pretend to be numbers, sequences, or mappings if -they have methods with certain special names. These are described in -section \ref{specialnames}. -\obindex{number} -\obindex{sequence} -\obindex{mapping} - -Special read-only attributes: \verb@__dict__@ yields the attribute -dictionary; \verb@__class__@ yields the instance's class. -\ttindex{__dict__} -\ttindex{__class__} - -\item[Files] -A file object represents an open file. (It is a wrapper around a C -{\tt stdio} file pointer.) File objects are created by the -\verb@open()@ built-in function, and also by \verb@posix.popen()@ and -the \verb@makefile@ method of socket objects. \verb@sys.stdin@, -\verb@sys.stdout@ and \verb@sys.stderr@ are file objects corresponding -to the interpreter's standard input, output and error streams. -See the Python Library Reference for methods of file objects and other -details. -\obindex{file} -\index{C} -\index{stdio} -\bifuncindex{open} -\bifuncindex{popen} -\bifuncindex{makefile} -\ttindex{stdin} -\ttindex{stdout} -\ttindex{stderr} -\ttindex{sys.stdin} -\ttindex{sys.stdout} -\ttindex{sys.stderr} - -\item[Internal types] -A few types used internally by the interpreter are exposed to the user. -Their definition may change with future versions of the interpreter, -but they are mentioned here for completeness. -\index{internal type} - -\begin{description} - -\item[Code objects] -Code objects represent ``pseudo-compiled'' executable Python code. -The difference between a code -object and a function object is that the function object contains an -explicit reference to the function's context (the module in which it -was defined) while a code object contains no context. -\obindex{code} - -Special read-only attributes: \verb@co_code@ is a string representing -the sequence of instructions; \verb@co_consts@ is a list of literals -used by the code; \verb@co_names@ is a list of names (strings) used by -the code; \verb@co_filename@ is the filename from which the code was -compiled. (To find out the line numbers, you would have to decode the -instructions; the standard library module \verb@dis@ contains an -example of how to do this.) -\ttindex{co_code} -\ttindex{co_consts} -\ttindex{co_names} -\ttindex{co_filename} - -\item[Frame objects] -Frame objects represent execution frames. They may occur in traceback -objects (see below). -\obindex{frame} - -Special read-only attributes: \verb@f_back@ is to the previous -stack frame (towards the caller), or \verb@None@ if this is the bottom -stack frame; \verb@f_code@ is the code object being executed in this -frame; \verb@f_globals@ is the dictionary used to look up global -variables; \verb@f_locals@ is used for local variables; -\verb@f_lineno@ gives the line number and \verb@f_lasti@ gives the -precise instruction (this is an index into the instruction string of -the code object). -\ttindex{f_back} -\ttindex{f_code} -\ttindex{f_globals} -\ttindex{f_locals} -\ttindex{f_lineno} -\ttindex{f_lasti} - -\item[Traceback objects] \label{traceback} -Traceback objects represent a stack trace of an exception. A -traceback object is created when an exception occurs. When the search -for an exception handler unwinds the execution stack, at each unwound -level a traceback object is inserted in front of the current -traceback. When an exception handler is entered -(see also section \ref{try}), the stack trace is -made available to the program as \verb@sys.exc_traceback@. When the -program contains no suitable handler, the stack trace is written -(nicely formatted) to the standard error stream; if the interpreter is -interactive, it is also made available to the user as -\verb@sys.last_traceback@. -\obindex{traceback} -\indexii{stack}{trace} -\indexii{exception}{handler} -\indexii{execution}{stack} -\ttindex{exc_traceback} -\ttindex{last_traceback} -\ttindex{sys.exc_traceback} -\ttindex{sys.last_traceback} - -Special read-only attributes: \verb@tb_next@ is the next level in the -stack trace (towards the frame where the exception occurred), or -\verb@None@ if there is no next level; \verb@tb_frame@ points to the -execution frame of the current level; \verb@tb_lineno@ gives the line -number where the exception occurred; \verb@tb_lasti@ indicates the -precise instruction. The line number and last instruction in the -traceback may differ from the line number of its frame object if the -exception occurred in a \verb@try@ statement with no matching -\verb@except@ clause or with a \verb@finally@ clause. -\ttindex{tb_next} -\ttindex{tb_frame} -\ttindex{tb_lineno} -\ttindex{tb_lasti} -\stindex{try} - -\end{description} % Internal types - -\end{description} % Types - - -\section{Special method names} \label{specialnames} - -A class can implement certain operations that are invoked by special -syntax (such as subscription or arithmetic operations) by defining -methods with special names. For instance, if a class defines a -method named \verb@__getitem__@, and \verb@x@ is an instance of this -class, then \verb@x[i]@ is equivalent to \verb@x.__getitem__(i)@. -(The reverse is not true --- if \verb@x@ is a list object, -\verb@x.__getitem__(i)@ is not equivalent to \verb@x[i]@.) -\ttindex{__getitem__} - -Except for \verb@__repr__@, \verb@__str__@ and \verb@__cmp__@, -attempts to execute an -operation raise an exception when no appropriate method is defined. -For \verb@__repr__@, the default is to return a string describing the -object's class and address. -For \verb@__cmp__@, the default is to compare instances based on their -address. -For \verb@__str__@, the default is to use \verb@__repr__@. -\ttindex{__repr__} -\ttindex{__str__} -\ttindex{__cmp__} - - -\subsection{Special methods for any type} - -\begin{description} - -\item[{\tt __init__(self, args...)}] -Called when the instance is created. The arguments are those passed -to the class constructor expression. If a base class has an -\code{__init__} method the derived class's \code{__init__} method must -explicitly call it to ensure proper initialization of the base class -part of the instance. -\ttindex{__init__} -\indexii{class}{constructor} - - -\item[{\tt __del__(self)}] -Called when the instance is about to be destroyed. If a base class -has an \code{__del__} method the derived class's \code{__del__} method -must explicitly call it to ensure proper deletion of the base class -part of the instance. Note that it is possible for the \code{__del__} -method to postpone destruction of the instance by creating a new -reference to it. It may then be called at a later time when this new -reference is deleted. It is not guaranteed that -\code{__del__} methods are called for objects that still exist when -the interpreter exits. -If an exception occurs in a \code{__del__} method, it is ignored, and -a warning is printed on stderr. -\ttindex{__del__} -\stindex{del} - -Note that \code{del x} doesn't directly call \code{x.__del__} --- the -former decrements the reference count for \code{x} by one, but -\code{x.__del__} is only called when its reference count reaches zero. - -\strong{Warning:} due to the precarious circumstances under which -\code{__del__} methods are executed, exceptions that occur during -their execution are \emph{ignored}. - -\item[{\tt __repr__(self)}] -Called by the \verb@repr()@ built-in function and by string conversions -(reverse or backward quotes) to compute the string representation of an object. -\ttindex{__repr__} -\bifuncindex{repr} -\indexii{string}{conversion} -\indexii{reverse}{quotes} -\indexii{backward}{quotes} -\index{back-quotes} - -\item[{\tt __str__(self)}] -Called by the \verb@str()@ built-in function and by the \verb@print@ -statement compute the string representation of an object. -\ttindex{__str__} -\bifuncindex{str} -\stindex{print} - -\item[{\tt __cmp__(self, other)}] -Called by all comparison operations. Should return -1 if -\verb@self < other@, 0 if \verb@self == other@, +1 if -\verb@self > other@. If no \code{__cmp__} operation is defined, class -instances are compared by object identity (``address''). -(Implementation note: due to limitations in the interpreter, -exceptions raised by comparisons are ignored, and the objects will be -considered equal in this case.) -\ttindex{__cmp__} -\bifuncindex{cmp} -\index{comparisons} - -\item[{\tt __hash__(self)}] -Called for the key object for dictionary operations, -and by the built-in function -\code{hash()}. Should return a 32-bit integer usable as a hash value -for dictionary operations. The only required property is that objects -which compare equal have the same hash value; it is advised to somehow -mix together (e.g. using exclusive or) the hash values for the -components of the object that also play a part in comparison of -objects. If a class does not define a \code{__cmp__} method it should -not define a \code{__hash__} operation either; if it defines -\code{__cmp__} but not \code{__hash__} its instances will not be -usable as dictionary keys. If a class defines mutable objects and -implements a \code{__cmp__} method it should not implement -\code{__hash__}, since the dictionary implementation assumes that a -key's hash value is a constant. -\obindex{dictionary} -\ttindex{__cmp__} -\ttindex{__hash__} -\bifuncindex{hash} - -\item[{\tt __call__(self, *args)}] -Called when the instance is ``called'' as a function. -\ttindex{__call__} -\indexii{call}{instance} - -\end{description} - - -\subsection{Special methods for attribute access} - -The following methods can be used to change the meaning of attribute -access for class instances. - -\begin{description} - -\item[{\tt __getattr__(self, name)}] -Called when an attribute lookup has not found the attribute in the -usual places (i.e. it is not an instance attribute nor is it found in -the class tree for \code{self}). \code{name} is the attribute name. -\ttindex{__getattr__} - -Note that if the attribute is found through the normal mechanism, -\code{__getattr__} is not called. (This is an asymmetry between -\code{__getattr__} and \code{__setattr__}.) -This is done both for efficiency reasons and because otherwise -\code{__getattr__} would have no way to access other attributes of the -instance. -Note that at least for instance variables, \code{__getattr__} can fake -total control by simply not inserting any values in the instance -attribute dictionary. -\ttindex{__setattr__} - -\item[{\tt __setattr__(self, name, value)}] -Called when an attribute assignment is attempted. This is called -instead of the normal mechanism (i.e. store the value as an instance -attribute). \code{name} is the attribute name, \code{value} is the -value to be assigned to it. -\ttindex{__setattr__} - -If \code{__setattr__} wants to assign to an instance attribute, it -should not simply execute \code{self.\var{name} = value} --- this would -cause a recursive call. Instead, it should insert the value in the -dictionary of instance attributes, e.g. \code{self.__dict__[name] = -value}. -\ttindex{__dict__} - -\item[{\tt __delattr__(self, name)}] -Like \code{__setattr__} but for attribute deletion instead of -assignment. -\ttindex{__delattr__} - -\end{description} - - -\subsection{Special methods for sequence and mapping types} - -\begin{description} - -\item[{\tt __len__(self)}] -Called to implement the built-in function \verb@len()@. Should return -the length of the object, an integer \verb@>=@ 0. Also, an object -whose \verb@__len__()@ method returns 0 is considered to be false in a -Boolean context. -\ttindex{__len__} - -\item[{\tt __getitem__(self, key)}] -Called to implement evaluation of \verb@self[key]@. Note that the -special interpretation of negative keys (if the class wishes to -emulate a sequence type) is up to the \verb@__getitem__@ method. -\ttindex{__getitem__} - -\item[{\tt __setitem__(self, key, value)}] -Called to implement assignment to \verb@self[key]@. Same note as for -\verb@__getitem__@. -\ttindex{__setitem__} - -\item[{\tt __delitem__(self, key)}] -Called to implement deletion of \verb@self[key]@. Same note as for -\verb@__getitem__@. -\ttindex{__delitem__} - -\end{description} - - -\subsection{Special methods for sequence types} - -\begin{description} - -\item[{\tt __getslice__(self, i, j)}] -Called to implement evaluation of \verb@self[i:j]@. Note that missing -\verb@i@ or \verb@j@ are replaced by 0 or \verb@len(self)@, -respectively, and \verb@len(self)@ has been added (once) to originally -negative \verb@i@ or \verb@j@ by the time this function is called -(unlike for \verb@__getitem__@). -\ttindex{__getslice__} - -\item[{\tt __setslice__(self, i, j, sequence)}] -Called to implement assignment to \verb@self[i:j]@. Same notes as for -\verb@__getslice__@. -\ttindex{__setslice__} - -\item[{\tt __delslice__(self, i, j)}] -Called to implement deletion of \verb@self[i:j]@. Same notes as for -\verb@__getslice__@. -\ttindex{__delslice__} - -\end{description} - - -\subsection{Special methods for numeric types} - -\begin{description} - -\item[{\tt __add__(self, other)}]\itemjoin -\item[{\tt __sub__(self, other)}]\itemjoin -\item[{\tt __mul__(self, other)}]\itemjoin -\item[{\tt __div__(self, other)}]\itemjoin -\item[{\tt __mod__(self, other)}]\itemjoin -\item[{\tt __divmod__(self, other)}]\itemjoin -\item[{\tt __pow__(self, other)}]\itemjoin -\item[{\tt __lshift__(self, other)}]\itemjoin -\item[{\tt __rshift__(self, other)}]\itemjoin -\item[{\tt __and__(self, other)}]\itemjoin -\item[{\tt __xor__(self, other)}]\itemjoin -\item[{\tt __or__(self, other)}]\itembreak -Called to implement the binary arithmetic operations (\verb@+@, -\verb@-@, \verb@*@, \verb@/@, \verb@%@, \verb@divmod()@, \verb@pow()@, -\verb@<<@, \verb@>>@, \verb@&@, \verb@^@, \verb@|@). -\ttindex{__or__} -\ttindex{__xor__} -\ttindex{__and__} -\ttindex{__rshift__} -\ttindex{__lshift__} -\ttindex{__pow__} -\ttindex{__divmod__} -\ttindex{__mod__} -\ttindex{__div__} -\ttindex{__mul__} -\ttindex{__sub__} -\ttindex{__add__} - -\item[{\tt __neg__(self)}]\itemjoin -\item[{\tt __pos__(self)}]\itemjoin -\item[{\tt __abs__(self)}]\itemjoin -\item[{\tt __invert__(self)}]\itembreak -Called to implement the unary arithmetic operations (\verb@-@, \verb@+@, -\verb@abs()@ and \verb@~@). -\ttindex{__invert__} -\ttindex{__abs__} -\ttindex{__pos__} -\ttindex{__neg__} - -\item[{\tt __nonzero__(self)}] -Called to implement boolean testing; should return 0 or 1. An -alternative name for this method is \verb@__len__@. -\ttindex{__nonzero__} - -\item[{\tt __coerce__(self, other)}] -Called to implement ``mixed-mode'' numeric arithmetic. Should either -return a tuple containing self and other converted to a common numeric -type, or None if no way of conversion is known. When the common type -would be the type of other, it is sufficient to return None, since the -interpreter will also ask the other object to attempt a coercion (but -sometimes, if the implementation of the other type cannot be changed, -it is useful to do the conversion to the other type here). -\ttindex{__coerce__} - -Note that this method is not called to coerce the arguments to \verb@+@ -and \verb@*@, because these are also used to implement sequence -concatenation and repetition, respectively. Also note that, for the -same reason, in \verb@n*x@, where \verb@n@ is a built-in number and -\verb@x@ is an instance, a call to \verb@x.__mul__(n)@ is made.% -\footnote{The interpreter should really distinguish between -user-defined classes implementing sequences, mappings or numbers, but -currently it doesn't --- hence this strange exception.} -\ttindex{__mul__} - -\item[{\tt __int__(self)}]\itemjoin -\item[{\tt __long__(self)}]\itemjoin -\item[{\tt __float__(self)}]\itembreak -Called to implement the built-in functions \verb@int()@, \verb@long()@ -and \verb@float()@. Should return a value of the appropriate type. -\ttindex{__float__} -\ttindex{__long__} -\ttindex{__int__} - -\item[{\tt __oct__(self)}]\itemjoin -\item[{\tt __hex__(self)}]\itembreak -Called to implement the built-in functions \verb@oct()@ and -\verb@hex()@. Should return a string value. -\ttindex{__hex__} -\ttindex{__oct__} - -\end{description} diff --git a/Doc/ref4.tex b/Doc/ref4.tex deleted file mode 100644 index 4b4d522..0000000 --- a/Doc/ref4.tex +++ /dev/null @@ -1,201 +0,0 @@ -\chapter{Execution model} -\index{execution model} - -\section{Code blocks, execution frames, and name spaces} \label{execframes} -\index{code block} -\indexii{execution}{frame} -\index{name space} - -A {\em code block} is a piece of Python program text that can be -executed as a unit, such as a module, a class definition or a function -body. Some code blocks (like modules) are executed only once, others -(like function bodies) may be executed many times. Code blocks may -textually contain other code blocks. Code blocks may invoke other -code blocks (that may or may not be textually contained in them) as -part of their execution, e.g. by invoking (calling) a function. -\index{code block} -\indexii{code}{block} - -The following are code blocks: A module is a code block. A function -body is a code block. A class definition is a code block. Each -command typed interactively is a separate code block; a script file is -a code block. The string argument passed to the built-in function -\verb@eval@ and to the \verb@exec@ statement are code blocks. -And finally, the -expression read and evaluated by the built-in function \verb@input@ is -a code block. - -A code block is executed in an execution frame. An {\em execution -frame} contains some administrative information (used for debugging), -determines where and how execution continues after the code block's -execution has completed, and (perhaps most importantly) defines two -name spaces, the local and the global name space, that affect -execution of the code block. -\indexii{execution}{frame} - -A {\em name space} is a mapping from names (identifiers) to objects. -A particular name space may be referenced by more than one execution -frame, and from other places as well. Adding a name to a name space -is called {\em binding} a name (to an object); changing the mapping of -a name is called {\em rebinding}; removing a name is {\em unbinding}. -Name spaces are functionally equivalent to dictionaries. -\index{name space} -\indexii{binding}{name} -\indexii{rebinding}{name} -\indexii{unbinding}{name} - -The {\em local name space} of an execution frame determines the default -place where names are defined and searched. The {\em global name -space} determines the place where names listed in \verb@global@ -statements are defined and searched, and where names that are not -explicitly bound in the current code block are searched. -\indexii{local}{name space} -\indexii{global}{name space} -\stindex{global} - -Whether a name is local or global in a code block is determined by -static inspection of the source text for the code block: in the -absence of \verb@global@ statements, a name that is bound anywhere in -the code block is local in the entire code block; all other names are -considered global. The \verb@global@ statement forces global -interpretation of selected names throughout the code block. The -following constructs bind names: formal parameters, \verb@import@ -statements, class and function definitions (these bind the class or -function name), and targets that are identifiers if occurring in an -assignment, \verb@for@ loop header, or \verb@except@ clause header. - -A target occurring in a \verb@del@ statement is also considered bound -for this purpose (though the actual semantics are to ``unbind'' the -name). - -When a global name is not found in the global name space, it is -searched in the list of ``built-in'' names (which is actually the -global name space of the module \verb@__builtin__@). When a name is not -found at all, the \verb@NameError@ exception is raised.% -\footnote{If the code block contains {\tt exec} statements or the -construct {\tt from \ldots import *}, the semantics of names not -explicitly mentioned in a {\tt global} statement change subtly: name -lookup first searches the local name space, then the global one, then -the built-in one.} -\bimodindex{__builtin__} -\stindex{from} -\stindex{exec} -\stindex{global} -\ttindex{NameError} - -The following table lists the meaning of the local and global name -space for various types of code blocks. The name space for a -particular module is automatically created when the module is first -referenced. Note that in almost all cases, the global name space is -the name space of the containing module --- scopes in Python do not -nest! - -\begin{center} -\begin{tabular}{|l|l|l|l|} -\hline -Code block type & Global name space & Local name space & Notes \\ -\hline -Module & n.s. for this module & same as global & \\ -Script & n.s. for \verb@__main__@ & same as global & \\ -Interactive command & n.s. for \verb@__main__@ & same as global & \\ -Class definition & global n.s. of containing block & new n.s. & \\ -Function body & global n.s. of containing block & new n.s. & (2) \\ -String passed to \verb@exec@ statement - & global n.s. of containing block - & local n.s. of containing block & (1) \\ -String passed to \verb@eval()@ - & global n.s. of caller & local n.s. of caller & (1) \\ -File read by \verb@execfile()@ - & global n.s. of caller & local n.s. of caller & (1) \\ -Expression read by \verb@input@ - & global n.s. of caller & local n.s. of caller & \\ -\hline -\end{tabular} -\end{center} -\bimodindex{__main__} - -Notes: - -\begin{description} - -\item[n.s.] means {\em name space} - -\item[(1)] The global and local name space for these can be -overridden with optional extra arguments. - -\item[(2)] The body of lambda forms (see section \ref{lambda}) is -treated exactly the same as a (nested) function definition. Lambda -forms have their own name space consisting of their formal arguments. -\indexii{lambda}{form} - -\end{description} - -The built-in functions \verb@globals()@ and \verb@locals()@ returns a -dictionary representing the current global and local name space, -respectively. The effect of modifications to this dictionary on the -name space are undefined.% -\footnote{The current implementations return the dictionary actually -used to implement the name space, {\em except} for functions, where -the optimizer may cause the local name space to be implemented -differently, and \verb@locals()@ returns a read-only dictionary.} - -\section{Exceptions} - -Exceptions are a means of breaking out of the normal flow of control -of a code block in order to handle errors or other exceptional -conditions. An exception is {\em raised} at the point where the error -is detected; it may be {\em handled} by the surrounding code block or -by any code block that directly or indirectly invoked the code block -where the error occurred. -\index{exception} -\index{raise an exception} -\index{handle an exception} -\index{exception handler} -\index{errors} -\index{error handling} - -The Python interpreter raises an exception when it detects an run-time -error (such as division by zero). A Python program can also -explicitly raise an exception with the \verb@raise@ statement. -Exception handlers are specified with the \verb@try...except@ -statement. - -Python uses the ``termination'' model of error handling: an exception -handler can find out what happened and continue execution at an outer -level, but it cannot repair the cause of the error and retry the -failing operation (except by re-entering the the offending piece of -code from the top). - -When an exception is not handled at all, the interpreter terminates -execution of the program, or returns to its interactive main loop. - -Exceptions are identified by string objects or class instances. Two -different string objects with the same value identify different -exceptions. An exception can be raised with a class instance. Such -exceptions are caught by specifying an except clause that has the -class name (or a base class) as the condition. - -When an exception is raised, an object (maybe \verb@None@) is passed -as the exception's ``parameter''; this object does not affect the -selection of an exception handler, but is passed to the selected -exception handler as additional information. For exceptions raised -with a class instance, the instance is passed as the ``parameter''. - -For example: - -\begin{verbatim} ->>> class Error: -... def __init__(self, msg): self.msg = msg -... ->>> class SpecificError(Error): pass -... ->>> try: -... raise SpecificError('broken') -... except Error, obj: -... print obj.msg -... -broken -\end{verbatim} - -See also the description of the \verb@try@ and \verb@raise@ -statements. diff --git a/Doc/ref5.tex b/Doc/ref5.tex deleted file mode 100644 index b2fea3c..0000000 --- a/Doc/ref5.tex +++ /dev/null @@ -1,759 +0,0 @@ -\chapter{Expressions and conditions} -\index{expression} -\index{condition} - -{\bf Note:} In this and the following chapters, extended BNF notation -will be used to describe syntax, not lexical analysis. -\index{BNF} - -This chapter explains the meaning of the elements of expressions and -conditions. Conditions are a superset of expressions, and a condition -may be used wherever an expression is required by enclosing it in -parentheses. The only places where expressions are used in the syntax -instead of conditions is in expression statements and on the -right-hand side of assignment statements; this catches some nasty bugs -like accidentally writing \verb@x == 1@ instead of \verb@x = 1@. -\indexii{assignment}{statement} - -The comma plays several roles in Python's syntax. It is usually an -operator with a lower precedence than all others, but occasionally -serves other purposes as well; e.g. it separates function arguments, -is used in list and dictionary constructors, and has special semantics -in \verb@print@ statements. -\index{comma} - -When (one alternative of) a syntax rule has the form - -\begin{verbatim} -name: othername -\end{verbatim} - -and no semantics are given, the semantics of this form of \verb@name@ -are the same as for \verb@othername@. -\index{syntax} - -\section{Arithmetic conversions} -\indexii{arithmetic}{conversion} - -When a description of an arithmetic operator below uses the phrase -``the numeric arguments are converted to a common type'', -this both means that if either argument is not a number, a -\verb@TypeError@ exception is raised, and that otherwise -the following conversions are applied: -\exindex{TypeError} -\indexii{floating point}{number} -\indexii{long}{integer} -\indexii{plain}{integer} - -\begin{itemize} -\item first, if either argument is a floating point number, - the other is converted to floating point; -\item else, if either argument is a long integer, - the other is converted to long integer; -\item otherwise, both must be plain integers and no conversion - is necessary. -\end{itemize} - -\section{Atoms} -\index{atom} - -Atoms are the most basic elements of expressions. Forms enclosed in -reverse quotes or in parentheses, brackets or braces are also -categorized syntactically as atoms. The syntax for atoms is: - -\begin{verbatim} -atom: identifier | literal | enclosure -enclosure: parenth_form|list_display|dict_display|string_conversion -\end{verbatim} - -\subsection{Identifiers (Names)} -\index{name} -\index{identifier} - -An identifier occurring as an atom is a reference to a local, global -or built-in name binding. If a name is assigned to anywhere in a code -block (even in unreachable code), and is not mentioned in a -\verb@global@ statement in that code block, then it refers to a local -name throughout that code block. When it is not assigned to anywhere -in the block, or when it is assigned to but also explicitly listed in -a \verb@global@ statement, it refers to a global name if one exists, -else to a built-in name (and this binding may dynamically change). -\indexii{name}{binding} -\index{code block} -\stindex{global} -\indexii{built-in}{name} -\indexii{global}{name} - -When the name is bound to an object, evaluation of the atom yields -that object. When a name is not bound, an attempt to evaluate it -raises a \verb@NameError@ exception. -\exindex{NameError} - -\subsection{Literals} -\index{literal} - -Python knows string and numeric literals: - -\begin{verbatim} -literal: stringliteral | integer | longinteger | floatnumber -\end{verbatim} - -Evaluation of a literal yields an object of the given type (string, -integer, long integer, floating point number) with the given value. -The value may be approximated in the case of floating point literals. -See section \ref{literals} for details. - -All literals correspond to immutable data types, and hence the -object's identity is less important than its value. Multiple -evaluations of literals with the same value (either the same -occurrence in the program text or a different occurrence) may obtain -the same object or a different object with the same value. -\indexiii{immutable}{data}{type} - -(In the original implementation, all literals in the same code block -with the same type and value yield the same object.) - -\subsection{Parenthesized forms} -\index{parenthesized form} - -A parenthesized form is an optional condition list enclosed in -parentheses: - -\begin{verbatim} -parenth_form: "(" [condition_list] ")" -\end{verbatim} - -A parenthesized condition list yields whatever that condition list -yields. - -An empty pair of parentheses yields an empty tuple object. Since -tuples are immutable, the rules for literals apply here. -\indexii{empty}{tuple} - -(Note that tuples are not formed by the parentheses, but rather by use -of the comma operator. The exception is the empty tuple, for which -parentheses {\em are} required --- allowing unparenthesized ``nothing'' -in expressions would cause ambiguities and allow common typos to -pass uncaught.) -\index{comma} -\indexii{tuple}{display} - -\subsection{List displays} -\indexii{list}{display} - -A list display is a possibly empty series of conditions enclosed in -square brackets: - -\begin{verbatim} -list_display: "[" [condition_list] "]" -\end{verbatim} - -A list display yields a new list object. -\obindex{list} - -If it has no condition list, the list object has no items. Otherwise, -the elements of the condition list are evaluated from left to right -and inserted in the list object in that order. -\indexii{empty}{list} - -\subsection{Dictionary displays} \label{dict} -\indexii{dictionary}{display} - -A dictionary display is a possibly empty series of key/datum pairs -enclosed in curly braces: -\index{key} -\index{datum} -\index{key/datum pair} - -\begin{verbatim} -dict_display: "{" [key_datum_list] "}" -key_datum_list: key_datum ("," key_datum)* [","] -key_datum: condition ":" condition -\end{verbatim} - -A dictionary display yields a new dictionary object. -\obindex{dictionary} - -The key/datum pairs are evaluated from left to right to define the -entries of the dictionary: each key object is used as a key into the -dictionary to store the corresponding datum. - -Restrictions on the types of the key values are listed earlier in -section \ref{types}. -Clashes between duplicate keys are not detected; the last -datum (textually rightmost in the display) stored for a given key -value prevails. -\exindex{TypeError} - -\subsection{String conversions} -\indexii{string}{conversion} -\indexii{reverse}{quotes} -\indexii{backward}{quotes} -\index{back-quotes} - -A string conversion is a condition list enclosed in reverse (or -backward) quotes: - -\begin{verbatim} -string_conversion: "`" condition_list "`" -\end{verbatim} - -A string conversion evaluates the contained condition list and -converts the resulting object into a string according to rules -specific to its type. - -If the object is a string, a number, \verb@None@, or a tuple, list or -dictionary containing only objects whose type is one of these, the -resulting string is a valid Python expression which can be passed to -the built-in function \verb@eval()@ to yield an expression with the -same value (or an approximation, if floating point numbers are -involved). - -(In particular, converting a string adds quotes around it and converts -``funny'' characters to escape sequences that are safe to print.) - -It is illegal to attempt to convert recursive objects (e.g. lists or -dictionaries that contain a reference to themselves, directly or -indirectly.) -\obindex{recursive} - -The built-in function \verb@repr()@ performs exactly the same -conversion in its argument as enclosing it it reverse quotes does. -The built-in function \verb@str()@ performs a similar but more -user-friendly conversion. -\bifuncindex{repr} -\bifuncindex{str} - -\section{Primaries} \label{primaries} -\index{primary} - -Primaries represent the most tightly bound operations of the language. -Their syntax is: - -\begin{verbatim} -primary: atom | attributeref | subscription | slicing | call -\end{verbatim} - -\subsection{Attribute references} -\indexii{attribute}{reference} - -An attribute reference is a primary followed by a period and a name: - -\begin{verbatim} -attributeref: primary "." identifier -\end{verbatim} - -The primary must evaluate to an object of a type that supports -attribute references, e.g. a module or a list. This object is then -asked to produce the attribute whose name is the identifier. If this -attribute is not available, the exception \verb@AttributeError@ is -raised. Otherwise, the type and value of the object produced is -determined by the object. Multiple evaluations of the same attribute -reference may yield different objects. -\obindex{module} -\obindex{list} - -\subsection{Subscriptions} -\index{subscription} - -A subscription selects an item of a sequence (string, tuple or list) -or mapping (dictionary) object: -\obindex{sequence} -\obindex{mapping} -\obindex{string} -\obindex{tuple} -\obindex{list} -\obindex{dictionary} -\indexii{sequence}{item} - -\begin{verbatim} -subscription: primary "[" condition "]" -\end{verbatim} - -The primary must evaluate to an object of a sequence or mapping type. - -If it is a mapping, the condition must evaluate to an object whose -value is one of the keys of the mapping, and the subscription selects -the value in the mapping that corresponds to that key. - -If it is a sequence, the condition must evaluate to a plain integer. -If this value is negative, the length of the sequence is added to it -(so that, e.g. \verb@x[-1]@ selects the last item of \verb@x@.) -The resulting value must be a nonnegative integer smaller than the -number of items in the sequence, and the subscription selects the item -whose index is that value (counting from zero). - -A string's items are characters. A character is not a separate data -type but a string of exactly one character. -\index{character} -\indexii{string}{item} - -\subsection{Slicings} -\index{slicing} -\index{slice} - -A slicing (or slice) selects a range of items in a sequence (string, -tuple or list) object: -\obindex{sequence} -\obindex{string} -\obindex{tuple} -\obindex{list} - -\begin{verbatim} -slicing: primary "[" [condition] ":" [condition] "]" -\end{verbatim} - -The primary must evaluate to a sequence object. The lower and upper -bound expressions, if present, must evaluate to plain integers; -defaults are zero and the sequence's length, respectively. If either -bound is negative, the sequence's length is added to it. The slicing -now selects all items with index \var{k} such that -\code{\var{i} <= \var{k} < \var{j}} where \var{i} -and \var{j} are the specified lower and upper bounds. This may be an -empty sequence. It is not an error if \var{i} or \var{j} lie outside the -range of valid indexes (such items don't exist so they aren't -selected). - -\subsection{Calls} \label{calls} -\index{call} - -A call calls a callable object (e.g. a function) with a possibly empty -series of arguments:\footnote{The new syntax for keyword arguments is -not yet documented in this manual. See chapter 12 of the Tutorial.} -\obindex{callable} - -\begin{verbatim} -call: primary "(" [condition_list] ")" -\end{verbatim} - -The primary must evaluate to a callable object (user-defined -functions, built-in functions, methods of built-in objects, class -objects, and methods of class instances are callable). If it is a -class, the argument list must be empty; otherwise, the arguments are -evaluated. - -A call always returns some value, possibly \verb@None@, unless it -raises an exception. How this value is computed depends on the type -of the callable object. If it is: - -\begin{description} - -\item[a user-defined function:] the code block for the function is -executed, passing it the argument list. The first thing the code -block will do is bind the formal parameters to the arguments; this is -described in section \ref{function}. When the code block executes a -\verb@return@ statement, this specifies the return value of the -function call. -\indexii{function}{call} -\indexiii{user-defined}{function}{call} -\obindex{user-defined function} -\obindex{function} - -\item[a built-in function or method:] the result is up to the -interpreter; see the library reference manual for the descriptions of -built-in functions and methods. -\indexii{function}{call} -\indexii{built-in function}{call} -\indexii{method}{call} -\indexii{built-in method}{call} -\obindex{built-in method} -\obindex{built-in function} -\obindex{method} -\obindex{function} - -\item[a class object:] a new instance of that class is returned. -\obindex{class} -\indexii{class object}{call} - -\item[a class instance method:] the corresponding user-defined -function is called, with an argument list that is one longer than the -argument list of the call: the instance becomes the first argument. -\obindex{class instance} -\obindex{instance} -\indexii{instance}{call} -\indexii{class instance}{call} - -\end{description} - -\section{Unary arithmetic operations} -\indexiii{unary}{arithmetic}{operation} -\indexiii{unary}{bit-wise}{operation} - -All unary arithmetic (and bit-wise) operations have the same priority: - -\begin{verbatim} -u_expr: primary | "-" u_expr | "+" u_expr | "~" u_expr -\end{verbatim} - -The unary \verb@"-"@ (minus) operator yields the negation of its -numeric argument. -\index{negation} -\index{minus} - -The unary \verb@"+"@ (plus) operator yields its numeric argument -unchanged. -\index{plus} - -The unary \verb@"~"@ (invert) operator yields the bit-wise inversion -of its plain or long integer argument. The bit-wise inversion of -\verb@x@ is defined as \verb@-(x+1)@. -\index{inversion} - -In all three cases, if the argument does not have the proper type, -a \verb@TypeError@ exception is raised. -\exindex{TypeError} - -\section{Binary arithmetic operations} -\indexiii{binary}{arithmetic}{operation} - -The binary arithmetic operations have the conventional priority -levels. Note that some of these operations also apply to certain -non-numeric types. There is no ``power'' operator, so there are only -two levels, one for multiplicative operators and one for additive -operators: - -\begin{verbatim} -m_expr: u_expr | m_expr "*" u_expr - | m_expr "/" u_expr | m_expr "%" u_expr -a_expr: m_expr | aexpr "+" m_expr | aexpr "-" m_expr -\end{verbatim} - -The \verb@"*"@ (multiplication) operator yields the product of its -arguments. The arguments must either both be numbers, or one argument -must be a plain integer and the other must be a sequence. In the -former case, the numbers are converted to a common type and then -multiplied together. In the latter case, sequence repetition is -performed; a negative repetition factor yields an empty sequence. -\index{multiplication} - -The \verb@"/"@ (division) operator yields the quotient of its -arguments. The numeric arguments are first converted to a common -type. Plain or long integer division yields an integer of the same -type; the result is that of mathematical division with the `floor' -function applied to the result. Division by zero raises the -\verb@ZeroDivisionError@ exception. -\exindex{ZeroDivisionError} -\index{division} - -The \verb@"%"@ (modulo) operator yields the remainder from the -division of the first argument by the second. The numeric arguments -are first converted to a common type. A zero right argument raises -the \verb@ZeroDivisionError@ exception. The arguments may be floating -point numbers, e.g. \verb@3.14 % 0.7@ equals \verb@0.34@. The modulo -operator always yields a result with the same sign as its second -operand (or zero); the absolute value of the result is strictly -smaller than the second operand. -\index{modulo} - -The integer division and modulo operators are connected by the -following identity: \verb@x == (x/y)*y + (x%y)@. Integer division and -modulo are also connected with the built-in function \verb@divmod()@: -\verb@divmod(x, y) == (x/y, x%y)@. These identities don't hold for -floating point numbers; there a similar identity holds where -\verb@x/y@ is replaced by \verb@floor(x/y)@). - -The \verb@"+"@ (addition) operator yields the sum of its arguments. -The arguments must either both be numbers, or both sequences of the -same type. In the former case, the numbers are converted to a common -type and then added together. In the latter case, the sequences are -concatenated. -\index{addition} - -The \verb@"-"@ (subtraction) operator yields the difference of its -arguments. The numeric arguments are first converted to a common -type. -\index{subtraction} - -\section{Shifting operations} -\indexii{shifting}{operation} - -The shifting operations have lower priority than the arithmetic -operations: - -\begin{verbatim} -shift_expr: a_expr | shift_expr ( "<<" | ">>" ) a_expr -\end{verbatim} - -These operators accept plain or long integers as arguments. The -arguments are converted to a common type. They shift the first -argument to the left or right by the number of bits given by the -second argument. - -A right shift by \var{n} bits is defined as division by -\code{pow(2,\var{n})}. A left shift by \var{n} bits is defined as -multiplication with \code{pow(2,\var{n})}; for plain integers there is -no overflow check so this drops bits and flips the sign if the result -is not less than \code{pow(2,31)} in absolute value. - -Negative shift counts raise a \verb@ValueError@ exception. -\exindex{ValueError} - -\section{Binary bit-wise operations} -\indexiii{binary}{bit-wise}{operation} - -Each of the three bitwise operations has a different priority level: - -\begin{verbatim} -and_expr: shift_expr | and_expr "&" shift_expr -xor_expr: and_expr | xor_expr "^" and_expr -or_expr: xor_expr | or_expr "|" xor_expr -\end{verbatim} - -The \verb@"&"@ operator yields the bitwise AND of its arguments, which -must be plain or long integers. The arguments are converted to a -common type. -\indexii{bit-wise}{and} - -The \verb@"^"@ operator yields the bitwise XOR (exclusive OR) of its -arguments, which must be plain or long integers. The arguments are -converted to a common type. -\indexii{bit-wise}{xor} -\indexii{exclusive}{or} - -The \verb@"|"@ operator yields the bitwise (inclusive) OR of its -arguments, which must be plain or long integers. The arguments are -converted to a common type. -\indexii{bit-wise}{or} -\indexii{inclusive}{or} - -\section{Comparisons} -\index{comparison} - -Contrary to C, all comparison operations in Python have the same -priority, which is lower than that of any arithmetic, shifting or -bitwise operation. Also contrary to C, expressions like -\verb@a < b < c@ have the interpretation that is conventional in -mathematics: -\index{C} - -\begin{verbatim} -comparison: or_expr (comp_operator or_expr)* -comp_operator: "<"|">"|"=="|">="|"<="|"<>"|"!="|"is" ["not"]|["not"] "in" -\end{verbatim} - -Comparisons yield integer values: 1 for true, 0 for false. - -Comparisons can be chained arbitrarily, e.g. \code{x < y <= z} is -equivalent to \code{x < y and y <= z}, except that \code{y} is -evaluated only once (but in both cases \code{z} is not evaluated at all -when \code{x < y} is found to be false). -\indexii{chaining}{comparisons} - -Formally, if \var{a}, \var{b}, \var{c}, \ldots, \var{y}, \var{z} are -expressions and \var{opa}, \var{opb}, \ldots, \var{opy} are comparison -operators, then \var{a opa b opb c} \ldots \var{y opy z} is equivalent -to \var{a opa b} \code{and} \var{b opb c} \code{and} \ldots \code{and} -\var{y opy z}, except that each expression is evaluated at most once. - -Note that \var{a opa b opb c} doesn't imply any kind of comparison -between \var{a} and \var{c}, so that e.g.\ \code{x < y > z} is -perfectly legal (though perhaps not pretty). - -The forms \verb@<>@ and \verb@!=@ are equivalent; for consistency with -C, \verb@!=@ is preferred; where \verb@!=@ is mentioned below -\verb@<>@ is also implied. - -The operators {\tt "<", ">", "==", ">=", "<="}, and {\tt "!="} compare -the values of two objects. The objects needn't have the same type. -If both are numbers, they are coverted to a common type. Otherwise, -objects of different types {\em always} compare unequal, and are -ordered consistently but arbitrarily. - -(This unusual definition of comparison is done to simplify the -definition of operations like sorting and the \verb@in@ and -\verb@not@ \verb@in@ operators.) - -Comparison of objects of the same type depends on the type: - -\begin{itemize} - -\item -Numbers are compared arithmetically. - -\item -Strings are compared lexicographically using the numeric equivalents -(the result of the built-in function \verb@ord@) of their characters. - -\item -Tuples and lists are compared lexicographically using comparison of -corresponding items. - -\item -Mappings (dictionaries) are compared through lexicographic -comparison of their sorted (key, value) lists.% -\footnote{This is expensive since it requires sorting the keys first, -but about the only sensible definition. An earlier version of Python -compared dictionaries by identity only, but this caused surprises -because people expected to be able to test a dictionary for emptiness -by comparing it to {\tt \{\}}.} - -\item -Most other types compare unequal unless they are the same object; -the choice whether one object is considered smaller or larger than -another one is made arbitrarily but consistently within one -execution of a program. - -\end{itemize} - -The operators \verb@in@ and \verb@not in@ test for sequence -membership: if \var{y} is a sequence, \code{\var{x} in \var{y}} is -true if and only if there exists an index \var{i} such that -\code{\var{x} = \var{y}[\var{i}]}. -\code{\var{x} not in \var{y}} yields the inverse truth value. The -exception \verb@TypeError@ is raised when \var{y} is not a sequence, -or when \var{y} is a string and \var{x} is not a string of length one.% -\footnote{The latter restriction is sometimes a nuisance.} -\opindex{in} -\opindex{not in} -\indexii{membership}{test} -\obindex{sequence} - -The operators \verb@is@ and \verb@is not@ test for object identity: -\var{x} \code{is} \var{y} is true if and only if \var{x} and \var{y} -are the same object. \var{x} \code{is not} \var{y} yields the inverse -truth value. -\opindex{is} -\opindex{is not} -\indexii{identity}{test} - -\section{Boolean operations} \label{Booleans} -\indexii{Boolean}{operation} - -Boolean operations have the lowest priority of all Python operations: - -\begin{verbatim} -condition: or_test | lambda_form -or_test: and_test | or_test "or" and_test -and_test: not_test | and_test "and" not_test -not_test: comparison | "not" not_test -lambda_form: "lambda" [parameter_list]: condition -\end{verbatim} - -In the context of Boolean operations, and also when conditions are -used by control flow statements, the following values are interpreted -as false: \verb@None@, numeric zero of all types, empty sequences -(strings, tuples and lists), and empty mappings (dictionaries). All -other values are interpreted as true. - -The operator \verb@not@ yields 1 if its argument is false, 0 otherwise. -\opindex{not} - -The condition \var{x} \verb@and@ \var{y} first evaluates \var{x}; if -\var{x} is false, its value is returned; otherwise, \var{y} is -evaluated and the resulting value is returned. -\opindex{and} - -The condition \var{x} \verb@or@ \var{y} first evaluates \var{x}; if -\var{x} is true, its value is returned; otherwise, \var{y} is -evaluated and the resulting value is returned. -\opindex{or} - -(Note that \verb@and@ and \verb@or@ do not restrict the value and type -they return to 0 and 1, but rather return the last evaluated argument. -This is sometimes useful, e.g. if \verb@s@ is a string that should be -replaced by a default value if it is empty, the expression -\verb@s or 'foo'@ yields the desired value. Because \verb@not@ has to -invent a value anyway, it does not bother to return a value of the -same type as its argument, so e.g. \verb@not 'foo'@ yields \verb@0@, -not \verb@''@.) - -Lambda forms (lambda expressions) have the same syntactic position as -conditions. They are a shorthand to create anonymous functions; the -expression {\em {\tt lambda} arguments{\tt :} condition} -yields a function object that behaves virtually identical to one -defined with -{\em {\tt def} name {\tt (}arguments{\tt ): return} condition}. -See section \ref{function} for the syntax of -parameter lists. Note that functions created with lambda forms cannot -contain statements. -\label{lambda} -\indexii{lambda}{expression} -\indexii{lambda}{form} -\indexii{anonmymous}{function} - -\section{Expression lists and condition lists} -\indexii{expression}{list} -\indexii{condition}{list} - -\begin{verbatim} -expression_list: or_expr ("," or_expr)* [","] -condintion_list: condition ("," condition)* [","] -\end{verbatim} - -The only difference between expression lists and condition lists is -the lowest priority of operators that can be used in them without -being enclosed in parentheses; condition lists allow all operators, -while expression lists don't allow comparisons and Boolean operators -(they do allow bitwise and shift operators though). - -Expression lists are used in expression statements and assignments; -condition lists are used everywhere else where a list of -comma-separated values is required. - -An expression (condition) list containing at least one comma yields a -tuple. The length of the tuple is the number of expressions -(conditions) in the list. The expressions (conditions) are evaluated -from left to right. (Condition lists are used syntactically is a few -places where no tuple is constructed but a list of values is needed -nevertheless.) -\obindex{tuple} - -The trailing comma is required only to create a single tuple (a.k.a. a -{\em singleton}); it is optional in all other cases. A single -expression (condition) without a trailing comma doesn't create a -tuple, but rather yields the value of that expression (condition). -\indexii{trailing}{comma} - -(To create an empty tuple, use an empty pair of parentheses: -\verb@()@.) - -\section{Summary} - -The following table summarizes the operator precedences in Python, -from lowest precedence (least binding) to highest precedence (most -binding). Operators in the same box have the same precedence. Unless -the syntax is explicitly given, operators are binary. Operators in -the same box group left to right (except for comparisons, which -chain from left to right --- see above). - -\begin{center} -\begin{tabular}{|c|c|} -\hline -\code{or} & Boolean OR \\ -\hline -\code{and} & Boolean AND \\ -\hline -\code{not} \var{x} & Boolean NOT \\ -\hline -\code{in}, \code{not} \code{in} & Membership tests \\ -\code{is}, \code{is} \code{not} & Identity tests \\ -\code{<}, \code{<=}, \code{>}, \code{>=}, \code{<>}, \code{!=}, \code{=} & - Comparisons \\ -\hline -\code{|} & Bitwise OR \\ -\hline -\code{\^} & Bitwise XOR \\ -\hline -\code{\&} & Bitwise AND \\ -\hline -\code{<<}, \code{>>} & Shifts \\ -\hline -\code{+}, \code{-} & Addition and subtraction \\ -\hline -\code{*}, \code{/}, \code{\%} & Multiplication, division, remainder \\ -\hline -\code{+\var{x}}, \code{-\var{x}} & Positive, negative \\ -\code{\~\var{x}} & Bitwise not \\ -\hline -\code{\var{x}.\var{attribute}} & Attribute reference \\ -\code{\var{x}[\var{index}]} & Subscription \\ -\code{\var{x}[\var{index}:\var{index}]} & Slicing \\ -\code{\var{f}(\var{arguments}...)} & Function call \\ -\hline -\code{(\var{expressions}\ldots)} & Binding or tuple display \\ -\code{[\var{expressions}\ldots]} & List display \\ -\code{\{\var{key}:\var{datum}\ldots\}} & Dictionary display \\ -\code{`\var{expression}\ldots`} & String conversion \\ -\hline -\end{tabular} -\end{center} diff --git a/Doc/ref6.tex b/Doc/ref6.tex deleted file mode 100644 index 5bd468c..0000000 --- a/Doc/ref6.tex +++ /dev/null @@ -1,512 +0,0 @@ -\chapter{Simple statements} -\indexii{simple}{statement} - -Simple statements are comprised within a single logical line. -Several simple statements may occur on a single line separated -by semicolons. The syntax for simple statements is: - -\begin{verbatim} -simple_stmt: expression_stmt - | assignment_stmt - | pass_stmt - | del_stmt - | print_stmt - | return_stmt - | raise_stmt - | break_stmt - | continue_stmt - | import_stmt - | global_stmt - | exec_stmt -\end{verbatim} - -\section{Expression statements} -\indexii{expression}{statement} - -Expression statements are used (mostly interactively) to compute and -write a value, or (usually) to call a procedure (a function that -returns no meaningful result; in Python, procedures return the value -\verb@None@): - -\begin{verbatim} -expression_stmt: condition_list -\end{verbatim} - -An expression statement evaluates the condition list (which may be a -single condition). -\indexii{expression}{list} - -In interactive mode, if the value is not \verb@None@, it is converted -to a string using the rules for string conversions (expressions in -reverse quotes), and the resulting string is written to standard -output (see section \ref{print}) on a line by itself. -(The exception for \verb@None@ is made so that procedure calls, which -are syntactically equivalent to expressions, do not cause any output.) -\ttindex{None} -\indexii{string}{conversion} -\index{output} -\indexii{standard}{output} -\indexii{writing}{values} -\indexii{procedure}{call} - -\section{Assignment statements} -\indexii{assignment}{statement} - -Assignment statements are used to (re)bind names to values and to -modify attributes or items of mutable objects: -\indexii{binding}{name} -\indexii{rebinding}{name} -\obindex{mutable} -\indexii{attribute}{assignment} - -\begin{verbatim} -assignment_stmt: (target_list "=")+ expression_list -target_list: target ("," target)* [","] -target: identifier | "(" target_list ")" | "[" target_list "]" - | attributeref | subscription | slicing -\end{verbatim} - -(See section \ref{primaries} for the syntax definitions for the last -three symbols.) - -An assignment statement evaluates the expression list (remember that -this can be a single expression or a comma-separated list, the latter -yielding a tuple) and assigns the single resulting object to each of -the target lists, from left to right. -\indexii{expression}{list} - -Assignment is defined recursively depending on the form of the target -(list). When a target is part of a mutable object (an attribute -reference, subscription or slicing), the mutable object must -ultimately perform the assignment and decide about its validity, and -may raise an exception if the assignment is unacceptable. The rules -observed by various types and the exceptions raised are given with the -definition of the object types (see section \ref{types}). -\index{target} -\indexii{target}{list} - -Assignment of an object to a target list is recursively defined as -follows. -\indexiii{target}{list}{assignment} - -\begin{itemize} -\item -If the target list is a single target: the object is assigned to that -target. - -\item -If the target list is a comma-separated list of targets: the object -must be a tuple with the same number of items as the list contains -targets, and the items are assigned, from left to right, to the -corresponding targets. - -\end{itemize} - -Assignment of an object to a single target is recursively defined as -follows. - -\begin{itemize} % nested - -\item -If the target is an identifier (name): - -\begin{itemize} - -\item -If the name does not occur in a \verb@global@ statement in the current -code block: the name is bound to the object in the current local name -space. -\stindex{global} - -\item -Otherwise: the name is bound to the object in the current global name -space. - -\end{itemize} % nested - -The name is rebound if it was already bound. - -\item -If the target is a target list enclosed in parentheses: the object is -assigned to that target list as described above. - -\item -If the target is a target list enclosed in square brackets: the object -must be a list with the same number of items as the target list -contains targets, and its items are assigned, from left to right, to -the corresponding targets. - -\item -If the target is an attribute reference: The primary expression in the -reference is evaluated. It should yield an object with assignable -attributes; if this is not the case, \verb@TypeError@ is raised. That -object is then asked to assign the assigned object to the given -attribute; if it cannot perform the assignment, it raises an exception -(usually but not necessarily \verb@AttributeError@). -\indexii{attribute}{assignment} - -\item -If the target is a subscription: The primary expression in the -reference is evaluated. It should yield either a mutable sequence -(list) object or a mapping (dictionary) object. Next, the subscript -expression is evaluated. -\indexii{subscription}{assignment} -\obindex{mutable} - -If the primary is a mutable sequence object (a list), the subscript -must yield a plain integer. If it is negative, the sequence's length -is added to it. The resulting value must be a nonnegative integer -less than the sequence's length, and the sequence is asked to assign -the assigned object to its item with that index. If the index is out -of range, \verb@IndexError@ is raised (assignment to a subscripted -sequence cannot add new items to a list). -\obindex{sequence} -\obindex{list} - -If the primary is a mapping (dictionary) object, the subscript must -have a type compatible with the mapping's key type, and the mapping is -then asked to create a key/datum pair which maps the subscript to -the assigned object. This can either replace an existing key/value -pair with the same key value, or insert a new key/value pair (if no -key with the same value existed). -\obindex{mapping} -\obindex{dictionary} - -\item -If the target is a slicing: The primary expression in the reference is -evaluated. It should yield a mutable sequence object (e.g. a list). The -assigned object should be a sequence object of the same type. Next, -the lower and upper bound expressions are evaluated, insofar they are -present; defaults are zero and the sequence's length. The bounds -should evaluate to (small) integers. If either bound is negative, the -sequence's length is added to it. The resulting bounds are clipped to -lie between zero and the sequence's length, inclusive. Finally, the -sequence object is asked to replace the slice with the items of the -assigned sequence. The length of the slice may be different from the -length of the assigned sequence, thus changing the length of the -target sequence, if the object allows it. -\indexii{slicing}{assignment} - -\end{itemize} - -(In the current implementation, the syntax for targets is taken -to be the same as for expressions, and invalid syntax is rejected -during the code generation phase, causing less detailed error -messages.) - -WARNING: Although the definition of assignment implies that overlaps -between the left-hand side and the right-hand side are `safe' (e.g. -\verb@a, b = b, a@ swaps two variables), overlaps within the -collection of assigned-to variables are not safe! For instance, the -following program prints \code@[0, 2]@: - -\begin{verbatim} -x = [0, 1] -i = 0 -i, x[i] = 1, 2 -print x -\end{verbatim} - - -\section{The {\tt pass} statement} -\stindex{pass} - -\begin{verbatim} -pass_stmt: "pass" -\end{verbatim} - -\verb@pass@ is a null operation --- when it is executed, nothing -happens. It is useful as a placeholder when a statement is -required syntactically, but no code needs to be executed, for example: -\indexii{null}{operation} - -\begin{verbatim} -def f(arg): pass # a function that does nothing (yet) - -class C: pass # a class with no methods (yet) -\end{verbatim} - -\section{The {\tt del} statement} -\stindex{del} - -\begin{verbatim} -del_stmt: "del" target_list -\end{verbatim} - -Deletion is recursively defined very similar to the way assignment is -defined. Rather that spelling it out in full details, here are some -hints. -\indexii{deletion}{target} -\indexiii{deletion}{target}{list} - -Deletion of a target list recursively deletes each target, from left -to right. - -Deletion of a name removes the binding of that name (which must exist) -from the local or global name space, depending on whether the name -occurs in a \verb@global@ statement in the same code block. -\stindex{global} -\indexii{unbinding}{name} - -Deletion of attribute references, subscriptions and slicings -is passed to the primary object involved; deletion of a slicing -is in general equivalent to assignment of an empty slice of the -right type (but even this is determined by the sliced object). -\indexii{attribute}{deletion} - -\section{The {\tt print} statement} \label{print} -\stindex{print} - -\begin{verbatim} -print_stmt: "print" [ condition ("," condition)* [","] ] -\end{verbatim} - -\verb@print@ evaluates each condition in turn and writes the resulting -object to standard output (see below). If an object is not a string, -it is first converted to a string using the rules for string -conversions. The (resulting or original) string is then written. A -space is written before each object is (converted and) written, unless -the output system believes it is positioned at the beginning of a -line. This is the case: (1) when no characters have yet been written -to standard output; or (2) when the last character written to standard -output is \verb/\n/; or (3) when the last write operation on standard -output was not a \verb@print@ statement. (In some cases it may be -functional to write an empty string to standard output for this -reason.) -\index{output} -\indexii{writing}{values} - -A \verb/"\n"/ character is written at the end, unless the \verb@print@ -statement ends with a comma. This is the only action if the statement -contains just the keyword \verb@print@. -\indexii{trailing}{comma} -\indexii{newline}{suppression} - -Standard output is defined as the file object named \verb@stdout@ -in the built-in module \verb@sys@. If no such object exists, -or if it is not a writable file, a \verb@RuntimeError@ exception is raised. -(The original implementation attempts to write to the system's original -standard output instead, but this is not safe, and should be fixed.) -\indexii{standard}{output} -\bimodindex{sys} -\ttindex{stdout} -\exindex{RuntimeError} - -\section{The {\tt return} statement} -\stindex{return} - -\begin{verbatim} -return_stmt: "return" [condition_list] -\end{verbatim} - -\verb@return@ may only occur syntactically nested in a function -definition, not within a nested class definition. -\indexii{function}{definition} -\indexii{class}{definition} - -If a condition list is present, it is evaluated, else \verb@None@ -is substituted. - -\verb@return@ leaves the current function call with the condition -list (or \verb@None@) as return value. - -When \verb@return@ passes control out of a \verb@try@ statement -with a \verb@finally@ clause, that finally clause is executed -before really leaving the function. -\kwindex{finally} - -\section{The {\tt raise} statement} -\stindex{raise} - -\begin{verbatim} -raise_stmt: "raise" condition ["," condition ["," condition]] -\end{verbatim} - -\verb@raise@ evaluates its first condition, which must yield -a string, class, or instance object. If there is a second condition, -this is evaluated, else \verb@None@ is substituted. If the first -condition is a class object, then the second condition must be an -instance of that class or one of its derivatives. If the first -condition is an instance object, the second condition must be -\verb@None@. -\index{exception} -\indexii{raising}{exception} - -If the first object is a class or string, it then raises the exception -identified by the first object, with the second one (or \verb@None@) -as its parameter. If the first object is an instance, it raises the -exception identified by the class of the object, with the instance as -its parameter (and there should be no second object, or the second -object should be \verb@None@). - -If a third object is present, and it it not \verb@None@, it should be -a traceback object (see section \ref{traceback}), and it is -substituted instead of the current location as the place where the -exception occurred. This is useful to re-raise an exception -transparently in an except clause. -\obindex{traceback} - -\section{The {\tt break} statement} -\stindex{break} - -\begin{verbatim} -break_stmt: "break" -\end{verbatim} - -\verb@break@ may only occur syntactically nested in a \verb@for@ -or \verb@while@ loop, but not nested in a function or class definition -within that loop. -\stindex{for} -\stindex{while} -\indexii{loop}{statement} - -It terminates the nearest enclosing loop, skipping the optional -\verb@else@ clause if the loop has one. -\kwindex{else} - -If a \verb@for@ loop is terminated by \verb@break@, the loop control -target keeps its current value. -\indexii{loop control}{target} - -When \verb@break@ passes control out of a \verb@try@ statement -with a \verb@finally@ clause, that finally clause is executed -before really leaving the loop. -\kwindex{finally} - -\section{The {\tt continue} statement} -\stindex{continue} - -\begin{verbatim} -continue_stmt: "continue" -\end{verbatim} - -\verb@continue@ may only occur syntactically nested in a \verb@for@ or -\verb@while@ loop, but not nested in a function or class definition or -\verb@try@ statement within that loop.\footnote{Except that it may -currently occur within an {\tt except} clause.} -\stindex{for} -\stindex{while} -\indexii{loop}{statement} -\kwindex{finally} - -It continues with the next cycle of the nearest enclosing loop. - -\section{The {\tt import} statement} \label{import} -\stindex{import} - -\begin{verbatim} -import_stmt: "import" identifier ("," identifier)* - | "from" identifier "import" identifier ("," identifier)* - | "from" identifier "import" "*" -\end{verbatim} - -Import statements are executed in two steps: (1) find a module, and -initialize it if necessary; (2) define a name or names in the local -name space (of the scope where the \verb@import@ statement occurs). -The first form (without \verb@from@) repeats these steps for each -identifier in the list, the \verb@from@ form performs them once, with -the first identifier specifying the module name. -\indexii{importing}{module} -\indexii{name}{binding} -\kwindex{from} - -The system maintains a table of modules that have been initialized, -indexed by module name. (The current implementation makes this table -accessible as \verb@sys.modules@.) When a module name is found in -this table, step (1) is finished. If not, a search for a module -definition is started. This first looks for a built-in module -definition, and if no built-in module if the given name is found, it -searches a user-specified list of directories for a file whose name is -the module name with extension \verb@".py"@. (The current -implementation uses the list of strings \verb@sys.path@ as the search -path; it is initialized from the shell environment variable -\verb@$PYTHONPATH@, with an installation-dependent default.) -\ttindex{modules} -\ttindex{sys.modules} -\indexii{module}{name} -\indexii{built-in}{module} -\indexii{user-defined}{module} -\bimodindex{sys} -\ttindex{path} -\ttindex{sys.path} -\indexii{filename}{extension} - -If a built-in module is found, its built-in initialization code is -executed and step (1) is finished. If no matching file is found, -\verb@ImportError@ is raised. If a file is found, it is parsed, -yielding an executable code block. If a syntax error occurs, -\verb@SyntaxError@ is raised. Otherwise, an empty module of the given -name is created and inserted in the module table, and then the code -block is executed in the context of this module. Exceptions during -this execution terminate step (1). -\indexii{module}{initialization} -\exindex{SyntaxError} -\exindex{ImportError} -\index{code block} - -When step (1) finishes without raising an exception, step (2) can -begin. - -The first form of \verb@import@ statement binds the module name in the -local name space to the module object, and then goes on to import the -next identifier, if any. The \verb@from@ from does not bind the -module name: it goes through the list of identifiers, looks each one -of them up in the module found in step (1), and binds the name in the -local name space to the object thus found. If a name is not found, -\verb@ImportError@ is raised. If the list of identifiers is replaced -by a star (\verb@*@), all names defined in the module are bound, -except those beginning with an underscore(\verb@_@). -\indexii{name}{binding} -\exindex{ImportError} - -Names bound by import statements may not occur in \verb@global@ -statements in the same scope. -\stindex{global} - -The \verb@from@ form with \verb@*@ may only occur in a module scope. -\kwindex{from} -\ttindex{from ... import *} - -(The current implementation does not enforce the latter two -restrictions, but programs should not abuse this freedom, as future -implementations may enforce them or silently change the meaning of the -program.) - -\section{The {\tt global} statement} \label{global} -\stindex{global} - -\begin{verbatim} -global_stmt: "global" identifier ("," identifier)* -\end{verbatim} - -The \verb@global@ statement is a declaration which holds for the -entire current code block. It means that the listed identifiers are to be -interpreted as globals. While {\em using} global names is automatic -if they are not defined in the local scope, {\em assigning} to global -names would be impossible without \verb@global@. -\indexiii{global}{name}{binding} - -Names listed in a \verb@global@ statement must not be used in the same -code block before that \verb@global@ statement is executed. - -Names listed in a \verb@global@ statement must not be defined as formal -parameters or in a \verb@for@ loop control target, \verb@class@ -definition, function definition, or \verb@import@ statement. - -(The current implementation does not enforce the latter two -restrictions, but programs should not abuse this freedom, as future -implementations may enforce them or silently change the meaning of the -program.) - -Note: the \verb@global@ is a directive to the parser. Therefore, it -applies only to code parsed at the same time as the \verb@global@ -statement. In particular, a \verb@global@ statement contained in an -\verb@exec@ statement does not affect the code block {\em containing} -the \verb@exec@ statement, and code contained in an \verb@exec@ -statement is unaffected by \verb@global@ statements in the code -containing the \verb@exec@ statement. The same applies to the -\verb@eval()@, \verb@execfie()@ and \verb@compile()@ functions. -\stindex{exec} -\ttindex{eval} -\ttindex{execfile} -\ttindex{compile} diff --git a/Doc/ref7.tex b/Doc/ref7.tex deleted file mode 100644 index 9bce121..0000000 --- a/Doc/ref7.tex +++ /dev/null @@ -1,391 +0,0 @@ -\chapter{Compound statements} -\indexii{compound}{statement} - -Compound statements contain (groups of) other statements; they affect -or control the execution of those other statements in some way. In -general, compound statements span multiple lines, although in simple -incarnations a whole compound statement may be contained in one line. - -The \verb@if@, \verb@while@ and \verb@for@ statements implement -traditional control flow constructs. \verb@try@ specifies exception -handlers and/or cleanup code for a group of statements. Function and -class definitions are also syntactically compound statements. - -Compound statements consist of one or more `clauses'. A clause -consists of a header and a `suite'. The clause headers of a -particular compound statement are all at the same indentation level. -Each clause header begins with a uniquely identifying keyword and ends -with a colon. A suite is a group of statements controlled by a -clause. A suite can be one or more semicolon-separated simple -statements on the same line as the header, following the header's -colon, or it can be one or more indented statements on subsequent -lines. Only the latter form of suite can contain nested compound -statements; the following is illegal, mostly because it wouldn't be -clear to which \verb@if@ clause a following \verb@else@ clause would -belong: -\index{clause} -\index{suite} - -\begin{verbatim} -if test1: if test2: print x -\end{verbatim} - -Also note that the semicolon binds tighter than the colon in this -context, so that in the following example, either all or none of the -\verb@print@ statements are executed: - -\begin{verbatim} -if x < y < z: print x; print y; print z -\end{verbatim} - -Summarizing: - -\begin{verbatim} -compound_stmt: if_stmt | while_stmt | for_stmt - | try_stmt | funcdef | classdef -suite: stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT -statement: stmt_list NEWLINE | compound_stmt -stmt_list: simple_stmt (";" simple_stmt)* [";"] -\end{verbatim} - -Note that statements always end in a \verb@NEWLINE@ possibly followed -by a \verb@DEDENT@. -\index{NEWLINE token} -\index{DEDENT token} - -Also note that optional continuation clauses always begin with a -keyword that cannot start a statement, thus there are no ambiguities -(the `dangling \verb@else@' problem is solved in Python by requiring -nested \verb@if@ statements to be indented). -\indexii{dangling}{else} - -The formatting of the grammar rules in the following sections places -each clause on a separate line for clarity. - -\section{The {\tt if} statement} -\stindex{if} - -The \verb@if@ statement is used for conditional execution: - -\begin{verbatim} -if_stmt: "if" condition ":" suite - ("elif" condition ":" suite)* - ["else" ":" suite] -\end{verbatim} - -It selects exactly one of the suites by evaluating the conditions one -by one until one is found to be true (see section \ref{Booleans} for -the definition of true and false); then that suite is executed (and no -other part of the \verb@if@ statement is executed or evaluated). If -all conditions are false, the suite of the \verb@else@ clause, if -present, is executed. -\kwindex{elif} -\kwindex{else} - -\section{The {\tt while} statement} -\stindex{while} -\indexii{loop}{statement} - -The \verb@while@ statement is used for repeated execution as long as a -condition is true: - -\begin{verbatim} -while_stmt: "while" condition ":" suite - ["else" ":" suite] -\end{verbatim} - -This repeatedly tests the condition and, if it is true, executes the -first suite; if the condition is false (which may be the first time it -is tested) the suite of the \verb@else@ clause, if present, is -executed and the loop terminates. -\kwindex{else} - -A \verb@break@ statement executed in the first suite terminates the -loop without executing the \verb@else@ clause's suite. A -\verb@continue@ statement executed in the first suite skips the rest -of the suite and goes back to testing the condition. -\stindex{break} -\stindex{continue} - -\section{The {\tt for} statement} -\stindex{for} -\indexii{loop}{statement} - -The \verb@for@ statement is used to iterate over the elements of a -sequence (string, tuple or list): -\obindex{sequence} - -\begin{verbatim} -for_stmt: "for" target_list "in" condition_list ":" suite - ["else" ":" suite] -\end{verbatim} - -The condition list is evaluated once; it should yield a sequence. The -suite is then executed once for each item in the sequence, in the -order of ascending indices. Each item in turn is assigned to the -target list using the standard rules for assignments, and then the -suite is executed. When the items are exhausted (which is immediately -when the sequence is empty), the suite in the \verb@else@ clause, if -present, is executed, and the loop terminates. -\kwindex{in} -\kwindex{else} -\indexii{target}{list} - -A \verb@break@ statement executed in the first suite terminates the -loop without executing the \verb@else@ clause's suite. A -\verb@continue@ statement executed in the first suite skips the rest -of the suite and continues with the next item, or with the \verb@else@ -clause if there was no next item. -\stindex{break} -\stindex{continue} - -The suite may assign to the variable(s) in the target list; this does -not affect the next item assigned to it. - -The target list is not deleted when the loop is finished, but if the -sequence is empty, it will not have been assigned to at all by the -loop. - -Hint: the built-in function \verb@range()@ returns a sequence of -integers suitable to emulate the effect of Pascal's -\verb@for i := a to b do@; -e.g. \verb@range(3)@ returns the list \verb@[0, 1, 2]@. -\bifuncindex{range} -\index{Pascal} - -{\bf Warning:} There is a subtlety when the sequence is being modified -by the loop (this can only occur for mutable sequences, i.e. lists). -An internal counter is used to keep track of which item is used next, -and this is incremented on each iteration. When this counter has -reached the length of the sequence the loop terminates. This means that -if the suite deletes the current (or a previous) item from the -sequence, the next item will be skipped (since it gets the index of -the current item which has already been treated). Likewise, if the -suite inserts an item in the sequence before the current item, the -current item will be treated again the next time through the loop. -This can lead to nasty bugs that can be avoided by making a temporary -copy using a slice of the whole sequence, e.g. -\index{loop!over mutable sequence} -\index{mutable sequence!loop over} - -\begin{verbatim} -for x in a[:]: - if x < 0: a.remove(x) -\end{verbatim} - -\section{The {\tt try} statement} \label{try} -\stindex{try} - -The \verb@try@ statement specifies exception handlers and/or cleanup -code for a group of statements: - -\begin{verbatim} -try_stmt: try_exc_stmt | try_fin_stmt -try_exc_stmt: "try" ":" suite - ("except" [condition ["," target]] ":" suite)+ - ["else" ":" suite] -try_fin_stmt: "try" ":" suite - "finally" ":" suite -\end{verbatim} - -There are two forms of \verb@try@ statement: \verb@try...except@ and -\verb@try...finally@. These forms cannot be mixed. - -The \verb@try...except@ form specifies one or more exception handlers -(the \verb@except@ clauses). When no exception occurs in the -\verb@try@ clause, no exception handler is executed. When an -exception occurs in the \verb@try@ suite, a search for an exception -handler is started. This inspects the except clauses in turn until -one is found that matches the exception. A condition-less except -clause, if present, must be last; it matches any exception. For an -except clause with a condition, that condition is evaluated, and the -clause matches the exception if the resulting object is ``compatible'' -with the exception. An object is compatible with an exception if it -is either the object that identifies the exception, or (for exceptions -that are classes) it is a base class of the exception, or it is a -tuple containing an item that is compatible with the exception. Note -that the object identities must match, i.e. it must be the same -object, not just an object with the same value. -\kwindex{except} - -If no except clause matches the exception, the search for an exception -handler continues in the surrounding code and on the invocation stack. - -If the evaluation of a condition in the header of an except clause -raises an exception, the original search for a handler is cancelled -and a search starts for the new exception in the surrounding code and -on the call stack (it is treated as if the entire \verb@try@ statement -raised the exception). - -When a matching except clause is found, the exception's parameter is -assigned to the target specified in that except clause, if present, -and the except clause's suite is executed. When the end of this suite -is reached, execution continues normally after the entire try -statement. (This means that if two nested handlers exist for the same -exception, and the exception occurs in the try clause of the inner -handler, the outer handler will not handle the exception.) - -Before an except clause's suite is executed, details about the -exception are assigned to three variables in the \verb@sys@ module: -\verb@sys.exc_type@ receives the object identifying the exception; -\verb@sys.exc_value@ receives the exception's parameter; -\verb@sys.exc_traceback@ receives a traceback object (see section -\ref{traceback}) identifying the point in the program where the -exception occurred. -\bimodindex{sys} -\ttindex{exc_type} -\ttindex{exc_value} -\ttindex{exc_traceback} -\obindex{traceback} - -The optional \verb@else@ clause is executed when no exception occurs -in the \verb@try@ clause. Exceptions in the \verb@else@ clause are -not handled by the preceding \verb@except@ clauses. -\kwindex{else} - -The \verb@try...finally@ form specifies a `cleanup' handler. The -\verb@try@ clause is executed. When no exception occurs, the -\verb@finally@ clause is executed. When an exception occurs in the -\verb@try@ clause, the exception is temporarily saved, the -\verb@finally@ clause is executed, and then the saved exception is -re-raised. If the \verb@finally@ clause raises another exception or -executes a \verb@return@, \verb@break@ or \verb@continue@ statement, -the saved exception is lost. -\kwindex{finally} - -When a \verb@return@ or \verb@break@ statement is executed in the -\verb@try@ suite of a \verb@try...finally@ statement, the -\verb@finally@ clause is also executed `on the way out'. A -\verb@continue@ statement is illegal in the \verb@try@ clause. (The -reason is a problem with the current implementation --- this -restriction may be lifted in the future). -\stindex{return} -\stindex{break} -\stindex{continue} - -\section{Function definitions} \label{function} -\indexii{function}{definition} - -A function definition defines a user-defined function object (see -section \ref{types}):\footnote{The new syntax to receive arbitrary -keyword arguments is not yet documented in this manual. See chapter -12 of the Tutorial.} -\obindex{user-defined function} -\obindex{function} - -\begin{verbatim} -funcdef: "def" funcname "(" [parameter_list] ")" ":" suite -parameter_list: (defparameter ",")* ("*" identifier [, "**" identifier] - | "**" identifier - | defparameter [","]) -defparameter: parameter ["=" condition] -sublist: parameter ("," parameter)* [","] -parameter: identifier | "(" sublist ")" -funcname: identifier -\end{verbatim} - -A function definition is an executable statement. Its execution binds -the function name in the current local name space to a function object -(a wrapper around the executable code for the function). This -function object contains a reference to the current global name space -as the global name space to be used when the function is called. -\indexii{function}{name} -\indexii{name}{binding} - -The function definition does not execute the function body; this gets -executed only when the function is called. - -When one or more top-level parameters have the form {\em parameter = -condition}, the function is said to have ``default parameter values''. -Default parameter values are evaluated when the function definition is -executed. For a parameter with a default value, the correponding -argument may be omitted from a call, in which case the parameter's -default value is substituted. If a parameter has a default value, all -following parameters must also have a default value --- this is a -syntactic restriction that is not expressed by the grammar.% -\footnote{Currently this is not checked; instead, -{\tt def f(a=1,b)} is interpreted as {\tt def f(a=1,b=None)}.} -\indexiii{default}{parameter}{value} - -Function call semantics are described in section \ref{calls}. When a -user-defined function is called, first missing arguments for which a -default value exists are supplied; then the arguments (a.k.a. actual -parameters) are bound to the (formal) parameters, as follows: -\indexii{function}{call} -\indexiii{user-defined}{function}{call} -\index{parameter} -\index{argument} -\indexii{parameter}{formal} -\indexii{parameter}{actual} - -\begin{itemize} - -\item -If there are no formal parameters, there must be no arguments. - -\item -If the formal parameter list does not end in a star followed by an -identifier, there must be exactly as many arguments as there are -parameters in the formal parameter list (at the top level); the -arguments are assigned to the formal parameters one by one. Note that -the presence or absence of a trailing comma at the top level in either -the formal or the actual parameter list makes no difference. The -assignment to a formal parameter is performed as if the parameter -occurs on the left hand side of an assignment statement whose right -hand side's value is that of the argument. - -\item -If the formal parameter list ends in a star followed by an identifier, -preceded by zero or more comma-followed parameters, there must be at -least as many arguments as there are parameters preceding the star. -Call this number {\em N}. The first {\em N} arguments are assigned to -the corresponding formal parameters in the way descibed above. A -tuple containing the remaining arguments, if any, is then assigned to -the identifier following the star. This variable will always be a -tuple: if there are no extra arguments, its value is \verb@()@, if -there is just one extra argument, it is a singleton tuple. -\indexii{variable length}{parameter list} - -\end{itemize} - -Note that the `variable length parameter list' feature only works at -the top level of the parameter list; individual parameters use a model -corresponding more closely to that of ordinary assignment. While the -latter model is generally preferable, because of the greater type -safety it offers (wrong-sized tuples aren't silently mistreated), -variable length parameter lists are a sufficiently accepted practice -in most programming languages that a compromise has been worked out. -(And anyway, assignment has no equivalent for empty argument lists.) - -It is also possible to create anonymous functions (functions not bound -to a name), for immediate use in expressions. This uses lambda forms, -described in section \ref{lambda}. -\indexii{lambda}{form} - -\section{Class definitions} \label{class} -\indexii{class}{definition} - -A class definition defines a class object (see section \ref{types}): -\obindex{class} - -\begin{verbatim} -classdef: "class" classname [inheritance] ":" suite -inheritance: "(" [condition_list] ")" -classname: identifier -\end{verbatim} - -A class definition is an executable statement. It first evaluates the -inheritance list, if present. Each item in the inheritance list -should evaluate to a class object. The class's suite is then executed -in a new execution frame (see section \ref{execframes}), using a newly -created local name space and the original global name space. -(Usually, the suite contains only function definitions.) When the -class's suite finishes execution, its execution frame is discarded but -its local name space is saved. A class object is then created using -the inheritance list for the base classes and the saved local name -space for the attribute dictionary. The class name is bound to this -class object in the original local name space. -\index{inheritance} -\indexii{class}{name} -\indexii{name}{binding} -\indexii{execution}{frame} diff --git a/Doc/ref8.tex b/Doc/ref8.tex deleted file mode 100644 index a9e688a..0000000 --- a/Doc/ref8.tex +++ /dev/null @@ -1,105 +0,0 @@ -\chapter{Top-level components} - -The Python interpreter can get its input from a number of sources: -from a script passed to it as standard input or as program argument, -typed in interactively, from a module source file, etc. This chapter -gives the syntax used in these cases. -\index{interpreter} - -\section{Complete Python programs} -\index{program} - -While a language specification need not prescribe how the language -interpreter is invoked, it is useful to have a notion of a complete -Python program. A complete Python program is executed in a minimally -initialized environment: all built-in and standard modules are -available, but none have been initialized, except for \verb@sys@ -(various system services), \verb@__builtin__@ (built-in functions, -exceptions and \verb@None@) and \verb@__main__@. The latter is used -to provide the local and global name space for execution of the -complete program. -\bimodindex{sys} -\bimodindex{__main__} -\bimodindex{__builtin__} - -The syntax for a complete Python program is that for file input, -described in the next section. - -The interpreter may also be invoked in interactive mode; in this case, -it does not read and execute a complete program but reads and executes -one statement (possibly compound) at a time. The initial environment -is identical to that of a complete program; each statement is executed -in the name space of \verb@__main__@. -\index{interactive mode} -\bimodindex{__main__} - -Under {\UNIX}, a complete program can be passed to the interpreter in -three forms: with the {\bf -c} {\it string} command line option, as a -file passed as the first command line argument, or as standard input. -If the file or standard input is a tty device, the interpreter enters -interactive mode; otherwise, it executes the file as a complete -program. -\index{UNIX} -\index{command line} -\index{standard input} - -\section{File input} - -All input read from non-interactive files has the same form: - -\begin{verbatim} -file_input: (NEWLINE | statement)* -\end{verbatim} - -This syntax is used in the following situations: - -\begin{itemize} - -\item when parsing a complete Python program (from a file or from a string); - -\item when parsing a module; - -\item when parsing a string passed to the \verb@exec@ statement; - -\end{itemize} - -\section{Interactive input} - -Input in interactive mode is parsed using the following grammar: - -\begin{verbatim} -interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE -\end{verbatim} - -Note that a (top-level) compound statement must be followed by a blank -line in interactive mode; this is needed to help the parser detect the -end of the input. - -\section{Expression input} -\index{input} - -There are two forms of expression input. Both ignore leading -whitespace. - -The string argument to \verb@eval()@ must have the following form: -\bifuncindex{eval} - -\begin{verbatim} -eval_input: condition_list NEWLINE* -\end{verbatim} - -The input line read by \verb@input()@ must have the following form: -\bifuncindex{input} - -\begin{verbatim} -input_input: condition_list NEWLINE -\end{verbatim} - -Note: to read `raw' input line without interpretation, you can use the -built-in function \verb@raw_input()@ or the \verb@readline()@ method -of file objects. -\obindex{file} -\index{input!raw} -\index{raw input} -\bifuncindex{raw_index} -\ttindex{readline} |