<?xml version="1.0"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="serif,Symbol,ZapfDingbats" font-size="10pt" text-align="justify" line-height="normal" font-selection-strategy="character-by-character" line-height-shift-adjustment="disregard-shifts" language="en"><fo:layout-master-set><fo:simple-page-master master-name="blank" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="0.75in - 0pt" margin-right="1in"><fo:region-body display-align="center" margin-bottom="0.5in" margin-top="0.5in" region-name="blank-body"/><fo:region-before region-name="xsl-region-before-blank" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-blank" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="0.75in - 0pt" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="0.75in - 0pt" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="0.75in - 0pt" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="0.75in - 0pt" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in - 0pt" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="0.75in - 0pt" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-first" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="0.75in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-odd" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="0.75in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-even" extent="0.25in" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" display-align="after"/></fo:simple-page-master><fo:page-sequence-master master-name="titlepage"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="titlepage-first" page-position="first"/><fo:conditional-page-master-reference master-reference="titlepage-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="titlepage-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="lot"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="lot-first" page-position="first"/><fo:conditional-page-master-reference master-reference="lot-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="lot-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="front"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="front-first" page-position="first"/><fo:conditional-page-master-reference master-reference="front-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="front-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="body"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="body-first" page-position="first"/><fo:conditional-page-master-reference master-reference="body-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="body-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="back"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="back-first" page-position="first"/><fo:conditional-page-master-reference master-reference="back-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="back-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="index"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="index-first" page-position="first"/><fo:conditional-page-master-reference master-reference="index-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="index-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master></fo:layout-master-set><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="1" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="left" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="left" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="left" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="left" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-style="italic" font-size="9pt" font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="left" display-align="after" relative-align="baseline"><fo:block><fo:block>New Mexico Tech Computer Center</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block>Python 2.7 quick reference</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-style="italic" font-size="9pt" font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="left" display-align="after" relative-align="baseline"><fo:block><fo:block>New Mexico Tech Computer Center</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block>Python 2.7 quick reference</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-style="italic" font-size="9pt" font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="left" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block>Python 2.7 quick reference</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="after" relative-align="baseline"><fo:block><fo:block>New Mexico Tech Computer Center</fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-style="italic" font-size="9pt" font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="left" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block>Python 2.7 quick reference</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="after" relative-align="baseline"><fo:block><fo:block>New Mexico Tech Computer Center</fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="3pc" end-indent="0pt"><fo:block id="id407977"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block start-indent="0pt" text-align="center"><fo:block keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" hyphenate="false"><fo:table table-layout="fixed" padding-bottom="0.2in"><fo:table-column column-number="1" column-width="4.5in"/><fo:table-column column-number="2" column-width="2.25in"/><fo:table-body><fo:table-row><fo:table-cell><fo:block text-align="left">Python 2.7 quick reference</fo:block></fo:table-cell><fo:table-cell><fo:block><fo:external-graphic src="url(logo.jpg)" padding-left="2pc" content-width="2in"/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block space-before="0.5em" font-size="14.4pt"><fo:wrapper><fo:block>John W. Shipman</fo:block></fo:wrapper></fo:block><fo:block space-before="0.5em"><fo:block text-align="center">2011-12-16 16:47</fo:block></fo:block><fo:block space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="serif,Symbol,ZapfDingbats"><fo:block><fo:block font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em" keep-with-next.within-column="always">Abstract</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A reference guide to most of the common features of the
        Python programming language, version 2.7.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This publication is available in <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/python27/web/)">Web form</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline> <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/python27/web/)">http://www.nmt.edu/tcc/help/pubs/python27/web/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> and also as a
        <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/python27/python27.pdf)">PDF document</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">2</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">2</fo:inline> <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/python27/python27.pdf)">http://www.nmt.edu/tcc/help/pubs/python27/python27.pdf</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.  Please forward any comments to <fo:inline font-weight="bold" font-family="monospace">tcc-doc@nmt.edu</fo:inline>.
      </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="toc...id407977" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block><fo:block><fo:block space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="0pt" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats">Table of Contents</fo:block></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="intro">1. Introduction: What is Python?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="intro"><fo:page-number-citation ref-id="intro"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="python3">2. Python 2.7 and Python 3.x</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="python3"><fo:page-number-citation ref-id="python3"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="starting">3. Starting Python</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="starting"><fo:page-number-citation ref-id="starting"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.starting" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="starting-windows">3.1. Using Python in Windows</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="starting-windows"><fo:page-number-citation ref-id="starting-windows"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="starting-linux">3.2. Using Python in Linux</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="starting-linux"><fo:page-number-citation ref-id="starting-linux"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="line-syntax">4. Line syntax</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="line-syntax"><fo:page-number-citation ref-id="line-syntax"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="names">5. Names and keywords</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="names"><fo:page-number-citation ref-id="names"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="types">6. Basic types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="types"><fo:page-number-citation ref-id="types"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="numeric-types">7. Numeric types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="numeric-types"><fo:page-number-citation ref-id="numeric-types"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.numeric-types" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="int-type">7.1. Type <fo:inline font-family="monospace">int</fo:inline>: Integers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="int-type"><fo:page-number-citation ref-id="int-type"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="long-type">7.2. Type <fo:inline font-family="monospace">long</fo:inline>: Extended-precision
      integers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="long-type"><fo:page-number-citation ref-id="long-type"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="bool-type">7.3. Type <fo:inline font-family="monospace">bool</fo:inline>: Boolean truth values</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="bool-type"><fo:page-number-citation ref-id="bool-type"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="float-type">7.4. Type <fo:inline font-family="monospace">float</fo:inline>: Floating-point
      numbers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="float-type"><fo:page-number-citation ref-id="float-type"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="complex-type">7.5. Type <fo:inline font-family="monospace">complex</fo:inline>: Imaginary numbers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="complex-type"><fo:page-number-citation ref-id="complex-type"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="sequence-types">8. Sequence types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="sequence-types"><fo:page-number-citation ref-id="sequence-types"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.sequence-types" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="sequence-common">8.1. Operations common to all the sequence types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="sequence-common"><fo:page-number-citation ref-id="sequence-common"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="str-type">9. Type <fo:inline font-family="monospace">str</fo:inline>: Strings of 8-bit
    characters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="str-type"><fo:page-number-citation ref-id="str-type"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.str-type" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="str-constants">9.1. String constants</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="str-constants"><fo:page-number-citation ref-id="str-constants"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="whitespace">9.2. Definition of “whitespace”</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="whitespace"><fo:page-number-citation ref-id="whitespace"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="str-methods">9.3. Methods on <fo:inline font-family="monospace">str</fo:inline> values</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="str-methods"><fo:page-number-citation ref-id="str-methods"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="new-str-format">9.4. The string <fo:inline font-family="monospace">.format()</fo:inline> method</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="new-str-format"><fo:page-number-citation ref-id="new-str-format"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.new-str-format" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="general-format-form">9.4.1. General form of a format code</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="general-format-form"><fo:page-number-citation ref-id="general-format-form"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="format-name">9.4.2. The <fo:inline font-style="italic" font-family="monospace">name</fo:inline> part</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="format-name"><fo:page-number-citation ref-id="format-name"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="format-conversion">9.4.3. The <fo:inline font-style="italic" font-family="monospace">conversion</fo:inline>
        part</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="format-conversion"><fo:page-number-citation ref-id="format-conversion"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="format-spec">9.4.4. The <fo:inline font-style="italic" font-family="monospace">spec</fo:inline> part</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="format-spec"><fo:page-number-citation ref-id="format-spec"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="format-var-length">9.4.5. Formatting a field of variable length</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="format-var-length"><fo:page-number-citation ref-id="format-var-length"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="old-str-format">9.5. The older string format operator</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="old-str-format"><fo:page-number-citation ref-id="old-str-format"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="unicode-type">10. Type <fo:inline font-family="monospace">unicode</fo:inline>: Strings of 32-bit
      characters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="unicode-type"><fo:page-number-citation ref-id="unicode-type"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.unicode-type" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="utf-8">10.1. The UTF-8 encoding</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="utf-8"><fo:page-number-citation ref-id="utf-8"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="list-type">11. Type <fo:inline font-family="monospace">list</fo:inline>: Mutable sequences</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="list-type"><fo:page-number-citation ref-id="list-type"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.list-type" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="list-methods">11.1. Methods on lists</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="list-methods"><fo:page-number-citation ref-id="list-methods"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="list-comprehensions">11.2. List comprehensions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="list-comprehensions"><fo:page-number-citation ref-id="list-comprehensions"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="tuple-type">12. Type <fo:inline font-family="monospace">tuple</fo:inline>: Immutable sequences</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="tuple-type"><fo:page-number-citation ref-id="tuple-type"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="bytes-type">13. The <fo:inline font-family="monospace">bytes</fo:inline> type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="bytes-type"><fo:page-number-citation ref-id="bytes-type"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.bytes-type" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="bytes-to-3x">13.1. Using the <fo:inline font-family="monospace">bytes</fo:inline> type in 3.x
        conversion</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="bytes-to-3x"><fo:page-number-citation ref-id="bytes-to-3x"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="bytearray-type">14. The <fo:inline font-family="monospace">bytearray</fo:inline> type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="bytearray-type"><fo:page-number-citation ref-id="bytearray-type"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="set-types">15. Types <fo:inline font-family="monospace">set</fo:inline> and <fo:inline font-family="monospace">frozenset</fo:inline>:
    Set types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="set-types"><fo:page-number-citation ref-id="set-types"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.set-types" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="set-immutable-operations">15.1. Operations on mutable and immutable sets</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="set-immutable-operations"><fo:page-number-citation ref-id="set-immutable-operations"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="set-mutable-operations">15.2. Operations on mutable sets</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="set-mutable-operations"><fo:page-number-citation ref-id="set-mutable-operations"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="dict-type">16. Type <fo:inline font-family="monospace">dict</fo:inline>: Dictionaries</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="dict-type"><fo:page-number-citation ref-id="dict-type"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.dict-type" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="dict-methods">16.1. Operations on dictionaries</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="dict-methods"><fo:page-number-citation ref-id="dict-methods"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="dict-comprehensions">16.2. Dictionary comprehensions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="dict-comprehensions"><fo:page-number-citation ref-id="dict-comprehensions"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="file-type">17. Type <fo:inline font-family="monospace">file</fo:inline>: Input and output files</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="file-type"><fo:page-number-citation ref-id="file-type"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.file-type" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="file-methods">17.1. Methods on <fo:inline font-family="monospace">file</fo:inline> objects</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="file-methods"><fo:page-number-citation ref-id="file-methods"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="None-type">18. <fo:inline font-family="monospace">None</fo:inline>: The special placeholder value</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="None-type"><fo:page-number-citation ref-id="None-type"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="expressions">19. Operators and expressions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="expressions"><fo:page-number-citation ref-id="expressions"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.expressions" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="predicates">19.1. What is a predicate?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="predicates"><fo:page-number-citation ref-id="predicates"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="iterable">19.2. What is an iterable?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="iterable"><fo:page-number-citation ref-id="iterable"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="interface">19.3. Duck typing, or: what is an interface?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="interface"><fo:page-number-citation ref-id="interface"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="locale">19.4. What is the locale?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="locale"><fo:page-number-citation ref-id="locale"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="basic-functions">20. Basic functions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="basic-functions"><fo:page-number-citation ref-id="basic-functions"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.basic-functions" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="abs-function">20.1. <fo:inline font-family="monospace">abs()</fo:inline>: Absolute value</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="abs-function"><fo:page-number-citation ref-id="abs-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="all-function">20.2. <fo:inline font-family="monospace">all()</fo:inline>: Are all the elements of an
      iterable true?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="all-function"><fo:page-number-citation ref-id="all-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="any-function">20.3. <fo:inline font-family="monospace">any()</fo:inline>: Are any of the members of an
      iterable true?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="any-function"><fo:page-number-citation ref-id="any-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="bin-function">20.4. <fo:inline font-family="monospace">bin()</fo:inline>: Convert to binary</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="bin-function"><fo:page-number-citation ref-id="bin-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="bool-function">20.5. <fo:inline font-family="monospace">bool()</fo:inline>: Convert to Boolean</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="bool-function"><fo:page-number-citation ref-id="bool-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="bytearray-function">20.6. <fo:inline font-family="monospace">bytearray()</fo:inline>: Create a byte array</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="bytearray-function"><fo:page-number-citation ref-id="bytearray-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="chr-function">20.7. <fo:inline font-family="monospace">chr()</fo:inline>: Get the character with a given
      code</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="chr-function"><fo:page-number-citation ref-id="chr-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="cmp-function">20.8. <fo:inline font-family="monospace">cmp()</fo:inline>: Compare two values</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="cmp-function"><fo:page-number-citation ref-id="cmp-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="complex-function">20.9. <fo:inline font-family="monospace">complex()</fo:inline>: Convert to <fo:inline font-family="monospace">complex</fo:inline> type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="complex-function"><fo:page-number-citation ref-id="complex-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="dict-function">20.10. <fo:inline font-family="monospace">dict()</fo:inline>: Convert to a dictionary</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="dict-function"><fo:page-number-citation ref-id="dict-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="divmod-function">20.11. <fo:inline font-family="monospace">divmod()</fo:inline>: Quotient and remainder</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="divmod-function"><fo:page-number-citation ref-id="divmod-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="enumerate-function">20.12. <fo:inline font-family="monospace">enumerate()</fo:inline>: Step through indices and
      values of an iterable</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="enumerate-function"><fo:page-number-citation ref-id="enumerate-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="file-function">20.13. <fo:inline font-family="monospace">file()</fo:inline>: Open a file</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="file-function"><fo:page-number-citation ref-id="file-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="filter-function">20.14. <fo:inline font-family="monospace">filter()</fo:inline>: Extract qualifying elements
      from an iterable</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="filter-function"><fo:page-number-citation ref-id="filter-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="float-function">20.15. <fo:inline font-family="monospace">float()</fo:inline>: Convert to <fo:inline font-family="monospace">float</fo:inline> type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="float-function"><fo:page-number-citation ref-id="float-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="format-function">20.16. <fo:inline font-family="monospace">format()</fo:inline>: Format a value</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="format-function"><fo:page-number-citation ref-id="format-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="frozenset-function">20.17. <fo:inline font-family="monospace">frozenset()</fo:inline>: Create a frozen set</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="frozenset-function"><fo:page-number-citation ref-id="frozenset-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="hex-function">20.18. <fo:inline font-family="monospace">hex()</fo:inline>: Convert to base 16</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="hex-function"><fo:page-number-citation ref-id="hex-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="int-function">20.19. <fo:inline font-family="monospace">int()</fo:inline>: Convert to <fo:inline font-family="monospace">int</fo:inline> type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="int-function"><fo:page-number-citation ref-id="int-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="input-function">20.20. <fo:inline font-family="monospace">input()</fo:inline>: Read an expression from the
      user</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="input-function"><fo:page-number-citation ref-id="input-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="iter-function">20.21. <fo:inline font-family="monospace">iter()</fo:inline>: Produce an iterator over a
      sequence</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="iter-function"><fo:page-number-citation ref-id="iter-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="len-function">20.22. <fo:inline font-family="monospace">len()</fo:inline>: Number of elements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="len-function"><fo:page-number-citation ref-id="len-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="list-function">20.23. <fo:inline font-family="monospace">list()</fo:inline>: Convert to a list</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="list-function"><fo:page-number-citation ref-id="list-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="long-function">20.24. <fo:inline font-family="monospace">long()</fo:inline>: Convert to <fo:inline font-family="monospace">long</fo:inline> type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="long-function"><fo:page-number-citation ref-id="long-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="map-function">20.25. <fo:inline font-family="monospace">map()</fo:inline>: Apply a function to each
      element of an iterable</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="map-function"><fo:page-number-citation ref-id="map-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="max-function">20.26. <fo:inline font-family="monospace">max()</fo:inline>: Largest element of an
      iterable</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="max-function"><fo:page-number-citation ref-id="max-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="min-function">20.27. <fo:inline font-family="monospace">min()</fo:inline>: Smallest element of an
      iterable</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="min-function"><fo:page-number-citation ref-id="min-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="next-function">20.28. <fo:inline font-family="monospace">next()</fo:inline>: Call an iterator</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="next-function"><fo:page-number-citation ref-id="next-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="oct-function">20.29. <fo:inline font-family="monospace">oct()</fo:inline>: Convert to base 8</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="oct-function"><fo:page-number-citation ref-id="oct-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="open-function">20.30. <fo:inline font-family="monospace">open()</fo:inline>: Open a file</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="open-function"><fo:page-number-citation ref-id="open-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="ord-function">20.31. <fo:inline font-family="monospace">ord()</fo:inline>: Find the numeric code for a
      character</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="ord-function"><fo:page-number-citation ref-id="ord-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="pow-function">20.32. <fo:inline font-family="monospace">pow()</fo:inline>: Exponentiation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="pow-function"><fo:page-number-citation ref-id="pow-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="range-function">20.33. <fo:inline font-family="monospace">range()</fo:inline>: Generate an arithmetic
      progression as a list</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="range-function"><fo:page-number-citation ref-id="range-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="raw_input-function">20.34. <fo:inline font-family="monospace">raw_input()</fo:inline>: Prompt and read a string
      from the user</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="raw_input-function"><fo:page-number-citation ref-id="raw_input-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="reduce-function">20.35. <fo:inline font-family="monospace">reduce()</fo:inline>: Sequence reduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="reduce-function"><fo:page-number-citation ref-id="reduce-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="reversed-function">20.36. <fo:inline font-family="monospace">reversed()</fo:inline>: Produce a reverse
      iterator</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="reversed-function"><fo:page-number-citation ref-id="reversed-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="round-function">20.37. <fo:inline font-family="monospace">round()</fo:inline>: Round to the nearest
      integral value</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="round-function"><fo:page-number-citation ref-id="round-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="set-function">20.38. <fo:inline font-family="monospace">set()</fo:inline>: Create an algebraic set</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="set-function"><fo:page-number-citation ref-id="set-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="sorted-function">20.39. <fo:inline font-family="monospace">sorted()</fo:inline>: Sort a sequence</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="sorted-function"><fo:page-number-citation ref-id="sorted-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="str-function">20.40. <fo:inline font-family="monospace">str()</fo:inline>: Convert to <fo:inline font-family="monospace">str</fo:inline>
      type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="str-function"><fo:page-number-citation ref-id="str-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="sum-function">20.41. <fo:inline font-family="monospace">sum()</fo:inline>: Total the elements of a
      sequence</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="sum-function"><fo:page-number-citation ref-id="sum-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="tuple-function">20.42. <fo:inline font-family="monospace">tuple()</fo:inline>: Convert to a tuple</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="tuple-function"><fo:page-number-citation ref-id="tuple-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="type-function">20.43. <fo:inline font-family="monospace">type()</fo:inline>: Return a value's type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="type-function"><fo:page-number-citation ref-id="type-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="unichr-function">20.44. <fo:inline font-family="monospace">unichr()</fo:inline>: Convert a numeric code to a
      Unicode character</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="unichr-function"><fo:page-number-citation ref-id="unichr-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="unicode-function">20.45. <fo:inline font-family="monospace">unicode()</fo:inline>: Convert to a Unicode
      string</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="unicode-function"><fo:page-number-citation ref-id="unicode-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="xrange-function">20.46. <fo:inline font-family="monospace">xrange()</fo:inline>: Arithmetic progression
      generator</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="xrange-function"><fo:page-number-citation ref-id="xrange-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="zip-function">20.47. <fo:inline font-family="monospace">zip()</fo:inline>: Combine multiple
      sequences</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="zip-function"><fo:page-number-citation ref-id="zip-function"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="advanced-functions">21. Advanced functions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="advanced-functions"><fo:page-number-citation ref-id="advanced-functions"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.advanced-functions" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="basestring-function">21.1. <fo:inline font-family="monospace">basestring</fo:inline>: The string base class</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="basestring-function"><fo:page-number-citation ref-id="basestring-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="callable-function">21.2. <fo:inline font-family="monospace">callable()</fo:inline>: Is this thing
      callable?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="callable-function"><fo:page-number-citation ref-id="callable-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="classmethod-function">21.3. <fo:inline font-family="monospace">classmethod()</fo:inline>: Create a class
      method</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="classmethod-function"><fo:page-number-citation ref-id="classmethod-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="delattr-function">21.4. <fo:inline font-family="monospace">delattr()</fo:inline>: Delete a named
      attribute</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="delattr-function"><fo:page-number-citation ref-id="delattr-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="dir-function">21.5. <fo:inline font-family="monospace">dir()</fo:inline>: Display a namespace's names</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="dir-function"><fo:page-number-citation ref-id="dir-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="eval-function">21.6. <fo:inline font-family="monospace">eval()</fo:inline>: Evaluate an expression in source
      form</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="eval-function"><fo:page-number-citation ref-id="eval-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="execfile-function">21.7. <fo:inline font-family="monospace">execfile()</fo:inline>: Execute a Python source
      file</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="execfile-function"><fo:page-number-citation ref-id="execfile-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="getattr-function">21.8. <fo:inline font-family="monospace">getattr()</fo:inline>: Retrieve an attribute of a
      given name</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="getattr-function"><fo:page-number-citation ref-id="getattr-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="globals-function">21.9. <fo:inline font-family="monospace">globals()</fo:inline>: Dictionary of global name
      bindings</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="globals-function"><fo:page-number-citation ref-id="globals-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="hasattr-function">21.10. <fo:inline font-family="monospace">hasattr()</fo:inline>: Does a value have an attribute
      of a given name?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="hasattr-function"><fo:page-number-citation ref-id="hasattr-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id-function">21.11. <fo:inline font-family="monospace">id()</fo:inline>: Unique identifier</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id-function"><fo:page-number-citation ref-id="id-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="isinstance-function">21.12. <fo:inline font-family="monospace">isinstance()</fo:inline>: Is a value an instance of
      some class or type?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="isinstance-function"><fo:page-number-citation ref-id="isinstance-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="issubclass-function">21.13. <fo:inline font-family="monospace">issubclass()</fo:inline>: Is a class a subclass of
      some other class?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="issubclass-function"><fo:page-number-citation ref-id="issubclass-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="locals-function">21.14. <fo:inline font-family="monospace">locals()</fo:inline>: Dictionary of local name
      bindings</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="locals-function"><fo:page-number-citation ref-id="locals-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="property-function">21.15. <fo:inline font-family="monospace">property()</fo:inline>: Create an access-controlled
      attribute</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="property-function"><fo:page-number-citation ref-id="property-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="reload-function">21.16. <fo:inline font-family="monospace">reload()</fo:inline>: Reload a module</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="reload-function"><fo:page-number-citation ref-id="reload-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="repr-function">21.17. <fo:inline font-family="monospace">repr()</fo:inline>: Representation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="repr-function"><fo:page-number-citation ref-id="repr-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="setattr-function">21.18. <fo:inline font-family="monospace">setattr()</fo:inline>: Set an attribute</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="setattr-function"><fo:page-number-citation ref-id="setattr-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="slice-function">21.19. <fo:inline font-family="monospace">slice()</fo:inline>: Create a slice instance</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="slice-function"><fo:page-number-citation ref-id="slice-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="staticmethod-function">21.20. <fo:inline font-family="monospace">staticmethod()</fo:inline>: Create a static
      method</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="staticmethod-function"><fo:page-number-citation ref-id="staticmethod-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="super-function">21.21. <fo:inline font-family="monospace">super()</fo:inline>: Superclass</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="super-function"><fo:page-number-citation ref-id="super-function"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="vars-function">21.22. <fo:inline font-family="monospace">vars()</fo:inline>: Local variables</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="vars-function"><fo:page-number-citation ref-id="vars-function"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="simple-statements">22. Simple statements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="simple-statements"><fo:page-number-citation ref-id="simple-statements"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.simple-statements" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="assignment-statement">22.1. The assignment statement: <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline> = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="assignment-statement"><fo:page-number-citation ref-id="assignment-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="assert-statement">22.2. The <fo:inline font-family="monospace">assert</fo:inline> statement: Verify
      preconditions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="assert-statement"><fo:page-number-citation ref-id="assert-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="del-statement">22.3. The <fo:inline font-family="monospace">del</fo:inline> statement: Delete a name or part
      of a value</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="del-statement"><fo:page-number-citation ref-id="del-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="exec-statement">22.4. The <fo:inline font-family="monospace">exec</fo:inline> statement: Execute Python source
      code</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="exec-statement"><fo:page-number-citation ref-id="exec-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="global-statement">22.5. The <fo:inline font-family="monospace">global</fo:inline> statement: Declare access to a
      global name</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="global-statement"><fo:page-number-citation ref-id="global-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="import-statement">22.6. The <fo:inline font-family="monospace">import</fo:inline> statement: Use a
      module</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="import-statement"><fo:page-number-citation ref-id="import-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="pass-statement">22.7. The <fo:inline font-family="monospace">pass</fo:inline> statement: Do nothing</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="pass-statement"><fo:page-number-citation ref-id="pass-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="print-statement">22.8. The <fo:inline font-family="monospace">print</fo:inline> statement: Display output
      values</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="print-statement"><fo:page-number-citation ref-id="print-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="print-as-function">22.9. The <fo:inline font-family="monospace">print()</fo:inline> function</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="print-as-function"><fo:page-number-citation ref-id="print-as-function"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="compound-statements">23. Compound statements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="compound-statements"><fo:page-number-citation ref-id="compound-statements"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.compound-statements" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="blocks">23.1. Python's block structure</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="blocks"><fo:page-number-citation ref-id="blocks"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="break-statement">23.2. The <fo:inline font-family="monospace">break</fo:inline> statement: Exit a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline> loop</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="break-statement"><fo:page-number-citation ref-id="break-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="continue-statement">23.3. The <fo:inline font-family="monospace">continue</fo:inline> statement: Jump to the next
      cycle of a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="continue-statement"><fo:page-number-citation ref-id="continue-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="for-statement">23.4. The <fo:inline font-family="monospace">for</fo:inline> statement: Iteration over a
      sequence</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="for-statement"><fo:page-number-citation ref-id="for-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="if-statement">23.5. The <fo:inline font-family="monospace">if</fo:inline> statement: Conditional
      execution</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="if-statement"><fo:page-number-citation ref-id="if-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="raise-statement">23.6. The <fo:inline font-family="monospace">raise</fo:inline> statement: Cause an
      exception</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="raise-statement"><fo:page-number-citation ref-id="raise-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="return-statement">23.7. The <fo:inline font-family="monospace">return</fo:inline> statement: Exit a function or
      method</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="return-statement"><fo:page-number-citation ref-id="return-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="try-statement">23.8. The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="try-statement"><fo:page-number-citation ref-id="try-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="with-statement">23.9. The <fo:inline font-family="monospace">with</fo:inline> statement and context
      managers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="with-statement"><fo:page-number-citation ref-id="with-statement"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="yield-statement">23.10. The <fo:inline font-family="monospace">yield</fo:inline> statement: Generate one result
      from a generator</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="yield-statement"><fo:page-number-citation ref-id="yield-statement"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="def">24. <fo:inline font-family="monospace">def()</fo:inline>: Defining your own functions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="def"><fo:page-number-citation ref-id="def"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.def" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="function-locals">24.1. A function's local namespace</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="function-locals"><fo:page-number-citation ref-id="function-locals"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="iterators">24.2. Iterators: Values that can produce a sequence of
      values</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="iterators"><fo:page-number-citation ref-id="iterators"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="generators">24.3. Generators: Functions that can produce a sequence of
      values</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="generators"><fo:page-number-citation ref-id="generators"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="decorators">24.4. Decorators</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="decorators"><fo:page-number-citation ref-id="decorators"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="exceptions">25. Exceptions: Error signaling and handling</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="exceptions"><fo:page-number-citation ref-id="exceptions"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.exceptions" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="exception-terms">25.1. Definitions of exception terms</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="exception-terms"><fo:page-number-citation ref-id="exception-terms"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="exception-lifecycle">25.2. Life cycle of an exception</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="exception-lifecycle"><fo:page-number-citation ref-id="exception-lifecycle"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="exception-hierarchy">25.3. Built-in exceptions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="exception-hierarchy"><fo:page-number-citation ref-id="exception-hierarchy"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="classes">26. Classes: Defining your own types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="classes"><fo:page-number-citation ref-id="classes"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.classes" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="old-classes-intro">26.1. Old-style classes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="old-classes-intro"><fo:page-number-citation ref-id="old-classes-intro"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.old-classes-intro" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="old-class-def">26.1.1. Defining an old-style class</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="old-class-def"><fo:page-number-citation ref-id="old-class-def"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="old-constructor">26.1.2. Instantiation of an old-style class: The
        constructor, <fo:inline font-family="monospace">.__init__()</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="old-constructor"><fo:page-number-citation ref-id="old-constructor"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="old-attribute-ref">26.1.3. Attribute references in old-style classes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="old-attribute-ref"><fo:page-number-citation ref-id="old-attribute-ref"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="old-method-call">26.1.4. Method calls in an old-style class</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="old-method-call"><fo:page-number-citation ref-id="old-method-call"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="old-del">26.1.5. Instance deletion: the destructor, <fo:inline font-family="monospace">.__del__()</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="old-del"><fo:page-number-citation ref-id="old-del"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="new-classes-intro">26.2. Life cycle of a new-style class</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="new-classes-intro"><fo:page-number-citation ref-id="new-classes-intro"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.new-classes-intro" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="new-new-method">26.2.1. <fo:inline font-family="monospace">__new__()</fo:inline>: New instance creation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="new-new-method"><fo:page-number-citation ref-id="new-new-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="new-attr-access">26.2.2. Attribute access control in new-style classes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="new-attr-access"><fo:page-number-citation ref-id="new-attr-access"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="new-property">26.2.3. Properties in new-style classes: Fine-grained
        attribute access control</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="new-property"><fo:page-number-citation ref-id="new-property"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="new-slots">26.2.4. Conserving memory with <fo:inline font-family="monospace">__slots__</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="new-slots"><fo:page-number-citation ref-id="new-slots"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="special-methods">26.3. Special method names</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="special-methods"><fo:page-number-citation ref-id="special-methods"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.special-methods" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="rich-compare-methods">26.3.1. Rich comparison methods</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="rich-compare-methods"><fo:page-number-citation ref-id="rich-compare-methods"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="binary-operator-methods">26.3.2. Special methods for binary operators</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="binary-operator-methods"><fo:page-number-citation ref-id="binary-operator-methods"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="unary-operator-methods">26.3.3. Unary operator special methods</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="unary-operator-methods"><fo:page-number-citation ref-id="unary-operator-methods"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="builtin-function-methods">26.3.4. Special methods to emulate built-in functions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="builtin-function-methods"><fo:page-number-citation ref-id="builtin-function-methods"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="call-method">26.3.5. <fo:inline font-family="monospace">__call__()</fo:inline>: What to do when someone
        calls an instance</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="call-method"><fo:page-number-citation ref-id="call-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="cmp-method">26.3.6. <fo:inline font-family="monospace">__cmp__()</fo:inline>: Generalized
        comparison</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="cmp-method"><fo:page-number-citation ref-id="cmp-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="contains-method">26.3.7. <fo:inline font-family="monospace">__contains__()</fo:inline>: The “<fo:inline font-family="monospace">in</fo:inline>” and “<fo:inline font-family="monospace">not in</fo:inline>” operators</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="contains-method"><fo:page-number-citation ref-id="contains-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="del-method">26.3.8. <fo:inline font-family="monospace">__del__()</fo:inline>: Destructor</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="del-method"><fo:page-number-citation ref-id="del-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="delattr-method">26.3.9. <fo:inline font-family="monospace">__delattr__()</fo:inline>: Delete an
        attribute</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="delattr-method"><fo:page-number-citation ref-id="delattr-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="delitem-method">26.3.10. <fo:inline font-family="monospace">__delitem__()</fo:inline>: Delete one item of a
        sequence</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="delitem-method"><fo:page-number-citation ref-id="delitem-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="enter-method">26.3.11. <fo:inline font-family="monospace">__enter__</fo:inline>: Context manager
        initialization</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="enter-method"><fo:page-number-citation ref-id="enter-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="exit-method">26.3.12. <fo:inline font-family="monospace">__exit__</fo:inline>: Context manager
        cleanup</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="exit-method"><fo:page-number-citation ref-id="exit-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="format-method">26.3.13. <fo:inline font-family="monospace">__format__</fo:inline>: Implement the <fo:inline font-family="monospace">format()</fo:inline> function</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="format-method"><fo:page-number-citation ref-id="format-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="getattr-method">26.3.14. <fo:inline font-family="monospace">__getattr__()</fo:inline>: Handle a reference
        to an unknown attribute</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="getattr-method"><fo:page-number-citation ref-id="getattr-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="getattribute-method">26.3.15. <fo:inline font-family="monospace">__getattribute__()</fo:inline>: Intercept all
        attribute references</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="getattribute-method"><fo:page-number-citation ref-id="getattribute-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="getitem-method">26.3.16. <fo:inline font-family="monospace">__getitem__()</fo:inline>: Get one item from a
        sequence or mapping</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="getitem-method"><fo:page-number-citation ref-id="getitem-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="iter-method">26.3.17. <fo:inline font-family="monospace">__iter__()</fo:inline>: Create an iterator</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="iter-method"><fo:page-number-citation ref-id="iter-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="nonzero-method">26.3.18. <fo:inline font-family="monospace">__nonzero__()</fo:inline>: True/false
        evaluation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="nonzero-method"><fo:page-number-citation ref-id="nonzero-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="repr-method">26.3.19. <fo:inline font-family="monospace">__repr__()</fo:inline>: String representation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="repr-method"><fo:page-number-citation ref-id="repr-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="reversed-method">26.3.20. <fo:inline font-family="monospace">__reversed__()</fo:inline>: Implement the <fo:inline font-family="monospace">reversed()</fo:inline> function</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="reversed-method"><fo:page-number-citation ref-id="reversed-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="setattr-method">26.3.21. <fo:inline font-family="monospace">__setattr__()</fo:inline>: Intercept all
        attribute changes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="setattr-method"><fo:page-number-citation ref-id="setattr-method"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="setitem-method">26.3.22. <fo:inline font-family="monospace">__setitem__()</fo:inline>: Assign a value to
        one item of a sequence</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="setitem-method"><fo:page-number-citation ref-id="setitem-method"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="static-methods">26.4. Static methods</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="static-methods"><fo:page-number-citation ref-id="static-methods"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="class-methods">26.5. Class methods</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="class-methods"><fo:page-number-citation ref-id="class-methods"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="pdb">27. <fo:inline font-family="monospace">pdb</fo:inline>: The Python interactive debugger</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="pdb"><fo:page-number-citation ref-id="pdb"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.pdb" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="pdb-startup">27.1. Starting up <fo:inline font-family="monospace">pdb</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="pdb-startup"><fo:page-number-citation ref-id="pdb-startup"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="pdb-exports">27.2. Functions exported by <fo:inline font-family="monospace">pdb</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="pdb-exports"><fo:page-number-citation ref-id="pdb-exports"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="pdb-commands">27.3. Commands available in <fo:inline font-family="monospace">pdb</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="pdb-commands"><fo:page-number-citation ref-id="pdb-commands"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="common-modules">28. Commonly used modules</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="common-modules"><fo:page-number-citation ref-id="common-modules"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.common-modules" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="math-module">28.1. <fo:inline font-family="monospace">math</fo:inline>: Common mathematical
      operations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="math-module"><fo:page-number-citation ref-id="math-module"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="string-module">28.2. <fo:inline font-family="monospace">string</fo:inline>: Utility functions for strings</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="string-module"><fo:page-number-citation ref-id="string-module"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="random-module">28.3. <fo:inline font-family="monospace">random</fo:inline>: Random number generation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="random-module"><fo:page-number-citation ref-id="random-module"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="time-module">28.4. <fo:inline font-family="monospace">time</fo:inline>: Clock and calendar functions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="time-module"><fo:page-number-citation ref-id="time-module"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="re-module">28.5. <fo:inline font-family="monospace">re</fo:inline>: Regular expression
      pattern-matching</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="re-module"><fo:page-number-citation ref-id="re-module"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.re-module" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="regex-chars">28.5.1. Characters in regular expressions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="regex-chars"><fo:page-number-citation ref-id="regex-chars"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="regex-functions">28.5.2. Functions in the <fo:inline font-family="monospace">re</fo:inline> module</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="regex-functions"><fo:page-number-citation ref-id="regex-functions"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="compiled-re">28.5.3. Compiled regular expression objects</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="compiled-re"><fo:page-number-citation ref-id="compiled-re"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="match-object">28.5.4. Methods on a <fo:inline font-family="monospace">MatchObject</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="match-object"><fo:page-number-citation ref-id="match-object"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="sys-module">28.6. <fo:inline font-family="monospace">sys</fo:inline>: Universal system interface</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="sys-module"><fo:page-number-citation ref-id="sys-module"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="os-module">28.7. <fo:inline font-family="monospace">os</fo:inline>: The operating
      system interface</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="os-module"><fo:page-number-citation ref-id="os-module"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="os-stat-module">28.8. <fo:inline font-family="monospace">stat</fo:inline>: Interpretation of file
      status</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="os-stat-module"><fo:page-number-citation ref-id="os-stat-module"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="os.path-module">28.9. <fo:inline font-family="monospace">os.path</fo:inline>: File and directory interface</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="os.path-module"><fo:page-number-citation ref-id="os.path-module"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="argparse">28.10. <fo:inline font-family="monospace">argparse</fo:inline>: Processing command line
      arguments</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="argparse"><fo:page-number-citation ref-id="argparse"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id407977.argparse" margin-left="24pt"><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="argparse-defs">28.10.1. Types of command line arguments</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="argparse-defs"><fo:page-number-citation ref-id="argparse-defs"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="argparse-flow">28.10.2. Overall flow of argument processing</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="argparse-flow"><fo:page-number-citation ref-id="argparse-flow"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="argparse-init">28.10.3. The <fo:inline font-family="monospace">ArgumentParser()</fo:inline> constructor</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="argparse-init"><fo:page-number-citation ref-id="argparse-init"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="argparse-add_argument">28.10.4. The <fo:inline font-family="monospace">ArgumentParser.add_argument()</fo:inline>
        method</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="argparse-add_argument"><fo:page-number-citation ref-id="argparse-add_argument"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="argparse-parse_args">28.10.5. The <fo:inline font-family="monospace">ArgumentParser.parse_args()</fo:inline>
        method</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="argparse-parse_args"><fo:page-number-citation ref-id="argparse-parse_args"/></fo:basic-link></fo:inline></fo:block><fo:block end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="argparse-utilities">28.10.6. Other useful <fo:inline font-family="monospace">ArgumentParser</fo:inline> methods</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="argparse-utilities"><fo:page-number-citation ref-id="argparse-utilities"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block></fo:block><fo:block id="intro"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Introduction: What is Python?</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">1. Introduction: What is Python?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python is a recent, general-purpose, high-level programming
      language. It is freely available and runs pretty much
      everywhere.
    </fo:block><fo:list-block id="id447629" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id449258" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          This document is a reference guide, not a tutorial.  If
          you are new to Python programming, see <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/lang/pytut/)"><fo:inline font-style="italic">A Python programming
          tutorial</fo:inline></fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">3</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">3</fo:inline> <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/lang/pytut/)">http://www.nmt.edu/tcc/help/pubs/lang/pytut/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id431395" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Complete documentation and free installs are available
          from the <fo:basic-link external-destination="url(http://www.python.org/)"><fo:inline font-family="monospace">python.org</fo:inline> homepage</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">4</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">4</fo:inline> <fo:basic-link external-destination="url(http://www.python.org/)">http://www.python.org/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      This document does not describe every single feature of
      Python 2.7.  A few interesting features that 99% of Python
      users will never need, such as metaclasses, are not
      described here.  Refer to the official documentation for
      the full feature set.
    </fo:block></fo:block><fo:block id="python3"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Python 2.7 and Python 3.x</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">2. Python 2.7 and Python 3.x</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      At this writing, both Python 2.7 and Python 3.2 are officially
      maintained implementations.  The 3.0 release marked the first
      release in the development of Python that a new version was
      incompatible with the old one.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      If you are using 2.x releases of Python, there is no hurry to
      convert to the 3.x series.  Release 2.7 is guaranteed to be
      around for many years.  Furthermore, there are tools to help you
      automate much of the conversion process.  Notes throughout this
      document will discuss specific features of 2.7 that are intended
      to ease the transition.
    </fo:block><fo:list-block id="id447138" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id434770" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          For a discussion of the changes between 2.7 and 3.0, see
          <fo:basic-link external-destination="url(http://docs.python.org/whatsnew/)">What's New in
          Python</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">5</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">5</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/whatsnew/)">http://docs.python.org/whatsnew/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id441769" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          To see what changes must be made in your program to
          allow automatic conversion to Python 3.x, run Python
          with this flag:
        </fo:block><fo:block id="id443323" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">python -3 <fo:inline font-style="italic" font-family="monospace">yourprogram</fo:inline>
</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id436771" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          To convert your program to Python 3.x, first make a copy of
          the original program, then run this command:
        </fo:block><fo:block id="id436451" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">python3-2to3 -w <fo:inline font-style="italic" font-family="monospace">yourprogram</fo:inline>
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The <fo:inline font-family="monospace">-w</fo:inline> flag replaces <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">yourprogram</fo:inline></fo:inline> with the converted 3.x
          version, and moves the original to “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">yourprogram</fo:inline>.bak</fo:inline>”
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      For full documentation of the Python 3.2 version, see the <fo:basic-link external-destination="url(http://docs.python.org/py3k/)">online documentation</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">6</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">6</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/py3k/)">http://docs.python.org/py3k/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
    </fo:block></fo:block><fo:block id="starting"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Starting Python</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">3. Starting Python</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      You can use Python in two different ways:
    </fo:block><fo:list-block id="id408908" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id426367" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          In “calculator” or “conversational
          mode”, Python will prompt you for input with
          three greater-than signs (<fo:inline font-family="monospace">&gt;&gt;&gt;</fo:inline>).
          Type a line and Python will print the result.
          Here's an example:
        </fo:block><fo:block id="id426379" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 2+2
4
&gt;&gt;&gt; 1.0 / 7.0
0.14285714285714285
</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id426387" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          You can also use Python to write a program, sometimes
          called a <fo:inline font-style="italic">script</fo:inline>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="starting-windows"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Using Python in Windows</fo:marker><fo:block font-size="14.4pt">3.1. Using Python in Windows</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you are using Python at the NM Tech Computer Center
        (TCC), you can get conversational mode from <fo:inline font-style="italic" font-family="sans-serif">Start</fo:inline> → <fo:inline font-style="italic" font-family="sans-serif">All
        Programs</fo:inline> → <fo:inline font-style="italic" font-family="sans-serif">ActiveState
        ActivePython 2.6</fo:inline> → <fo:inline font-style="italic" font-family="sans-serif">Python
        Interactive Shell</fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To write a program:
      </fo:block><fo:block id="id426441" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-block provisional-distance-between-starts="2em" provisional-label-separation="0.2em" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id426443">1.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-style="italic" font-family="sans-serif">Start</fo:inline> → <fo:inline font-style="italic" font-family="sans-serif">All Programs</fo:inline> → <fo:inline font-style="italic" font-family="sans-serif">ActiveState ActivePython 2.6</fo:inline> →
            <fo:inline font-style="italic" font-family="sans-serif">PythonWin Editor</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id407376">2.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Use <fo:inline font-style="italic" font-family="sans-serif">File</fo:inline> → <fo:inline font-style="italic" font-family="sans-serif">New</fo:inline>, select <fo:inline font-style="italic" font-family="sans-serif">Python
            Script</fo:inline> in the pop-up menu, and click
            <fo:inline font-style="italic" font-family="sans-serif">OK</fo:inline>.  This will bring up an
            edit window.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id407408">3.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Write your Python program in the edit window, then
            use <fo:inline font-style="italic" font-family="sans-serif">File</fo:inline> → <fo:inline font-style="italic" font-family="sans-serif">Save As...</fo:inline> to save it under some file
            name that ends in “<fo:inline font-family="monospace">.py</fo:inline>”.
            Use your <fo:inline font-family="monospace">U:</fo:inline> drive.  This drive
            is mounted everywhere at the TCC, and contains your
            personal files.  It is backed up regularly.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id407441">4.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            To run your program, use <fo:inline font-style="italic" font-family="sans-serif">File</fo:inline> → <fo:inline font-style="italic" font-family="sans-serif">Run</fo:inline>.  In the
            “<fo:inline font-style="italic" font-family="sans-serif">Run Script</fo:inline>”
            popup, enter the name of your program in the field
            labeled <fo:inline font-style="italic" font-family="sans-serif">Script File</fo:inline>, then click
            <fo:inline font-style="italic" font-family="sans-serif">OK</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The output will appear in the “<fo:inline font-style="italic" font-family="sans-serif">Interactive Window</fo:inline>”.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You may also run a Python script by double-clicking on
        it, provided that its name ends with “<fo:inline font-family="monospace">.py</fo:inline>”.
      </fo:block></fo:block><fo:block id="starting-linux"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Using Python in Linux</fo:marker><fo:block font-size="14.4pt">3.2. Using Python in Linux</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To enter conversational mode on a Linux system, type this
        command:
        <fo:block id="id407592" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">python
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Type <fo:inline font-style="italic" font-family="sans-serif">Control-D</fo:inline> to terminate the session.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you write a Python script named
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">filename</fo:inline>.py</fo:inline>,
        you can execute it using the command
      </fo:block><fo:block id="id407617" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">python <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">filename</fo:inline>.py</fo:inline>
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Under Unix, you can also make a script self-executing
        by placing this line at the top:
      </fo:block><fo:block id="id407635" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">#!/usr/bin/env python
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You must also tell Linux that the file is executable by
        using the command “<fo:inline font-family="monospace">chmod +x <fo:inline font-style="italic" font-family="monospace">filename</fo:inline></fo:inline>”.  For example,
        if your script is called <fo:inline font-family="monospace">hello.py</fo:inline>,
        you would type this command:
      </fo:block><fo:block id="id407658" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">chmod +x hello.py
</fo:block></fo:block></fo:block><fo:block id="line-syntax"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Line syntax</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">4. Line syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The comment character is “<fo:inline font-family="monospace">#</fo:inline>”;
      comments are terminated by end of line.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Long lines may be continued by ending the line with a
      backslash (<fo:inline font-family="monospace">\</fo:inline>), but this is not necessary if
      there is at least one open “<fo:inline font-family="monospace">(</fo:inline>”,
      “<fo:inline font-family="monospace">[</fo:inline>”, or
      “<fo:inline font-family="monospace">{</fo:inline>”.
    </fo:block></fo:block><fo:block id="names"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Names and keywords</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">5. Names and keywords</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python names (also called identifiers) can be any length
      and follow these rules:
    </fo:block><fo:list-block id="id407728" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id407732" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          The first or only character must be a letter (uppercase
          or lowercase) or the underbar character, “<fo:inline font-family="monospace">_</fo:inline>”.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id407744" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Any additional characters may be letters, underbars, or
          digits.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Examples: <fo:inline font-family="monospace">coconuts</fo:inline>, <fo:inline font-family="monospace">sirRobin</fo:inline>,
      <fo:inline font-family="monospace">blanche_hickey_869</fo:inline>, <fo:inline font-family="monospace">__secretWord</fo:inline>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Case is significant in Python.  The name “<fo:inline font-family="monospace">Robin</fo:inline>” is not the same name as
      “<fo:inline font-family="monospace">robin</fo:inline>”.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The names below are <fo:inline font-style="italic">keywords</fo:inline>, also
      known as reserved words.  They have special meaning in
      Python and cannot be used as names or identifiers.
    </fo:block><fo:block id="id450724" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">and       def       finally   in       print    yield
as        del       for       is       raise 
assert    elif      from      lambda   return
break     else      global    not      try   
class     except    if        or       with
continue  exec      import    pass     while
</fo:block></fo:block><fo:block id="types"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Basic types</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">6. Basic types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      In programming, you manipulate <fo:inline font-style="italic">values</fo:inline> using <fo:inline font-style="italic">operators</fo:inline>.  For example, in the expression “<fo:inline font-family="monospace">1+2</fo:inline>”, the addition operator (<fo:inline font-family="monospace">+</fo:inline>) is
      operating on the values 1 and 2 to produce the sum, 3.  The
      Python operators are described in <fo:basic-link internal-destination="expressions">Section 19, “Operators and expressions”</fo:basic-link><fo:basic-link internal-destination="expressions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="expressions"/>)</fo:inline></fo:basic-link>, but let's look first at Python's
      way of representing values.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Every Python value must have a type.  For example, the type
      of the whole number 1 is <fo:inline font-family="monospace">int</fo:inline>, short for
      “integer.”
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Here is a table summarizing most of the commonly-used
      Python types.
    </fo:block><fo:block id="types-table" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always"><fo:block font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em" keep-with-next.within-column="always">Table 1. Python's common types</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="auto"><fo:table-column column-number="1" column-width="6em"/><fo:table-column column-number="2" column-width="proportional-column-width(3)"/><fo:table-column column-number="3" column-width="proportional-column-width(2)"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold">Type name</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block font-weight="bold">Values</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Examples</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">int</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              Integers in the range [-2147483648, 2147483647].
              See <fo:basic-link internal-destination="int-type">Section 7.1, “Type <fo:inline font-family="monospace">int</fo:inline>: Integers”</fo:basic-link><fo:basic-link internal-destination="int-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="int-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">42</fo:inline>, <fo:inline font-family="monospace">-3</fo:inline>,
              <fo:inline font-family="monospace">1000000</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">long</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              Integers of any size, limited only by the available
              memory.  See <fo:basic-link internal-destination="long-type">Section 7.2, “Type <fo:inline font-family="monospace">long</fo:inline>: Extended-precision
      integers”</fo:basic-link><fo:basic-link internal-destination="long-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="long-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">42L</fo:inline>,
              <fo:inline font-family="monospace">-3L</fo:inline>,
              <fo:inline font-family="monospace">100000000000000L</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">bool</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              The two Boolean values <fo:inline font-family="monospace">True</fo:inline> and
              <fo:inline font-family="monospace">False</fo:inline>.  See <fo:basic-link internal-destination="bool-type">Section 7.3, “Type <fo:inline font-family="monospace">bool</fo:inline>: Boolean truth values”</fo:basic-link><fo:basic-link internal-destination="bool-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="bool-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">True</fo:inline>, <fo:inline font-family="monospace">False</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">float</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              Floating-point numbers; see <fo:basic-link internal-destination="float-type">Section 7.4, “Type <fo:inline font-family="monospace">float</fo:inline>: Floating-point
      numbers”</fo:basic-link><fo:basic-link internal-destination="float-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="float-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">3.14159</fo:inline>,
              <fo:inline font-family="monospace">-1.0</fo:inline>,
              <fo:inline font-family="monospace">6.0235e23</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">complex</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              Complex numbers.  If the idea of computing with the
              square root of -1 bothers you, just ignore this
              type, otherwise see <fo:basic-link internal-destination="complex-type">Section 7.5, “Type <fo:inline font-family="monospace">complex</fo:inline>: Imaginary numbers”</fo:basic-link><fo:basic-link internal-destination="complex-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="complex-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">(3.2+4.9j)</fo:inline>,
              <fo:inline font-family="monospace">(0+3.42e-3j)</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">str</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              Strings of 8-bit characters; see <fo:basic-link internal-destination="str-type">Section 9, “Type <fo:inline font-family="monospace">str</fo:inline>: Strings of 8-bit
    characters”</fo:basic-link><fo:basic-link internal-destination="str-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="str-type"/>)</fo:inline></fo:basic-link>.  Strings can be empty: write
              such as a string as “<fo:inline font-family="monospace">""</fo:inline>” or “<fo:inline font-family="monospace">''</fo:inline>”.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">'Sir Robin'</fo:inline>, <fo:inline font-family="monospace">"xyz"</fo:inline>,
              <fo:inline font-family="monospace">"I'd've"</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">unicode</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              Strings of 32-bit Unicode characters; see
              <fo:basic-link internal-destination="unicode-type">Section 10, “Type <fo:inline font-family="monospace">unicode</fo:inline>: Strings of 32-bit
      characters”</fo:basic-link><fo:basic-link internal-destination="unicode-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unicode-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">u'Fred'</fo:inline>,
              <fo:inline font-family="monospace">u'\u03fa'</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">list</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              A mutable sequence of values; see <fo:basic-link internal-destination="list-type">Section 11, “Type <fo:inline font-family="monospace">list</fo:inline>: Mutable sequences”</fo:basic-link><fo:basic-link internal-destination="list-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">['dot', 'dash']</fo:inline>;
              <fo:inline font-family="monospace">[]</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">tuple</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              An immutable sequence of values; see
              <fo:basic-link internal-destination="tuple-type">Section 12, “Type <fo:inline font-family="monospace">tuple</fo:inline>: Immutable sequences”</fo:basic-link><fo:basic-link internal-destination="tuple-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="tuple-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">('dot', 'dash')</fo:inline>;
              <fo:inline font-family="monospace">()</fo:inline>;
              <fo:inline font-family="monospace">("singleton",)</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">dict</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              Use <fo:inline font-family="monospace">dict</fo:inline> values (dictionaries) to
              structure data as look-up tables; see <fo:basic-link internal-destination="dict-type">Section 16, “Type <fo:inline font-family="monospace">dict</fo:inline>: Dictionaries”</fo:basic-link><fo:basic-link internal-destination="dict-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="dict-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">{'go':1, 'stop':2}</fo:inline>;
              <fo:inline font-family="monospace">{}</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">bytearray</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              A mutable sequence of 8-bit bytes;
              see <fo:basic-link internal-destination="bytearray-type">Section 14, “The <fo:inline font-family="monospace">bytearray</fo:inline> type”</fo:basic-link><fo:basic-link internal-destination="bytearray-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="bytearray-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">bytearray('Bletchley')</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">file</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              A file being read or written; see <fo:basic-link internal-destination="file-type">Section 17, “Type <fo:inline font-family="monospace">file</fo:inline>: Input and output files”</fo:basic-link><fo:basic-link internal-destination="file-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="file-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">open('/etc/motd')</fo:inline>
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">None</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>
              A special, unique value that may be used where a
              value is required but there is no obvious value.
              See <fo:basic-link internal-destination="None-type">Section 18, “<fo:inline font-family="monospace">None</fo:inline>: The special placeholder value”</fo:basic-link><fo:basic-link internal-destination="None-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="None-type"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="left"><fo:block>
              <fo:inline font-family="monospace">None</fo:inline>
            </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="numeric-types"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Numeric types</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">7. Numeric types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python has a number of different types used for
      representing numbers.
    </fo:block><fo:block id="int-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">int</fo:inline>: Integers</fo:marker><fo:block font-size="14.4pt">7.1. Type <fo:inline font-family="monospace">int</fo:inline>: Integers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Python values of type <fo:inline font-family="monospace">int</fo:inline> represent
        integers, that is, whole numbers in the range
        [-2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline>,
        2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline>-1], roughly plus or
        minus two billion.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You can represent a value in octal (base 8) by preceding it
        with “<fo:inline font-family="monospace">0o</fo:inline>”.  Similarly, use a
        leading “<fo:inline font-family="monospace">0x</fo:inline>” to represent a value
        in hexadecimal (base 16), or “<fo:inline font-family="monospace">0b</fo:inline>”
        for binary.  Examples in conversational mode:
      </fo:block><fo:block id="id451344" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 999+1
1000
&gt;&gt;&gt; 0o77
63
&gt;&gt;&gt; 0xff
255
&gt;&gt;&gt; 0b1001
9
</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" start-indent="0.25in" end-indent="0.25in" border="4pt solid #d0d0d0" padding="4pt" id="id451350"><fo:block keep-with-next="always" font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The <fo:inline font-family="monospace">0o</fo:inline> and <fo:inline font-family="monospace">0b</fo:inline> prefixes work
          only in Python versions 2.6 and later.  In 2.5 and earlier
          versions, any number starting with “<fo:inline font-family="monospace">0</fo:inline>” was considered to be octal.  This functionality is
          retained in the 2.6+ versions, but will not work in the
          Python 3.x versions.
        </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To convert other numbers or character strings to type
        <fo:inline font-family="monospace">int</fo:inline>, see <fo:basic-link internal-destination="int-function">Section 20.19, “<fo:inline font-family="monospace">int()</fo:inline>: Convert to <fo:inline font-family="monospace">int</fo:inline> type”</fo:basic-link><fo:basic-link internal-destination="int-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="int-function"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you perform operations on <fo:inline font-family="monospace">int</fo:inline> values
        that result in numbers that are too large, Python
        automatically converts them to <fo:inline font-family="monospace">long</fo:inline> type;
        see <fo:basic-link internal-destination="long-type">Section 7.2, “Type <fo:inline font-family="monospace">long</fo:inline>: Extended-precision
      integers”</fo:basic-link><fo:basic-link internal-destination="long-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="long-type"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="long-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">long</fo:inline>: Extended-precision
      integers</fo:marker><fo:block font-size="14.4pt">7.2. Type <fo:inline font-family="monospace">long</fo:inline>: Extended-precision
      integers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Values of <fo:inline font-family="monospace">long</fo:inline> type represent whole
        numbers, but they may have many more than the nine or ten
        digits allowed by <fo:inline font-family="monospace">int</fo:inline> type.  In practice,
        the number of digits in a <fo:inline font-family="monospace">long</fo:inline> value is
        limited only by processor memory size.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To write a <fo:inline font-family="monospace">long</fo:inline>-type constant, use the
        same syntax as for <fo:inline font-family="monospace">int</fo:inline>-type constants, but
        place a letter <fo:inline font-family="monospace">L</fo:inline> immediately after the
        last digit.  Also, if an operation on <fo:inline font-family="monospace">int</fo:inline>
        values results in a number too large to represent as an
        <fo:inline font-family="monospace">int</fo:inline>, Python will automatically converted
        it to type <fo:inline font-family="monospace">long</fo:inline>.
      </fo:block><fo:block id="id451452" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 100 * 100
10000
&gt;&gt;&gt; 100L * 100L
10000L
&gt;&gt;&gt; 1000000000*1000000000
1000000000000000000L
&gt;&gt;&gt; 0xffffL
65535L
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To convert a value of a different numeric type or a
        string of characters to a <fo:inline font-family="monospace">long</fo:inline> value, see
        <fo:basic-link internal-destination="long-function">Section 20.24, “<fo:inline font-family="monospace">long()</fo:inline>: Convert to <fo:inline font-family="monospace">long</fo:inline> type”</fo:basic-link><fo:basic-link internal-destination="long-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="long-function"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="bool-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">bool</fo:inline>: Boolean truth values</fo:marker><fo:block font-size="14.4pt">7.3. Type <fo:inline font-family="monospace">bool</fo:inline>: Boolean truth values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A value of <fo:inline font-family="monospace">bool</fo:inline> type represents a Boolean
        (true or false) value.  There are only two values,
        written in Python as “<fo:inline font-family="monospace">True</fo:inline>”
        and “<fo:inline font-family="monospace">False</fo:inline>”.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Internally, <fo:inline font-family="monospace">True</fo:inline> is represented as 1 and
        <fo:inline font-family="monospace">False</fo:inline> as 0, and they can be used in
        numeric expressions as those values.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here's an example.  In Python, the expression
        “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline> &lt;
        <fo:inline font-style="italic" font-family="monospace">b</fo:inline></fo:inline>” compares
        two values <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline>
        and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">b</fo:inline></fo:inline>, and
        returns <fo:inline font-family="monospace">True</fo:inline> if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> is less than <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">b</fo:inline></fo:inline>, <fo:inline font-family="monospace">False</fo:inline> is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> is greater than or equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">b</fo:inline></fo:inline>.
      </fo:block><fo:block id="id451557" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 2 &lt; 3
True
&gt;&gt;&gt; 3 &lt; 2
False
&gt;&gt;&gt; True+4
5
&gt;&gt;&gt; False * False
0
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        These values are considered <fo:inline font-family="monospace">False</fo:inline> wherever
        true/false values are expected, such as in an <fo:inline font-family="monospace">if</fo:inline> statement:
      </fo:block><fo:list-block id="id451574" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id451579" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The <fo:inline font-family="monospace">bool</fo:inline> value <fo:inline font-family="monospace">False</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id451591" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Any numeric zero:
            the <fo:inline font-family="monospace">int</fo:inline> value <fo:inline font-family="monospace">0</fo:inline>,
            the <fo:inline font-family="monospace">float</fo:inline> value <fo:inline font-family="monospace">0.0</fo:inline>,
            the <fo:inline font-family="monospace">long</fo:inline> value <fo:inline font-family="monospace">0L</fo:inline>,
            or the <fo:inline font-family="monospace">complex</fo:inline> value <fo:inline font-family="monospace">0.0j</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id451623" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Any empty sequence:
            the <fo:inline font-family="monospace">str</fo:inline> value <fo:inline font-family="monospace">''</fo:inline>,
            the <fo:inline font-family="monospace">unicode</fo:inline> value <fo:inline font-family="monospace">u''</fo:inline>,
            the empty <fo:inline font-family="monospace">list</fo:inline> value <fo:inline font-family="monospace">[]</fo:inline>,
            or the empty <fo:inline font-family="monospace">tuple</fo:inline> value <fo:inline font-family="monospace">()</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id451655" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Any empty mapping, such as the empty <fo:inline font-family="monospace">dict</fo:inline>
            (dictionary) value <fo:inline font-family="monospace">{}</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id451668" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The special value <fo:inline font-family="monospace">None</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        All other values are considered <fo:inline font-family="monospace">True</fo:inline>.
        To convert any value to a Boolean, see <fo:basic-link internal-destination="bool-function">Section 20.5, “<fo:inline font-family="monospace">bool()</fo:inline>: Convert to Boolean”</fo:basic-link><fo:basic-link internal-destination="bool-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="bool-function"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="float-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">float</fo:inline>: Floating-point
      numbers</fo:marker><fo:block font-size="14.4pt">7.4. Type <fo:inline font-family="monospace">float</fo:inline>: Floating-point
      numbers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Values of this type represent real numbers, with the
        usual limitations of IEEE-754 floating point type: it
        cannot represent very large or very small numbers, and
        the precision is limited to only about 15 digits.  For
        complete details on the IEEE-754 standard and its
        limitations, see the <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/IEEE_754-1985)">Wikipedia article</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">7</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">7</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/IEEE_754-1985)">http://en.wikipedia.org/wiki/IEEE_754-1985</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A floating-point constant may be preceded by a
        “<fo:inline font-family="monospace">+</fo:inline>” or “<fo:inline font-family="monospace">-</fo:inline>” sign, followed by a string of one or
        more digits containing a decimal point (“<fo:inline font-family="monospace">.</fo:inline>”).
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For very large or small numbers, you may express the
        number in exponential notation by appending a letter
        “<fo:inline font-family="monospace">e</fo:inline>” followed by a power of
        ten (which may be preceded by a sign).
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For example, Avogadro's Number gives the number of atoms
        of carbon in 12 grams of carbon<fo:inline font-size="75%" baseline-shift="super">12</fo:inline>, and is written as
        6.0221418×10<fo:inline font-size="75%" baseline-shift="super">23</fo:inline>.  In
        Python that would be “<fo:inline font-family="monospace">6.0221418e23</fo:inline>”.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Please note that calculations involving <fo:inline font-family="monospace">float</fo:inline> type are approximations.  In calculator
        mode, Python will display the numbers to their full
        precision, so you may see a number that is very close to
        what you expect, but not exact.
      </fo:block><fo:block id="id451768" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 1.0/7.0
0.14285714285714285
&gt;&gt;&gt; -2*-4.2e37
8.4000000000000004e+37
</fo:block></fo:block><fo:block id="complex-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">complex</fo:inline>: Imaginary numbers</fo:marker><fo:block font-size="14.4pt">7.5. Type <fo:inline font-family="monospace">complex</fo:inline>: Imaginary numbers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Mathematically, a complex number is a number of the form
        <fo:inline font-style="italic" font-family="monospace">A+Bi</fo:inline> where <fo:inline font-style="italic" font-family="monospace">i</fo:inline> is the imaginary number, equal to the
        square root of -1.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Complex numbers are quite commonly used in electrical
        engineering.  In that field, however, because the symbol
        <fo:inline font-style="italic" font-family="monospace">i</fo:inline> is used to represent current, they use
        the symbol <fo:inline font-style="italic" font-family="monospace">j</fo:inline> for the square root of -1.
        Python adheres to this convention: a number followed by
        “<fo:inline font-family="monospace">j</fo:inline>” is treated as an imaginary
        number.  Python displays complex numbers in parentheses when
        they have a nonzero real part.
      </fo:block><fo:block id="id451820" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 5j
5j
&gt;&gt;&gt; 1+2.56j
(1+2.5600000000000001j)
&gt;&gt;&gt; (1+2.56j)*(-1-3.44j)
(7.8064-6j)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Unlike Python's other numeric types, complex numbers are
        a composite quantity made of two parts: the real part and
        the imaginary part, both of which are represented
        internally as <fo:inline font-family="monospace">float</fo:inline> values.  You can
        retrieve the two components using attribute references.
        For a complex number <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline>:
      </fo:block><fo:list-block id="id451841" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id451845" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline>.real</fo:inline> is
            the real part.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id451857" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline>.imag</fo:inline> is
            the imaginary part as a <fo:inline font-family="monospace">float</fo:inline>, not as
            a <fo:inline font-family="monospace">complex</fo:inline> value.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="id451876" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; a=(1+2.56j)*(-1-3.44j)
&gt;&gt;&gt; a
(7.8064-6j)
&gt;&gt;&gt; a.real
7.8064
&gt;&gt;&gt; a.imag
-6.0
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To construct a <fo:inline font-family="monospace">complex</fo:inline> value from two
        <fo:inline font-family="monospace">float</fo:inline> values, see <fo:basic-link internal-destination="complex-function">Section 20.9, “<fo:inline font-family="monospace">complex()</fo:inline>: Convert to <fo:inline font-family="monospace">complex</fo:inline> type”</fo:basic-link><fo:basic-link internal-destination="complex-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="complex-function"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block></fo:block><fo:block id="sequence-types"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Sequence types</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">8. Sequence types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The next four types described (<fo:inline font-family="monospace">str</fo:inline>,
      <fo:inline font-family="monospace">unicode</fo:inline>, <fo:inline font-family="monospace">list</fo:inline> and
      <fo:inline font-family="monospace">tuple)</fo:inline> are collectively referred to as
      <fo:inline font-style="italic">sequence</fo:inline> types.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Each sequence value represents an ordered set in the
      mathematical sense, that is, a collection of things in a
      specific order.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python distinguishes between <fo:inline font-style="italic">mutable</fo:inline> and <fo:inline font-style="italic">immutable</fo:inline> sequences:
    </fo:block><fo:list-block id="id451947" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id451951" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          An immutable sequence can be created or destroyed, but the
          number, sequence, and values of its elements cannot change.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id451959" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          The values of a mutable sequence can be changed.  Any
          element can be replaced or deleted, and new
          elements can be added at the beginning, the end, or
          in the middle.          
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      There are four sequence types, but they share most of the
      same operations.
    </fo:block><fo:list-block id="id451972" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id451974" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="sequence-common">Section 8.1, “Operations common to all the sequence types”</fo:basic-link><fo:basic-link internal-destination="sequence-common"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sequence-common"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id451985" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="str-type">Section 9, “Type <fo:inline font-family="monospace">str</fo:inline>: Strings of 8-bit
    characters”</fo:basic-link><fo:basic-link internal-destination="str-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="str-type"/>)</fo:inline></fo:basic-link> (immutable).
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id451995" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="unicode-type">Section 10, “Type <fo:inline font-family="monospace">unicode</fo:inline>: Strings of 32-bit
      characters”</fo:basic-link><fo:basic-link internal-destination="unicode-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unicode-type"/>)</fo:inline></fo:basic-link> (immutable).
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452006" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="list-type">Section 11, “Type <fo:inline font-family="monospace">list</fo:inline>: Mutable sequences”</fo:basic-link><fo:basic-link internal-destination="list-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-type"/>)</fo:inline></fo:basic-link> (mutable).
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452016" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="tuple-type">Section 12, “Type <fo:inline font-family="monospace">tuple</fo:inline>: Immutable sequences”</fo:basic-link><fo:basic-link internal-destination="tuple-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="tuple-type"/>)</fo:inline></fo:basic-link> (immutable).
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="sequence-common"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Operations common to all the sequence types</fo:marker><fo:block font-size="14.4pt">8.1. Operations common to all the sequence types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        These functions work on values of the four sequence
        types: <fo:inline font-family="monospace">int</fo:inline>, <fo:inline font-family="monospace">unicode</fo:inline>, <fo:inline font-family="monospace">tuple</fo:inline>, and <fo:inline font-family="monospace">list</fo:inline>.
      </fo:block><fo:list-block id="id452055" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id452059" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="len-function">Section 20.22, “<fo:inline font-family="monospace">len()</fo:inline>: Number of elements”</fo:basic-link><fo:basic-link internal-destination="len-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="len-function"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452070" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="max-function">Section 20.26, “<fo:inline font-family="monospace">max()</fo:inline>: Largest element of an
      iterable”</fo:basic-link><fo:basic-link internal-destination="max-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="max-function"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452080" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="min-function">Section 20.27, “<fo:inline font-family="monospace">min()</fo:inline>: Smallest element of an
      iterable”</fo:basic-link><fo:basic-link internal-destination="min-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="min-function"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        These operators apply to sequences.
      </fo:block><fo:block id="id452095" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id452097" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>+<fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Concatenation—for two sequences <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>
              of the same type, a new sequence containing all the
              elements from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline> followed by
              all the elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>.
            </fo:block><fo:block id="id452147" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "vi" + "car"
'vicar'
&gt;&gt;&gt; [1,2,3]+[5,7,11,13]+[15]
[1, 2, 3, 5, 7, 11, 13, 15]
&gt;&gt;&gt; ('roy', 'g')+('biv',)
('roy', 'g', 'biv')
</fo:block></fo:block><fo:block id="id452156" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>*<fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              For a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> and a positive integer <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>, the result
              is a new sequence containing all the elements of
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
              repeated <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> times.
            </fo:block><fo:block id="id452193" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'worra'*8
'worraworraworraworraworraworraworraworra'
&gt;&gt;&gt; [0]*4
[0, 0, 0, 0]
&gt;&gt;&gt; (True, False)*5
(True, False, True, False, True, False, True, False, True, False)
</fo:block></fo:block><fo:block id="id452203" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> in <fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Is any element of a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>?
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              For convenience in searching for substrings, if the
              sequence to be searched is a string, the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> operand can be a
              multi-character string.  In that case, the operation
              returns <fo:inline font-family="monospace">True</fo:inline> if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is found anywhere in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
            </fo:block><fo:block id="id452251" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 1 in [2,4,6,0,8,0]
False
&gt;&gt;&gt; 0 in [2,4,6,0,8,0]
True
&gt;&gt;&gt; 'a' in 'banana'
True
&gt;&gt;&gt; 3.0 in (2.5, 3.0, 3.5)
True
&gt;&gt;&gt; "baz" in "rowrbazzle"
True
</fo:block></fo:block><fo:block id="id452261" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> not in <fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Are all the elements of a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> not equal
              to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>?
            </fo:block><fo:block id="id452288" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'a' not in 'banana'
False
&gt;&gt;&gt; 'x' not in 'banana'
True
</fo:block></fo:block><fo:block id="id452296" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">i</fo:inline>]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Subscripting: retrieve the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>th element of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>, <fo:inline font-style="italic">counting from zero</fo:inline>.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> is greater
              than or equal to the number of elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, an <fo:inline font-family="monospace">IndexError</fo:inline> exception is raised.
            </fo:block><fo:block id="id452339" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'Perth'[0]
'P'
&gt;&gt;&gt; 'Perth'[1]
'e'
&gt;&gt;&gt; 'Perth'[4]
'h'
&gt;&gt;&gt; 'Perth'[5]
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
IndexError: string index out of range
&gt;&gt;&gt; ('red', 'yellow', 'green')[2]
'green'
</fo:block></fo:block><fo:block id="id452349" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">i</fo:inline>:<fo:inline font-style="italic" font-family="monospace">j</fo:inline>]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Slicing: For a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> and two integers <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">j</fo:inline></fo:inline>, return a
              new sequence with copies of the elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> between
              <fo:inline font-style="italic">positions</fo:inline> <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">j</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The values used in slicing refer to the positions
              <fo:inline font-style="italic">between</fo:inline> elements, where
              position zero is the position <fo:inline font-style="italic">before</fo:inline> the first element; position 1
              is between the first and second element; and so on.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              You can also specify positions relative to the end
              of a sequence.  Position -1 is the position before
              the last element; -2 is the position before the
              second-to-last element; and so on.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              You can omit the starting position to obtain a
              slice starting at the beginning.  You can omit the
              ending position to get all the elements through the
              last.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              For example, here is a diagram showing three slices
              of the string <fo:inline font-family="monospace">'abcdef'</fo:inline>.
            </fo:block><fo:block id="id452431" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id452439"><fo:external-graphic src="url(fig/slicing.pdf)" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block></fo:block><fo:block id="id452462" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'abcdef'[2:5]
'cde'
&gt;&gt;&gt; 'abcdef'[:3]
'abc'
&gt;&gt;&gt; 'abcdef'[3:]
'def'
&gt;&gt;&gt; (90, 91, 92, 93, 94, 95)[2:5]
(92, 93, 94)
</fo:block></fo:block><fo:block id="id452472" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">i</fo:inline>:<fo:inline font-style="italic" font-family="monospace">j</fo:inline>:<fo:inline font-style="italic" font-family="monospace">k</fo:inline>]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              You can use a slice expression like this to select
              every <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>th element.  Examples:

              <fo:block id="id452501" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; teens = range(13,20)
&gt;&gt;&gt; teens
[13, 14, 15, 16, 17, 18, 19]
&gt;&gt;&gt; teens[::2]
[13, 15, 17, 19]
&gt;&gt;&gt; teens[1::2]
[14, 16, 18]
&gt;&gt;&gt; teens[1:5]
[14, 15, 16, 17]
&gt;&gt;&gt; teens[1:5:2]
[14, 16]
</fo:block>

            </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="str-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">str</fo:inline>: Strings of 8-bit
    characters</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">9. Type <fo:inline font-family="monospace">str</fo:inline>: Strings of 8-bit
    characters</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python has two string types.  Type <fo:inline font-family="monospace">str</fo:inline> holds
      strings of zero or more 8-bit characters, while
      <fo:inline font-family="monospace">unicode</fo:inline> strings provide full support of the
      expanded Unicode character set; see <fo:basic-link internal-destination="unicode-type">Section 10, “Type <fo:inline font-family="monospace">unicode</fo:inline>: Strings of 32-bit
      characters”</fo:basic-link><fo:basic-link internal-destination="unicode-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unicode-type"/>)</fo:inline></fo:basic-link>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      In addition to the functions described in <fo:basic-link internal-destination="sequence-common">Section 8.1, “Operations common to all the sequence types”</fo:basic-link><fo:basic-link internal-destination="sequence-common"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sequence-common"/>)</fo:inline></fo:basic-link>, these functions apply to
      strings:
    </fo:block><fo:list-block id="id452556" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id452560" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="raw_input-function">Section 20.34, “<fo:inline font-family="monospace">raw_input()</fo:inline>: Prompt and read a string
      from the user”</fo:basic-link><fo:basic-link internal-destination="raw_input-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="raw_input-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452571" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="str-function">Section 20.40, “<fo:inline font-family="monospace">str()</fo:inline>: Convert to <fo:inline font-family="monospace">str</fo:inline>
      type”</fo:basic-link><fo:basic-link internal-destination="str-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="str-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452581" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="unicode-function">Section 20.45, “<fo:inline font-family="monospace">unicode()</fo:inline>: Convert to a Unicode
      string”</fo:basic-link><fo:basic-link internal-destination="unicode-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unicode-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="str-constants"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">String constants</fo:marker><fo:block font-size="14.4pt">9.1. String constants</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">There are many forms for string constants:</fo:block><fo:list-block id="id452607" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id452609" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace">'...'</fo:inline>: You may enclose the string in
            single-quotes.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452619" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace">"..."</fo:inline>: You may instead enclose it in
            double-quotes.  Internally, there is absolutely no
            difference.  To include a double-quote character
            inside the string, use the escape sequence
            “<fo:inline font-family="monospace">\"</fo:inline>”.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            In conversational mode, Python will generally
            display values using single-quotes.  If the string
            contains single-quotes but no double-quotes, Python
            will display the value using double-quotes.  If the
            string contains both, the value will be displayed
            in single-quotes, with single-quote characters
            inside the value displayed as the escape sequence
            “<fo:inline font-family="monospace">\'</fo:inline>”.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452649" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace">'</fo:inline><fo:inline font-family="monospace">'</fo:inline><fo:inline font-family="monospace">'...'</fo:inline><fo:inline font-family="monospace">'</fo:inline><fo:inline font-family="monospace">'</fo:inline>: You may enclose your
            string between three single quotes in a row.  The
            difference is that you can continue such a string over
            multiple lines, and the line breaks will be included in
            the string as newline characters.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id452674" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace">"""..."""</fo:inline>: You can use three sets of
            double quotes.  As with three sets of single quotes,
            line breaks are allowed and preserved as <fo:inline font-family="monospace">"\n"</fo:inline> characters.  If you use these
            triply-quoted strings in conversational mode,
            continuation lines will prompt you with “<fo:inline font-family="monospace">... </fo:inline>”.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="id452695" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'Penguin'
'Penguin'
&gt;&gt;&gt; "ha'penny"
"ha'penny"
&gt;&gt;&gt; "Single ' and double\" quotes"
'Single \' and double" quotes'
&gt;&gt;&gt; ''
''
&gt;&gt;&gt; ""
''
&gt;&gt;&gt; s='''This string
... contains two lines.'''
&gt;&gt;&gt; t="""This string
... contains
... three lines."""
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In addition, you can use any of these <fo:inline font-style="italic">escape
        sequences</fo:inline> inside a string constant (see
        <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">Wikipedia</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">8</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">8</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> for
        more information on the ASCII code).
      </fo:block><fo:block id="str-escapes" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always"><fo:block font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em" keep-with-next.within-column="always">Table 2. String escape sequences</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\<fo:inline font-style="italic" font-family="monospace">newline</fo:inline></fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>A backslash at the end of a line is ignored.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\\</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Backslash (<fo:inline font-family="monospace">\</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Closing single quote (<fo:inline font-family="monospace">'</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\"</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Double-quote character (<fo:inline font-family="monospace">"</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\n</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Newline (ASCII LF or linefeed)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\b</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Backspace (in ASCII, the BS character)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\f</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Formfeed (ASCII FF)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\r</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Carriage return (ASCII CR)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\t</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Horizontal tab (ASCII HT)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\v</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Vertical tab (ASCII VT)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\<fo:inline font-style="italic" font-family="monospace">ooo</fo:inline></fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The character with octal code
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">ooo</fo:inline></fo:inline>, e.g.,
              <fo:inline font-family="monospace">'\177'</fo:inline>.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">\x<fo:inline font-style="italic" font-family="monospace">hh</fo:inline></fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>The character with hexadecimal value
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">hh</fo:inline></fo:inline>, e.g.,
              <fo:inline font-family="monospace">'\xFF'</fo:inline>.</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em" id="raw-str-constants">
        <fo:inline font-style="italic">Raw strings</fo:inline>: If you need to use a lot
        of backslashes inside a string constant, and doubling them
        is too confusing, you can prefix any string with the letter
        <fo:inline font-family="monospace">r</fo:inline> to suppress the interpretation of escape
        sequences.  For example, <fo:inline font-family="monospace">'\\\\'</fo:inline> contains two
        backslashes, but <fo:inline font-family="monospace">r'\\\\'</fo:inline> contains four.  Raw
        strings are particularly useful with <fo:basic-link internal-destination="re-module">Section 28.5, “<fo:inline font-family="monospace">re</fo:inline>: Regular expression
      pattern-matching”</fo:basic-link><fo:basic-link internal-destination="re-module"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="re-module"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="whitespace"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Definition of “whitespace”</fo:marker><fo:block font-size="14.4pt">9.2. Definition of “whitespace”</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In Python, these characters are considered whitespace:
      </fo:block><fo:block id="id452945" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-column column-number="3"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block font-weight="bold">Escape sequence</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block font-weight="bold">
                <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">ASCII</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">9</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">9</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>
                name
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">English name</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">' '</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">SP</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>space</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">'\n'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">NL</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>newline</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">'\r'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">CR</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>carriage return</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">'\t'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">HT</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>horizontal tab</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">'\f'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">FF</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>form feed</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">'\v'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">VT</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="left"><fo:block>vertical tab</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="str-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Methods on <fo:inline font-family="monospace">str</fo:inline> values</fo:marker><fo:block font-size="14.4pt">9.3. Methods on <fo:inline font-family="monospace">str</fo:inline> values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        These methods are available on any string value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
      </fo:block><fo:block id="id453128" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id453130" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.capitalize()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return <fo:inline font-style="italic" font-family="monospace">S</fo:inline> with its
              first character capitalized (if a letter).

              <fo:block id="id453149" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'e e cummings'.capitalize()
'E e cummings'
&gt;&gt;&gt; '---abc---'.capitalize()
'---abc---'</fo:block>

            </fo:block></fo:block><fo:block id="id453159" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.center(<fo:inline font-style="italic" font-family="monospace">w</fo:inline>)</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return <fo:inline font-style="italic" font-family="monospace">S</fo:inline> centered in a
              string of width <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">w</fo:inline></fo:inline>, padded with spaces.  If
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">w</fo:inline>&lt;=len(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline>, the result is a copy of
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
              If the number of spaces of padding is odd, the
              extra space will placed after the centered
              value.  Example:
            </fo:block><fo:block id="id453198" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'x'.center(4)
' x  '
</fo:block></fo:block><fo:block id="id453205" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.count(<fo:inline font-style="italic" font-family="monospace">t</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">start</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return the number of times string
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline> occurs
              in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  To
              search only a slice <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">start</fo:inline>:<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]</fo:inline> of S,
              supply
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">start</fo:inline></fo:inline> and
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">end</fo:inline></fo:inline>
              arguments.
              <fo:block id="id453259" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'banana'.count('a')
3
&gt;&gt;&gt; 'bananana'.count('na')
3
&gt;&gt;&gt; 'banana'.count('a', 3)
2
&gt;&gt;&gt; 'banana'.count('a', 3, 5)
1
</fo:block>
            </fo:block></fo:block><fo:block id="id453270" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.decode ( <fo:inline font-style="italic" font-family="monospace">encoding</fo:inline> )
            </fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
              contains an encoded Unicode string, this method will
              return the corresponding value as <fo:inline font-family="monospace">unicode</fo:inline> type.  The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">encoding</fo:inline></fo:inline> argument specifies
              which decoder to use; typically this will be the
              string <fo:inline font-family="monospace">'utf_8'</fo:inline> for the UTF-8 encoding.
              For discussion and examples, see <fo:basic-link internal-destination="utf-8">Section 10.1, “The UTF-8 encoding”</fo:basic-link><fo:basic-link internal-destination="utf-8"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="utf-8"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block><fo:block id="id453313" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.endswith(<fo:inline font-style="italic" font-family="monospace">t</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">start</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> to
              test whether <fo:inline font-style="italic" font-family="monospace">S</fo:inline> ends
              with string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline>.  If you supply the
              optional
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">start</fo:inline></fo:inline> and
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">end</fo:inline></fo:inline>
              arguments, it tests whether the slice
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">start</fo:inline>:<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]</fo:inline> ends
              with <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline>.

              <fo:block id="id453376" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'bishop'.endswith('shop')
True
&gt;&gt;&gt; 'bishop'.endswith('bath and wells')
False
&gt;&gt;&gt; 'bishop'[3:5]
'ho'
&gt;&gt;&gt; 'bishop'.endswith('o', 3, 5)
True
</fo:block>
           </fo:block></fo:block><fo:block id="id453387" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.expandtabs([<fo:inline font-style="italic" font-family="monospace">tabsize</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a copy of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> with all tabs replaced
              by one or more spaces.  Each tab is interpreted
              as a request to move to the next “tab
              stop”.  The optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">tabsize</fo:inline></fo:inline> argument
              specifies the number of spaces between tab stops;
              the default is 8.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              Here is how the function actually works.  The
              characters of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> are copied to a new string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline> one at a
              time.  If the character is a tab, it is replaced
              by enough tabs so the new length of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline> is a
              multiple of the tab size (but always at least one
              space).
            </fo:block><fo:block id="id453438" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'X\tY\tZ'.expandtabs()
'X       Y       Z'
&gt;&gt;&gt; 'X\tY\tZ'.expandtabs(4)
'X   Y   Z'
&gt;&gt;&gt; 'a\tbb\tccc\tdddd\teeeee\tfffff'.expandtabs(4)
'a   bb  ccc dddd    eeeee   fffff'
</fo:block></fo:block><fo:block id="id453448" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.find(<fo:inline font-style="italic" font-family="monospace">t</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">start</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline> is not found in
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, return
              -1; otherwise return the index of the first
              position in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> that matches
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">start</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">end</fo:inline></fo:inline>
              arguments restrict the search to slice <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">start</fo:inline>:<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]</fo:inline>.

              <fo:block id="id453514" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'banana'.find('an')
1
&gt;&gt;&gt; 'banana'.find('ape')
-1
&gt;&gt;&gt; 'banana'.find('n', 3)
4
&gt;&gt;&gt; 'council'.find('c', 1, 4)
-1
</fo:block>
            </fo:block></fo:block><fo:block id="id453524" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">.format(*<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,
            **<fo:inline font-style="italic" font-family="monospace">kw</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              See <fo:basic-link internal-destination="new-str-format">Section 9.4, “The string <fo:inline font-family="monospace">.format()</fo:inline> method”</fo:basic-link><fo:basic-link internal-destination="new-str-format"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-str-format"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block><fo:block id="id453551" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.index(<fo:inline font-style="italic" font-family="monospace">t</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">start</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Works like <fo:inline font-family="monospace">.find()</fo:inline>, but if
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline> is not
              found, it raises a <fo:basic-link internal-destination="exceptions"><fo:inline font-family="monospace">ValueError</fo:inline> exception</fo:basic-link>.

              <fo:block id="id453590" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'council'.index('co')
0
&gt;&gt;&gt; 'council'.index('phd')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: substring not found
</fo:block>
            </fo:block></fo:block><fo:block id="id453601" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.isalnum()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that
              tests whether
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is
              nonempty and all its characters are alphanumeric.

              <fo:block id="id453626" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; ''.isalnum()
False
&gt;&gt;&gt; 'abc123'.isalnum()
True
&gt;&gt;&gt; '&amp;*$#&amp;*()abc123'.isalnum()
False
</fo:block>
            </fo:block></fo:block><fo:block id="id453635" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.isalpha()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that
              tests whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is nonempty and all its characters are
              letters.

              <fo:block id="id453660" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'abc123'.isalpha()
False
&gt;&gt;&gt; 'MaryRecruiting'.isalpha()
True
&gt;&gt;&gt; ''.isalpha()
False
</fo:block>
            </fo:block></fo:block><fo:block id="id453670" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.isdigit()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that
              tests whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is nonempty and all its characters are
              digits.

              <fo:block id="id453696" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'abc123'.isdigit()
False
&gt;&gt;&gt; ''.isdigit()
False
&gt;&gt;&gt; '2415'.isdigit()
True
</fo:block>
           </fo:block></fo:block><fo:block id="id453706" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.islower()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link>
              that tests whether
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
              is nonempty and all its letters are lowercase
              (non-letter characters are ignored).

              <fo:block id="id453731" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; ''.islower()
False
&gt;&gt;&gt; 'abc123'.islower()
True
&gt;&gt;&gt; 'ABC123'.islower()
False
</fo:block>
            </fo:block></fo:block><fo:block id="id453741" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.isspace()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that
              tests whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is nonempty and all its characters are
              whitespace characters.
            </fo:block><fo:block id="id453767" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; ''.isspace()
False
&gt;&gt;&gt; ' \t\n\r'.isspace()
True
&gt;&gt;&gt; 'killer \t \n rabbit'.isspace()
False
</fo:block></fo:block><fo:block id="id453776" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.istitle()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A <fo:basic-link internal-destination="predicates">predicate</fo:basic-link>
              that tests whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> has “<fo:inline font-family="monospace">title case</fo:inline>”.  In a title-cased
              string, uppercase characters may appear only at
              the beginning of the string or after some
              character that is not a letter.  Lowercase
              characters may appear only after an uppercase letter.

              <fo:block id="id453809" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'abc def GHI'.istitle()
False
&gt;&gt;&gt; 'Abc Def Ghi'.istitle()
True
</fo:block>
            </fo:block></fo:block><fo:block id="id453819" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.isupper()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that
              tests whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is nonempty and all its letters are
              uppercase letters (non-letter characters are
              ignored).
              <fo:block id="id453844" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'abcDEF'.isupper()
False
&gt;&gt;&gt; '123GHI'.isupper()
True
&gt;&gt;&gt; ''.isupper()
False
</fo:block>
            </fo:block></fo:block><fo:block id="id453854" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.join(<fo:inline font-style="italic" font-family="monospace">L</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline> must be an
              <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> that produces
              a sequence of strings.  The returned value is a string
              containing the members of the sequence with copies of
              the delimiter string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> inserted between them.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              One quite common operation is to use the empty
              string as the delimiter to concatenate the
              elements of a sequence.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              Examples:
              <fo:block id="id453896" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; '/'.join(['never', 'pay', 'plan'])
'never/pay/plan'
&gt;&gt;&gt; '(***)'.join ( ('Property', 'of', 'the', 'zoo') )
'Property(***)of(***)the(***)zoo'
&gt;&gt;&gt; ''.join(['anti', 'dis', 'establish', 'ment', 'arian', 'ism'])
'antidisestablishmentarianism'                
</fo:block>
            </fo:block></fo:block><fo:block id="id453908" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.ljust(<fo:inline font-style="italic" font-family="monospace">w</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a copy of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> left-justified
              in a field of width
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">w</fo:inline></fo:inline>,
              padded with spaces.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">w</fo:inline>&lt;=len(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline>, the result is a copy of
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.

              <fo:block id="id453949" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "Ni".ljust(4)
'Ni  '
</fo:block>
            </fo:block></fo:block><fo:block id="id453957" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.lower()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a copy of <fo:inline font-family="monospace">S</fo:inline> with all
              uppercase letters replaced by their lowercase
              equivalent.

              <fo:block id="id453976" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "I like SHOUTING!".lower()
'i like shouting!'
</fo:block>
            </fo:block></fo:block><fo:block id="id453986" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.lstrip([<fo:inline font-style="italic" font-family="monospace">c</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> with all leading characters from string
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline>
              removed.  The default value for <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> is a
              string containing all the <fo:basic-link internal-destination="whitespace">whitespace
              characters</fo:basic-link>.

              <fo:block id="id454022" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; '  \t  \n Run \t \n away ! \n \t  '.lstrip()
'Run \t \n away ! \n \t  '
"***Done***".lstrip('*')
'Done***'
&gt;&gt;&gt; "(*)(*)(*Undone*)".lstrip ( ")(*" )
'Undone*)'
</fo:block>
            </fo:block></fo:block><fo:block id="id454033" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.partition(<fo:inline font-style="italic" font-family="monospace">d</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Searches string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> for the first
              occurrence of some delimiter string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline>.  If
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
              contains the delimiter, it returns a tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">pre</fo:inline>, <fo:inline font-style="italic" font-family="monospace">d</fo:inline>, <fo:inline font-style="italic" font-family="monospace">post</fo:inline>)</fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">pre</fo:inline></fo:inline> is the
              part of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> before the delimiter, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline> is the
              delimiter itself, and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">post</fo:inline></fo:inline> is the part of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> after the
              delimiter.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If the delimiter is not found, this method
              returns a 3-tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>, '', '')</fo:inline>.

              <fo:block id="id454110" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "Daffy English kniggets!".partition(' ')
('Daffy', ' ', 'English kniggets!')
&gt;&gt;&gt; "Daffy English kniggets!".partition('/')
('Daffy English kniggets!', '', '')
&gt;&gt;&gt; "a*b***c*d".partition("**")
('a*b', '**', '*c*d')
</fo:block>
            </fo:block></fo:block><fo:block id="id454122" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.replace(<fo:inline font-style="italic" font-family="monospace">old</fo:inline>,<fo:inline font-style="italic" font-family="monospace">new</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">max</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a copy of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> with all occurrences of
              string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">old</fo:inline></fo:inline> replaced by string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">new</fo:inline></fo:inline>.  Normally, all
              occurrences are replaced; if you want to limit
              the number of replacements, pass that limit as
              the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">max</fo:inline></fo:inline> argument.

              <fo:block id="id454165" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'Frenetic'.replace('e', 'x')
'Frxnxtic'
&gt;&gt;&gt; 'Frenetic'.replace('e', '###')
'Fr###n###tic'
&gt;&gt;&gt; 'banana'.replace('an', 'erzerk')
'berzerkerzerka'
&gt;&gt;&gt; 'banana'.replace('a', 'x', 2)
'bxnxna'
</fo:block>
            </fo:block></fo:block><fo:block id="id454177" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.rfind(<fo:inline font-style="italic" font-family="monospace">t</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">start</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Like <fo:inline font-family="monospace">.find()</fo:inline>, but if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline> occurs in
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>,
              this method returns the
              <fo:inline font-style="italic">highest</fo:inline> starting index.

              <fo:block id="id454216" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'banana'.find('a')
1
&gt;&gt;&gt; 'banana'.rfind('a')
5
</fo:block>
            </fo:block></fo:block><fo:block id="id454226" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.rindex(<fo:inline font-style="italic" font-family="monospace">t</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">start</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Similar to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.index()</fo:inline>, but it returns the <fo:inline font-style="italic">last</fo:inline> index in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> where string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline> is
              found.  It will raise a <fo:inline font-family="monospace">ValueError</fo:inline>
              exception if the string is not found.

              <fo:block id="id454271" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "Just a flesh wound.".index('s')
2
&gt;&gt;&gt; "Just a flesh wound.".rindex('s')
10
&gt;&gt;&gt; "Just a flesh wound.".rindex('xx')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: substring not found
</fo:block>
            </fo:block></fo:block><fo:block id="id454283" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.rjust(<fo:inline font-style="italic" font-family="monospace">w</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">fill</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a copy of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> right-justified in a
              field of width <fo:inline font-family="monospace">w</fo:inline>, padded with
              spaces.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">w</fo:inline>&lt;=len(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline>, the result is a copy of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              To pad values with some character other than a space,
              pass that character as the optional second argument.

              <fo:block id="id454329" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; '123'.rjust(5)
'  123'
&gt;&gt;&gt; '123'.rjust(5,'*')
'**123'
</fo:block>
            </fo:block></fo:block><fo:block id="id454338" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.rpartition(<fo:inline font-style="italic" font-family="monospace">d</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Similar to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.partition()</fo:inline>, except that it finds the
              <fo:inline font-style="italic">last</fo:inline> occurrence of the delimiter.

              <fo:block id="id454365" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "Daffy English kniggets!".rpartition(' ')
('Daffy English', ' ', 'kniggets!')
&gt;&gt;&gt; "a*b***c*d".rpartition("**")
('a*b*', '**', 'c*d')
</fo:block>
            </fo:block></fo:block><fo:block id="id454376" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.rsplit(<fo:inline font-style="italic" font-family="monospace">d</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">max</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Similar to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.split(<fo:inline font-style="italic" font-family="monospace">d</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">max</fo:inline>])</fo:inline>,
              except that if there are more fields than <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">max</fo:inline></fo:inline>, the
              split fields are taken from the end of the string
              instead of from the beginning.

              <fo:block id="id454415" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "I am Zoot's identical twin sister, Dingo.".rsplit(None, 2)
["I am Zoot's identical twin", 'sister,', 'Dingo.']
</fo:block>
            </fo:block></fo:block><fo:block id="id454426" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.rstrip([<fo:inline font-style="italic" font-family="monospace">c</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
              with all trailing characters from string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> removed.  The
              default value for <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> is a string containing all the <fo:basic-link internal-destination="whitespace">whitespace characters</fo:basic-link>.

              <fo:block id="id454462" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; '  \t  \n Run \t \n away ! \n \t  '.rstrip()
'  \t  \n Run \t \n away !'
</fo:block>
            </fo:block></fo:block><fo:block id="id454472" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.split([<fo:inline font-style="italic" font-family="monospace">d</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">max</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a list of strings <fo:inline font-family="monospace">[<fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>,
              <fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>,
              ...]</fo:inline> made by splitting <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> into
              pieces wherever the delimiter string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline> is found.
              The default is to split up <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> into pieces wherever
              clumps of one or more <fo:basic-link internal-destination="whitespace">whitespace</fo:basic-link> characters
              are found.
            </fo:block><fo:block id="id454528" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "I'd annex \t \r the Sudetenland" .split()
["I'd", 'annex', 'the', 'Sudetenland']
&gt;&gt;&gt; '3/crunchy frog/ Bath &amp; Wells'.split('/')
['3', 'crunchy frog', ' Bath &amp; Wells']
&gt;&gt;&gt; '//Norwegian Blue/'.split('/')
['', '', 'Norwegian Blue', '']
&gt;&gt;&gt; 'never&lt;*&gt;pay&lt;*&gt;plan&lt;*&gt;'.split('&lt;*&gt;')
['never', 'pay', 'plan', '']
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">max</fo:inline></fo:inline> argument limits the number of pieces removed
              from the front of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  The resulting list will have no more than
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">max</fo:inline>+1</fo:inline>
              elements.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              To use the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">max</fo:inline></fo:inline> argument while splitting the string on
              clumps of whitespace, pass <fo:inline font-family="monospace">None</fo:inline> as
              the first argument.

              <fo:block id="id454566" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'a/b/c/d/e'.split('/', 2)
['a', 'b', 'c/d/e']
&gt;&gt;&gt; 'a/b'.split('/', 2)
['a', 'b']
&gt;&gt;&gt; "I am Zoot's identical twin sister, Dingo.".split(None, 2)
['I', 'am', "Zoot's identical twin sister, Dingo."]
</fo:block>
            </fo:block></fo:block><fo:block id="id454578" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.splitlines([<fo:inline font-style="italic" font-family="monospace">keepends</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Splits <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> into lines and returns a list of the
              lines as strings.  Discards the line separators
              unless the optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">keepends</fo:inline></fo:inline> arguments is
              true.

              <fo:block id="id454606" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; """Is that
... an ocarina?""".splitlines()
['Is that', 'an ocarina?']
&gt;&gt;&gt; """What is your name?
... Sir Robin of Camelot.""".splitlines(True)
['What is your name?\n', 'Sir Robin of Camelot.']
</fo:block>
            </fo:block></fo:block><fo:block id="id454618" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.startswith(<fo:inline font-style="italic" font-family="monospace">t</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">start</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link>
              to test whether <fo:inline font-style="italic" font-family="monospace">S</fo:inline>
              starts with string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline>.  Otherwise similar
              to <fo:inline font-family="monospace">.endswith()</fo:inline>.

              <fo:block id="id454658" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "bishop".startswith('bish')
True
&gt;&gt;&gt; "bishop".startswith('The')
False
</fo:block>
            </fo:block></fo:block><fo:block id="id454668" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.strip([<fo:inline font-style="italic" font-family="monospace">c</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> with all leading and trailing
              characters from string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> removed.  The default
              value for <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> is a string containing all the <fo:basic-link internal-destination="whitespace">whitespace
              characters</fo:basic-link>.

              <fo:block id="id454705" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; '  \t  \n Run \t \n away ! \n \t  '.strip()
'Run \t \n away !'
</fo:block>
            </fo:block></fo:block><fo:block id="id454715" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.swapcase()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a copy of <fo:inline font-family="monospace">S</fo:inline>
              with each lowercase character replaced by
              its uppercase equivalent, and vice versa.
              <fo:block id="id454734" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "abcDEF".swapcase()
'ABCdef'
</fo:block>
            </fo:block></fo:block><fo:block id="id454743" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.title()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the characters of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, except that the first
              letter of each word is uppercased, and other
              letters are lowercased.

              <fo:block id="id454764" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "huge...tracts of land".title()
'Huge...Tracts Of Land'
</fo:block>
            </fo:block></fo:block><fo:block id="id454773" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.translate(<fo:inline font-style="italic" font-family="monospace">new</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">drop</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              This function is used to translate or remove each
              character of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">new</fo:inline></fo:inline> argument is a string
              of exactly 256 characters, and each character
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> of
              the result is replaced by <fo:inline font-family="monospace">new[ord(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)]</fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If you would like certain characters removed from
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
              before the translation, provide a string of those
              characters as the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">drop</fo:inline></fo:inline> argument.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              For your convenience in building the special
              256-character strings used here, see the definition of
              the <fo:inline font-family="monospace">maketrans()</fo:inline> function of <fo:basic-link internal-destination="string-module">Section 28.2, “<fo:inline font-family="monospace">string</fo:inline>: Utility functions for strings”</fo:basic-link><fo:basic-link internal-destination="string-module"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="string-module"/>)</fo:inline></fo:basic-link>, where you will
              find examples.
            </fo:block></fo:block><fo:block id="id454845" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.upper()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a copy of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> with all lowercase
              characters replaced by their uppercase
              equivalents.

               <fo:block id="id454865" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 'I like shouting'.upper()
'I LIKE SHOUTING'
</fo:block>
            </fo:block></fo:block><fo:block id="id454874" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.zfill(<fo:inline font-style="italic" font-family="monospace">w</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a copy of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> left-filled with <fo:inline font-family="monospace">'0'</fo:inline> characters to width <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">w</fo:inline></fo:inline>.

              <fo:block id="id454904" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; '12'.zfill(9)
'000000012'
</fo:block>
            </fo:block></fo:block></fo:block></fo:block><fo:block id="new-str-format"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The string <fo:inline font-family="monospace">.format()</fo:inline> method</fo:marker><fo:block font-size="14.4pt">9.4. The string <fo:inline font-family="monospace">.format()</fo:inline> method</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">.format()</fo:inline> method of the <fo:inline font-family="monospace">str</fo:inline> type is an extremely convenient way to
        format text exactly the way you want it.
      </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" start-indent="0.25in" end-indent="0.25in" border="4pt solid #d0d0d0" padding="4pt" id="id454942"><fo:block keep-with-next="always" font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          This method was added in Python 2.6.
        </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Quite often, we want to embed data values in some
        explanatory text.  For example, if we are displaying
        the number of nematodes in a hectare, it is a lot more
        meaningful to display it as <fo:inline font-family="monospace">"There were 37.9
        nematodes per hectare</fo:inline>" than just <fo:inline font-family="monospace">"37.9"</fo:inline>.  So what we need is a way to mix
        constant text like <fo:inline font-family="monospace">"nematodes per hectare"</fo:inline> with values from elsewhere in your program.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is the general form:
      </fo:block><fo:block id="id454967" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">template</fo:inline>.format(<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, ..., <fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>=<fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>=<fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, ...)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">template</fo:inline></fo:inline> is a
        string containing a mixture of one or more <fo:inline font-style="italic">format
        codes</fo:inline> embedded in constant text.  The <fo:inline font-family="monospace">format</fo:inline> method uses its arguments to substitute an
        appropriate value for each format code in the template.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The arguments to the <fo:inline font-family="monospace">.format()</fo:inline> method
        are of two types.  The list starts with zero or more
        positional arguments <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>, followed by
        zero or more keyword arguments of the form <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline>=<fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>, where each <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> is a name with an associated value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Just to give you the general flavor of how this works, here's
        a simple conversational example.  In this example, the format
        code “<fo:inline font-family="monospace">{0}</fo:inline>” is replaced by the
        first positional argument (49), and “<fo:inline font-family="monospace">{1}</fo:inline>” is replaced by the second positional argument, the
        string <fo:inline font-family="monospace">"okra"</fo:inline>.
      </fo:block><fo:block id="id455079" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "We have {0} hectares planted to {1}.".format(49, "okra")
'We have 49 hectares planted to okra.'
&gt;&gt;&gt; 
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In the next example, we supply the values using keyword
        arguments.  The arguments may be supplied in any order.  The
        keyword names must be valid Python names (see <fo:basic-link internal-destination="names">Section 5, “Names and keywords”</fo:basic-link><fo:basic-link internal-destination="names"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="names"/>)</fo:inline></fo:basic-link>).
      </fo:block><fo:block id="id455095" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "{monster} has now eaten {city}".format(
...     city='Tokyo', monster='Mothra')
'Mothra has now eaten Tokyo'
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You may mix references to positional and keyword arguments:
      </fo:block><fo:block id="id455107" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "The {structure} sank {0} times in {1} years.".format(
...   3, 2, structure='castle')
'The castle sank 3 times in 2 years.'
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you need to include actual “<fo:inline font-family="monospace">{</fo:inline>”
        and “<fo:inline font-family="monospace">}</fo:inline>” characters in the result,
        double them, like this:
      </fo:block><fo:block id="id455126" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "There are {0} members in set {{a}}.".format(15)
'There are 15 members in set {a}.'
</fo:block><fo:block id="general-format-form"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">9.4.1. General form of a format code</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the general form of a format code, where optional
          parts in <fo:inline font-family="monospace">[brackets]</fo:inline>, and actual characters are
          in <fo:inline font-family="monospace">"double quotes"</fo:inline>:
        </fo:block><fo:block id="id455150" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">"{" [<fo:inline font-style="italic" font-family="monospace">name</fo:inline>] ["!" <fo:inline font-style="italic" font-family="monospace">conversion</fo:inline>] [":" <fo:inline font-style="italic" font-family="monospace">spec</fo:inline>] "}"
</fo:block><fo:list-block id="id455165" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id455169" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              For the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline>
              portion, see <fo:basic-link internal-destination="format-name">Section 9.4.2, “The <fo:inline font-style="italic" font-family="monospace">name</fo:inline> part”</fo:basic-link><fo:basic-link internal-destination="format-name"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="format-name"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id455184" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              For the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">conversion</fo:inline></fo:inline> part, see <fo:basic-link internal-destination="format-conversion">Section 9.4.3, “The <fo:inline font-style="italic" font-family="monospace">conversion</fo:inline>
        part”</fo:basic-link><fo:basic-link internal-destination="format-conversion"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="format-conversion"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id455199" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              For the <fo:inline font-family="monospace">spec</fo:inline> part, see <fo:basic-link internal-destination="format-spec">Section 9.4.4, “The <fo:inline font-style="italic" font-family="monospace">spec</fo:inline> part”</fo:basic-link><fo:basic-link internal-destination="format-spec"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="format-spec"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="format-name"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">9.4.2. The <fo:inline font-style="italic" font-family="monospace">name</fo:inline> part</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> part of
          a format code specifies the source of the value to be
          formatted here.  Numbers refer to positional arguments
          passed to the <fo:inline font-family="monospace">.format()</fo:inline> method, starting at 0
          for the first argument.  You may also use any Python <fo:basic-link internal-destination="names">name</fo:basic-link> to refer to one of the keyword
          arguments.
        </fo:block><fo:list-block id="id455246" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id455248" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If the associated argument is an iterable, you may
              append an expression of this form to retrieve one
              of its elements:
            </fo:block><fo:block id="id455255" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">"[" <fo:inline font-style="italic" font-family="monospace">index</fo:inline> "]"
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              For example:              

              <fo:block id="id455267" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; signal=['red', 'yellow', 'green']
&gt;&gt;&gt; signal[2]
'green'
&gt;&gt;&gt; "The light is {0[2]}!".format(signal)
'The light is green!'
</fo:block>
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id455276" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If the associated argument has attributes, you can append
              an expression of this form to refer to that attribute:

              <fo:block id="id455282" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">"."<fo:inline font-style="italic" font-family="monospace">name</fo:inline>
</fo:block>
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              For example:

<fo:block id="id455294" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; import string
&gt;&gt;&gt; string.digits
'0123456789'
&gt;&gt;&gt; "Our digits are '{s.digits}'.".format(s=string)
"Our digits are '0123456789'."
</fo:block>
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          In general, you can use any combination
          of these features.  For example:

          <fo:block id="id455308" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "The sixth digit is '{s.digits[5]}'".format(s=string)
"The sixth digit is '5'"
</fo:block>
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Starting with Python 2.7, you may omit all of the numbers
          that refer to positional arguments, and they will be used
          in the sequence they occur.  For example:
        </fo:block><fo:block id="id455320" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "The date is {}-{}-{}.".format(2012, 5, 1)
'The date is 2012-5-1.'
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If you use this convention, you must omit all those
          numbers.  You can, however, omit all the numbers and still
          use the keyword names feature:
        </fo:block><fo:block id="id455332" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "Can I have {} pounds to {excuse}?".format(
...   50, excuse='mend the shed')
'Can I have 50 pounds to mend the shed?'           
</fo:block></fo:block><fo:block id="format-conversion"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">9.4.3. The <fo:inline font-style="italic" font-family="monospace">conversion</fo:inline>
        part</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Following the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> part of a format code, you can use one of these two forms
          to force the value to be converted by a standard function:
        </fo:block><fo:block id="id455362" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">!s</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">str()</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">!r</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">repr()</fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here's an example:
        </fo:block><fo:block id="id455416" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "{}".format('Don\'t')
"Don't"
&gt;&gt;&gt; "{!r}".format('Don\'t')
'"Don\'t"'
</fo:block></fo:block><fo:block id="format-spec"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">9.4.4. The <fo:inline font-style="italic" font-family="monospace">spec</fo:inline> part</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          After the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline>
          and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">conversion</fo:inline></fo:inline>
          parts of a format code, you may use a colon (“<fo:inline font-family="monospace">:</fo:inline>”) and a format specifier to supply more
          details about how to format the related value.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the general form of a format specifier.
        </fo:block><fo:block id="id455459" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">":" [[<fo:inline font-style="italic" font-family="monospace">fill</fo:inline>] <fo:inline font-style="italic" font-family="monospace">align</fo:inline>] [<fo:inline font-style="italic" font-family="monospace">sign</fo:inline>] ["#"] ["0"] [<fo:inline font-style="italic" font-family="monospace">width</fo:inline>] [","] ["." <fo:inline font-style="italic" font-family="monospace">prec</fo:inline>] [<fo:inline font-style="italic" font-family="monospace">type</fo:inline>]
</fo:block><fo:block id="id455483" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id455485" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">fill</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                You may specify any fill character except
                “<fo:inline font-family="monospace">}</fo:inline>”.  This character is
                used to pad a short value to the specified length.  It
                may be specified only in combination with an <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">align</fo:inline></fo:inline> character.
              </fo:block></fo:block><fo:block id="id455514" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">align</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Specifies how to align values that are not long enough
                to occupy the specified length.  There are four values:
              </fo:block><fo:block id="id455530" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">&lt;</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                        Left-justify the value.  This is the default
                        alignment for string values.
                      </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">&gt;</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                        Right-justify the value.  This is the default
                        alignment for numbers.
                      </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">^</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                        Center the value.
                      </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">=</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block>
                        For numbers using a <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">sign</fo:inline></fo:inline> specifier,
                        add the padding between the sign and the
                        rest of the value.
                      </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                Here are some examples of the use of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">fill</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">align</fo:inline></fo:inline>.
              </fo:block><fo:block id="id455632" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "{:&gt;8}".format(13)
'      13'
&gt;&gt;&gt; "{:&gt;8}".format('abc')
'     abc'
&gt;&gt;&gt; "{:*&gt;8}".format('abc')
'*****abc'
&gt;&gt;&gt; "{:*&lt;8}".format('abc')
'abc*****'
&gt;&gt;&gt; "{:&gt;5d}".format(14)
'   14'
&gt;&gt;&gt; "{:#&gt;5d}".format(14)
'###14'
&gt;&gt;&gt; "{:&lt;6}".format('Git')
'Git   '
&gt;&gt;&gt; "{:*&lt;6}".format('Git')
'Git***'
&gt;&gt;&gt; "{:=^8}".format('Git')
'==Git==='
&gt;&gt;&gt; "{:*=-9d}".format(-3)
'-*******3'
</fo:block></fo:block><fo:block id="id455644" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">sign</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                This option controls whether an arithmetic sign is
                displayed.  There are three possible values:
              </fo:block><fo:block id="id455661" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">+</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                        Always display a sign: <fo:inline font-family="monospace">+</fo:inline> for
                        positive, <fo:inline font-family="monospace">-</fo:inline> for negative.
                      </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">-</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                        Display <fo:inline font-family="monospace">-</fo:inline> only for negative
                        values.
                      </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>(one space)</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="justify"><fo:block>
                        Display one space for positive values, <fo:inline font-family="monospace">-</fo:inline> for negative.
                      </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                Here are some examples of use of the sign options.
              </fo:block><fo:block id="id455740" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; '{} {}'.format(17, -17)
'17 -17'
&gt;&gt;&gt; '{:5} {:5}'.format(17, -17)
'   17   -17'
&gt;&gt;&gt; '{:&lt;5} {:&lt;5}'.format(17, -17)
'17    -17  '
&gt;&gt;&gt; '{:@&lt;5} {:@&lt;5}'.format(17, -17)
'17@@@ -17@@'
&gt;&gt;&gt; '{:@&gt;5} {:@&gt;5}'.format(17, -17)
'@@@17 @@-17'
&gt;&gt;&gt; '{:@^5} {:@^5}'.format(17, -17)
'@17@@ @-17@'
&gt;&gt;&gt; '{:@^+5} {:@^+5}'.format(17, -17)
'@+17@ @-17@'
&gt;&gt;&gt; '{:@^-5} {:@^-5}'.format(17, -17)
'@17@@ @-17@'
&gt;&gt;&gt; '{:@^ 5} {:@^ 5}'.format(17, -17)
'@ 17@ @-17@'
</fo:block></fo:block><fo:block id="id455756" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">"#"</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                This option selects the “alternate form”
                of output for some types.
              </fo:block><fo:list-block id="id455772" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id455776" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    When formatting integers as binary, octal, or
                    hexadecimal, the alternate form adds “<fo:inline font-family="monospace">0b</fo:inline>”, “<fo:inline font-family="monospace">0o</fo:inline>”, or “<fo:inline font-family="monospace">0x</fo:inline>”
                    before the value, to show the radix explicitly.
                  </fo:block><fo:block id="id455795" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "{:4x}".format(255)
'  ff'
&gt;&gt;&gt; "{:#4x}".format(255)
'0xff'
&gt;&gt;&gt;  "{:9b}".format(62)
'   111110'
&gt;&gt;&gt; "{:#9b}".format(62)
' 0b111110'
&gt;&gt;&gt; "{:&lt;#9b}".format(62)
'0b111110 '
</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id455804" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    When formatting <fo:inline font-family="monospace">float</fo:inline>, <fo:inline font-family="monospace">complex</fo:inline>, or <fo:inline font-family="monospace">Decimal</fo:inline>
                    values, the “<fo:inline font-family="monospace">#</fo:inline>”
                    option forces the result to contain a decimal
                    point, even if it is a whole number.
                  </fo:block><fo:block id="id455825" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 
"{:5.0f}".format(36)
'   36'
&gt;&gt;&gt; "{:#5.0f}".format(36)
'  36.'
&gt;&gt;&gt; from decimal import Decimal
&gt;&gt;&gt; w=Decimal(36)
&gt;&gt;&gt; "{:g}".format(w)
'36'
&gt;&gt;&gt; "{:#g}".format(w)
'36.'
</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="id455838" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">"0"</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                To fill the field with left zeroes, place a
                “<fo:inline font-family="monospace">0</fo:inline>” at this position in
                your format code.
              </fo:block><fo:block id="id455858" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "{:5d}".format(36)
'   36'
&gt;&gt;&gt; "{:05d}".format(36)
'00036'
&gt;&gt;&gt; "{:021.15}".format(1.0/7.0)
'00000.142857142857143'
</fo:block></fo:block><fo:block id="id455867" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">width</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Place a number at this position to specify the total
                width of the displayed value.
              </fo:block><fo:block id="id455883" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "Beware the {}!".format('Penguin')
'Beware the Penguin!'
&gt;&gt;&gt; "Beware the {:11}!".format('Penguin')
'Beware the Penguin    !'
&gt;&gt;&gt; "Beware the {:&gt;11}!".format('Penguin')
'Beware the     Penguin!'
</fo:block></fo:block><fo:block id="id455894" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">","</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Place a comma at this position in your format code to
                display commas between groups of three digits in whole
                numbers.                             
              </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" start-indent="0.25in" end-indent="0.25in" border="4pt solid #d0d0d0" padding="4pt" id="id455910"><fo:block keep-with-next="always" font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                  This feature was added in Python
                  2.7.
                </fo:block></fo:block></fo:block><fo:block id="id455917" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt;  "{:,d}".format(12345678901234)
'12,345,678,901,234'
&gt;&gt;&gt; "{:,f}".format(1234567890123.456789)
'1,234,567,890,123.456787'
&gt;&gt;&gt; "{:25,f}".format(98765432.10987)
'        98,765,432.109870'
</fo:block></fo:block><fo:block id="id455928" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">"." <fo:inline font-style="italic" font-family="monospace">precision</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Use this part to specify the number of digits after
                the decimal point.                
              </fo:block><fo:block id="id455945" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; from math import pi
&gt;&gt;&gt; "{}".format(pi)
'3.141592653589793'
&gt;&gt;&gt; "{:.3}".format(pi)
'3.14'
&gt;&gt;&gt; "{:25,.3f}".format(1234567890123.456789)
'    1,234,567,890,123.457'
</fo:block></fo:block><fo:block id="id455955" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">type</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                This code specifies the general type of format used.
                The default is to convert the value of a string as if
                using the <fo:inline font-family="monospace">str()</fo:inline> function.  Refer to the
                table below for allowed values.
              </fo:block></fo:block></fo:block><fo:block id="id455979" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2" column-width="proportional-column-width(4)"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">b</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Format an integer in binary.                  
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">c</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Given a number, display the character that has that
                  code.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">d</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Display a number in decimal (base 10).
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">e</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Display a <fo:inline font-family="monospace">float</fo:inline> value using the
                  exponential format.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">E</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Same as <fo:inline font-family="monospace">e</fo:inline>, but use a capital
                  “<fo:inline font-family="monospace">E</fo:inline>” in the exponent.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">f</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Format a number in fixed-point form.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">g</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  General numeric format: use either <fo:inline font-family="monospace">f</fo:inline>
                  or <fo:inline font-family="monospace">g</fo:inline>, whichever is appropriate.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">G</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Same as “<fo:inline font-family="monospace">g</fo:inline>”, but uses a
                  capital “<fo:inline font-family="monospace">E</fo:inline>” in the
                  exponential form.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">n</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  For formatting numbers, this format uses the current
                  local setting to insert separator characters.  For
                  example, a number that Americans would show as
                  “<fo:inline font-family="monospace">1,234.56</fo:inline>”, Europeans
                  would show it as “<fo:inline font-family="monospace">1.234,56</fo:inline>”.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">o</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Display an integer in octal format.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">x</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Display an integer in hexadecimal (base 16).  Digits
                  greater than 9 are displayed as lowercase
                  characters.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">X</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                  Display an integer in hexadecimal (base 16).  Digits
                  greater than 9 are displayed as uppercase
                  characters.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">%</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block>
                  Display a number as a percentage: its value is
                  multiplied by 100, followed by a “<fo:inline font-family="monospace">%</fo:inline>” character.
                </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Examples:
        </fo:block><fo:block id="id456248" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "{:b}".format(9)
'1001'
&gt;&gt;&gt; "{:08b}".format(9)
'00001001'
&gt;&gt;&gt; "{:c}".format(97)
'a'
&gt;&gt;&gt; "{:d}".format(0xff)
'255'
&gt;&gt;&gt; from math import pi
&gt;&gt;&gt; "{:e}".format(pi*1e10)
'3.141593e+10'
&gt;&gt;&gt; "{:E}".format(pi*1e10)
'3.141593E+10'
&gt;&gt;&gt; "{:f}".format(pi)
'3.141593'
&gt;&gt;&gt; "{:g}".format(pi)
'3.14159'
&gt;&gt;&gt; "{:g}".format(pi*1e37)
'3.14159e+37'
&gt;&gt;&gt; "{:G}".format(pi*1e37)
'3.14159E+37'
&gt;&gt;&gt; "{:o}".format(255)
'377'
&gt;&gt;&gt; "{:#o}".format(255)
'0o377'
&gt;&gt;&gt; "{:x}".format(105199)
'19aef'
&gt;&gt;&gt; "{:X}".format(105199)
'19AEF'
&gt;&gt;&gt; "{:&lt;#9X}".format(105199)
'0X19AEF  '
&gt;&gt;&gt; "{:%}".format(0.6789)
'67.890000%'
&gt;&gt;&gt; "{:15.3%}".format(0.6789)
'        67.890%'
</fo:block></fo:block><fo:block id="format-var-length"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">9.4.5. Formatting a field of variable length</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Sometimes you need to format a field using a length that is
          available only once the program is running.  To do this, you
          can use a number or name in <fo:inline font-family="monospace">{braces}</fo:inline>
          <fo:inline font-style="italic">inside</fo:inline> a format code at the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">width</fo:inline></fo:inline> position.  This
          item then refers to either a positional or keyword argument
          to the <fo:inline font-family="monospace">.format()</fo:inline> method as usual.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here's an example.  Suppose you want to format a number
          <fo:inline font-family="monospace">n</fo:inline> using <fo:inline font-family="monospace">d</fo:inline> digits.  Here are
          examples showing this with and without left-zero fill:
        </fo:block><fo:block id="id456304" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; n = 42
&gt;&gt;&gt; d = 8
&gt;&gt;&gt; "{0:{1}d}".format(42, 8)
'      42'
&gt;&gt;&gt; "{0:0{1}d}".format(42, 8)
'00000042'
&gt;&gt;&gt; 
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          You can, of course, also use keyword arguments to specify
          the field width.  This trick also works for variable
          precision.
        </fo:block><fo:block id="id456316" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">"{count:0{width}d}".format(width=8, count=42)
'00000042'
&gt;&gt;&gt; 
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The same technique applies to substituting any of the
          pieces of a format code.
        </fo:block><fo:block id="id456326" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; "{:&amp;&lt;14,d}".format(123456)
'123,456&amp;&amp;&amp;&amp;&amp;&amp;&amp;'
&gt;&gt;&gt; "{1:{0}{2}{3},{4}}".format('&amp;', 123456, '&lt;', 14, 'd')
'123,456&amp;&amp;&amp;&amp;&amp;&amp;&amp;'
&gt;&gt;&gt; "{:@^14,d}".format(1234567)
'@@1,234,567@@@'
&gt;&gt;&gt; "{n:{fil}{al}{w},{kind}}".format(
...     kind='d', w=14, al='^', fil='@', n=1234567)
'@@1,234,567@@@'
</fo:block></fo:block></fo:block><fo:block id="old-str-format"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The older string format operator</fo:marker><fo:block font-size="14.4pt">9.5. The older string format operator</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python versions before 2.6 did not have the string <fo:inline font-family="monospace">.format()</fo:inline> method described in <fo:basic-link internal-destination="new-str-format">Section 9.4, “The string <fo:inline font-family="monospace">.format()</fo:inline> method”</fo:basic-link><fo:basic-link internal-destination="new-str-format"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-str-format"/>)</fo:inline></fo:basic-link>.  Instead, string formatting used
      this general form:

      <fo:block id="id456365" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">f</fo:inline> % <fo:inline font-style="italic" font-family="monospace">v</fo:inline>
</fo:block>

      where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is a
      template string and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline> specifies the value or values to be formatted using that
      template.  If multiple values are to be formatted, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline> must be a tuple.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The template string may contain any mixture of ordinary text
      and <fo:inline font-style="italic">format codes</fo:inline>.  A format code
      always starts with a percent (<fo:inline font-family="monospace">%</fo:inline>) symbol.  See
      <fo:basic-link internal-destination="format-codes">Table 4, “Format codes”</fo:basic-link><fo:basic-link internal-destination="format-codes"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="format-codes"/>)</fo:inline></fo:basic-link>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The result of a format operation consists of the
      ordinary characters from the template with values
      substituted within them wherever a format code occurs.
      A conversational example:

      <fo:block id="id456409" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; print "We have %d pallets of %s today." % (49, "kiwis")
We have 49 pallets of kiwis today.
</fo:block>

      In the above example, there are two format codes.  Code
      “<fo:inline font-family="monospace">%d</fo:inline>” means “substitute a
      decimal number here,” and code “<fo:inline font-family="monospace">%s</fo:inline>” means “substitute a string value here”.
      The number 49 is substituted for the first format code, and the
      string <fo:inline font-family="monospace">"kiwis"</fo:inline> replaces the second format code.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      In general, format codes have this form:
      <fo:block id="id456435" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">%[<fo:inline font-style="italic" font-family="monospace">p</fo:inline>][<fo:inline font-style="italic" font-family="monospace">m</fo:inline>[.<fo:inline font-style="italic" font-family="monospace">n</fo:inline>]]<fo:inline font-style="italic" font-family="monospace">c</fo:inline>
</fo:block>
    </fo:block><fo:block id="format-elements" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always"><fo:block font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em" keep-with-next.within-column="always">Table 3. Parts of the format operator</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
                  An optional prefix; see <fo:basic-link internal-destination="format-prefixes">Table 5, “Format code prefixes”</fo:basic-link><fo:basic-link internal-destination="format-prefixes"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="format-prefixes"/>)</fo:inline></fo:basic-link>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
                  <fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                    Specifies the total desired field width.  The
                    result will never be shorter than this value,
                    but may be longer if the value doesn't fit;
                    so, <fo:inline font-family="monospace">"%5d" % 1234</fo:inline> yields <fo:inline font-family="monospace">"
                    1234"</fo:inline>, but <fo:inline font-family="monospace">"%2d" % 1234</fo:inline>
                    yields <fo:inline font-family="monospace">"1234"</fo:inline>.
                  </fo:block>
                  <fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                    If the value is
                    negative, values are left-aligned in the
                    field whenever they don't fill the entire
                    width.
                  </fo:block>
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
                  For <fo:inline font-family="monospace">float</fo:inline> values, this specifies the
                  number of digits after the decimal point.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="left"><fo:block>
                  Indicates the type of formatting.
                </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here are the format type codes, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> in the general expression above:
        </fo:block><fo:block id="format-codes" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always"><fo:block font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em" keep-with-next.within-column="always">Table 4. Format codes</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%s</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Format a string.  For example, <fo:inline font-family="monospace">'%-3s' %
                  'xy'</fo:inline> yields <fo:inline font-family="monospace">'xy '</fo:inline>; the width
                  (<fo:inline font-family="monospace">-3</fo:inline>) forces left alignment.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%d</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Decimal conversion.  For example, <fo:inline font-family="monospace">'%3d' %
                  -4</fo:inline> yields the string <fo:inline font-family="monospace">' -4'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%e</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Exponential format; allow four characters for
                  the exponent.  Examples: <fo:inline font-family="monospace">'%08.1e' %
                  1.9783</fo:inline> yields <fo:inline font-family="monospace">'0002.0e+00'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%E</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Same as <fo:inline font-family="monospace">%e</fo:inline>, but the exponent is shown
                  as an uppercase <fo:inline font-family="monospace">E</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%f</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  For float type.  E.g., <fo:inline font-family="monospace">'%4.1f' %
                  1.9783</fo:inline> yields <fo:inline font-family="monospace">' 2.0'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%g</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  General numeric format.  Use <fo:inline font-family="monospace">%f</fo:inline> if
                  it fits, otherwise use <fo:inline font-family="monospace">%e</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%G</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Same as <fo:inline font-family="monospace">%G</fo:inline>, but an uppercase
                  <fo:inline font-family="monospace">E</fo:inline> is used for the exponent if
                  there is one.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%o</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Octal (base 8).  For example, <fo:inline font-family="monospace">'%o' %
                  13</fo:inline> yields <fo:inline font-family="monospace">'15'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%x</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Hexadecimal (base 16).  For example, <fo:inline font-family="monospace">'%x'
                  % 247</fo:inline> yields <fo:inline font-family="monospace">'f7'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%X</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Same as <fo:inline font-family="monospace">%x</fo:inline>, but capital letters
                  are used for the digits A-F.  For example, <fo:inline font-family="monospace">'%04X'
                  % 247</fo:inline> yields <fo:inline font-family="monospace">'00F7'</fo:inline>; the
                  leading zero in the length (<fo:inline font-family="monospace">04</fo:inline>)
                  requests that Python fill up any empty leading
                  positions with zeroes.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%c</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Convert an integer to the character with the
                  corresponding <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">ASCII</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">10</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">10</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> code.  For example, <fo:inline font-family="monospace">'%c'
                  % 0x61</fo:inline> yields the string <fo:inline font-family="monospace">'a'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%%</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
                  Places a percent sign (<fo:inline font-family="monospace">%</fo:inline>) in the
                  result.  Does not require a corresponding
                  value.  Example: <fo:inline font-family="monospace">"Energy at %d%%." % 88</fo:inline> yields the value <fo:inline font-family="monospace">'Energy at 88%.'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block id="format-prefixes" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always"><fo:block font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em" keep-with-next.within-column="always">Table 5. Format code prefixes</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">+</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  For numeric types, forces the sign to appear
                  even for positive values.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">-</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Left-justifies the value in the field.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">0</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  For numeric types, use zero fill.  For example,
                  <fo:inline font-family="monospace">'%04d' % 2</fo:inline> produces the value
                  '0002'.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">#</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
                  With the <fo:inline font-family="monospace">%o</fo:inline> (octal) format, append
                  a leading <fo:inline font-family="monospace">"0"</fo:inline>; with the
                  <fo:inline font-family="monospace">%x</fo:inline> (hexadecimal) format, append a
                  leading <fo:inline font-family="monospace">"0x"</fo:inline>; with the
                  <fo:inline font-family="monospace">%g</fo:inline> (general numeric) format,
                  append all trailing zeroes.  Examples:
                  <fo:block id="id456922" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; '%4o' % 127
' 177'
&gt;&gt;&gt; '%#4o' % 127
'0177'
&gt;&gt;&gt; '%x' % 127
'7f'
&gt;&gt;&gt; '%#x' % 127
'0x7f'
&gt;&gt;&gt; '%10.5g' % 0.5
'       0.5'
&gt;&gt;&gt; '%#10.5g' % 0.5
'   0.50000'
</fo:block>
                </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          You can also use the string format operator <fo:inline font-family="monospace">%</fo:inline> to format a set of values from a dictionary
          <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> (see
          <fo:basic-link internal-destination="dict-type">Section 16, “Type <fo:inline font-family="monospace">dict</fo:inline>: Dictionaries”</fo:basic-link><fo:basic-link internal-destination="dict-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="dict-type"/>)</fo:inline></fo:basic-link>):
        </fo:block><fo:block id="id456950" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">f</fo:inline> % <fo:inline font-style="italic" font-family="monospace">D</fo:inline>
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          In this form, the general form for a format code is:
          <fo:block id="id456963" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">%(<fo:inline font-style="italic" font-family="monospace">k</fo:inline>)[<fo:inline font-style="italic" font-family="monospace">p</fo:inline>][<fo:inline font-style="italic" font-family="monospace">m</fo:inline>[.<fo:inline font-style="italic" font-family="monospace">n</fo:inline>]]<fo:inline font-style="italic" font-family="monospace">c</fo:inline>
</fo:block>

          where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline> is
          a key in dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>, and the rest of the format code is as in the
          usual string format operator.  For each format code,
          the value of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>[<fo:inline font-style="italic" font-family="monospace">k</fo:inline>]</fo:inline> is used.
          Example:

          <fo:block id="id457003" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; named = {'last': 'Poe', 'first': 'Aloysius'}
&gt;&gt;&gt; 'Dear %(first)s %(last)s:' % named
'Dear Aloysius Poe:'
</fo:block>
        </fo:block></fo:block></fo:block><fo:block id="unicode-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">unicode</fo:inline>: Strings of 32-bit
      characters</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">10. Type <fo:inline font-family="monospace">unicode</fo:inline>: Strings of 32-bit
      characters</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        With the advent of the Web as medium for worldwide information
        interchange, the Unicode character set has become vital.
        For general background on this character set, see the <fo:basic-link external-destination="url(http://www.unicode.org/)">Unicode homepage</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">11</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">11</fo:inline> <fo:basic-link external-destination="url(http://www.unicode.org/)">http://www.unicode.org/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To get a Unicode string, prefix the string with
        <fo:inline font-family="monospace">u</fo:inline>.  For example:
        <fo:block id="id457048" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">u'klarn'</fo:block> is a
        five-character Unicode string.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To include one of the special Unicode characters in
        a string constant, use these escape sequences:
      </fo:block><fo:block id="id457058" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">\x<fo:inline font-style="italic" font-family="monospace">HH</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                For a code with the 8-bit hexadecimal value
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">HH</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">\u<fo:inline font-style="italic" font-family="monospace">HHHH</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                For a code with the 16-bit hexadecimal value
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">HHHH</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">\U<fo:inline font-style="italic" font-family="monospace">HHHHHHHH</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block>
                For a code with the 32-bit hexadecimal value
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">HHHHHHHH</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
      </fo:block><fo:block id="id457153" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; u'Klarn.'
u'Klarn.'
&gt;&gt;&gt; u'Non-breaking-\xa0-space.'
u'Non-breaking-\xa0-space.'
&gt;&gt;&gt; u'Less-than-or-equal symbol: \u2264'
u'Less-than-or-equal symbol: \u2264'
&gt;&gt;&gt; u"Phoenician letter 'wau': \U00010905"
u"Phoenician letter 'wau': \U00010905"
&gt;&gt;&gt; len(u'\U00010905')
1
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        All the operators and methods of <fo:basic-link internal-destination="str-type"><fo:inline font-family="monospace">str</fo:inline> type</fo:basic-link> are available with <fo:inline font-family="monospace">unicode</fo:inline> values.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Additionally, for a Unicode value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">U</fo:inline></fo:inline>, use this method to encode
        its value as a string of type <fo:inline font-family="monospace">str</fo:inline>:
      </fo:block><fo:block id="id457188" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id457190" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">U</fo:inline>.encode (
            <fo:inline font-style="italic" font-family="monospace">encoding</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">error</fo:inline> )</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return the value of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">U</fo:inline></fo:inline> as type <fo:inline font-family="monospace">str</fo:inline>.  The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">encoding</fo:inline></fo:inline> argument
              is a string that specifies the encoding method.  In most
              cases, this will be <fo:inline font-family="monospace">'utf_8'</fo:inline>.  For
              discussion and examples, see <fo:basic-link internal-destination="utf-8">Section 10.1, “The UTF-8 encoding”</fo:basic-link><fo:basic-link internal-destination="utf-8"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="utf-8"/>)</fo:inline></fo:basic-link>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">error</fo:inline></fo:inline> string specifies what
              to do with characters that do not have exact
              equivalents.  For example, if you are converting to
              the <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">ASCII</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">12</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">12</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>
              character set, the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">encoding</fo:inline></fo:inline> argument is <fo:inline font-family="monospace">'ascii'</fo:inline>.  Values of the <fo:inline font-family="monospace">error</fo:inline> argument are given in the table below.
            </fo:block><fo:block id="id457258" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">'strict'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                      Raise a <fo:inline font-family="monospace">UnicodeError</fo:inline> exception if
                      any character has no ASCII equivalent.  This is
                      the default behavior.
                    </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">'ignore'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                      Leave out characters that have no equivalent.
                    </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">'replace'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                      Substitute a <fo:inline font-family="monospace">'?'</fo:inline> for each
                      character that has no equivalent.
                    </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">'xmlcharrefreplace'</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                      Use the XML character entity escape sequence for
                      characters with no ASCII equivalent.  The
                      general form of this sequence is <fo:inline font-family="monospace">"&amp;#<fo:inline font-style="italic" font-family="monospace">N</fo:inline>;"</fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">N</fo:inline></fo:inline> is the decimal value of the
                      character's code point.  This feature is very
                      handy for generating internationalized Web
                      pages.
                    </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block>
                      <fo:inline font-family="monospace">'backslashreplace'</fo:inline>
                    </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block>
                      Use Python backslash escape sequences to
                      represent characters with no equivalent.
                    </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here are some examples to demonstrate <fo:inline font-family="monospace">error</fo:inline>
        argument values.
      </fo:block><fo:block id="id457387" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s = u"a\u262ez"
&gt;&gt;&gt; len(s)
3
&gt;&gt;&gt; s
u'a\u262ez'
&gt;&gt;&gt; s.encode('ascii')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
UnicodeEncodeError: 'ascii' codec can't encode character u'\u262e'
in position 1: ordinal not in range(128)
&gt;&gt;&gt; s.encode('ascii', 'ignore')
'az'
&gt;&gt;&gt; s.encode('ascii', 'replace')
'a?z'
&gt;&gt;&gt; s.encode('ascii', 'xmlcharrefreplace')
'a&amp;#9774;z'
&gt;&gt;&gt; hex(9774)
'0x262e'
&gt;&gt;&gt; t = s.encode('ascii', 'backslashreplace')
&gt;&gt;&gt; t
'a\\u262eb'
&gt;&gt;&gt; print t
a\u262eb
&gt;&gt;&gt; len(t)
8
&gt;&gt;&gt; t[1]
'\\'
</fo:block><fo:block id="utf-8"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The UTF-8 encoding</fo:marker><fo:block font-size="14.4pt">10.1. The UTF-8 encoding</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          How, you might ask, do we pack 32-bit Unicode characters
          into 8-bit bytes?  Quite prevalent on the Web and the
          Internet generally is the UTF-8 encoding, which allows any
          of the Unicode characters to be represented as a string of
          one or more 8-bit bytes.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          First, some definitions:
        </fo:block><fo:list-block id="id457420" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id457422" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              A <fo:inline font-style="italic">code point</fo:inline> is a number
              representing a unique member of the Unicode character
              set.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457433" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The Unicode code points are visualized as a
              three-dimensional structure made of <fo:inline font-style="italic">planes</fo:inline>, each of which has a range of 65536
              code points organized as 256 <fo:inline font-style="italic">rows</fo:inline> of 256 <fo:inline font-style="italic">columns</fo:inline> each.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The low-order eight bits of the code point select the
              column; the next eight more significant bits select the
              row; and the remaining most significant bits select the
              plane.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          This diagram shows how UTF-8 encoding works.  The first
          128 code points (hexadecimal 00 through 7F) are encoded
          as in normal 7-bit <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">ASCII</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">13</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">13</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>, with the high-order bit always 0.  For
          code points above hex 7F, all bytes have the high-order
          (<fo:inline font-family="monospace">0x80</fo:inline>) bit set, and the bits of the code
          point are distributed through two, three, or four
          bytes, depending on the number of bits needed to
          represent the code point value.
        </fo:block><fo:block id="id457474" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id457481"><fo:external-graphic src="url(fig/utf8.pdf)" width="auto" height="auto" content-width="auto" content-height="auto"/></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          To encode a Unicode string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">U</fo:inline></fo:inline>, use this method:
          <fo:block id="id457511" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">U</fo:inline>.encode('utf_8')
</fo:block>
          To decode a regular <fo:inline font-family="monospace">str</fo:inline> value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> that contains a
          UTF-8 encoded value, use this method:
          <fo:block id="id457526" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.decode('utf_8')
</fo:block>
          Examples:
          <fo:block id="id457534" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; tilde='~'
&gt;&gt;&gt; tilde.encode('utf_8')
'~'
&gt;&gt;&gt; u16 = u'\u0456'
&gt;&gt;&gt; s = u16.encode('utf_8')
&gt;&gt;&gt; s
'\xd1\x96'
&gt;&gt;&gt; s.decode('utf_8')
u'\u0456'
&gt;&gt;&gt; u32 = u'\U000E1234'
&gt;&gt;&gt; s = u32.encode('utf_8')
&gt;&gt;&gt; s
'\xf3\xa1\x88\xb4'
&gt;&gt;&gt; s.decode('utf_8')
u'\U000e1234'
</fo:block>
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          UTF-8 is not the only encoding method.  For more
          details, consult <fo:basic-link external-destination="url(http://docs.python.org/library/codecs.html)">the documentation
          for the Python module <fo:inline font-family="monospace">codecs</fo:inline></fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">14</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">14</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/codecs.html)">http://docs.python.org/library/codecs.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
        </fo:block></fo:block></fo:block><fo:block id="list-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">list</fo:inline>: Mutable sequences</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">11. Type <fo:inline font-family="monospace">list</fo:inline>: Mutable sequences</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To form values into a sequence, use Python's <fo:inline font-family="monospace">list</fo:inline> type if you are going to change, delete, or
        add values to the sequence.  For a discussion of when to
        use <fo:inline font-family="monospace">list</fo:inline> and when to use <fo:inline font-family="monospace">tuple</fo:inline>, see <fo:basic-link internal-destination="tuple-type">Section 12, “Type <fo:inline font-family="monospace">tuple</fo:inline>: Immutable sequences”</fo:basic-link><fo:basic-link internal-destination="tuple-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="tuple-type"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To create a list, enclose a list of zero or more
        comma-separated values inside square brackets,
        “<fo:inline font-family="monospace">[...]</fo:inline>”.  Examples:
      </fo:block><fo:block id="id457602" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">[]
["baked beans"]
[23, 30.9, 'x']
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You can also create a list by performing specific
        operations on each element of some sequence; see <fo:basic-link internal-destination="list-comprehensions">Section 11.2, “List comprehensions”</fo:basic-link><fo:basic-link internal-destination="list-comprehensions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-comprehensions"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Lists support all the operations described under <fo:basic-link internal-destination="sequence-common">Section 8.1, “Operations common to all the sequence types”</fo:basic-link><fo:basic-link internal-destination="sequence-common"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sequence-common"/>)</fo:inline></fo:basic-link>.  Methods available on lists
        are discussed in <fo:basic-link internal-destination="list-methods">Section 11.1, “Methods on lists”</fo:basic-link><fo:basic-link internal-destination="list-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-methods"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are a number of functions that can be used with
        lists as well:
      </fo:block><fo:list-block id="id457631" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id457636" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="all-function">Section 20.2, “<fo:inline font-family="monospace">all()</fo:inline>: Are all the elements of an
      iterable true?”</fo:basic-link><fo:basic-link internal-destination="all-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="all-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457646" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="any-function">Section 20.3, “<fo:inline font-family="monospace">any()</fo:inline>: Are any of the members of an
      iterable true?”</fo:basic-link><fo:basic-link internal-destination="any-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="any-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457657" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="cmp-function">Section 20.8, “<fo:inline font-family="monospace">cmp()</fo:inline>: Compare two values”</fo:basic-link><fo:basic-link internal-destination="cmp-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="cmp-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457667" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="enumerate-function">Section 20.12, “<fo:inline font-family="monospace">enumerate()</fo:inline>: Step through indices and
      values of an iterable”</fo:basic-link><fo:basic-link internal-destination="enumerate-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="enumerate-function"/>)</fo:inline></fo:basic-link>
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457678" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="filter-function">Section 20.14, “<fo:inline font-family="monospace">filter()</fo:inline>: Extract qualifying elements
      from an iterable”</fo:basic-link><fo:basic-link internal-destination="filter-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="filter-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457688" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="iter-function">Section 20.21, “<fo:inline font-family="monospace">iter()</fo:inline>: Produce an iterator over a
      sequence”</fo:basic-link><fo:basic-link internal-destination="iter-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iter-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457699" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="len-function">Section 20.22, “<fo:inline font-family="monospace">len()</fo:inline>: Number of elements”</fo:basic-link><fo:basic-link internal-destination="len-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="len-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457709" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="list-function">Section 20.23, “<fo:inline font-family="monospace">list()</fo:inline>: Convert to a list”</fo:basic-link><fo:basic-link internal-destination="list-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457720" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="map-function">Section 20.25, “<fo:inline font-family="monospace">map()</fo:inline>: Apply a function to each
      element of an iterable”</fo:basic-link><fo:basic-link internal-destination="map-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="map-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457730" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="max-function">Section 20.26, “<fo:inline font-family="monospace">max()</fo:inline>: Largest element of an
      iterable”</fo:basic-link><fo:basic-link internal-destination="max-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="max-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457741" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="min-function">Section 20.27, “<fo:inline font-family="monospace">min()</fo:inline>: Smallest element of an
      iterable”</fo:basic-link><fo:basic-link internal-destination="min-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="min-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457751" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="range-function">Section 20.33, “<fo:inline font-family="monospace">range()</fo:inline>: Generate an arithmetic
      progression as a list”</fo:basic-link><fo:basic-link internal-destination="range-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="range-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457762" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="reduce-function">Section 20.35, “<fo:inline font-family="monospace">reduce()</fo:inline>: Sequence reduction”</fo:basic-link><fo:basic-link internal-destination="reduce-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="reduce-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457772" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="reversed-function">Section 20.36, “<fo:inline font-family="monospace">reversed()</fo:inline>: Produce a reverse
      iterator”</fo:basic-link><fo:basic-link internal-destination="reversed-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="reversed-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457783" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="sorted-function">Section 20.39, “<fo:inline font-family="monospace">sorted()</fo:inline>: Sort a sequence”</fo:basic-link><fo:basic-link internal-destination="sorted-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sorted-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457794" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="sum-function">Section 20.41, “<fo:inline font-family="monospace">sum()</fo:inline>: Total the elements of a
      sequence”</fo:basic-link><fo:basic-link internal-destination="sum-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sum-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457804" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="xrange-function">Section 20.46, “<fo:inline font-family="monospace">xrange()</fo:inline>: Arithmetic progression
      generator”</fo:basic-link><fo:basic-link internal-destination="xrange-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="xrange-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id457815" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="zip-function">Section 20.47, “<fo:inline font-family="monospace">zip()</fo:inline>: Combine multiple
      sequences”</fo:basic-link><fo:basic-link internal-destination="zip-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="zip-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="list-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Methods on lists</fo:marker><fo:block font-size="14.4pt">11.1. Methods on lists</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For any list value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>, these methods are available.
        </fo:block><fo:block id="id457844" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id457847" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.append(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Append a new element <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> to the end of list
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>.
                Does not return a value.
                <fo:block id="id457873" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; colors = ['red', 'green', 'blue']
&gt;&gt;&gt; colors.append('indigo')
&gt;&gt;&gt; colors
['red', 'green', 'blue', 'indigo']
</fo:block>
              </fo:block></fo:block><fo:block id="id457884" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.count(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Return the number of elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline> that
                compare equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
                <fo:block id="id457910" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; [59, 0, 0, 0, 63, 0, 0].count(0)
5
&gt;&gt;&gt; ['x', 'y'].count('Fomalhaut')
0
</fo:block>
              </fo:block></fo:block><fo:block id="id457920" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.extend(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Append another sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>.
                <fo:block id="id457947" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; colors
['red', 'green', 'blue', 'indigo']
&gt;&gt;&gt; colors.extend(['violet', 'pale puce'])
&gt;&gt;&gt; colors
['red', 'green', 'blue', 'indigo', 'violet', 'pale puce']
</fo:block>
              </fo:block></fo:block><fo:block id="id457958" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.index(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>[,
              <fo:inline font-style="italic" font-family="monospace">start</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">end</fo:inline>]])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>
                contains any elements that equal <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>, return
                the index of the first such element, otherwise
                raise a <fo:inline font-family="monospace">ValueError</fo:inline> <fo:basic-link internal-destination="exceptions">exception</fo:basic-link>.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                The optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">start</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">end</fo:inline></fo:inline>
                arguments can be used to search only positions
                within the slice <fo:inline font-family="monospace">L[<fo:inline font-style="italic" font-family="monospace">start</fo:inline>:<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]</fo:inline>.
                <fo:block id="id458023" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; colors
['red', 'green', 'blue', 'indigo', 'violet', 'pale puce']
&gt;&gt;&gt; colors.index('blue')
2
&gt;&gt;&gt; colors.index('taupe')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: list.index(x): x not in list
&gt;&gt;&gt; M=[0, 0, 3, 0, 0, 3, 3, 0, 0, 3]
&gt;&gt;&gt; M.index(3)
2
&gt;&gt;&gt; M.index(3, 4, 8)
5
&gt;&gt;&gt; M.index(3, 0, 2)
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: list.index(x): x not in list
</fo:block>
              </fo:block></fo:block><fo:block id="id458040" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.insert(<fo:inline font-style="italic" font-family="monospace">i</fo:inline>,<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Insert a new element <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> into list <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline> just before
                the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>th
                element, shifting all higher-number elements to the
                right.  No value is returned.
                <fo:block id="id458075" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; colors
['red', 'green', 'blue', 'indigo', 'violet', 'pale puce']
&gt;&gt;&gt; colors[1]
'green'
&gt;&gt;&gt; colors.insert(1, "yellow")
&gt;&gt;&gt; colors
['red', 'yellow', 'green', 'blue', 'indigo', 'violet', 'pale puce']
</fo:block>
              </fo:block></fo:block><fo:block id="id458087" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.pop([<fo:inline font-style="italic" font-family="monospace">i</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Remove and return the element with index <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> from
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>.
                The default value for <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> is -1, so if you pass
                no argument, the last element is removed.
                <fo:block id="id458120" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; colors
['red', 'yellow', 'green', 'blue', 'indigo', 'violet', 'pale puce']
&gt;&gt;&gt; tos = colors.pop()
&gt;&gt;&gt; tos
'pale puce'
&gt;&gt;&gt; colors
['red', 'yellow', 'green', 'blue', 'indigo', 'violet']
&gt;&gt;&gt; colors[4]
'indigo'
&gt;&gt;&gt; dye = colors.pop(4)
&gt;&gt;&gt; dye
'indigo'
&gt;&gt;&gt; colors
['red', 'yellow', 'green', 'blue', 'violet']
</fo:block>
              </fo:block></fo:block><fo:block id="id458133" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.remove(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Remove the first element of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline> that is equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.  If
                there aren't any such elements, raises <fo:basic-link internal-destination="exceptions"><fo:inline font-family="monospace">ValueError</fo:inline></fo:basic-link>.
                <fo:block id="id458167" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; colors
['red', 'yellow', 'green', 'blue', 'violet']
&gt;&gt;&gt; colors.remove('yellow')
&gt;&gt;&gt; colors
['red', 'green', 'blue', 'violet']
&gt;&gt;&gt; colors.remove('cornflower')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: list.remove(x): x not in list
&gt;&gt;&gt; notMuch = [0, 0, 3, 0]
&gt;&gt;&gt; notMuch.remove(0)
&gt;&gt;&gt; notMuch
[0, 3, 0]
&gt;&gt;&gt; notMuch.remove(0)
&gt;&gt;&gt; notMuch
[3, 0]
&gt;&gt;&gt; notMuch.remove(0)
&gt;&gt;&gt; notMuch
[3]
&gt;&gt;&gt; notMuch.remove(0)
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: list.remove(x): x not in list
</fo:block>
              </fo:block></fo:block><fo:block id="id458185" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.reverse()</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Reverses the elements of
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>
                <fo:inline font-style="italic">in place.  Does not return a
                result.</fo:inline>  Compare
                <fo:basic-link internal-destination="reversed-function">Section 20.36, “<fo:inline font-family="monospace">reversed()</fo:inline>: Produce a reverse
      iterator”</fo:basic-link><fo:basic-link internal-destination="reversed-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="reversed-function"/>)</fo:inline></fo:basic-link>.
                <fo:block id="id458212" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; colors
['red', 'green', 'blue', 'violet']
&gt;&gt;&gt; colors.reverse()
&gt;&gt;&gt; colors
['violet', 'blue', 'green', 'red']
</fo:block>
              </fo:block></fo:block><fo:block id="id458223" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline>.sort(<fo:inline font-style="italic" font-family="monospace">cmp</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">key</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">reverse</fo:inline>]]])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Sort list <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline> <fo:inline font-style="italic">in place.  Does not return a
                result.</fo:inline>  Compare
                <fo:basic-link internal-destination="sorted-function">Section 20.39, “<fo:inline font-family="monospace">sorted()</fo:inline>: Sort a sequence”</fo:basic-link><fo:basic-link internal-destination="sorted-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sorted-function"/>)</fo:inline></fo:basic-link>.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                The reordering is guaranteed
                to be <fo:inline font-style="italic">stable</fo:inline>—that
                is, if two elements are considered equal, their
                order after sorting will not change.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                While sorting, Python will use the built-in <fo:inline font-family="monospace">cmp()</fo:inline> function to compare elements; see
                <fo:basic-link internal-destination="cmp-function">Section 20.8, “<fo:inline font-family="monospace">cmp()</fo:inline>: Compare two values”</fo:basic-link><fo:basic-link internal-destination="cmp-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="cmp-function"/>)</fo:inline></fo:basic-link>.  You may
                provide, as the first argument to the <fo:inline font-family="monospace">.sort()</fo:inline> method, your own <fo:inline font-style="italic">comparator function</fo:inline> to compare
                elements.  This function must have the same
                calling sequence and return value convention as
                the built-in <fo:inline font-family="monospace">cmp()</fo:inline> function: it
                must take two arguments, and return a negative
                number of the first argument precedes the
                second, a positive number if the second argument
                precedes the first, or zero if they are
                considered equal.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                You may also provide a “key extractor
                function” that is applied to each element
                to determine its key.  This function must take
                one argument and return the value to be used as
                the sort key.  If you want to provide a key
                extractor function but not a comparator function,
                pass <fo:inline font-family="monospace">None</fo:inline> as the first argument to
                the method.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                Additionally, you may provide a third argument of
                <fo:inline font-family="monospace">True</fo:inline> to sort the sequence in
                descending order; the default behavior is to sort
                into ascending order.
                <fo:block id="id458316" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; temps=[67, 73, 85, 93, 92, 78, 95, 100, 104]
&gt;&gt;&gt; temps.sort()
&gt;&gt;&gt; temps
[67, 73, 78, 85, 92, 93, 95, 100, 104]
&gt;&gt;&gt; def reverser(n1, n2):
...     '''Comparison function to use reverse order.
...     '''
...     return cmp(n2, n1)
... 
&gt;&gt;&gt; temps.sort(reverser)
&gt;&gt;&gt; temps
[104, 100, 95, 93, 92, 85, 78, 73, 67]
&gt;&gt;&gt; def unitsDigit(n):
...     '''Returns only the units digit of n.
...     '''
...     return n % 10
... 
&gt;&gt;&gt; temps.sort(None, unitsDigit)
&gt;&gt;&gt; temps
[100, 92, 93, 73, 104, 95, 85, 67, 78]
&gt;&gt;&gt; temps.sort(None, None, True)
&gt;&gt;&gt; temps
[104, 100, 95, 93, 92, 85, 78, 73, 67]
</fo:block>
              </fo:block></fo:block></fo:block></fo:block><fo:block id="list-comprehensions"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">List comprehensions</fo:marker><fo:block font-size="14.4pt">11.2. List comprehensions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          You can use a form called a <fo:inline font-style="italic">list
          comprehension</fo:inline> to create a list.  The
          general form is:
          <fo:block id="id458355" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">[ <fo:inline font-style="italic" font-family="monospace">e</fo:inline>
  for <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline> in <fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>
  for <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline> in <fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>
  ...
  if <fo:inline font-style="italic" font-family="monospace">c</fo:inline> ]
</fo:block>
          where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e</fo:inline></fo:inline> is
          some expression, followed by one or more <fo:inline font-family="monospace">for</fo:inline> clauses, optionally followed by an <fo:inline font-family="monospace">if</fo:inline> clause.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The result is a list containing all the values of
          expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e</fo:inline></fo:inline> after all the nested <fo:inline font-family="monospace">for</fo:inline> loops have
          been run; the <fo:inline font-family="monospace">for</fo:inline> loops have the same
          structure as in <fo:basic-link internal-destination="for-statement">Section 23.4, “The <fo:inline font-family="monospace">for</fo:inline> statement: Iteration over a
      sequence”</fo:basic-link><fo:basic-link internal-destination="for-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="for-statement"/>)</fo:inline></fo:basic-link>.  If
          there is an “<fo:inline font-family="monospace">if</fo:inline>” clause,
          it determines which values of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e</fo:inline></fo:inline> are added to the list: if the
          <fo:inline font-family="monospace">if</fo:inline> condition is true, the value is
          added, otherwise it is not added.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          This is perhaps easiest to explain with a few examples.
          In the first example, we construct a list containing
          the cubes of the numbers from 1 to 10, inclusive.  The
          <fo:inline font-family="monospace">for</fo:inline> loop generates the numbers 1, 2,
          ..., 10, and then the expression “<fo:inline font-family="monospace">x**3</fo:inline>” cubes each one and appends it to
          the resulting list.

          <fo:block id="id458445" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
&gt;&gt;&gt; [ x**3 for x in range(1,11 ) ]
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
</fo:block>

          In the next example, we use two <fo:inline font-family="monospace">for</fo:inline>
          loops.  The outer loop generates the sequence <fo:inline font-family="monospace">[1, 2, 3]</fo:inline>, and the inner loop generates the
          sequence <fo:inline font-family="monospace">[50, 51]</fo:inline>.  The expression
          “<fo:inline font-family="monospace">x*1000 + y</fo:inline>” is computed
          for each of the resulting six value sets for <fo:inline font-family="monospace">x</fo:inline> and <fo:inline font-family="monospace">y</fo:inline>, and the result is
          appended to the list being built.

          <fo:block id="id458475" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; [ x*1000 + y
...   for x in range(1,4)
...   for y in range(50, 52) ]
[1050, 1051, 2050, 2051, 3050, 3051]
</fo:block>

          In the next example, there are two nested loops, each
          generating the sequence <fo:inline font-family="monospace">[0, 1, 2]</fo:inline>.  For
          each of the nine trips through the inner loop, we test
          the values of <fo:inline font-family="monospace">x</fo:inline> and <fo:inline font-family="monospace">y</fo:inline> and
          discard the cases where they are equal.  The expression
          “<fo:inline font-family="monospace">(y, x)</fo:inline>” combines the two
          values into a 2-tuple.

          <fo:block id="id458500" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; [ (y, x)
...   for y in range(3)
...   for x in range(3)
...   if x != y ]
[(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)]
</fo:block>
        </fo:block></fo:block></fo:block><fo:block id="tuple-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">tuple</fo:inline>: Immutable sequences</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">12. Type <fo:inline font-family="monospace">tuple</fo:inline>: Immutable sequences</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For representing a sequence of values, Python has two similar
        <fo:inline font-style="italic">container types</fo:inline>: <fo:inline font-family="monospace">list</fo:inline>
        and <fo:inline font-family="monospace">tuple</fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        An instance of a container type is basically a value that has
        other values inside it; we call the contained values
        <fo:inline font-style="italic">elements</fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        So, when should you use a list, and when a tuple?  In many
        contexts, either will work.  However, there are important
        differences.
      </fo:block><fo:list-block id="id458555" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id458557" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Values of type <fo:inline font-family="monospace">list</fo:inline> are mutable; that is,
            you can delete or add elements, or change the value of any
            of the elements inside the list.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            Lists cannot be used in certain contexts.  For example,
            you can't use a list as the key in a dictionary.
            <fo:block id="id458570" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; d={}
&gt;&gt;&gt; d[(23,59)]  =  'hike'
&gt;&gt;&gt; d[[46,19]]  =  'hut'
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
TypeError: list objects are unhashable</fo:block>
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id458579" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Values of type <fo:inline font-family="monospace">tuple</fo:inline> are immutable.  Once
            you have assembled a tuple, you cannot add or delete
            elements or change the value of an element inside the
            tuple.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            Among the reasons to use a tuple instead of a list:
          </fo:block><fo:list-block id="id458594" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id458598" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                Tuples are allowed in certain contexts where lists are
                not, such as the right-hand argument of the string
                format operator, or as a key in a dictionary.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id458606" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                If your program is in danger of running out of
                processor memory, tuples are slightly more efficient
                in their memory usage.
              </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Write a literal tuple as a sequence of values in parentheses,
        separated by commas.  There may be any number of values of
        any type or any mixture of types.  There may be zero values.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To write a tuple with exactly one value, you must use this
        special syntax:
        <fo:block id="id458625" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">(<fo:inline font-style="italic" font-family="monospace">value</fo:inline>,)
</fo:block>
        That is, you must provide a comma before the closing
        “<fo:inline font-family="monospace">)</fo:inline>”, in order to show that it is
        a tuple, and not just a parenthesized expression.  Note
        especially the last two examples below:
        <fo:block id="id458641" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; ()
()
&gt;&gt;&gt; ('farcical', 'aquatic', 'ceremony')
('farcical', 'aquatic', 'ceremony')
&gt;&gt;&gt; ('Ni',)
('Ni',)
&gt;&gt;&gt; ('Ni')
'Ni'
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You may also convert any <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> into a tuple using <fo:basic-link internal-destination="tuple-function">Section 20.42, “<fo:inline font-family="monospace">tuple()</fo:inline>: Convert to a tuple”</fo:basic-link><fo:basic-link internal-destination="tuple-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="tuple-function"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The tuple type does not have comprehensions
        (see <fo:basic-link internal-destination="list-comprehensions">Section 11.2, “List comprehensions”</fo:basic-link><fo:basic-link internal-destination="list-comprehensions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-comprehensions"/>)</fo:inline></fo:basic-link>), but you can
        get the equivalent by applying the <fo:inline font-family="monospace">tuple()</fo:inline>
        function to a list comprehension.  Here is an example:
        <fo:block id="id458673" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; tuple([x**2 for x in (2,3,8)])
(4, 9, 64)
&gt;&gt;&gt; 
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Tuples also support the <fo:inline font-family="monospace">.index()</fo:inline> and <fo:inline font-family="monospace">.count()</fo:inline> methods as described in <fo:basic-link internal-destination="list-methods">Section 11.1, “Methods on lists”</fo:basic-link><fo:basic-link internal-destination="list-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-methods"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="bytes-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">bytes</fo:inline> type</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">13. The <fo:inline font-family="monospace">bytes</fo:inline> type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To understand why Python version 2.6 and beyond have a <fo:inline font-family="monospace">bytes</fo:inline> type, it is necessary to review a little history.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Most early computing used 7- and 8-bit character codes, but
        these character sets are very limited.  In particular, life
        was difficult for Francophone countries when
        “è” and
        “é” are very
        different letters.  The 32-bit character set of the <fo:basic-link external-destination="url(http://www.unicode.org/)">Unicode standard</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">15</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">15</fo:inline> <fo:basic-link external-destination="url(http://www.unicode.org/)">http://www.unicode.org/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> is the current
        preferred practice, and provides enough characters to last a
        good while into the future.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Text handling in the Python 2.x releases was awkward due to
        the presence of two different types for representing character
        data: <fo:inline font-family="monospace">str</fo:inline> and <fo:inline font-family="monospace">unicode</fo:inline>.
        Consequently, in the upcoming major incompatible 3.x releases,
        all character data will be represented internally by 32-bit
        characters.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Therefore, in Python 2.6 the <fo:inline font-family="monospace">bytes</fo:inline> type was
        added to aid transition to the 3.0 family, which has a
        separate <fo:inline font-family="monospace">bytes</fo:inline> type for 8-bit character
        strings.  In the 3.x versions, a <fo:inline font-family="monospace">bytes</fo:inline> value is
        a sequence of zero or more unsigned 8-bit integers, each in
        the range 0–255, inclusive.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In Python 2.6 and subsequent versions, the <fo:inline font-family="monospace">bytes</fo:inline> type is a synonym for <fo:inline font-family="monospace">str</fo:inline>.  The <fo:inline font-family="monospace">bytes()</fo:inline> function works exactly like the <fo:inline font-family="monospace">str()</fo:inline> function.
      </fo:block><fo:block id="id458776" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s=bytes(987)
&gt;&gt;&gt; s
'987'
&gt;&gt;&gt; type(s)
&lt;type 'str'&gt;
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use this type where your program expects 8-bit characters, and
        it will ease the transition to Python 3.x, because the
        semi-automated translation process will know that values of
        <fo:inline font-family="monospace">bytes</fo:inline> type are intended for sequences of 8-bit
        characters.
      </fo:block><fo:block id="bytes-to-3x"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Using the <fo:inline font-family="monospace">bytes</fo:inline> type in 3.x
        conversion</fo:marker><fo:block font-size="14.4pt">13.1. Using the <fo:inline font-family="monospace">bytes</fo:inline> type in 3.x
        conversion</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Versions 2.6+ support a new notation: to create a literal of
          type <fo:inline font-family="monospace">bytes</fo:inline>, place a “<fo:inline font-family="monospace">b</fo:inline>” just before the opening quote.
        </fo:block><fo:block id="id458813" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s = b'abc'
&gt;&gt;&gt; s
'abc'
&gt;&gt;&gt; type(s)
&lt;type 'str'&gt;
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Such literals are exactly like regular string literals.  The
          difference comes when you convert your program to the 3.x
          versions.  In Python 3.x, a string of the form <fo:inline font-family="monospace">b'...'</fo:inline> will have type <fo:inline font-family="monospace">bytes</fo:inline>, which
          will be different than the <fo:inline font-family="monospace">str</fo:inline> (32-bit character)
          type in 3.x.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          One step in converting your 2.x programs to 3.x is to
          add this <fo:inline font-family="monospace">import</fo:inline> before all the other imports in
          your program:
        </fo:block><fo:block id="id458841" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">from __future__ import unicode_literals
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          In programs that start with this declaration, all string
          literals will automatically be considered <fo:inline font-family="monospace">unicode</fo:inline> type without using the <fo:inline font-family="monospace">u'...'</fo:inline> prefix.  This
          means you may also include escape sequences of the form <fo:inline font-family="monospace">'\u<fo:inline font-style="italic" font-family="monospace">XXXX</fo:inline>'</fo:inline>, each of which
          designates a 16-bit Unicode code point as four hexadecimal
          digits <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">XXXX</fo:inline></fo:inline>.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is a demonstration of the difference.  Before the <fo:inline font-family="monospace">import</fo:inline>, the <fo:inline font-family="monospace">\u</fo:inline> escape is not
          recognized, and the value has type <fo:inline font-family="monospace">str</fo:inline>.
          Afterwards, the return value is type <fo:inline font-family="monospace">unicode</fo:inline> 
        </fo:block><fo:block id="id458887" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s = '\u2672'
&gt;&gt;&gt; len(s)
6
&gt;&gt;&gt; s
'\\u2672'
&gt;&gt;&gt; type(s)
&lt;type 'str'&gt;
&gt;&gt;&gt; from __future__ import unicode_literals
&gt;&gt;&gt; t = '\u2672'
&gt;&gt;&gt; len(t)
1
&gt;&gt;&gt; type(t)
&lt;type 'unicode'&gt;
&gt;&gt;&gt; t
u'\u2672'
</fo:block></fo:block></fo:block><fo:block id="bytearray-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">bytearray</fo:inline> type</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">14. The <fo:inline font-family="monospace">bytearray</fo:inline> type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        New in Python 2.6 is the <fo:inline font-family="monospace">bytearray</fo:inline> type.  Each
        instance is a sequence of 8-bit bytes, each of which is an
        unsigned integer in the range 0 <fo:inline font-family="monospace">&lt;=</fo:inline> 255.
        Unlike the <fo:inline font-family="monospace">str</fo:inline> type, however, <fo:inline font-family="monospace">bytearray</fo:inline> values are mutable: you can delete, insert,
        or replace arbitrary values or slices.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        As with the features described in <fo:basic-link internal-destination="bytes-type">Section 13, “The <fo:inline font-family="monospace">bytes</fo:inline> type”</fo:basic-link><fo:basic-link internal-destination="bytes-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="bytes-type"/>)</fo:inline></fo:basic-link>, this type is intended to ease the transition to Python 3.x
        versions.  Use it for situations where you are handling
        sequences of 8-bit bytes that are <fo:inline font-family="monospace">not</fo:inline> intended
        as textual representations, such as raw binary data.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Values of this type support almost all of the operators and
        methods of the <fo:inline font-family="monospace">str</fo:inline> type (with the exception of
        <fo:inline font-family="monospace">.encode()</fo:inline> and <fo:inline font-family="monospace">.format()</fo:inline>
        methods).  They also support these methods of the <fo:basic-link internal-destination="list-type"><fo:inline font-family="monospace">list</fo:inline> type</fo:basic-link>: <fo:inline font-family="monospace">.extend()</fo:inline>, <fo:inline font-family="monospace">.insert()</fo:inline>, <fo:inline font-family="monospace">.pop()</fo:inline>, <fo:inline font-family="monospace">.remove()</fo:inline>, <fo:inline font-family="monospace">.reverse()</fo:inline>.  You can also replace values using either
        integers or the <fo:inline font-family="monospace">b'...'</fo:inline> (<fo:inline font-family="monospace">bytes</fo:inline>)
        literals.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Some examples:
      </fo:block><fo:block id="id458993" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s=bytearray('abcdef')
&gt;&gt;&gt; s
bytearray(b'abcdef')
&gt;&gt;&gt; type(s)
&lt;type 'bytearray'&gt;
&gt;&gt;&gt; s[3]
100
&gt;&gt;&gt; s.insert(0, b'^')
&gt;&gt;&gt; s
bytearray(b'^abcdef')
&gt;&gt;&gt; s.reverse()
&gt;&gt;&gt; s
bytearray(b'fedcba^')
&gt;&gt;&gt; s[2:6]
bytearray(b'dcba')
&gt;&gt;&gt; s[2:6] = b'#'
&gt;&gt;&gt; s
bytearray(b'fe#^')
&gt;&gt;&gt; s[0]=63
&gt;&gt;&gt; s
bytearray(b'?e#^')
&gt;&gt;&gt; 
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">bytearray</fo:inline> type also has a <fo:basic-link internal-destination="static-methods">static method</fo:basic-link> named <fo:inline font-family="monospace">.fromhex()</fo:inline> that creates a <fo:inline font-family="monospace">bytearray</fo:inline>
        value from a Unicode string containing hexadecimal characters
        (which may be separated by spaces for legibility).
      </fo:block><fo:block id="id459024" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; ao = bytearray.fromhex(u'00 ff')
&gt;&gt;&gt; ao
bytearray(b'\x00\xff')
&gt;&gt;&gt; ao[1]
255
</fo:block></fo:block><fo:block id="set-types"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types <fo:inline font-family="monospace">set</fo:inline> and <fo:inline font-family="monospace">frozenset</fo:inline>:
    Set types</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">15. Types <fo:inline font-family="monospace">set</fo:inline> and <fo:inline font-family="monospace">frozenset</fo:inline>:
    Set types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Mathematically speaking, a set is an unordered collection of
      zero or more distinct elements.  Python has two set types that
      represent this mathematical abstraction.  Use these types when
      you care only about whether something is a member of the set or
      not, and you don't need them to be in any specific order.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The elements of a Python set must be immutable.  In particular,
      you can't have list or dictionary elements in a set.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Most operations on sets work with both <fo:inline font-family="monospace">set</fo:inline> and
      <fo:inline font-family="monospace">frozenset</fo:inline> types.
    </fo:block><fo:list-block id="id459071" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id459076" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Values of type <fo:inline font-family="monospace">set</fo:inline> are mutable: you can add
          or delete members.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          There are two ways to create a mutable set.
        </fo:block><fo:list-block id="id459088" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id459090" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              In all
              Python versions of the 2.x series, the <fo:inline font-family="monospace">set(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline> function
              operates on a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> and returns a mutable set
              containing the unique elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  The argument is optional;
              if omitted, you get a new, empty set.
            </fo:block><fo:block id="id459113" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s1 = set([1, 1, 1, 9, 1, 8, 9, 8, 3])
set([8, 1, 3, 9])
&gt;&gt;&gt; s1 = set([1, 1, 1, 9, 1, 8, 9, 8, 3])
&gt;&gt;&gt; s2 = set()
&gt;&gt;&gt; s1
set([8, 1, 3, 9])
&gt;&gt;&gt; s2
set([])
&gt;&gt;&gt; print len(s1), len(s2)
4 0
&gt;&gt;&gt; s3 = set("notlob bolton")
&gt;&gt;&gt; s3
s3
set([' ', 'b', 'l', 'o', 'n', 't'])
</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459124" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Starting in Python 2.7, you can create a set by
              simply enclosing one or more elements within braces
              <fo:inline font-family="monospace">{...}</fo:inline> separated by commas.
            </fo:block><fo:block id="id459134" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">s1 = {1, 1, 1, 9, 1, 8, 9, 8, 3}
&gt;&gt;&gt; s1
set([8, 9, 3, 1])
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              Note the wording “one or more:” an
              empty pair of braces “<fo:inline font-family="monospace">{}</fo:inline>” is an empty dictionary, not an empty set.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459152" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          A <fo:inline font-family="monospace">frozenset</fo:inline> value is immutable: you can't
          change the membership, but you can use a <fo:inline font-family="monospace">frozenset</fo:inline> value in contexts where <fo:inline font-family="monospace">set</fo:inline> values are not allowed.  For example, you can use a <fo:inline font-family="monospace">frozenset</fo:inline> as a key in a dictionary, but you can't
          use a <fo:inline font-family="monospace">set</fo:inline> value as a dictionary key.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      To create a <fo:inline font-family="monospace">set</fo:inline> or <fo:inline font-family="monospace">frozenset</fo:inline>, see
      <fo:basic-link internal-destination="set-function">Section 20.38, “<fo:inline font-family="monospace">set()</fo:inline>: Create an algebraic set”</fo:basic-link><fo:basic-link internal-destination="set-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="set-function"/>)</fo:inline></fo:basic-link> and <fo:basic-link internal-destination="frozenset-function">Section 20.17, “<fo:inline font-family="monospace">frozenset()</fo:inline>: Create a frozen set”</fo:basic-link><fo:basic-link internal-destination="frozenset-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="frozenset-function"/>)</fo:inline></fo:basic-link>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      A number of functions that work on sequences also work
      on sets.  In each case, the set is converted to a list
      before being passed to the function.
    </fo:block><fo:list-block id="id459200" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id459204" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="all-function">Section 20.2, “<fo:inline font-family="monospace">all()</fo:inline>: Are all the elements of an
      iterable true?”</fo:basic-link><fo:basic-link internal-destination="all-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="all-function"/>)</fo:inline></fo:basic-link>.  <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> to test whether
          all members of a set are <fo:inline font-family="monospace">True</fo:inline>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459223" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="any-function">Section 20.3, “<fo:inline font-family="monospace">any()</fo:inline>: Are any of the members of an
      iterable true?”</fo:basic-link><fo:basic-link internal-destination="any-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="any-function"/>)</fo:inline></fo:basic-link>.  <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> to test whether
          any member of a set is true.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459239" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="filter-function">Section 20.14, “<fo:inline font-family="monospace">filter()</fo:inline>: Extract qualifying elements
      from an iterable”</fo:basic-link><fo:basic-link internal-destination="filter-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="filter-function"/>)</fo:inline></fo:basic-link>.  Returns a list
          of the elements that pass through a filtering function.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459251" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="iter-function">Section 20.21, “<fo:inline font-family="monospace">iter()</fo:inline>: Produce an iterator over a
      sequence”</fo:basic-link><fo:basic-link internal-destination="iter-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iter-function"/>)</fo:inline></fo:basic-link>.  Returns an iterator
          that will visit every element of the set.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459262" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="len-function">Section 20.22, “<fo:inline font-family="monospace">len()</fo:inline>: Number of elements”</fo:basic-link><fo:basic-link internal-destination="len-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="len-function"/>)</fo:inline></fo:basic-link>.  Returns the length
          (cardinality) of the set.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459273" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="list-function">Section 20.23, “<fo:inline font-family="monospace">list()</fo:inline>: Convert to a list”</fo:basic-link><fo:basic-link internal-destination="list-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-function"/>)</fo:inline></fo:basic-link>.  Returns the elements
          of the set as a list.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459284" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="map-function">Section 20.25, “<fo:inline font-family="monospace">map()</fo:inline>: Apply a function to each
      element of an iterable”</fo:basic-link><fo:basic-link internal-destination="map-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="map-function"/>)</fo:inline></fo:basic-link>.  Returns a list
          containing the result of the application of a function
          to each element of a set.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459296" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="max-function">Section 20.26, “<fo:inline font-family="monospace">max()</fo:inline>: Largest element of an
      iterable”</fo:basic-link><fo:basic-link internal-destination="max-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="max-function"/>)</fo:inline></fo:basic-link>.  Returns the largest
          element of a set.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459307" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="min-function">Section 20.27, “<fo:inline font-family="monospace">min()</fo:inline>: Smallest element of an
      iterable”</fo:basic-link><fo:basic-link internal-destination="min-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="min-function"/>)</fo:inline></fo:basic-link>.  Returns the smallest
          element of a set.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459318" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="reduce-function">Section 20.35, “<fo:inline font-family="monospace">reduce()</fo:inline>: Sequence reduction”</fo:basic-link><fo:basic-link internal-destination="reduce-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="reduce-function"/>)</fo:inline></fo:basic-link>.  Returns the result
          of the application of a given function pairwise to all
          the elements of a set.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id459330" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="sorted-function">Section 20.39, “<fo:inline font-family="monospace">sorted()</fo:inline>: Sort a sequence”</fo:basic-link><fo:basic-link internal-destination="sorted-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sorted-function"/>)</fo:inline></fo:basic-link>.  Returns a list
          containing the sorted elements of the set.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Another new feature in Python 2.7 is the <fo:inline font-style="italic">set
      comprehension</fo:inline>.  This is similar to the feature
      described in <fo:basic-link internal-destination="list-comprehensions">Section 11.2, “List comprehensions”</fo:basic-link><fo:basic-link internal-destination="list-comprehensions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-comprehensions"/>)</fo:inline></fo:basic-link>.
      Here is the general form:
    </fo:block><fo:block id="id459353" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">{ <fo:inline font-style="italic" font-family="monospace">e</fo:inline>
  for <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline> in <fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>
  for <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline> in <fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>
  ...
  if <fo:inline font-style="italic" font-family="monospace">c</fo:inline> }
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      As with a list comprehension, you use one or more <fo:inline font-family="monospace">for</fo:inline> clauses to iterate over sets of values, and
      the expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e</fo:inline></fo:inline> is evaluated for every combination of the values in the
      sequences <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>.  If there is no “<fo:inline font-family="monospace">if</fo:inline>” clause, or if the “if”
      condition evaluates as <fo:inline font-family="monospace">True</fo:inline>, the value is
      added to the sequence from which a set is then constructed.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Here is an example.  Function <fo:inline font-family="monospace">takeUppers()</fo:inline> takes
      one string argument and returns a set of the unique letters in
      that string, uppercased.  The <fo:inline font-family="monospace">for</fo:inline> clause iterates
      over the characters in the argument <fo:inline font-family="monospace">s</fo:inline>; the <fo:inline font-family="monospace">if</fo:inline> clause discards characters that aren't letters; and
      the <fo:inline font-family="monospace">.upper()</fo:inline> method converts lowercase letters to
      uppercase.
    </fo:block><fo:block id="id459436" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def takeUpper(s):
...     return { c.upper()
...              for c in s
...              if c.isalpha() }
... 
&gt;&gt;&gt; takeUpper("A a|ccCc^#zZ")
set(['A', 'C', 'Z'])
</fo:block><fo:block id="set-immutable-operations"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Operations on mutable and immutable sets</fo:marker><fo:block font-size="14.4pt">15.1. Operations on mutable and immutable sets</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        These operations are supported by both <fo:inline font-family="monospace">set</fo:inline> and
        <fo:inline font-family="monospace">frozenset</fo:inline> types:
      </fo:block><fo:block id="id459465" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id459467" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> in <fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that tests
              whether element <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is a member of set <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
              <fo:block id="id459498" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 1 in set([0,1,4])
True
&gt;&gt;&gt; 99 in set([0,1,4])
False
</fo:block>
            </fo:block></fo:block><fo:block id="id459507" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> not in <fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that tests
              whether element <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is <fo:inline font-style="italic">not</fo:inline> a member of set
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
              <fo:block id="id459541" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 1 not in set([0,1,4])
False
&gt;&gt;&gt; 99 not in set([0,1,4])
True
</fo:block>
            </fo:block></fo:block><fo:block id="id459551" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> == <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that tests
              whether sets <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> have exactly the same members.
              <fo:block id="id459581" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set('bedac') == set('abcde')
True
&gt;&gt;&gt; set('bedac') == set('bedack')
False
</fo:block>
            </fo:block></fo:block><fo:block id="id459591" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> != <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that tests
              whether sets <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> have different members.
              <fo:block id="id459622" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set ( 'bedac' ) != set ( 'abcde' )
False
&gt;&gt;&gt; set('bedac')!=set('bedack')
True
</fo:block>
            </fo:block></fo:block><fo:block id="id459632" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> &lt; <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that tests
              whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>
              is a proper subset of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>; that is, all the elements of
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> are also
              members of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>, but there is at least one element of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> that is not in
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>.
              <fo:block id="id459680" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set('ab') &lt; set('ab')
False
&gt;&gt;&gt; set('ab') &lt; set('abcde')
True
</fo:block>
            </fo:block></fo:block><fo:block id="id459690" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> &gt; <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that tests
              whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>
              is a proper superset of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>; that is, all the elements of
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> are also
              members of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>, but there is at least one element of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> that is not in
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>.
              <fo:block id="id459737" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set('ab') &gt; set('ab')
False
&gt;&gt;&gt; set('abcde') &gt; set('cd')
True
</fo:block>
            </fo:block></fo:block><fo:block id="id459747" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.copy()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a new set of the same type as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, containing all the same
              elements.
              <fo:block id="id459766" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s1=set('aeiou')
&gt;&gt;&gt; s2=s1
&gt;&gt;&gt; s3=s1.copy()
&gt;&gt;&gt; s1.add('y')
&gt;&gt;&gt; s1
set(['a', 'e', 'i', 'o', 'u', 'y'])
&gt;&gt;&gt; s2
set(['a', 'e', 'i', 'o', 'u', 'y'])
&gt;&gt;&gt; s3
set(['a', 'i', 'e', 'u', 'o'])
</fo:block>
            </fo:block></fo:block><fo:block id="id459778" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.difference(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a new set of the same type as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>, containing only those values
              found in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>
              but <fo:inline font-style="italic">not</fo:inline> found in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>.  The
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> argument
              may be a set or a sequence.
              <fo:block id="id459817" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set('roygbiv').difference('rgb')
set(['i', 'o', 'v', 'y'])
</fo:block>
            </fo:block></fo:block><fo:block id="id459827" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> - <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.difference(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>,
              except that <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
              must be a set.
              <fo:block id="id459857" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set('roygbiv') - set('rgb')
set(['i', 'y', 'o', 'v'])
</fo:block>
            </fo:block></fo:block><fo:block id="id459866" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.intersection(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a new set, of the same type as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>, containing only the elements
              found both in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> may be a
              set or a sequence.
              <fo:block id="id459906" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set([1,2,3,5,7,11]).intersection(set([1,3,5,7,9]))
set([1, 3, 5, 7])
&gt;&gt;&gt; set([1,3,5]).intersection( (2,4,6,8) )
set([])
</fo:block>
            </fo:block></fo:block><fo:block id="id459917" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> &amp; <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.intersection(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>,
              but <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> must be
              a set.
            </fo:block></fo:block><fo:block id="id459950" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.issubset(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that tests
              whether every element of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> is also in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>.  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> may be a set or a sequence.
              <fo:block id="id459986" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set([1,2]).issubset(set([2,4,1,8]))
True
&gt;&gt;&gt; set([2,4,1,8]).issubset(set([1,2]))
False
&gt;&gt;&gt; set(['r', 'g', 'b']) &lt;= set(['r', 'o', 'y', 'g', 'b', 'i', 'v'])
True
</fo:block>
            </fo:block></fo:block><fo:block id="id459996" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> &lt;= <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.issubset(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>, but
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> must be a
              set.
            </fo:block></fo:block><fo:block id="id460029" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.issuperset(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> that tests
              whether every element of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> is also in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>.  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> may be a set or a sequence.
              <fo:block id="id460066" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set([1,2]).issuperset(set([2,4,1,8]))
False
&gt;&gt;&gt; set([2,4,1,8]).issuperset(set([1,2]))
True
</fo:block>
            </fo:block></fo:block><fo:block id="id460076" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> &gt;= <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.issuperset(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>.
            </fo:block></fo:block><fo:block id="id460104" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.symmetric_difference(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a new set of the same type as <fo:inline font-style="italic" font-family="monospace">S1</fo:inline>, containing only elements found in
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> or <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>, but not found in
              both.  The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> argument may be a set or a sequence.
              <fo:block id="id460139" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set('aeiou').symmetric_difference('etaoin')
set(['n', 'u', 't'])
</fo:block>
            </fo:block></fo:block><fo:block id="id460148" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> ^ <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.symmetric_difference(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>, but <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> must be a set.
            </fo:block></fo:block><fo:block id="id460181" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.union(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a new set, with the same type as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>, containing all
              the elements found in either <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> or <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
              argument may be a set or a sequence.
              <fo:block id="id460222" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; set([1,2]).union(set([1,3,7]))
set([1, 2, 3, 7])
&gt;&gt;&gt; set([1,2]).union( (8,2,4,5) )
set([8, 1, 2, 4, 5])
</fo:block>
            </fo:block></fo:block><fo:block id="id460232" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> | <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.union(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>.
            </fo:block></fo:block></fo:block></fo:block><fo:block id="set-mutable-operations"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Operations on mutable sets</fo:marker><fo:block font-size="14.4pt">15.2. Operations on mutable sets</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The operations described in this section apply to <fo:inline font-family="monospace">set</fo:inline> (mutable) values, but may not be used with <fo:inline font-family="monospace">frozenset</fo:inline> (immutable) values.
      </fo:block><fo:block id="id460286" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id460288" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.add(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Add element <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> to set <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
              Duplicate elements will be ignored.
              <fo:block id="id460315" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; pbr=set(['USA', 'Brazil', 'Canada'])
&gt;&gt;&gt; pbr.add('Australia')
&gt;&gt;&gt; pbr
set(['Brazil', 'Canada', 'Australia', 'USA'])
&gt;&gt;&gt; pbr.add('USA')
&gt;&gt;&gt; pbr
set(['Brazil', 'Canada', 'Australia', 'USA'])
</fo:block>
            </fo:block></fo:block><fo:block id="id460327" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.clear()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Remove all the elements from set <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
              <fo:block id="id460347" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; pbr
set(['Brazil', 'USA'])
&gt;&gt;&gt; pbr.clear()
&gt;&gt;&gt; pbr
set([])
</fo:block>
            </fo:block></fo:block><fo:block id="id460357" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.discard(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If set <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
              contains element <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>, remove that element from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is not
              in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, it is
              not considered an error; compare <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.remove(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>.
              <fo:block id="id460408" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; pbr
set(['Brazil', 'Australia', 'USA'])
&gt;&gt;&gt; pbr.discard('Swaziland')
&gt;&gt;&gt; pbr
set(['Brazil', 'Australia', 'USA'])
&gt;&gt;&gt; pbr.discard('Australia')
&gt;&gt;&gt; pbr
set(['Brazil', 'USA'])
</fo:block>
            </fo:block></fo:block><fo:block id="id460419" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.difference_update(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Modify set <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> by removing any values found in <fo:inline font-style="italic" font-family="monospace">S2</fo:inline>.  Value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> may be a set or a sequence.
              <fo:block id="id460449" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s1=set('roygbiv')
&gt;&gt;&gt; s1.difference_update('rgb')
&gt;&gt;&gt; s1
set(['i', 'o', 'v', 'y'])
</fo:block>
            </fo:block></fo:block><fo:block id="id460459" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> -= <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.difference_update(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>, but <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> must be a set.
            </fo:block></fo:block><fo:block id="id460492" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.intersection_update(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Modify set <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> so that it contains only values found in both <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>.
              <fo:block id="id460523" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s1=set('roygbiv')
&gt;&gt;&gt; s1
set(['b', 'g', 'i', 'o', 'r', 'v', 'y'])
&gt;&gt;&gt; s1.intersection_update('roy')
&gt;&gt;&gt; s1
set(['y', 'r', 'o'])
</fo:block>
            </fo:block></fo:block><fo:block id="id460534" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> &amp;= <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.intersection_update(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>, but <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> must be a set.
            </fo:block></fo:block><fo:block id="id460567" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>.remove(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If element <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
              is in set <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>,
              remove that element from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is not
              an element of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, this operation will raise a <fo:inline font-family="monospace">KeyError</fo:inline> exception.
              <fo:block id="id460613" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; pbr
set(['Brazil', 'Canada', 'Australia', 'USA'])
&gt;&gt;&gt; pbr.remove('Canada')
&gt;&gt;&gt; pbr
set(['Brazil', 'Australia', 'USA'])
&gt;&gt;&gt; pbr.remove('Swaziland')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
KeyError: 'Swaziland'
</fo:block>
            </fo:block></fo:block><fo:block id="id460625" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.symmetric_difference_update(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Remove from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> any elements found in both <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>.  Value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> may be a set or a sequence.
              <fo:block id="id460660" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s1=set('abcd')
&gt;&gt;&gt; s1.symmetric_difference_update('cdefg')
&gt;&gt;&gt; s1
set(['a', 'b', 'e', 'g', 'f'])
</fo:block>
            </fo:block></fo:block><fo:block id="id460670" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> ^= <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.symmetric_difference_update(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>, but <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> must be a set.
            </fo:block></fo:block><fo:block id="id460703" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.update(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Add to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline> any elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> not found in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline></fo:inline>.  The
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
              argument may be a set or a sequence.

              <fo:block id="id460739" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s1=set('rgb')
&gt;&gt;&gt; s1
set(['r', 'b', 'g'])
&gt;&gt;&gt; s1.update('roygbiv')
&gt;&gt;&gt; s1
set(['b', 'g', 'i', 'o', 'r', 'v', 'y'])
</fo:block>
            </fo:block></fo:block><fo:block id="id460750" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline> |= <fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S1</fo:inline>.update(<fo:inline font-style="italic" font-family="monospace">S2</fo:inline>)</fo:inline>, but
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S2</fo:inline></fo:inline> must be a
              set.
            </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="dict-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">dict</fo:inline>: Dictionaries</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">16. Type <fo:inline font-family="monospace">dict</fo:inline>: Dictionaries</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python dictionaries are one of its more powerful built-in types.
      They are generally used for look-up tables and many similar
      applications.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      A Python dictionary represents a set of zero or more ordered
      pairs <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline>)</fo:inline> such
      that:
    </fo:block><fo:list-block id="id460827" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id460829" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Each <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> value is called a
          <fo:inline font-style="italic">key</fo:inline>;
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id460845" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          each key is unique and immutable; and
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id460851" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          the associated <fo:inline font-style="italic">value</fo:inline> <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> can be of any type.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Another term for this structure is <fo:inline font-style="italic" id="mapping">mapping</fo:inline>, since it maps the set of keys
      onto the set of values (in the algebraic sense).
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      To create a new dictionary, use this general form:
      <fo:block id="id460881" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">{ <fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>: <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>: <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, ... }
</fo:block>
      There can be any number of key-value pairs (including zero).
      Each key-value has the form “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline>:<fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>”, and
      pairs are separated by commas.  Here are some examples of
      dictionaries:
    </fo:block><fo:block id="id460924" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">{}
{'Bolton': 'Notlob', 'Ipswich': 'Esher'}
{(1,1):48, (8,20): 52}
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      For efficiency reasons, the order of the pairs in a dictionary
      is arbitrary: it is essentially an unordered set of ordered
      pairs.  If you display a dictionary, the pairs may be shown in a
      different order than you used when you created it.
    </fo:block><fo:block id="id460935" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; signals = {0:'red', 1: 'yellow', 2:'green'}
&gt;&gt;&gt; signals
{2: 'green', 0: 'red', 1: 'yellow'}
</fo:block><fo:block id="dict-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Operations on dictionaries</fo:marker><fo:block font-size="14.4pt">16.1. Operations on dictionaries</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        These operations are available on any dictionary object <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>:
      </fo:block><fo:block id="id460960" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id460962" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">len(<fo:inline font-style="italic" font-family="monospace">D</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the number of key-value pairs in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id460986" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>[<fo:inline font-style="italic" font-family="monospace">k</fo:inline>]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has a key whose value is equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>, this operation
              returns the corresponding value for that key.  If there
              is no matching key, it raises a <fo:inline font-family="monospace">KeyError</fo:inline>
              exception.
              <fo:block id="id461018" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; signals = {0: 'red', 1: 'yellow', 2: 'green'}
&gt;&gt;&gt; signals[2]
'green'
&gt;&gt;&gt; signals[88]
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
KeyError: 88
</fo:block>
            </fo:block></fo:block><fo:block id="id461029" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>[<fo:inline font-style="italic" font-family="monospace">k</fo:inline>] = <fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> does not have a key-value pair whose key
              equals <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>, a
              new pair is added with key <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline> and value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> already
              has a key-value pair whose key equals <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>, the value of
              that pair is replaced by <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id461087" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline> in <fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> that
              tests whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has a key equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>.
              <fo:block id="id461117" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; roster={1:'Pat', 2:'Ray', 3:'Min'}
&gt;&gt;&gt; 3 in roster
True
&gt;&gt;&gt; 88 in roster
False
</fo:block>
            </fo:block></fo:block><fo:block id="id461127" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline> not in <fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> that
              tests whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> does <fo:inline font-style="italic">not</fo:inline> have a key
              equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>.
              <fo:block id="id461161" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; roster={1:'Pat', 2:'Ray', 3:'Min'}
&gt;&gt;&gt; 3 not in roster
False
&gt;&gt;&gt; 88 not in roster
True
</fo:block>
            </fo:block></fo:block><fo:block id="id461172" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">del <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>[<fo:inline font-style="italic" font-family="monospace">k</fo:inline>]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              In Python, <fo:inline font-family="monospace">del</fo:inline> is a statement, not a
              function; see <fo:basic-link internal-destination="del-statement">Section 22.3, “The <fo:inline font-family="monospace">del</fo:inline> statement: Delete a name or part
      of a value”</fo:basic-link><fo:basic-link internal-destination="del-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="del-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has a key-value pair whose key equals <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>, that key-value
              pair is deleted from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.  If there is no matching key-value pair, the
              statement will raise a <fo:inline font-family="monospace">KeyError</fo:inline>
              exception.
              <fo:block id="id461219" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; rgb = {'red':'#ff0000', 'green':'#00ff00', 'blue':'#0000ff'}
&gt;&gt;&gt; del rgb['red']
&gt;&gt;&gt; rgb
{'blue': '#0000ff', 'green': '#00ff00'}
&gt;&gt;&gt; del rgb['cerise']
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
KeyError: 'cerise'
</fo:block>
            </fo:block></fo:block><fo:block id="id461231" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.get(<fo:inline font-style="italic" font-family="monospace">k</fo:inline>, <fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has a key equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>, it returns the corresponding
              value, that is, it is the same as the expression
              “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>[<fo:inline font-style="italic" font-family="monospace">x</fo:inline>]</fo:inline>”.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              However, if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has no key-value pair for key <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>, this method returns the
              default value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.  The second argument is optional; if omitted,
              and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has no
              key equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>, it returns <fo:inline font-family="monospace">None</fo:inline>.
              <fo:block id="id461300" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; roster={1:'Pat', 2:'Ray', 3:'Min'}
&gt;&gt;&gt; roster.get(2)
'Ray'
&gt;&gt;&gt; v = roster.get(8)
&gt;&gt;&gt; print v
None
&gt;&gt;&gt; roster.get(2, 'Not found')
'Ray'
&gt;&gt;&gt; roster.get(8, 'Not found')
'Not found'
</fo:block>
            </fo:block></fo:block><fo:block id="id461311" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.has_key(<fo:inline font-style="italic" font-family="monospace">k</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> that
              returns <fo:inline font-family="monospace">True</fo:inline> if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has a key <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>.
              <fo:block id="id461346" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; signals = {0: 'red', 1: 'yellow', 2: 'green'}
&gt;&gt;&gt; signals.has_key(1)
True
&gt;&gt;&gt; signals.has_key(88)
False
</fo:block>
            </fo:block></fo:block><fo:block id="id461357" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.items()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the contents of dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> as a list of two-element
              tuples <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">k</fo:inline>,
              <fo:inline font-style="italic" font-family="monospace">v</fo:inline>)</fo:inline>, in no
              particular order.
              <fo:block id="id461386" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; signals = {0: 'red', 1: 'yellow', 2: 'green'}
&gt;&gt;&gt; signals.items()
[(0, 'red'), (1, 'yellow'), (2, 'green')]
</fo:block>
            </fo:block></fo:block><fo:block id="id461396" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.iteritems()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns an iterator that generates the values from
              dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>
              as a sequence of two-element tuples <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">k</fo:inline>, <fo:inline font-style="italic" font-family="monospace">v</fo:inline>)</fo:inline>.  See <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>.
              <fo:block id="id461430" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; roster={1:'Pat', 2:'Ray', 3:'Min'}
&gt;&gt;&gt; rosterScan = roster.iteritems()
&gt;&gt;&gt; for n, name in rosterScan:
...     print "{0:04d}: {1}".format(n, name)
... 
0001: Pat
0002: Ray
0003: Min
</fo:block>
            </fo:block></fo:block><fo:block id="id461442" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.iterkeys()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns an iterator that generates the keys from
              dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.  See <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>.
              <fo:block id="id461466" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; roster={1:'Pat', 2:'Ray', 3:'Min'}
&gt;&gt;&gt; nScan = roster.iterkeys()
&gt;&gt;&gt; for n in nScan:
...     print n,
... 
1 2 3
</fo:block>
            </fo:block></fo:block><fo:block id="id461476" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.itervalues()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns an iterator that generates the values from
              dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.  See <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>.
              <fo:block id="id461501" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; roster={1:'Pat', 2:'Ray', 3:'Min'}
&gt;&gt;&gt; nameScan = roster.itervalues()
&gt;&gt;&gt; for name in nameScan:
...     print name,
... 
Pat Ray Min
</fo:block>
            </fo:block></fo:block><fo:block id="id461512" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.keys()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a list of the key values in dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>, in no
              particular order.
              <fo:block id="id461531" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; signals = {0: 'red', 1: 'yellow', 2: 'green'}
&gt;&gt;&gt; signals.keys()
[1, 0, 2]
</fo:block>
            </fo:block></fo:block><fo:block id="id461541" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.popitem()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns an arbitrary entry from dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> as a (<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">key</fo:inline>, <fo:inline font-style="italic" font-family="monospace">value</fo:inline>)</fo:inline> tuple, and also removes
              that entry.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> is empty, raises a <fo:inline font-family="monospace">KeyError</fo:inline>
              exception.
              <fo:block id="id461577" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; roster={1:'Pat', 2:'Ray', 3:'Min'}
&gt;&gt;&gt; roster.popitem()
(1, 'Pat')
&gt;&gt;&gt; roster
{2: 'Ray', 3: 'Min'}
</fo:block>
            </fo:block></fo:block><fo:block id="id461587" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.setdefault(<fo:inline font-style="italic" font-family="monospace">k</fo:inline>, <fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has a key equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>, this method returns the
              corresponding value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>[<fo:inline font-style="italic" font-family="monospace">k</fo:inline>]</fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has no
              key equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>, the method returns the default value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.  However,
              unlike the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">.get()</fo:inline></fo:inline> method, it <fo:inline font-style="italic">also</fo:inline> creates
              a new key-value pair <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">k</fo:inline>, <fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline> in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              As with the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">.get()</fo:inline></fo:inline> method, the second argument is optional, and
              defaults to the value <fo:inline font-family="monospace">None</fo:inline>.
            </fo:block></fo:block><fo:block id="id461678" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.values()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a list of the values from key-value pairs in
              dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>, in no particular order.  However, if you call both
              the <fo:inline font-family="monospace">.items()</fo:inline> and <fo:inline font-family="monospace">.values()</fo:inline>
              methods of a dictionary without changing that
              dictionary's contents between those calls, Python
              guarantees that the ordering of the two results will be
              the same.
              <fo:block id="id461708" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; signals = {0: 'red', 1: 'yellow', 2: 'green'}
&gt;&gt;&gt; signals.values()
['yellow', 'red', 'green']
&gt;&gt;&gt; signals.keys()
[1, 0, 2]
</fo:block>
            </fo:block></fo:block><fo:block id="id461718" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>.update(<fo:inline font-style="italic" font-family="monospace">D<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Merge the contents of dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline> into
              dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.  For any key-value pairs that have the same key in
              both <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> and
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>, the value for that key in
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> after this
              operation will be the value from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>, not
              the value from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.
              <fo:block id="id461776" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; roster={1:'Pat', 2:'Ray', 3:'Min'}
&gt;&gt;&gt; newer={3:'Bev', 4:'Wes'}
&gt;&gt;&gt; roster.update(newer)
&gt;&gt;&gt; roster
{1: 'Pat', 4: 'Wes', 2: 'Ray', 3: 'Bev'}
&gt;&gt;&gt; newer
{3: 'Bev', 4: 'Wes'}
</fo:block>
            </fo:block></fo:block></fo:block></fo:block><fo:block id="dict-comprehensions"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Dictionary comprehensions</fo:marker><fo:block font-size="14.4pt">16.2. Dictionary comprehensions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        New in Python 2.7 are dictionary comprehensions: a
        construct that allows you to build a dictionary
        dynamically, somewhat like <fo:basic-link internal-destination="list-comprehensions">Section 11.2, “List comprehensions”</fo:basic-link><fo:basic-link internal-destination="list-comprehensions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-comprehensions"/>)</fo:inline></fo:basic-link>.  Here is the general
        form:
      </fo:block><fo:block id="id461812" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">{ <fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">k</fo:inline></fo:inline>: <fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">v</fo:inline></fo:inline>
  for <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline> in <fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>
  for <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline> in <fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>
  ...
  if <fo:inline font-style="italic" font-family="monospace">c</fo:inline> }
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        As with list comprehensions, you provide one or more
        <fo:inline font-family="monospace">for</fo:inline> clauses and an optional <fo:inline font-family="monospace">if</fo:inline> clause.  For all possible combinations of the
        values in the <fo:inline font-family="monospace">for</fo:inline> clauses that have a true
        value for the <fo:inline font-family="monospace">if</fo:inline> clause, two expressions
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">k</fo:inline></fo:inline></fo:inline>
        and
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">v</fo:inline></fo:inline></fo:inline>

        are evaluated, and a new dictionary entry is added with key
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">k</fo:inline></fo:inline></fo:inline>
        and value
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">v</fo:inline></fo:inline></fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is an example.  The
        <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Scrabble_letter_distributions)">Wikipedia article on the game of Scrabble</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">16</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">16</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Scrabble_letter_distributions)">http://en.wikipedia.org/wiki/Scrabble_letter_distributions</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> gives
        the Scrabble score for each letter of the alphabet.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        What we would like is a dictionary whose keys are letters, and
        each related value is the score.  However, the Wikipedia
        article shows the score values grouped by score: the 1's
        together, the 2's together, and so on.  So, to make it easy to
        check that we have entered the right score values and letters,
        we can use a list of tuples, where the first element of each
        tuple is the score and the second element is a string of all
        the letters with that score.  We can then convert that list to
        the desired dictionary using a dictionary comprehension.
      </fo:block><fo:block id="id461914" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; scrabbleTuples = [ (1, "EAOINRTLSU"), (2, "DG"), (3, "BCMP"),
...                    (4, "FHVWY"), (5, "K"), (8, "JX"), (10, "QZ")]
&gt;&gt;&gt; scrabbleMap = { letter: score
...                 for score, letterList in scrabbleTuples
...                 for letter in letterList }
&gt;&gt;&gt; scrabbleMap['A']
1
&gt;&gt;&gt; scrabbleMap['Z']
10
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Evaluating the set comprehension proceeds as follows.
      </fo:block><fo:list-block id="id461928" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id461934" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            In the first <fo:inline font-family="monospace">for</fo:inline> clause, the first tuple is
            unpacked, setting <fo:inline font-family="monospace">score</fo:inline> to 1 and <fo:inline font-family="monospace">letterList</fo:inline> to <fo:inline font-family="monospace">"EAOINRTLSU"</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id461954" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            In the second <fo:inline font-family="monospace">for</fo:inline> clause, <fo:inline font-family="monospace">letter</fo:inline> is set to <fo:inline font-family="monospace">"E"</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id461970" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A new entry is added to the dictionary, with key <fo:inline font-family="monospace">"E"</fo:inline> and value 1.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id461980" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            In the second <fo:inline font-family="monospace">for</fo:inline> clause, <fo:inline font-family="monospace">letter</fo:inline> is set to <fo:inline font-family="monospace">"A"</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id461996" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A new entry is added with key <fo:inline font-family="monospace">"A"</fo:inline> and value
            1.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Execution proceeds in this manner until all the <fo:inline font-family="monospace">for</fo:inline> clauses are complete.  Then the name <fo:inline font-family="monospace">scrabbleMap</fo:inline> is bound to the resulting dictionary.
      </fo:block></fo:block></fo:block><fo:block id="file-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Type <fo:inline font-family="monospace">file</fo:inline>: Input and output files</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">17. Type <fo:inline font-family="monospace">file</fo:inline>: Input and output files</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      To open a file, use this general form:
      <fo:block id="id462040" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">f</fo:inline> = open(<fo:inline font-style="italic" font-family="monospace">name</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">mode</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">bufsize</fo:inline>]]])
</fo:block>
    </fo:block><fo:block id="id462058" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id462060" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
          <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline>
        </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
            The path name of the file to be opened, as a string.
          </fo:block></fo:block><fo:block id="id462078" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
          <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">mode</fo:inline></fo:inline>
        </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
            An optional string specifying what you plan to do with the
            file.  If omitted, you will get read access to the file.
            In general the value consists of three parts:
          </fo:block><fo:list-block id="id462095" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id462097" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                General mode, one of:
              </fo:block><fo:block id="id462102" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">r</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                        Read access.  The file must already exist.
                        You will not be allowed to write to it.
                      </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">w</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                        <fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                          Write access.  If there is no file by this
                          name, a new one will be created.
                        </fo:block>
                        <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" start-indent="0.25in" end-indent="0.25in" border="4pt solid #d0d0d0" padding="4pt" id="id462152"><fo:block keep-with-next="always" font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                            <fo:inline font-style="italic">If there is an existing file,
                            it will be deleted!</fo:inline>
                          </fo:block></fo:block></fo:block>
                      </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">a</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block>
                        Append access.  If there is a file by this
                        name, your initial position will be at the end
                        of the file, and you will be allowed to write
                        (and read).  If there is no file by this name,
                        a new one will be created.  On some systems,
                        all writes to a file with append mode are
                        added at the end of the file, regardless of
                        the current file position.
                      </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462188" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                If you plan to modify the file, append a “<fo:inline font-family="monospace">+</fo:inline>” next.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                For example, mode “<fo:inline font-family="monospace">r+</fo:inline>”
                puts you at the beginning of an existing file and
                allows you to write to the file anywhere.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                Mode “<fo:inline font-family="monospace">w+</fo:inline>” is the same as
                “<fo:inline font-family="monospace">w</fo:inline>”: it deletes an
                existing file if there is any, then creates a new file
                and gives you write access.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                Mode “<fo:inline font-family="monospace">a+</fo:inline>” allows you to
                write new data at the end of an existing file; if no
                file by this name exists, it will create a new one.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462231" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                If you are handling binary data, as opposed to lines
                of text, add “<fo:inline font-family="monospace">b</fo:inline>” at the
                end of the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">mode</fo:inline></fo:inline> string.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462247" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                For modes beginning with <fo:inline font-family="monospace">'r'</fo:inline>, you
                may append a capital <fo:inline font-family="monospace">'U'</fo:inline> to
                request universal newline treatment.  This is
                handy when you are reading files made on a
                platform with different line termination
                conventions.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                When reading lines from a file opened in this
                way, any line terminator (<fo:inline font-family="monospace">'\n'</fo:inline>,
                <fo:inline font-family="monospace">'\r'</fo:inline>, or <fo:inline font-family="monospace">'\r\n'</fo:inline>)
                will appear in the return value as the standard
                <fo:inline font-family="monospace">'\n'</fo:inline>.  Also, files so opened will
                have an attribute named <fo:inline font-family="monospace">.newlines</fo:inline>;
                this attribute will be <fo:inline font-family="monospace">None</fo:inline>
                initially, but after any line terminators have
                been read, it will be a tuple containing all the
                different line terminator strings seen so far.
              </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="id462292" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
          <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">bufsize</fo:inline></fo:inline>
        </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
            Buffer size: this affects when physical device writes are
            done, compared to write operations that your program
            performs.
          </fo:block><fo:list-block id="id462308" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id462313" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                In most cases you will probably want to omit this
                argument.  The default is to use line buffering for
                terminal-type devices, or some system default for
                other devices.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462321" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                Use <fo:inline font-family="monospace">0</fo:inline> to force unbuffered operation.
                This may be inefficient, but any file writes are
                performed immediately.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462332" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                Use <fo:inline font-family="monospace">1</fo:inline> for line buffering: output lines
                are written whenever you write a line terminator such
                as <fo:inline font-family="monospace">'\n'</fo:inline>.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462346" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                Use larger values to specify the actual size of the
                buffer.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462354" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                Use a negative value to request the system
                defaults.
              </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      If you are reading text files, and you don't want to worry about
      the variety of line termination protocols, you may use a <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">mode</fo:inline></fo:inline> value of
      “<fo:inline font-family="monospace">U</fo:inline>” for “universal line
      terminator mode.” In this mode, input lines may be
      terminated with either carriage return (<fo:inline font-family="monospace">'\r'</fo:inline>),
      newline (<fo:inline font-family="monospace">'\n'</fo:inline>), or both, but the lines you
      receive will always be terminated with a single newline.
      (Exception: If the last line is unterminated, the string you get
      will also be unterminated.)
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      There are a number of potential error conditions.  For modes
      starting with “<fo:inline font-family="monospace">r</fo:inline>”, the file must
      exist before you open it.  Also, you must have access according
      to the underlying operating system.  For example, in Linux
      environments, you must have read access to read a file, and you
      must have write access to modify or delete a file.  These sorts
      of failures will raise an <fo:inline font-family="monospace">IOError</fo:inline> exception.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      A file is its own iterator (see <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>).
      Hence, if you have a file <fo:inline font-family="monospace">inFile</fo:inline> opened for
      reading, you can use a <fo:inline font-family="monospace">for</fo:inline> loop that looks like
      this to iterate over the lines of the file:
      <fo:block id="id462419" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">for line in inFile:
    ...
</fo:block>
      The variable <fo:inline font-family="monospace">line</fo:inline> will be set to each line of the
      file in turn.  The line terminator character (if any) will be
      present in that string.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Other aspects of files:
    </fo:block><fo:list-block id="id462433" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id462435" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Every open file has a <fo:inline font-style="italic">current
          position</fo:inline>.  Initially, this will <fo:inline font-family="monospace">0L</fo:inline> if you opened it for reading or writing, or the size of
          the file if you opened it with append access.  Each write or
          read operation moves this position by the amount read or
          written.  You can also query or set the file position; see
          <fo:basic-link internal-destination="file-methods">Section 17.1, “Methods on <fo:inline font-family="monospace">file</fo:inline> objects”</fo:basic-link><fo:basic-link internal-destination="file-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="file-methods"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462454" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Files may use a technique called <fo:inline font-style="italic">buffering</fo:inline>.  Because physical access to
          some storage media (such as disk drives) takes a
          relatively long time, Python may employ a storage area
          called a <fo:inline font-style="italic">buffer</fo:inline> as a holding
          area for data being input or output.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For example, if you are writing data to a disk file, Python
          may keep the data in the file's buffer area until the buffer
          is full and only then actually write it to the physical
          disk.  There are various techniques for controlling this
          behavior; see <fo:basic-link internal-destination="file-methods">Section 17.1, “Methods on <fo:inline font-family="monospace">file</fo:inline> objects”</fo:basic-link><fo:basic-link internal-destination="file-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="file-methods"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="file-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Methods on <fo:inline font-family="monospace">file</fo:inline> objects</fo:marker><fo:block font-size="14.4pt">17.1. Methods on <fo:inline font-family="monospace">file</fo:inline> objects</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use these methods on an open <fo:inline font-family="monospace">file</fo:inline> instance
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline>.
      </fo:block><fo:block id="id462505" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id462507" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.close()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Close file <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline>.  Any unwritten data in the buffer will be flushed.
              No further operations will be allowed on the file unless
              it is reopened with the <fo:inline font-family="monospace">open()</fo:inline> function.
            </fo:block></fo:block><fo:block id="id462534" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.flush()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              For buffered files, you can use this method to make sure
              that all data written to the file has been physically
              transmitted to the storage medium.  Closing a file will
              also flush the buffers.  Avoid using this method unless
              you really need it, as it may make your program less
              efficient.
            </fo:block></fo:block><fo:block id="id462556" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.isatty()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> that
              tests whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline> is a terminal; “tty” is an
              ancient term that originally meant
              “Teletype”, but has come to mean any
              terminal or simulated terminal.
            </fo:block></fo:block><fo:block id="id462585" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.read(<fo:inline font-style="italic" font-family="monospace">n</fo:inline> )</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Read the next <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> characters from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline> and return them as a string.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If there are fewer than <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> characters remaining after
              your current position, you will get all remaining
              characters.  If you are at the end of the file, you will
              get back an empty string (<fo:inline font-family="monospace">''</fo:inline>).
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The argument is optional.  If omitted, you will get the
              entire remaining contents of the file as a string.
            </fo:block></fo:block><fo:block id="id462632" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.readline(<fo:inline font-style="italic" font-family="monospace">maxlen</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Read the next text line from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline> and return it as a string,
              including the line terminator if any.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If you need to limit the maximum size of incoming lines,
              pass that size limit as the optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">maxlen</fo:inline></fo:inline> argument.  The default is
              to return a line of any size (subject to memory
              limitations).  If the line exceeds <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">maxlen</fo:inline></fo:inline>, the file position will
              be left pointing to the first unread character of that
              line.
            </fo:block></fo:block><fo:block id="id462674" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.readlines()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Read all remaining lines from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline> and return them as a list of
              strings, including line terminator characters if any.
            </fo:block></fo:block><fo:block id="id462698" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.seek(<fo:inline font-style="italic" font-family="monospace">offset</fo:inline>, <fo:inline font-style="italic" font-family="monospace">whence</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Change the file's current position.  The value of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">whence</fo:inline></fo:inline> determines
              how the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">offset</fo:inline></fo:inline> value is used to change the position:
            </fo:block><fo:list-block id="id462729" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id462733" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                  <fo:inline font-family="monospace">0</fo:inline>: Set the position to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">offset</fo:inline></fo:inline> bytes
                  after the beginning of the file.
                </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462747" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                  <fo:inline font-family="monospace">1</fo:inline>: Move the current position <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">offset</fo:inline></fo:inline> bytes
                  toward the end of the file.
                </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id462762" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                  <fo:inline font-family="monospace">2</fo:inline>: Move the current position <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">offset</fo:inline></fo:inline> bytes
                  relative to the end of the file.
                </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                  For example, for a file <fo:inline font-family="monospace">f</fo:inline>, this
                  operation would set the position to 4 bytes before
                  the end of the file:
                  <fo:block id="id462782" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">f.seek(-4, 2)
</fo:block>
                </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="id462793" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.tell()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              This method returns the current file position relative
              to the beginning as a <fo:inline font-family="monospace">long</fo:inline> value.
              <fo:block id="id462812" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; f=open('roundtable', 'w')
&gt;&gt;&gt; f.write('Bedevere')
&gt;&gt;&gt; f.tell()
8L
&gt;&gt;&gt; f.seek(2L)
&gt;&gt;&gt; f.tell()
2L
</fo:block>
            </fo:block></fo:block><fo:block id="id462822" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.truncate([<fo:inline font-style="italic" font-family="monospace">pos</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Remove any contents of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline> past position <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">pos</fo:inline></fo:inline>, which
              defaults to the current position.
            </fo:block></fo:block><fo:block id="id462853" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.write(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Write the contents of string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> to file <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline>.  This operation will not add
              terminator characters; if you want newlines in your
              file, include them in the string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id462888" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline>.writelines(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              For a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> containing strings, write all those strings to
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline>.  No line
              terminators will be added; you must provide them
              explicitly if you want them.
            </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="None-type"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">None</fo:inline>: The special placeholder value</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">18. <fo:inline font-family="monospace">None</fo:inline>: The special placeholder value</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python has a unique value called <fo:inline font-family="monospace">None</fo:inline>.  This
      special null value can be used as a placeholder, or to signify
      that some value is unknown.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      In conversational mode, any expression that evaluates to <fo:inline font-family="monospace">None</fo:inline> is not printed.  However, if a value of <fo:inline font-family="monospace">None</fo:inline> is converted to a string, the result is the string
      <fo:inline font-family="monospace">'None'</fo:inline>; this may happen, for example, in a <fo:inline font-family="monospace">print</fo:inline> statement.
      <fo:block id="id462963" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = None
&gt;&gt;&gt; x
&gt;&gt;&gt; print x
None
</fo:block>
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The value <fo:inline font-family="monospace">None</fo:inline> is returned from any function
      that executes a <fo:inline font-family="monospace">return</fo:inline> statement with no value,
      or any function after it executes its last line if that last
      line is not a <fo:inline font-family="monospace">return</fo:inline> statement.
      <fo:block id="id462983" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def useless():
...     print "Useless!"
... 
&gt;&gt;&gt; useless()
Useless!
&gt;&gt;&gt; z=useless()
Useless!
&gt;&gt;&gt; z
&gt;&gt;&gt; print z
None
&gt;&gt;&gt; def boatAnchor():
...     pass
... 
&gt;&gt;&gt; x=boatAnchor()
&gt;&gt;&gt; x
&gt;&gt;&gt; print x
None
</fo:block>
    </fo:block></fo:block><fo:block id="expressions"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Operators and expressions</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">19. Operators and expressions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python's operators are shown here from highest precedence to
      lowest, with a ruled line separating groups of operators with
      equal precedence:
    </fo:block><fo:block id="op-precedence" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always"><fo:block font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em" keep-with-next.within-column="always">Table 6. Python operator precedence</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="auto"><fo:table-column column-number="1" column-width="proportional-column-width(1.00)"/><fo:table-column column-number="2" column-width="proportional-column-width(2)"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">E</fo:inline>)</fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Parenthesized expression or <fo:basic-link internal-destination="tuple-type">tuple</fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">[<fo:inline font-style="italic" font-family="monospace">E, ...</fo:inline>]</fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              <fo:basic-link internal-destination="list-type">List</fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">{<fo:inline font-style="italic" font-family="monospace">key</fo:inline>:<fo:inline font-style="italic" font-family="monospace">value</fo:inline>, ...}</fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              <fo:basic-link internal-destination="dict-type">Dictionary</fo:basic-link> or
              <fo:basic-link internal-destination="set-types">set</fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">`...`</fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Convert to string representation.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>.<fo:inline font-style="italic" font-family="monospace">attribute</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Attribute reference.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>[...]</fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Subscript or slice; see <fo:basic-link internal-destination="sequence-common">Section 8.1, “Operations common to all the sequence types”</fo:basic-link><fo:basic-link internal-destination="sequence-common"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sequence-common"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline>(...)</fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Call function <fo:inline font-style="italic" font-family="monospace">f</fo:inline>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>**<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              <fo:inline font-style="italic" font-family="monospace">x</fo:inline> to the <fo:inline font-style="italic" font-family="monospace">y</fo:inline> power.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">-<fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Negation.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">~<fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Bitwise not (one's complement).
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>*<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Multiplication.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>/<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>//<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Division.  The “<fo:inline font-family="monospace">//</fo:inline>” form
              discards the fraction from the result.  For example,
              “<fo:inline font-family="monospace">13.9//5.0</fo:inline>” returns the
              value <fo:inline font-family="monospace">2.0</fo:inline>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>%<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Modulo (remainder of <fo:inline font-style="italic" font-family="monospace">x</fo:inline>/<fo:inline font-style="italic" font-family="monospace">y</fo:inline>).
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>+<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Addition, concatenation.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>-<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Subtraction.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>&lt;&lt;<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              <fo:inline font-style="italic" font-family="monospace">x</fo:inline> shifted left <fo:inline font-style="italic" font-family="monospace">y</fo:inline>bits.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>&gt;&gt;<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              <fo:inline font-style="italic" font-family="monospace">x</fo:inline> shifted right
              <fo:inline font-style="italic" font-family="monospace">y</fo:inline>bits.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>&amp;<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Bitwise and.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>^<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Bitwise exclusive or.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>|<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Bitwise or.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row id="comparisons"><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>&lt;<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>&lt;=<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>&gt;<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>&gt;=<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>!=<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>==<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="after" text-align="justify"><fo:block>
              Comparisons.  These operators are all predicates;
              see <fo:basic-link internal-destination="predicates">Section 19.1, “What is a predicate?”</fo:basic-link><fo:basic-link internal-destination="predicates"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="predicates"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> in <fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> not in <fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Test for membership.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> is <fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> is not <fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Test for identity.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace">not <fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Boolean “not.”
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> and <fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
              Boolean “and.”
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> or <fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>
            </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
              Boolean “or.”
            </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block id="predicates"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">What is a predicate?</fo:marker><fo:block font-size="14.4pt">19.1. What is a predicate?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        We use the term <fo:inline font-style="italic">predicate</fo:inline> to mean
        any Python function that tests some condition and returns
        a Boolean value.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For example, <fo:inline font-family="monospace">x &lt; y</fo:inline> is a predicate that
        tests whether <fo:inline font-family="monospace">x</fo:inline> is less than <fo:inline font-family="monospace">y</fo:inline>.
        For example, <fo:inline font-family="monospace">5 &lt; 500</fo:inline> returns <fo:inline font-family="monospace">True</fo:inline>, while <fo:inline font-family="monospace">5 &gt;= 500</fo:inline> returns
        <fo:inline font-family="monospace">False</fo:inline>.
      </fo:block></fo:block><fo:block id="iterable"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">What is an iterable?</fo:marker><fo:block font-size="14.4pt">19.2. What is an iterable?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To <fo:inline font-style="italic">iterate over</fo:inline> a sequence means
        to visit each element of the sequence, and do some operation
        for each element.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In Python, we say that a value is an <fo:inline font-style="italic">iterable</fo:inline> when your program can iterate over it.
        In short, an iterable is a value that represents a
        sequence of one more values.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        All instances of Python's <fo:basic-link internal-destination="sequence-types">sequence types</fo:basic-link> are iterables.  These types may be
        referred to as <fo:inline font-style="italic">container types</fo:inline>: a
        <fo:inline font-family="monospace">unicode</fo:inline> string string is a container for 32-bit
        characters, and lists and tuples are general-purpose
        containers that can contain any sequence.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        One of the most common uses for an iterable is in a <fo:inline font-family="monospace">for</fo:inline> statement, where you want to perform some
        operation on a sequence of values.  For example, if you have a
        tuple named <fo:inline font-family="monospace">celsiuses</fo:inline> containing Celsius
        temperatures, and you want to print them with their Fahrenheit
        equivalents, and you have written a function <fo:inline font-family="monospace">cToF()</fo:inline> that converts Celsius to Fahrenheit, this code
        does it:
      </fo:block><fo:block id="id463792" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def cToF(c): return c*9.0/5.0 + 32.0
... 
&gt;&gt;&gt; celsiuses = (0, 20, 23.6, 100)
&gt;&gt;&gt; for celsius in celsiuses:
...     print "{0:.1f} C = {1:.1f} F".format(celsius, cToF(celsius))
... 
0.0 C = 32.0 F
20.0 C = 68.0 F
23.6 C = 74.5 F
100.0 C = 212.0 F
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        However, Python also supports mechanisms for <fo:inline font-style="italic">lazy
        evaluation</fo:inline>: a piece of program that acts like a
        sequence, but produces its contained values one at a time.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Keep in mind that the above code works exactly the same if
        <fo:inline font-family="monospace">celsiuses</fo:inline> is an iterator (see <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>).  You may find many uses for iterators
        in your programs.  For example, <fo:inline font-family="monospace">celsiuses</fo:inline> might
        be a system that goes off and reads an actual thermometer and
        returns the readings every ten seconds.  In this application,
        the code above doesn't care where <fo:inline font-family="monospace">celsiuses</fo:inline>
        gets the values, it cares only about how to convert and print
        them.
      </fo:block></fo:block><fo:block id="interface"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Duck typing, or: what is an interface?</fo:marker><fo:block font-size="14.4pt">19.3. Duck typing, or: what is an interface?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block margin-left="0.5in" margin-right="0.5in" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          When I see a bird that walks like a duck and swims like
          a duck and quacks like a duck, I call that bird a duck.
        </fo:block></fo:block><fo:block text-align="right">—<fo:inline>James Whitcomb Riley</fo:inline></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The term <fo:inline font-style="italic">duck typing</fo:inline> comes from
        this quote.  In programming terms, this means that the
        important thing about a value is what it can do, not its
        type.  As the excellent <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Duck_typing)">Wikipedia article on duck
        typing</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">17</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">17</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Duck_typing)">http://en.wikipedia.org/wiki/Duck_typing</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> says, “Simply stated: provided you
        can perform the job, we don't care who your parents
        are.”
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        One common example of duck typing is in the Python term
        “file-like object”.  If you open a file for
        reading using the <fo:inline font-family="monospace">open()</fo:inline> function, you get
        back a value of type <fo:inline font-family="monospace">file</fo:inline>:
      </fo:block><fo:block id="id463883" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; inFile = open('input')
&gt;&gt;&gt; type(inFile)
&lt;type 'file'&gt;
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Let's suppose that you write a function called
        <fo:inline font-family="monospace">numberIt()</fo:inline> that takes a readable
        <fo:inline font-family="monospace">file</fo:inline> as an argument and prints
        the lines from a file preceded by five-digit line
        numbers.  Here's the function and an example of
        its use:
      </fo:block><fo:block id="id463899" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def numberIt(f):
...     for lineNo, line in enumerate(f):
...         print "{0:05d} {1}".format(lineNo, line.rstrip())
... 
&gt;&gt;&gt; numberIt(inFile)
00000 Kant
00001 Heidegger
00002 Hume
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The way you have written the <fo:inline font-family="monospace">numberIt()</fo:inline>
        function, it works for files, but it also works for any
        <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Thus, when you see the statement that some Python feature
        works with a “file-like object,” that means
        that the object must have an interface like that of the
        <fo:inline font-family="monospace">file</fo:inline> type; Python doesn't care about the
        type, just the operations that it supports.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In practice, the <fo:inline font-family="monospace">enumerate()</fo:inline> function
        works with any iterable, so your function will also work
        with any iterable:
      </fo:block><fo:block id="id463939" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; numberIt(['Kant', 'Heidegger', 'Hume'])
00000 Kant
00001 Heidegger
00002 Hume
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        So in Python when we say that we expect some value to
        have an <fo:inline font-style="italic">interface</fo:inline>, we mean that
        it must provide certain methods or functions, but the
        actual type of the value is immaterial.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        More formally, when we say that a value supports the
        <fo:inline font-style="italic">iterable interface</fo:inline>, that value
        must provide either of the following features:
      </fo:block><fo:list-block id="id463962" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id463967" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A <fo:inline font-family="monospace">.__getitem__()</fo:inline> method as described
            in <fo:basic-link internal-destination="getitem-method">Section 26.3.16, “<fo:inline font-family="monospace">__getitem__()</fo:inline>: Get one item from a
        sequence or mapping”</fo:basic-link><fo:basic-link internal-destination="getitem-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getitem-method"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id463980" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A <fo:inline font-family="monospace">.__iter__()</fo:inline> method as described in
            <fo:basic-link internal-destination="iter-method">Section 26.3.17, “<fo:inline font-family="monospace">__iter__()</fo:inline>: Create an iterator”</fo:basic-link><fo:basic-link internal-destination="iter-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iter-method"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="locale"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">What is the locale?</fo:marker><fo:block font-size="14.4pt">19.4. What is the locale?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In order to accommodate different character encodings,
        your system may have a <fo:inline font-style="italic">locale</fo:inline>
        setting that specifies a preferred character set.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In the USA, most systems use the <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">ASCII</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">18</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">18</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> encoding.  Good
        application code should be written in a way that does not
        depend on this encoding to deal with cultural issues.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For general information on handling locale issues, see
        the <fo:basic-link external-destination="url(http://docs.python.org/library/locale.html)">documentation for
        the <fo:inline font-family="monospace">locale</fo:inline> module</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">19</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">19</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/locale.html)">http://docs.python.org/library/locale.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
      </fo:block></fo:block></fo:block><fo:block id="basic-functions"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Basic functions</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">20. Basic functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python has a lot of built-in functions.  This section
      describes the ones that most people use most of the time.
      If you are interested in exploring some of the more remote
      corners of Python, see <fo:basic-link internal-destination="advanced-functions">Section 21, “Advanced functions”</fo:basic-link><fo:basic-link internal-destination="advanced-functions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="advanced-functions"/>)</fo:inline></fo:basic-link>.
    </fo:block><fo:block id="abs-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">abs()</fo:inline>: Absolute value</fo:marker><fo:block font-size="14.4pt">20.1. <fo:inline font-family="monospace">abs()</fo:inline>: Absolute value</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To find the absolute value of a number <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>:
      </fo:block><fo:block id="id464085" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">abs(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is
        negative, the function returns <fo:inline font-family="monospace">-<fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>; otherwise it returns <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For complex values, the function returns the magnitude,
        that is, the square root of <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>.real**2+<fo:inline font-style="italic" font-family="monospace">x</fo:inline>.imag**2)</fo:inline>.
      </fo:block><fo:block id="id464124" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; abs(-33)
33
&gt;&gt;&gt; abs(33)
33
&gt;&gt;&gt; abs(0)
0
&gt;&gt;&gt; abs(complex(1,5))
5.0990195135927845
</fo:block></fo:block><fo:block id="all-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">all()</fo:inline>: Are all the elements of an
      iterable true?</fo:marker><fo:block font-size="14.4pt">20.2. <fo:inline font-family="monospace">all()</fo:inline>: Are all the elements of an
      iterable true?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> that tests
        whether all the elements of some <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> are considered <fo:inline font-family="monospace">True</fo:inline>.  If any
        elements are not already type <fo:inline font-family="monospace">bool</fo:inline>, they are
        converted to Boolean values using the <fo:inline font-family="monospace">bool()</fo:inline>
        built-in function.

        <fo:block id="id464168" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; all([True, 14, (88,99)])
True
&gt;&gt;&gt; all([True, 14, (88,99), None])
False
</fo:block>
      </fo:block></fo:block><fo:block id="any-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">any()</fo:inline>: Are any of the members of an
      iterable true?</fo:marker><fo:block font-size="14.4pt">20.3. <fo:inline font-family="monospace">any()</fo:inline>: Are any of the members of an
      iterable true?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function, applied to some <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>, is a <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> that tests whether any of the elements of
        that iterable are <fo:inline font-family="monospace">True</fo:inline>.  If any element is not
        already type <fo:inline font-family="monospace">bool</fo:inline>, it is converted to a Boolean
        value using the <fo:inline font-family="monospace">bool()</fo:inline> built-in function.
      </fo:block><fo:block id="id464216" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; noneTrue = (0, 0.0, (), None)
&gt;&gt;&gt; any(noneTrue)
False
&gt;&gt;&gt; someTrue = (0, 0.0, (88,), 'penguin')
&gt;&gt;&gt; any(someTrue)
True
</fo:block></fo:block><fo:block id="bin-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">bin()</fo:inline>: Convert to binary</fo:marker><fo:block font-size="14.4pt">20.4. <fo:inline font-family="monospace">bin()</fo:inline>: Convert to binary</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function takes an integer argument and returns a string
        that represents that number in binary (base 2) starting with
        <fo:inline font-family="monospace">'0b'</fo:inline>.
      </fo:block><fo:block id="id464247" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 
bin(7)
'0b111'
&gt;&gt;&gt; bin(257)
'0b100000001'
</fo:block></fo:block><fo:block id="bool-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">bool()</fo:inline>: Convert to Boolean</fo:marker><fo:block font-size="14.4pt">20.5. <fo:inline font-family="monospace">bool()</fo:inline>: Convert to Boolean</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function takes any value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> and converts it to a Boolean (true
        or false) value.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For the list of values that are considered <fo:inline font-family="monospace">True</fo:inline>
        or <fo:inline font-family="monospace">False</fo:inline>, see <fo:basic-link internal-destination="bool-type">Section 7.3, “Type <fo:inline font-family="monospace">bool</fo:inline>: Boolean truth values”</fo:basic-link><fo:basic-link internal-destination="bool-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="bool-type"/>)</fo:inline></fo:basic-link>.
        Examples:
        <fo:block id="id464289" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; bool(0)
False
&gt;&gt;&gt; bool(0.0)
False
&gt;&gt;&gt; bool(0L)
False
&gt;&gt;&gt; bool(0j)
False
&gt;&gt;&gt; bool('')
False
&gt;&gt;&gt; bool([])
False
&gt;&gt;&gt; bool(())
False
&gt;&gt;&gt; bool({})
False
&gt;&gt;&gt; bool(None)
False
&gt;&gt;&gt; bool(1)
True
&gt;&gt;&gt; bool(15.9)
True
&gt;&gt;&gt; bool([0])
True
&gt;&gt;&gt; bool((None,))
True
&gt;&gt;&gt; bool({None: False})
True
</fo:block>
      </fo:block></fo:block><fo:block id="bytearray-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">bytearray()</fo:inline>: Create a byte array</fo:marker><fo:block font-size="14.4pt">20.6. <fo:inline font-family="monospace">bytearray()</fo:inline>: Create a byte array</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        See <fo:basic-link internal-destination="bytearray-type">Section 14, “The <fo:inline font-family="monospace">bytearray</fo:inline> type”</fo:basic-link><fo:basic-link internal-destination="bytearray-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="bytearray-type"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="chr-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">chr()</fo:inline>: Get the character with a given
      code</fo:marker><fo:block font-size="14.4pt">20.7. <fo:inline font-family="monospace">chr()</fo:inline>: Get the character with a given
      code</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For arguments <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> in
        the range 0 to 255, this function returns a one-character
        string containing the character that has code <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>.  Compare <fo:basic-link internal-destination="ord-function">Section 20.31, “<fo:inline font-family="monospace">ord()</fo:inline>: Find the numeric code for a
      character”</fo:basic-link><fo:basic-link internal-destination="ord-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="ord-function"/>)</fo:inline></fo:basic-link>.
        <fo:block id="id464355" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; chr(65)
'A'
&gt;&gt;&gt; chr(0)
'\x00'
</fo:block>
      </fo:block></fo:block><fo:block id="cmp-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">cmp()</fo:inline>: Compare two values</fo:marker><fo:block font-size="14.4pt">20.8. <fo:inline font-family="monospace">cmp()</fo:inline>: Compare two values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function compares the values of two arguments <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>:
        <fo:block id="id464388" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">cmp(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>, <fo:inline font-style="italic" font-family="monospace">y</fo:inline>)
</fo:block>
        The return value is:
      </fo:block><fo:list-block id="id464400" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id464405" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A negative number if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is less than <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id464420" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Zero if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is
            equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id464434" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A positive number if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is greater than <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The built-in <fo:inline font-family="monospace">cmp()</fo:inline> function will typically
        return only the values -1, 0, or 1.  However, there are other
        places that expect functions with the same calling sequence,
        and those functions may return other values.  It is best to
        observe only the sign of the result.
        <fo:block id="id464458" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; cmp(2,5)
-1
&gt;&gt;&gt; cmp(5,5)
0
&gt;&gt;&gt; cmp(5,2)
1
&gt;&gt;&gt; cmp('aardvark', 'aardwolf')
-1
</fo:block>
      </fo:block></fo:block><fo:block id="complex-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">complex()</fo:inline>: Convert to <fo:inline font-family="monospace">complex</fo:inline> type</fo:marker><fo:block font-size="14.4pt">20.9. <fo:inline font-family="monospace">complex()</fo:inline>: Convert to <fo:inline font-family="monospace">complex</fo:inline> type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To create a complex number from a real part <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">R</fo:inline></fo:inline> and a complex
        part <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline>:
      </fo:block><fo:block id="id464497" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">complex(<fo:inline font-style="italic" font-family="monospace">R</fo:inline>, <fo:inline font-style="italic" font-family="monospace">I</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Both arguments are optional.
      </fo:block><fo:list-block id="id464512" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id464516" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            With two arguments, both arguments must be numbers of any
            numeric type.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            With one numeric argument, it returns a complex number
            with real part <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">R</fo:inline></fo:inline> and an imaginary part of zero.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            To convert a complex number in string form, pass that
            string as the only argument.  If the string is not a valid
            complex number, the function raises a <fo:inline font-family="monospace">ValueError</fo:inline> exception.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id464540" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If called with no arguments, it returns a complex zero.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
      </fo:block><fo:block id="id464552" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; complex(-4.04, 3.173)
(-4.04+3.173j)
&gt;&gt;&gt; complex(-4.04)
(-4.04+0j)
&gt;&gt;&gt; complex()
0j
&gt;&gt;&gt; c1=4+5j
&gt;&gt;&gt; c2=6+7j
&gt;&gt;&gt; complex(c1, c2)   # Equals (4+5j)+(6+7j)j = 4+5j+6j-7
(-3+11j)
&gt;&gt;&gt; c1 + c2*1.0j
(-3+11j)
</fo:block></fo:block><fo:block id="dict-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">dict()</fo:inline>: Convert to a dictionary</fo:marker><fo:block font-size="14.4pt">20.10. <fo:inline font-family="monospace">dict()</fo:inline>: Convert to a dictionary</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function creates a new dictionary from its arguments.
        The general form is:
        <fo:block id="id464579" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">dict(<fo:inline font-style="italic" font-family="monospace">v</fo:inline>, <fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>=<fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">k<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>=<fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, ...)
</fo:block>
        That is, there may be one optional positional argument or any
        number of keyword arguments.
      </fo:block><fo:list-block id="id464611" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id464613" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If you supply no arguments, you get a new, empty
            dictionary.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id464620" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If one positional argument is supplied, it must be a <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> containing
            two-element iterables.  Each two-element iterable becomes
            one key-value pair of the result.
          </fo:block><fo:block id="id464632" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; dict()
{}
&gt;&gt;&gt; dict ( [ (0, 'stop'), (1, 'go') ] )
{0: 'stop', 1: 'go'}
&gt;&gt;&gt; dict((('y', 'boy'), ('x', 'girl')))
{'y': 'boy', 'x': 'girl'}
</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id464641" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If you supply any keyword arguments, each keyword becomes
            a key in the resulting dictionary, and that argument's
            value becomes the corresponding value of that key-value
            pair.
            <fo:block id="id464647" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; dict(bricks='sleep', keith='maniac', rj='gumby')
{'bricks': 'sleep', 'keith': 'maniac', 'rj': 'gumby'}
</fo:block>
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="divmod-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">divmod()</fo:inline>: Quotient and remainder</fo:marker><fo:block font-size="14.4pt">20.11. <fo:inline font-family="monospace">divmod()</fo:inline>: Quotient and remainder</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="id464674" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">divmod(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>, <fo:inline font-style="italic" font-family="monospace">y</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Sometimes you want both the quotient and remainder when
        dividing <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> by
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>.  This
        function returns a tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">q</fo:inline>, <fo:inline font-style="italic" font-family="monospace">r</fo:inline>)</fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">q</fo:inline></fo:inline> is
        the quotient and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> is the remainder.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If either <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
        or <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline> is a
        <fo:inline font-family="monospace">float</fo:inline>, the returned value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">q</fo:inline></fo:inline> is the whole part
        of the quotient, and the returned <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> is computed as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>-(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>*<fo:inline font-style="italic" font-family="monospace">d</fo:inline>)</fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
      </fo:block><fo:block id="id464755" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; divmod(13, 5)
(2, 3)
&gt;&gt;&gt; divmod(1.6, 0.5)
(3.0, 0.10000000000000009)
</fo:block></fo:block><fo:block id="enumerate-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">enumerate()</fo:inline>: Step through indices and
      values of an iterable</fo:marker><fo:block font-size="14.4pt">20.12. <fo:inline font-family="monospace">enumerate()</fo:inline>: Step through indices and
      values of an iterable</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, <fo:inline font-family="monospace">enumerate(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline>
        produces an iterator that iterates over the pairs of
        values <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">i</fo:inline>,
        <fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">i</fo:inline>])</fo:inline>, for <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> having the values in <fo:inline font-family="monospace">range(len(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>))</fo:inline>.  For
        more information on iterators, see <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block id="id464825" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; L = ['Ministry', 'of', 'Silly', 'Walks']
&gt;&gt;&gt; for where, what in enumerate(L):
...     print "[{0}] {1}".format(where, what)
... 
[0] Ministry
[1] of
[2] Silly
[3] Walks
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you would like the numbers to start at a different
        origin, pass that origin as the second argument to the
        <fo:inline font-family="monospace">enumerate()</fo:inline> function.  You will still get
        all the elements of the sequence, but the numbers will
        start at the value you provide.  (Python 2.6 and
        later versions only.)
      </fo:block><fo:block id="id464842" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for where, what in enumerate(L, 1):
...     print "[{0}] {1}".format(where, what)
... 
[1] Ministry
[2] of
[3] Silly
[4] Walks
</fo:block></fo:block><fo:block id="file-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">file()</fo:inline>: Open a file</fo:marker><fo:block font-size="14.4pt">20.13. <fo:inline font-family="monospace">file()</fo:inline>: Open a file</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function is identical to the <fo:inline font-family="monospace">open()</fo:inline>
        function; for details, see <fo:basic-link internal-destination="file-type">Section 17, “Type <fo:inline font-family="monospace">file</fo:inline>: Input and output files”</fo:basic-link><fo:basic-link internal-destination="file-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="file-type"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="filter-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">filter()</fo:inline>: Extract qualifying elements
      from an iterable</fo:marker><fo:block font-size="14.4pt">20.14. <fo:inline font-family="monospace">filter()</fo:inline>: Extract qualifying elements
      from an iterable</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function is useful for removing some of the elements of
        an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>.  You must
        provide a filtering function that takes one argument and
        returns a <fo:inline font-family="monospace">bool</fo:inline> value.  Here is the calling
        sequence:

        <fo:block id="id464904" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">filter(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>, <fo:inline font-style="italic" font-family="monospace">S</fo:inline>)
</fo:block>

        The filtering function <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is the first argument.  It is applied to every
        element of some iterable <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  The result is a new sequence containing only
        those elements <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
        of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> for which
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline>(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline> returned <fo:inline font-family="monospace">True</fo:inline>.
      </fo:block><fo:list-block id="id464947" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id464951" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is a
            string or tuple, the result has the same type, otherwise
            the result is a <fo:inline font-family="monospace">list</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id464966" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is <fo:inline font-family="monospace">None</fo:inline>, you get a sequence of the true elements of
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  In this
            case, the filtering function is effectively the <fo:basic-link internal-destination="bool-function"><fo:inline font-family="monospace">bool()</fo:inline>
            function</fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="id464993" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def isOdd(x):
...     if (x%2) == 1: return True
...     else: return False
... 
&gt;&gt;&gt; filter(isOdd, [88, 43, 65, -11, 202])
[43, 65, -11]
&gt;&gt;&gt; filter(isOdd, (1, 2, 4, 6, 9, 3, 3))
(1, 9, 3, 3)
&gt;&gt;&gt; def isLetter(c):
...     return c.isalpha()
... 
&gt;&gt;&gt; filter(isLetter, "01234abcdeFGHIJ*(&amp;!^")
'abcdeFGHIJ'
&gt;&gt;&gt; maybes = [0, 1, (), (2,), 0.0, 0.25]
&gt;&gt;&gt; filter(None, maybes)
[1, (2,), 0.25]
&gt;&gt;&gt; filter(bool, maybes)
[1, (2,), 0.25]
</fo:block></fo:block><fo:block id="float-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">float()</fo:inline>: Convert to <fo:inline font-family="monospace">float</fo:inline> type</fo:marker><fo:block font-size="14.4pt">20.15. <fo:inline font-family="monospace">float()</fo:inline>: Convert to <fo:inline font-family="monospace">float</fo:inline> type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Converts a value to type <fo:inline font-family="monospace">float</fo:inline>.  The argument
        must be a number, or a string containing a numeric value in
        string form (possibly surrounded by whitespace).  If the
        argument is not a valid number, this function will raise a
        <fo:inline font-family="monospace">ValueError</fo:inline> exception.  If no argument is given,
        it will return 0.0.
        <fo:block id="id465034" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; float()
0.0
&gt;&gt;&gt; float(17)
17.0
&gt;&gt;&gt; float(' 3.1415  ')
3.1415000000000002
&gt;&gt;&gt; print float('6.0221418e23')
6.0221418e+23
&gt;&gt;&gt; float('142x')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: invalid literal for float(): 142x
</fo:block>
      </fo:block></fo:block><fo:block id="format-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">format()</fo:inline>: Format a value</fo:marker><fo:block font-size="14.4pt">20.16. <fo:inline font-family="monospace">format()</fo:inline>: Format a value</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function converts a value to a formatted
        representation.  The general form is:
      </fo:block><fo:block id="id465063" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">format(<fo:inline font-style="italic" font-family="monospace">value</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">spec</fo:inline>])
</fo:block><fo:list-block id="id465075" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id465079" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            For built-in types, the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">spec</fo:inline></fo:inline> has the syntax as
            that described in <fo:basic-link internal-destination="new-str-format">Section 9.4, “The string <fo:inline font-family="monospace">.format()</fo:inline> method”</fo:basic-link><fo:basic-link internal-destination="new-str-format"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-str-format"/>)</fo:inline></fo:basic-link>
            between “<fo:inline font-family="monospace">:</fo:inline>” and the
            closing “<fo:inline font-family="monospace">}</fo:inline>”.
          </fo:block><fo:block id="id465099" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = 34.56
&gt;&gt;&gt; format(x, '9.4f')
'  34.5600'
&gt;&gt;&gt; '{0:9.4f}'.format(x)
'  34.5600'
</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id465107" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            You can define how this function works for a
            user-defined class by defining the special method
            described in <fo:basic-link internal-destination="format-method">Section 26.3.13, “<fo:inline font-family="monospace">__format__</fo:inline>: Implement the <fo:inline font-family="monospace">format()</fo:inline> function”</fo:basic-link><fo:basic-link internal-destination="format-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="format-method"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id465119" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">spec</fo:inline></fo:inline> argument is omitted, the result is the same as
            <fo:inline font-family="monospace">str(<fo:inline font-style="italic" font-family="monospace">value</fo:inline>)</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="frozenset-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">frozenset()</fo:inline>: Create a frozen set</fo:marker><fo:block font-size="14.4pt">20.17. <fo:inline font-family="monospace">frozenset()</fo:inline>: Create a frozen set</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function is used to create a new <fo:inline font-family="monospace">frozenset</fo:inline>
        value: an immutable set.  General form:
      </fo:block><fo:block id="id465160" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">frozenset(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function converts an existing <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> to a <fo:inline font-family="monospace">frozenset</fo:inline>.  The argument is optional; if
        omitted, you get a frozen empty set.
      </fo:block><fo:block id="id465185" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; frozenset()
frozenset([])
&gt;&gt;&gt; frozenset('aeiou')
frozenset(['a', 'i', 'e', 'u', 'o'])
&gt;&gt;&gt; frozenset([0, 0, 0, 44, 0, 44, 18])
frozenset([0, 18, 44])
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For more information, see <fo:basic-link internal-destination="set-types">Section 15, “Types <fo:inline font-family="monospace">set</fo:inline> and <fo:inline font-family="monospace">frozenset</fo:inline>:
    Set types”</fo:basic-link><fo:basic-link internal-destination="set-types"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="set-types"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="hex-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">hex()</fo:inline>: Convert to base 16</fo:marker><fo:block font-size="14.4pt">20.18. <fo:inline font-family="monospace">hex()</fo:inline>: Convert to base 16</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given an integer, this function returns a string displaying
        that value in hexadecimal (base 16).
      </fo:block><fo:block id="id465220" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; hex(15)
'0xf'
&gt;&gt;&gt; hex(255)
'0xff'
&gt;&gt;&gt; hex(256)
'0x100'
&gt;&gt;&gt; hex(1325178541275812780L)
'0x1263fadcb8b713ac'
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        See also <fo:basic-link internal-destination="new-str-format">Section 9.4, “The string <fo:inline font-family="monospace">.format()</fo:inline> method”</fo:basic-link><fo:basic-link internal-destination="new-str-format"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-str-format"/>)</fo:inline></fo:basic-link>: hexadecimal
        conversion is supported by specifying a <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">type</fo:inline></fo:inline> code of <fo:inline font-family="monospace">'x'</fo:inline> or <fo:inline font-family="monospace">'X'</fo:inline>.
      </fo:block></fo:block><fo:block id="int-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">int()</fo:inline>: Convert to <fo:inline font-family="monospace">int</fo:inline> type</fo:marker><fo:block font-size="14.4pt">20.19. <fo:inline font-family="monospace">int()</fo:inline>: Convert to <fo:inline font-family="monospace">int</fo:inline> type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To convert a number of a different type to <fo:inline font-family="monospace">int</fo:inline> type, or to convert a string of characters
        that represents a number:
        <fo:block id="id465271" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">int(<fo:inline font-style="italic" font-family="monospace">ns</fo:inline>)
</fo:block>
        where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">ns</fo:inline></fo:inline> is
        the value to be converted.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">ns</fo:inline></fo:inline> is a <fo:inline font-family="monospace">float</fo:inline>, the
        value will be truncated, discarding the fraction.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you want to convert a character string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>, expressed in a
        radix (base) other than 10, to an <fo:inline font-family="monospace">int</fo:inline>, use
        this form, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">b</fo:inline></fo:inline> is an integer in the range [2, 36] that
        specifies the radix.
      </fo:block><fo:block id="id465309" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">int(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>, <fo:inline font-style="italic" font-family="monospace">b</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
      </fo:block><fo:block id="id465324" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; int(43L)
43
&gt;&gt;&gt; int(True)
1
&gt;&gt;&gt; int(False)
0
&gt;&gt;&gt; int(43.89)
43
&gt;&gt;&gt; int("69")
69
&gt;&gt;&gt; int('77', 8)
63
&gt;&gt;&gt; int('7ff', 16)
2047
&gt;&gt;&gt; int('10101', 2)
21
</fo:block></fo:block><fo:block id="input-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">input()</fo:inline>: Read an expression from the
      user</fo:marker><fo:block font-size="14.4pt">20.20. <fo:inline font-family="monospace">input()</fo:inline>: Read an expression from the
      user</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function asks the user to type something, then
        evaluates it as a Python expression.  Here is the general
        form:
      </fo:block><fo:block id="id465352" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">input([<fo:inline font-style="italic" font-family="monospace">prompt</fo:inline>])
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you supply a string as the optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">prompt</fo:inline></fo:inline> argument,
        that string will be written to the user before the input
        is read.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In any case, the result is the value of the expression.
        Of course, if the user types something that isn't a valid
        Python expression, the function will raise an <fo:basic-link internal-destination="exceptions">exception</fo:basic-link>.
      </fo:block><fo:block id="id465379" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; input()
2+2
4
&gt;&gt;&gt; print "The answer was '{0}'.".format(input())
2+3*4
The answer was '14'.
&gt;&gt;&gt; print "The answer was '{0}'.".format(input("Type an expression:"))
Type an expression:2+3*4
The answer was '14'.
&gt;&gt;&gt; print input()
1/0
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ZeroDivisionError: integer division or modulo by zero
</fo:block></fo:block><fo:block id="iter-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">iter()</fo:inline>: Produce an iterator over a
      sequence</fo:marker><fo:block font-size="14.4pt">20.21. <fo:inline font-family="monospace">iter()</fo:inline>: Produce an iterator over a
      sequence</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, this function returns an iterator that generates the
        elements of the sequence.  For more information, see <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block id="id465417" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; listWalker = iter ( [23, 47, 'hike'] )
&gt;&gt;&gt; for x in listWalker: print x,
... 
23 47 hike
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      In general, the calling sequence is:
    </fo:block><fo:block id="id465427" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">iter(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">sentinel</fo:inline>])
</fo:block><fo:list-block id="id465439" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id465441" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">sentinel</fo:inline></fo:inline> argument is omitted, the first argument
            must be either a sequence value that implements the
            <fo:basic-link internal-destination="getitem-method"><fo:inline font-family="monospace">.__getitem__()</fo:inline> method</fo:basic-link> or an instance
            of a class that has the <fo:basic-link internal-destination="iter-method"><fo:inline font-family="monospace">.__iter__()</fo:inline> method</fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id465467" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If you provide a <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">sentinel</fo:inline></fo:inline> argument, the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> argument must
            be callable.  The iterator returned will call <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s()</fo:inline></fo:inline> with no
            arguments and generate the values it returns until
            the return value equals <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">sentinel</fo:inline></fo:inline>, at which point it
            will raise <fo:inline font-family="monospace">StopIteration</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="len-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">len()</fo:inline>: Number of elements</fo:marker><fo:block font-size="14.4pt">20.22. <fo:inline font-family="monospace">len()</fo:inline>: Number of elements</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given a sequence or dictionary, this function returns the
        number of elements.
      </fo:block><fo:block id="id465517" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; len('')
0
&gt;&gt;&gt; len ( [23, 47, 'hike'] )
3
&gt;&gt;&gt; len({1: 'foot', 2:'shoulder', 'feather': 'rare'})
3
</fo:block></fo:block><fo:block id="list-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">list()</fo:inline>: Convert to a list</fo:marker><fo:block font-size="14.4pt">20.23. <fo:inline font-family="monospace">list()</fo:inline>: Convert to a list</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function creates a new list.  The argument <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> may be any
        iterable (see <fo:basic-link internal-destination="iterable">Section 19.2, “What is an iterable?”</fo:basic-link><fo:basic-link internal-destination="iterable"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterable"/>)</fo:inline></fo:basic-link>).
      </fo:block><fo:block id="id465551" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; list(('Bentham', 'Locke', 'Hobbes'))
['Bentham', 'Locke', 'Hobbes']
&gt;&gt;&gt; list("Bruce")
['B', 'r', 'u', 'c', 'e']
&gt;&gt;&gt; list((42,))
[42]
&gt;&gt;&gt; list()
[]
</fo:block></fo:block><fo:block id="long-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">long()</fo:inline>: Convert to <fo:inline font-family="monospace">long</fo:inline> type</fo:marker><fo:block font-size="14.4pt">20.24. <fo:inline font-family="monospace">long()</fo:inline>: Convert to <fo:inline font-family="monospace">long</fo:inline> type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function works exactly the same way as <fo:basic-link internal-destination="int-function">Section 20.19, “<fo:inline font-family="monospace">int()</fo:inline>: Convert to <fo:inline font-family="monospace">int</fo:inline> type”</fo:basic-link><fo:basic-link internal-destination="int-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="int-function"/>)</fo:inline></fo:basic-link>, except that it produces a
        result of type <fo:inline font-family="monospace">long</fo:inline>.
      </fo:block><fo:block id="id465588" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; long(43)
43L
&gt;&gt;&gt; long(43.889)
43L
&gt;&gt;&gt; long('12345678901234567890123457890')
12345678901234567890123457890L
&gt;&gt;&gt; long('potrzebie456', 36)
3381314581245790842L
</fo:block></fo:block><fo:block id="map-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">map()</fo:inline>: Apply a function to each
      element of an iterable</fo:marker><fo:block font-size="14.4pt">20.25. <fo:inline font-family="monospace">map()</fo:inline>: Apply a function to each
      element of an iterable</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of this function is to perform some operation on
        each element of an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>.
        It returns a list containing the result of those operations.
        Here is the general form:
      </fo:block><fo:block id="id465622" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">map(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>, <fo:inline font-style="italic" font-family="monospace">S</fo:inline>)
</fo:block><fo:list-block id="id465634" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id465638" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is a
            function that takes one argument and returns a value.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id465650" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is any <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="id465666" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def add100(x):
...     return x+100
... 
&gt;&gt;&gt; map(add100, (44,22,66))
[144, 122, 166]
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To apply a function with multiple arguments to a set of
        sequences, just provide multiple iterables as arguments,
        like this.
      </fo:block><fo:block id="id465678" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def abc(a, b, c):
...     return a*10000 + b*100 + c
... 
&gt;&gt;&gt; map(abc, (1, 2, 3), (4, 5, 6), (7, 8, 9))
[10407, 20508, 30609]
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you pass <fo:inline font-family="monospace">None</fo:inline> as the first argument,
        Python uses the identity function to build the resulting
        list.  This is useful if you want to build a list of
        tuples containing items from two or more iterables.
      </fo:block><fo:block id="id465694" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; map(None, range(3))
[0, 1, 2]
&gt;&gt;&gt; map(None, range(3), 'abc', [44, 55, 66])
[(0, 'a', 44), (1, 'b', 55), (2, 'c', 66)]
</fo:block></fo:block><fo:block id="max-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">max()</fo:inline>: Largest element of an
      iterable</fo:marker><fo:block font-size="14.4pt">20.26. <fo:inline font-family="monospace">max()</fo:inline>: Largest element of an
      iterable</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given an iterable <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> that contains at least one element, <fo:inline font-family="monospace">max(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline> returns the largest element of the
        sequence.
      </fo:block><fo:block id="id465731" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; max('blimey')
'y'
&gt;&gt;&gt; max ( [-505, -575, -144, -288] )
-144
&gt;&gt;&gt; max([])
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: max() arg is an empty sequence
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You can also pass multiple arguments, and <fo:inline font-family="monospace">max()</fo:inline> will return the largest.  In the example
        below, <fo:inline font-family="monospace">'cheddar'</fo:inline> is the largest because
        lowercase letters have higher codes than uppercase
        letters.
      </fo:block><fo:block id="id465749" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; max('Gumby', 'Lambert', 'Sartre', 'cheddar')
'cheddar'
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you want to redefine the comparison function, you may
        provide a keyword argument <fo:inline font-family="monospace">key=<fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is a function that takes one
        argument and returns a value suitable for comparisons.
        In this example, we use the <fo:inline font-family="monospace">.upper()</fo:inline>
        method of the <fo:inline font-family="monospace">str</fo:inline> class to compare the
        uppercased strings, then return the original string
        whose uppercased value is largest.
      </fo:block><fo:block id="id465778" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; max('Gumby', 'Lambert', 'Sartre', 'cheddar', key=str.upper)
'Sartre'
</fo:block></fo:block><fo:block id="min-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">min()</fo:inline>: Smallest element of an
      iterable</fo:marker><fo:block font-size="14.4pt">20.27. <fo:inline font-family="monospace">min()</fo:inline>: Smallest element of an
      iterable</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> containing at least
        one element, <fo:inline font-family="monospace">max(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline> returns the largest element of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
      </fo:block><fo:block id="id465824" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; min('blimey')
'b'
&gt;&gt;&gt; min ( [-505, -575, -144, -288] )
-575
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You may also pass multiple arguments, and the <fo:inline font-family="monospace">min()</fo:inline> function will return the smallest.
      </fo:block><fo:block id="id465837" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; min(-505, -575, -144, -288)
-575
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you would like to use a different function to define 
        the ordering, specify that function as a keyword argument
        <fo:inline font-family="monospace">key=<fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline>, where
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is a
        function that takes one argument and returns a value
        suitable for comparisons.  In this example, we want
        to order the values based on their inverse.
      </fo:block><fo:block id="id465859" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def rev(x):
...     return -x
... 
&gt;&gt;&gt; min(-505, -575, -144, -288, key=rev)
-144
</fo:block></fo:block><fo:block id="next-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">next()</fo:inline>: Call an iterator</fo:marker><fo:block font-size="14.4pt">20.28. <fo:inline font-family="monospace">next()</fo:inline>: Call an iterator</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function attempts to get the next value from some
        iterator <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> (see
        <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>).  (New in version 2.6.)
      </fo:block><fo:block id="id465894" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">next(<fo:inline font-style="italic" font-family="monospace">I</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">default</fo:inline>)
</fo:block><fo:list-block id="id465905" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id465909" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If the iterator produces another value, that value is
            returned by this function.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id465917" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If the iterator is exhausted and you provide a <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">default</fo:inline></fo:inline> value,
            that value is returned.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id465928" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If the iterator is exhausted and you do not provide a
            default value, the <fo:inline font-family="monospace">next()</fo:inline> function raises a
            <fo:inline font-family="monospace">StopIteration</fo:inline> exception.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is an example.
      </fo:block><fo:block id="id465946" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; it = iter(xrange(0,2))
&gt;&gt;&gt; next(it, 'Done')
0
&gt;&gt;&gt; next(it, 'Done')
1
&gt;&gt;&gt; next(it, 'Done')
'Done'
&gt;&gt;&gt; next(it)
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
StopIteration
</fo:block></fo:block><fo:block id="oct-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">oct()</fo:inline>: Convert to base 8</fo:marker><fo:block font-size="14.4pt">20.29. <fo:inline font-family="monospace">oct()</fo:inline>: Convert to base 8</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given a number <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>,
        <fo:inline font-family="monospace">oct(<fo:inline font-style="italic" font-family="monospace">n</fo:inline>)</fo:inline> returns a
        string containing an octal (base 8) representation of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>.  Consistent with
        Python's convention that any number starting with a zero is
        considered octal, the result of this function will always have
        a leading zero.
      </fo:block><fo:block id="id465990" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; oct(0)
'0'
&gt;&gt;&gt; oct(127)
'0177'
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        See also <fo:basic-link internal-destination="new-str-format">Section 9.4, “The string <fo:inline font-family="monospace">.format()</fo:inline> method”</fo:basic-link><fo:basic-link internal-destination="new-str-format"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-str-format"/>)</fo:inline></fo:basic-link>: octal
        conversion is supported by specifying <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">type</fo:inline></fo:inline> code <fo:inline font-family="monospace">'o'</fo:inline>.
      </fo:block></fo:block><fo:block id="open-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">open()</fo:inline>: Open a file</fo:marker><fo:block font-size="14.4pt">20.30. <fo:inline font-family="monospace">open()</fo:inline>: Open a file</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Open a file.  For the calling sequence, see <fo:basic-link internal-destination="file-type">Section 17, “Type <fo:inline font-family="monospace">file</fo:inline>: Input and output files”</fo:basic-link><fo:basic-link internal-destination="file-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="file-type"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="ord-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">ord()</fo:inline>: Find the numeric code for a
      character</fo:marker><fo:block font-size="14.4pt">20.31. <fo:inline font-family="monospace">ord()</fo:inline>: Find the numeric code for a
      character</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given a string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>
        containing a single character, <fo:inline font-family="monospace">ord(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>)</fo:inline> returns that character's numeric
        code.  Compare <fo:basic-link internal-destination="chr-function">Section 20.7, “<fo:inline font-family="monospace">chr()</fo:inline>: Get the character with a given
      code”</fo:basic-link><fo:basic-link internal-destination="chr-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="chr-function"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block id="id466067" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; ord('A')
65
&gt;&gt;&gt; ord('\x00')
0
&gt;&gt;&gt; ord(u'\u262e')
9774
&gt;&gt;&gt; hex(9774)
'0x262e'
</fo:block></fo:block><fo:block id="pow-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">pow()</fo:inline>: Exponentiation</fo:marker><fo:block font-size="14.4pt">20.32. <fo:inline font-family="monospace">pow()</fo:inline>: Exponentiation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are two ways to compute <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline><fo:inline font-size="75%" baseline-shift="super"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline></fo:inline> in Python.  You
        can write it as “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>**<fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>”.  There is also a function that does the same
        thing:
      </fo:block><fo:block id="id466111" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">pow(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>, <fo:inline font-style="italic" font-family="monospace">y</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For integer arithmetic, the function also has a
        three-argument form that computes <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline><fo:inline font-size="75%" baseline-shift="super"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>%<fo:inline font-style="italic" font-family="monospace">z</fo:inline></fo:inline>, but more efficiently than if
        you used that expression:
      </fo:block><fo:block id="id466137" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">pow(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>, <fo:inline font-style="italic" font-family="monospace">y</fo:inline>, <fo:inline font-style="italic" font-family="monospace">z</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
      </fo:block><fo:block id="id466155" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; 2**4
16
&gt;&gt;&gt; pow(2,4)
16
&gt;&gt;&gt; pow(2.5, 4.5)
61.763235550163657
&gt;&gt;&gt; (2**9)%3
2
&gt;&gt;&gt; pow(2,9,3)
2
</fo:block></fo:block><fo:block id="range-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">range()</fo:inline>: Generate an arithmetic
      progression as a list</fo:marker><fo:block font-size="14.4pt">20.33. <fo:inline font-family="monospace">range()</fo:inline>: Generate an arithmetic
      progression as a list</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function generates a list containing the values of an
        arithmetic progression, that is, a sequence of numbers such
        that the difference between adjacent numbers is always the
        same.  There are three forms:
      </fo:block><fo:block id="id466183" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id466186" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">range(<fo:inline font-style="italic" font-family="monospace">n</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the list <fo:inline font-family="monospace">[0, 1, 2, ..., <fo:inline font-style="italic" font-family="monospace">n</fo:inline>-1]</fo:inline>.  Note that the result
              never includes the value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id466215" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">range(<fo:inline font-style="italic" font-family="monospace">start</fo:inline>,
            <fo:inline font-style="italic" font-family="monospace">stop</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the list <fo:inline font-family="monospace">[<fo:inline font-style="italic" font-family="monospace">start</fo:inline>, <fo:inline font-style="italic" font-family="monospace">start+1</fo:inline>, <fo:inline font-style="italic" font-family="monospace">start</fo:inline>+2, ..., <fo:inline font-style="italic" font-family="monospace">stop</fo:inline>-1]</fo:inline>.  The result never
              includes the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">stop</fo:inline></fo:inline> value.
            </fo:block></fo:block><fo:block id="id466258" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">range(<fo:inline font-style="italic" font-family="monospace">start</fo:inline>,
            <fo:inline font-style="italic" font-family="monospace">stop</fo:inline>, <fo:inline font-style="italic" font-family="monospace">step)</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the list <fo:inline font-family="monospace">[<fo:inline font-style="italic" font-family="monospace">start</fo:inline>, <fo:inline font-style="italic" font-family="monospace">start</fo:inline>+<fo:inline font-style="italic" font-family="monospace">step</fo:inline>, <fo:inline font-style="italic" font-family="monospace">start</fo:inline>+2*<fo:inline font-style="italic" font-family="monospace">step</fo:inline>, ...]</fo:inline>, up to but not including the value of
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">stop</fo:inline></fo:inline>.  The
              value of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">step</fo:inline></fo:inline> may be negative.
            </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
        <fo:block id="id466314" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; range(4)
[0, 1, 2, 3]
&gt;&gt;&gt; range(4,9)
[4, 5, 6, 7, 8]
&gt;&gt;&gt; range(10,104,10)
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
&gt;&gt;&gt; range(5,-1,-1)
[5, 4, 3, 2, 1, 0]
</fo:block>
      </fo:block></fo:block><fo:block id="raw_input-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">raw_input()</fo:inline>: Prompt and read a string
      from the user</fo:marker><fo:block font-size="14.4pt">20.34. <fo:inline font-family="monospace">raw_input()</fo:inline>: Prompt and read a string
      from the user</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To prompt for keyboard entry, use this function:
      </fo:block><fo:block id="id466342" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">raw_input(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The argument <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is
        a prompt string that is written to standard output.  Then a
        line is read from standard input and returned as a string,
        without its trailing newline character.
      </fo:block><fo:block id="id466360" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; party = raw_input('Party affiliation: ')
Party affiliation: Slightly silly.
&gt;&gt;&gt; party
'Slightly silly.'
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If the user signals end of input (e.g., with <fo:inline font-style="italic" font-family="sans-serif">Control-D</fo:inline> under Unix), the function raises an <fo:inline font-family="monospace">EOFError</fo:inline> exception.
      </fo:block></fo:block><fo:block id="reduce-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">reduce()</fo:inline>: Sequence reduction</fo:marker><fo:block font-size="14.4pt">20.35. <fo:inline font-family="monospace">reduce()</fo:inline>: Sequence reduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The idea of <fo:inline font-style="italic">reduction</fo:inline> comes from the
        world of functional programming.  There is a good introductory
        article on this concept in <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Fold_(higher-order_function))">Wikipedia</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">20</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">20</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Fold_(higher-order_function))">http://en.wikipedia.org/wiki/Fold_(higher-order_function)</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.  In simple terms, a function of two
        arguments is applied repeatedly to the elements of an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> to build up a final
        value.
      </fo:block><fo:list-block id="id466411" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id466416" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The idea of a “sum of elements of a
            sequence” is a reduction of those elements using
            “<fo:inline font-family="monospace">+</fo:inline>” as the function.  For
            example, the <fo:inline font-family="monospace">+</fo:inline>-reduction of
            <fo:inline font-family="monospace">[2, 3, 5]</fo:inline> is 2+3+5 or 10.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id466434" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Similarly, the product of a series of numbers is a
            reduction using the “<fo:inline font-family="monospace">*</fo:inline>”
            operator: the multiply reduction of <fo:inline font-family="monospace">[2, 3, 5]</fo:inline> is 2*3*5 or 30.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are two general forms:
      </fo:block><fo:block id="id466454" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">reduce(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>, <fo:inline font-style="italic" font-family="monospace">S</fo:inline>)
reduce(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>, <fo:inline font-style="italic" font-family="monospace">S</fo:inline>, <fo:inline font-style="italic" font-family="monospace">I</fo:inline>)
</fo:block><fo:list-block id="id466475" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id466480" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is a
            function that takes two arguments and returns a value.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id466491" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is an
            <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The result depends on the number of elements in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, and whether the
        initial value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> is
        supplied.  Let's look first at the case where argument <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> is not supplied.
      </fo:block><fo:list-block id="id466525" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id466527" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> has only
            one element, the result is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[0]</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id466543" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> has two
            elements, the result is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline>(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>[0],
            <fo:inline font-style="italic" font-family="monospace">S</fo:inline>[1])</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id466566" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> has three
            elements, the result is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline>(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>[0], <fo:inline font-style="italic" font-family="monospace">S</fo:inline>[1]), <fo:inline font-style="italic" font-family="monospace">S</fo:inline>[2])</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id466595" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> has four
            or more elements, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is applied first to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[0]</fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[1]</fo:inline>, then to that result and
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[2]</fo:inline>, and so
            on until all elements are reduced to a single value.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id466626" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is empty
            and no initial value was provided, the function raises a
            <fo:inline font-family="monospace">TypeError</fo:inline> exception.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If an initial value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> is provided, the result is the same as <fo:inline font-family="monospace">reduce(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>, [<fo:inline font-style="italic" font-family="monospace">I</fo:inline>]+list(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>))</fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Some examples:
        <fo:block id="id466665" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def x100y(x,y):
...     return x*100+y
... 
&gt;&gt;&gt; reduce(x100y, [15])
15
&gt;&gt;&gt; reduce(x100y, [1,2])
102
&gt;&gt;&gt; reduce(x100y, [1,2,3])
10203
&gt;&gt;&gt; reduce(x100y, (), 44)
44
&gt;&gt;&gt; reduce(x100y, [1], 2)
201
&gt;&gt;&gt; reduce(x100y, [1,2], 3)
30102
&gt;&gt;&gt; reduce(x100y, [1,2,3], 4)
4010203
&gt;&gt;&gt; reduce(x100y, [])
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
TypeError: reduce() of empty sequence with no initial value
</fo:block>
      </fo:block></fo:block><fo:block id="reversed-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">reversed()</fo:inline>: Produce a reverse
      iterator</fo:marker><fo:block font-size="14.4pt">20.36. <fo:inline font-family="monospace">reversed()</fo:inline>: Produce a reverse
      iterator</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function, applied to a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, returns an iterator that generates
        the elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
        in reverse order (see <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>).
      </fo:block><fo:block id="id466709" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; L=[22,44,88]
&gt;&gt;&gt; backL = reversed(L)
&gt;&gt;&gt; for i in backL:
...     print i,
... 
88 44 22
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The allowable values for <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> include all the types described in <fo:basic-link internal-destination="sequence-types">Section 8, “Sequence types”</fo:basic-link><fo:basic-link internal-destination="sequence-types"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sequence-types"/>)</fo:inline></fo:basic-link>.  It also works for any
        class provided one of these two conditions is met:
      </fo:block><fo:list-block id="id466728" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id466732" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The method described in <fo:basic-link internal-destination="reversed-method">Section 26.3.20, “<fo:inline font-family="monospace">__reversed__()</fo:inline>: Implement the <fo:inline font-family="monospace">reversed()</fo:inline> function”</fo:basic-link><fo:basic-link internal-destination="reversed-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="reversed-method"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id466743" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If the class has no <fo:inline font-family="monospace">.__reversed__()</fo:inline> method,
            <fo:inline font-family="monospace">reversed()</fo:inline> will still work provided that
            instances act like a sequence; that is, the class has a
            <fo:inline font-family="monospace">.__len__()</fo:inline> method and a <fo:inline font-family="monospace">.__getitem__()</fo:inline> method.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="round-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">round()</fo:inline>: Round to the nearest
      integral value</fo:marker><fo:block font-size="14.4pt">20.37. <fo:inline font-family="monospace">round()</fo:inline>: Round to the nearest
      integral value</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To find the integral value nearest to some value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>, use this
        function:
      </fo:block><fo:block id="id466790" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">round(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The value is returned as a <fo:inline font-family="monospace">float</fo:inline>.  In the
        case that the fractional part of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is exactly one-half, the
        returned value is the integer farther from zero.
        Examples:
      </fo:block><fo:block id="id466811" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; round ( 4.1 )
4.0
&gt;&gt;&gt; round(4.9)
5.0
&gt;&gt;&gt; round(4.5)
5.0
&gt;&gt;&gt; round(-4.1)
-4.0
&gt;&gt;&gt; round(-4.9)
-5.0
&gt;&gt;&gt; round(-4.5)
-5.0
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You can also provide an optional second argument that
        specifies how many digits to retain after the decimal.
      </fo:block><fo:block id="id466824" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; from math import pi
&gt;&gt;&gt; round(pi)
3.0
&gt;&gt;&gt; print round(pi,1)
3.1
&gt;&gt;&gt; print round(pi,2)
3.14
&gt;&gt;&gt; print round(pi, 4)
3.1416
&gt;&gt;&gt; round(pi,30)
3.1415926535897931
</fo:block></fo:block><fo:block id="set-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">set()</fo:inline>: Create an algebraic set</fo:marker><fo:block font-size="14.4pt">20.38. <fo:inline font-family="monospace">set()</fo:inline>: Create an algebraic set</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use this function to create a <fo:inline font-family="monospace">set</fo:inline> value.  Here
        is the general form:
      </fo:block><fo:block id="id466858" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">set(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The optional argument <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is any <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>;
        the return value is a new <fo:inline font-family="monospace">set</fo:inline> instance
        containing the unique values from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  When called with no arguments,
        this function returns a new, empty set.  Examples:
      </fo:block><fo:block id="id466891" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; empty = set()
&gt;&gt;&gt; empty
set([])
&gt;&gt;&gt; len(empty)
0
&gt;&gt;&gt; swallows=set(['African', 'European'])
&gt;&gt;&gt; swallows
set(['European', 'African'])
&gt;&gt;&gt; len(swallows)
2
&gt;&gt;&gt; set ( (0, 0, 0, 58, 0, 0, 58, 17) )
set([0, 17, 58])
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For more information about sets, see <fo:basic-link internal-destination="set-types">Section 15, “Types <fo:inline font-family="monospace">set</fo:inline> and <fo:inline font-family="monospace">frozenset</fo:inline>:
    Set types”</fo:basic-link><fo:basic-link internal-destination="set-types"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="set-types"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="sorted-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">sorted()</fo:inline>: Sort a sequence</fo:marker><fo:block font-size="14.4pt">20.39. <fo:inline font-family="monospace">sorted()</fo:inline>: Sort a sequence</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function, applied to any <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, produces a new list containing the elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> in ascending order (or
        some other order you specify).
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is the general form:
        <fo:block id="id466950" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">sorted(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">cmp</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">key</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">reverse</fo:inline>]]])
</fo:block>
        The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">cmp</fo:inline></fo:inline>, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">key</fo:inline></fo:inline>, and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">reverse</fo:inline></fo:inline> arguments are
        optional, and have the same meaning as in the <fo:inline font-family="monospace">.sort()</fo:inline> method of the <fo:inline font-family="monospace">list</fo:inline> type (see
        <fo:basic-link internal-destination="list-methods">Section 11.1, “Methods on lists”</fo:basic-link><fo:basic-link internal-destination="list-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="list-methods"/>)</fo:inline></fo:basic-link>).
      </fo:block><fo:block id="id466997" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; L = ['geas', 'clue', 'Zoe', 'Ann']
&gt;&gt;&gt; sorted(L)
['Ann', 'Zoe', 'clue', 'geas']
&gt;&gt;&gt; def ignoreCase(x,y):
...     return cmp(x.upper(), y.upper())
... 
&gt;&gt;&gt; sorted(L, ignoreCase)
['Ann', 'clue', 'geas', 'Zoe']
&gt;&gt;&gt; sorted(L, None, str.upper)
['Ann', 'clue', 'geas', 'Zoe']
&gt;&gt;&gt; L
['geas', 'clue', 'Zoe', 'Ann']
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In the first example above, <fo:inline font-family="monospace">'Zoe'</fo:inline> precedes
        <fo:inline font-family="monospace">'clue'</fo:inline>, because all uppercase letters are
        considered to be less than all lowercase letters.  The
        second example shows the use of a <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">cmp</fo:inline></fo:inline> argument to sort strings as
        if they were all uppercase; the third example shows how
        to achieve the same result using the <fo:inline font-family="monospace">.upper()</fo:inline> method of the <fo:inline font-family="monospace">str</fo:inline> class
        as the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">key</fo:inline></fo:inline>
        argument.  Note in the last line that the original list
        <fo:inline font-family="monospace">L</fo:inline> is unchanged.
      </fo:block></fo:block><fo:block id="str-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">str()</fo:inline>: Convert to <fo:inline font-family="monospace">str</fo:inline>
      type</fo:marker><fo:block font-size="14.4pt">20.40. <fo:inline font-family="monospace">str()</fo:inline>: Convert to <fo:inline font-family="monospace">str</fo:inline>
      type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To convert any value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> to a string, use this general form:
        <fo:block id="id467071" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">str(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For example:
      </fo:block><fo:block id="id467085" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; str(17)
'17'
&gt;&gt;&gt; str({'boy': 'Relmond', 'girl': 'Wirdley'})
"{'boy': 'Relmond', 'girl': 'Wirdley'}"
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For general information, see <fo:basic-link internal-destination="str-type">Section 9, “Type <fo:inline font-family="monospace">str</fo:inline>: Strings of 8-bit
    characters”</fo:basic-link><fo:basic-link internal-destination="str-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="str-type"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="sum-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">sum()</fo:inline>: Total the elements of a
      sequence</fo:marker><fo:block font-size="14.4pt">20.41. <fo:inline font-family="monospace">sum()</fo:inline>: Total the elements of a
      sequence</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function, applied to an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, returns the sum of its elements.  There are two general
        forms:
      </fo:block><fo:block id="id467136" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">sum(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)
sum(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>, <fo:inline font-style="italic" font-family="monospace">I</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In the second form, the summing process starts with the
        initial value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline>.
        Examples:
      </fo:block><fo:block id="id467160" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; L=[1,2,3,4]
&gt;&gt;&gt; sum(L)
10
&gt;&gt;&gt; sum(L,1000)
1010
&gt;&gt;&gt; sum((), 1000)
1000
</fo:block></fo:block><fo:block id="tuple-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">tuple()</fo:inline>: Convert to a tuple</fo:marker><fo:block font-size="14.4pt">20.42. <fo:inline font-family="monospace">tuple()</fo:inline>: Convert to a tuple</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To convert some <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> to a tuple, use
        this general form:
      </fo:block><fo:block id="id467200" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">tuple(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The result will be a new tuple with the same elements as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> in the same order.
        For general information, see <fo:basic-link internal-destination="tuple-type">Section 12, “Type <fo:inline font-family="monospace">tuple</fo:inline>: Immutable sequences”</fo:basic-link><fo:basic-link internal-destination="tuple-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="tuple-type"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To create an empty tuple, omit the argument.  Examples:
      </fo:block><fo:block id="id467226" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; tuple()
()
&gt;&gt;&gt; tuple ( ['swallow', 'coconut'] )
('swallow', 'coconut')
&gt;&gt;&gt; tuple ( 'shrubbery' )
('s', 'h', 'r', 'u', 'b', 'b', 'e', 'r', 'y')
&gt;&gt;&gt; tuple ( ['singleton'] )
('singleton',)
</fo:block></fo:block><fo:block id="type-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">type()</fo:inline>: Return a value's type</fo:marker><fo:block font-size="14.4pt">20.43. <fo:inline font-family="monospace">type()</fo:inline>: Return a value's type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function can be applied to any value.  It returns a
        <fo:inline font-style="italic">type object</fo:inline> corresponding to the type
        of that value.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For built-in types, the type object is the same as the name of
        the type: <fo:inline font-family="monospace">int</fo:inline>, <fo:inline font-family="monospace">str</fo:inline>, <fo:inline font-family="monospace">list</fo:inline>, and so on.  To test whether a value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is some type <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline>, you can use the
        predicate “<fo:inline font-family="monospace">type(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)
        is <fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline>”.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you display a type object in conversational mode, it will
        look like “<fo:inline font-family="monospace">&lt;type '<fo:inline font-style="italic" font-family="monospace">T</fo:inline>'&gt;</fo:inline>”.  Examples:
      </fo:block><fo:block id="id467308" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; type(i)
&lt;type 'int'&gt;
&gt;&gt;&gt; type(i) is int
True
&gt;&gt;&gt; type([2,4,8]) is list
True
</fo:block></fo:block><fo:block id="unichr-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">unichr()</fo:inline>: Convert a numeric code to a
      Unicode character</fo:marker><fo:block font-size="14.4pt">20.44. <fo:inline font-family="monospace">unichr()</fo:inline>: Convert a numeric code to a
      Unicode character</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Given a number <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>,
        this function returns the Unicode character that has code
        point <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>.  For more
        on Unicode, see <fo:basic-link internal-destination="unicode-type">Section 10, “Type <fo:inline font-family="monospace">unicode</fo:inline>: Strings of 32-bit
      characters”</fo:basic-link><fo:basic-link internal-destination="unicode-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unicode-type"/>)</fo:inline></fo:basic-link>.
        <fo:block id="id467352" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; unichr(0)
u'\x00'
&gt;&gt;&gt; unichr(ord('A'))
u'A'
&gt;&gt;&gt; unichr(0x3046)
u'\u3046'
&gt;&gt;&gt; unichr(0xe0047)
u'\U000e0047'
</fo:block>
      </fo:block></fo:block><fo:block id="unicode-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">unicode()</fo:inline>: Convert to a Unicode
      string</fo:marker><fo:block font-size="14.4pt">20.45. <fo:inline font-family="monospace">unicode()</fo:inline>: Convert to a Unicode
      string</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use this function to convert a string to type <fo:inline font-family="monospace">unicode</fo:inline>.  For more information about Unicode,
        see <fo:basic-link internal-destination="unicode-type">Section 10, “Type <fo:inline font-family="monospace">unicode</fo:inline>: Strings of 32-bit
      characters”</fo:basic-link><fo:basic-link internal-destination="unicode-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unicode-type"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block id="id467392" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; unicode('Pratt')
u'Pratt'
&gt;&gt;&gt; unicode()
u''
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        
      </fo:block></fo:block><fo:block id="xrange-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">xrange()</fo:inline>: Arithmetic progression
      generator</fo:marker><fo:block font-size="14.4pt">20.46. <fo:inline font-family="monospace">xrange()</fo:inline>: Arithmetic progression
      generator</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">xrange()</fo:inline> function has exactly the same
        arguments as the <fo:inline font-family="monospace">range()</fo:inline> function (see <fo:basic-link internal-destination="range-function">Section 20.33, “<fo:inline font-family="monospace">range()</fo:inline>: Generate an arithmetic
      progression as a list”</fo:basic-link><fo:basic-link internal-destination="range-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="range-function"/>)</fo:inline></fo:basic-link>).
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The difference is that <fo:inline font-family="monospace">xrange()</fo:inline> is a generator
        (see <fo:basic-link internal-destination="generators">Section 24.3, “Generators: Functions that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="generators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="generators"/>)</fo:inline></fo:basic-link>), while <fo:inline font-family="monospace">range()</fo:inline> actually builds a list for its result.  This
        means you can use <fo:inline font-family="monospace">xrange()</fo:inline> in situations where
        you want to generate a large series of the values from an
        arithmetic progression, but you don't have enough memory to
        build that series as a list.
      </fo:block><fo:block id="id467459" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for i in xrange(2000000000):
...     print i,
...     if i &gt; 8:
...         break
... 
0 1 2 3 4 5 6 7 8 9
&gt;&gt;&gt; for i in range(2000000000):
...     print i,
...     if i &gt; 8:
...         break
... 
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
MemoryError
</fo:block></fo:block><fo:block id="zip-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">zip()</fo:inline>: Combine multiple
      sequences</fo:marker><fo:block font-size="14.4pt">20.47. <fo:inline font-family="monospace">zip()</fo:inline>: Combine multiple
      sequences</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of this function is to build a list of tuples from
        two or more <fo:basic-link internal-destination="iterable">iterables</fo:basic-link> of the
        same length.  Here is the general form:
      </fo:block><fo:block id="id467499" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">zip(<fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Each <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> must be in iterable.  The
        result is a list <fo:inline font-family="monospace">[<fo:inline font-style="italic" font-family="monospace">T<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">T<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, ...]</fo:inline>, where
        each <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> is the tuple
        <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>[i],
        <fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>[i],
        <fo:inline font-style="italic" font-family="monospace">S<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>[i],
        ...)</fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here are some examples.
      </fo:block><fo:block id="id467576" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; L1=[1,2,3,4]
&gt;&gt;&gt; L2=['a', 'b', 'c', 'd']
&gt;&gt;&gt; zip(L1, L2)
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
&gt;&gt;&gt; L3=[10.0, 20.0, 30.0, 40.0]
&gt;&gt;&gt; zip(L1, L2, L3)
[(1, 'a', 10.0), (2, 'b', 20.0), (3, 'c', 30.0), (4, 'd', 40.0)]
</fo:block></fo:block></fo:block><fo:block id="advanced-functions"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Advanced functions</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">21. Advanced functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      This section describes Python functions that most people
      will never need.  However, the advanced Python programmer
      may find some of them quite useful.
    </fo:block><fo:block id="basestring-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">basestring</fo:inline>: The string base class</fo:marker><fo:block font-size="14.4pt">21.1. <fo:inline font-family="monospace">basestring</fo:inline>: The string base class</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The class <fo:inline font-family="monospace">basestring</fo:inline> is the parent class for
        the two string types, <fo:inline font-family="monospace">str</fo:inline> and <fo:inline font-family="monospace">unicode</fo:inline>.  It exists not because you can call it (you
        can't), but for type testing.  To test whether some value
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> is an instance
        of either type of string, use this <fo:basic-link internal-destination="predicates">predicate</fo:basic-link>:
        <fo:block id="id467650" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">isinstance(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>, basestring)
</fo:block>
        See <fo:basic-link internal-destination="isinstance-function">Section 21.12, “<fo:inline font-family="monospace">isinstance()</fo:inline>: Is a value an instance of
      some class or type?”</fo:basic-link><fo:basic-link internal-destination="isinstance-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="isinstance-function"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="callable-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">callable()</fo:inline>: Is this thing
      callable?</fo:marker><fo:block font-size="14.4pt">21.2. <fo:inline font-family="monospace">callable()</fo:inline>: Is this thing
      callable?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> tests
        whether some value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> can be called as a function.
      </fo:block><fo:block id="id467702" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">callable(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Class names can be called to create an instance of the class.
        Instances can be called if they define a <fo:inline font-family="monospace">.__call__()</fo:inline> special method; see <fo:basic-link internal-destination="call-method">Section 26.3.5, “<fo:inline font-family="monospace">__call__()</fo:inline>: What to do when someone
        calls an instance”</fo:basic-link><fo:basic-link internal-destination="call-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="call-method"/>)</fo:inline></fo:basic-link>.
        <fo:block id="id467724" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def someFunction():
...     pass
... 
&gt;&gt;&gt; callable(someFunction)
True
&gt;&gt;&gt; callable(len)
True
&gt;&gt;&gt; callable(int)
True
&gt;&gt;&gt; callable(42)
False
</fo:block>
      </fo:block></fo:block><fo:block id="classmethod-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">classmethod()</fo:inline>: Create a class
      method</fo:marker><fo:block font-size="14.4pt">21.3. <fo:inline font-family="monospace">classmethod()</fo:inline>: Create a class
      method</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of the <fo:inline font-family="monospace">classmethod()</fo:inline> function is to
        convert a method into a <fo:inline font-style="italic">class method</fo:inline>.
        For a discussion of the purpose and usage of class methods,
        see <fo:basic-link internal-destination="class-methods">Section 26.5, “Class methods”</fo:basic-link><fo:basic-link internal-destination="class-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="class-methods"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are two ways to declare a class method within a class:
      </fo:block><fo:list-block id="id467774" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id467777" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            You can use the function decorator syntax to declare that
            <fo:inline font-family="monospace">classmethod</fo:inline> is a decorator for your
            method.  Precede the method definition with a line reading:
      <fo:block id="id467786" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    @classmethod
     def <fo:inline font-style="italic" font-family="monospace">methodName</fo:inline>(<fo:inline font-style="italic" font-family="monospace">cls</fo:inline>, ...):
         <fo:inline font-style="italic" font-family="monospace">method body</fo:inline>
</fo:block>
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id467804" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            In some older versions of Python without the decorator
            syntax, you can still declare a class method by
            placing a line after the method definition, at the
            same indentation level as the method's <fo:inline font-family="monospace">def</fo:inline>
            statement, having this form:
            <fo:block id="id467815" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    <fo:inline font-style="italic" font-family="monospace">methodName</fo:inline> = classmethod(<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">methodName</fo:inline>)</fo:inline>
</fo:block>
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="delattr-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">delattr()</fo:inline>: Delete a named
      attribute</fo:marker><fo:block font-size="14.4pt">21.4. <fo:inline font-family="monospace">delattr()</fo:inline>: Delete a named
      attribute</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use this function to delete an attribute named <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">A</fo:inline></fo:inline> of some instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline>.  It does not return a
        value.  Here is the general form:
        <fo:block id="id467863" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">delattr(<fo:inline font-style="italic" font-family="monospace">I</fo:inline>, <fo:inline font-style="italic" font-family="monospace">A</fo:inline>)
</fo:block>
        For example, if an instance <fo:inline font-family="monospace">seabiscuit</fo:inline> has a
        <fo:inline font-family="monospace">rider</fo:inline> attribute, this statement would delete
        that attribute:
        <fo:block id="id467884" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">delattr(seabiscuit, 'rider')
</fo:block>
        If the instance has no such attribute, this function will
        raise an <fo:inline font-family="monospace">AttributeError</fo:inline> exception.
      </fo:block></fo:block><fo:block id="dir-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">dir()</fo:inline>: Display a namespace's names</fo:marker><fo:block font-size="14.4pt">21.5. <fo:inline font-family="monospace">dir()</fo:inline>: Display a namespace's names</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of the <fo:inline font-family="monospace">dir()</fo:inline> function is to find
        out what names are defined in a given namespace, and return a
        list of those names.  If called without arguments, it returns
        a list of the names defined in the local namespace.  This
        function can be very handy for finding out what items are in a
        module or class.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Certain special names are found in most or all namespaces:
      </fo:block><fo:list-block id="id467928" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id467932" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace">__doc__</fo:inline> is present in every namespace.
            Initially <fo:inline font-family="monospace">None</fo:inline>, you can store
            documentation there.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id467946" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace">__name__</fo:inline> is the name of the current
            module (minus the <fo:inline font-family="monospace">.py</fo:inline> extension).
            In the top-level script or in conversational mode, this
            name is set to the string <fo:inline font-family="monospace">'__main__'</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id467967" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace">__builtins__</fo:inline> is a list of the names of
            all built-in functions and variables.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In this example sequence, we'll show you what is in the global
        namespace just after starting up Python.  Then we'll import
        the <fo:inline font-family="monospace">math</fo:inline> module and display its names.
        <fo:block id="id467986" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; dir()
['__builtins__', '__doc__', '__name__']
&gt;&gt;&gt; x=5; forkTail='Tyrannus'
&gt;&gt;&gt; dir()
['__builtins__', '__doc__', '__name__', 'forkTail', 'x']
&gt;&gt;&gt; print __doc__
None
&gt;&gt;&gt; print __name__
__main__
&gt;&gt;&gt; import math
&gt;&gt;&gt; print math.__name__
math
&gt;&gt;&gt; dir(math)
['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 'atan2', 'ceil'
, 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', '
hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'si
nh', 'sqrt', 'tan', 'tanh']
&gt;&gt;&gt; print math.__doc__
This module is always available.  It provides access to the
mathematical functions defined by the C standard.
&gt;&gt;&gt; print math.log10.__doc__
log10(x) -&gt; the base 10 logarithm of x.
&gt;&gt;&gt; print __builtins__
&lt;module '__builtin__' (built-in)&gt;
&gt;&gt;&gt; for k, name in enumerate(dir(__builtins__)):
...     if (k%4)==3: print
...     print name,
... 
ArithmeticError AssertionError AttributeError
BaseException BufferError BytesWarning DeprecationWarning
EOFError Ellipsis EnvironmentError Exception
False FloatingPointError FutureWarning GeneratorExit
IOError ImportError ImportWarning IndentationError
IndexError KeyError KeyboardInterrupt LookupError
MemoryError NameError None NotImplemented
NotImplementedError OSError OverflowError PendingDeprecationWarning
ReferenceError RuntimeError RuntimeWarning StandardError
StopIteration SyntaxError SyntaxWarning SystemError
SystemExit TabError True TypeError
UnboundLocalError UnicodeDecodeError UnicodeEncodeError UnicodeError
UnicodeTranslateError UnicodeWarning UserWarning ValueError
Warning ZeroDivisionError _ __debug__
__doc__ __import__ __name__ __package__
abs all any apply
basestring bin bool buffer
bytearray bytes callable chr
classmethod cmp coerce compile
complex copyright credits delattr
dict dir divmod enumerate
eval execfile exit file
filter float format frozenset
getattr globals hasattr hash
help hex id input
int intern isinstance issubclass
iter len license list
locals long map max
min next object oct
open ord pow print
property quit range raw_input
reduce reload repr reversed
round set setattr slice
sorted staticmethod str sum
super tuple type unichr
unicode vars xrange zip
</fo:block>
      </fo:block></fo:block><fo:block id="eval-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">eval()</fo:inline>: Evaluate an expression in source
      form</fo:marker><fo:block font-size="14.4pt">21.6. <fo:inline font-family="monospace">eval()</fo:inline>: Evaluate an expression in source
      form</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function evaluates a Python expression from a string.
        Example:
        <fo:block id="id468057" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; cent=100
&gt;&gt;&gt; eval('cent**3')
1000000
</fo:block>
        If you want to evaluate the expression using different name
        environments, refer to the <fo:basic-link external-destination="url(http://docs.python.org/library/functions.html)">official
        documentation</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">21</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">21</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/functions.html)">http://docs.python.org/library/functions.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.  For related features, see also <fo:basic-link internal-destination="execfile-function">Section 21.7, “<fo:inline font-family="monospace">execfile()</fo:inline>: Execute a Python source
      file”</fo:basic-link><fo:basic-link internal-destination="execfile-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="execfile-function"/>)</fo:inline></fo:basic-link> and <fo:basic-link internal-destination="exec-statement">Section 22.4, “The <fo:inline font-family="monospace">exec</fo:inline> statement: Execute Python source
      code”</fo:basic-link><fo:basic-link internal-destination="exec-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exec-statement"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="execfile-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">execfile()</fo:inline>: Execute a Python source
      file</fo:marker><fo:block font-size="14.4pt">21.7. <fo:inline font-family="monospace">execfile()</fo:inline>: Execute a Python source
      file</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To execute a sequence of Python statements in some file <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">F</fo:inline></fo:inline>, use this function:
        <fo:block id="id468110" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">execfile(<fo:inline font-style="italic" font-family="monospace">F</fo:inline>)
</fo:block>
        The function returns <fo:inline font-family="monospace">None</fo:inline>.  For additional
        features that allow you to control the environment of the
        executed statements, see the <fo:basic-link external-destination="url(http://docs.python.org/library/functions.html)">official
        documentation</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">22</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">22</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/functions.html)">http://docs.python.org/library/functions.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
      </fo:block></fo:block><fo:block id="getattr-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">getattr()</fo:inline>: Retrieve an attribute of a
      given name</fo:marker><fo:block font-size="14.4pt">21.8. <fo:inline font-family="monospace">getattr()</fo:inline>: Retrieve an attribute of a
      given name</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use this function to retrieve an attribute of an instance
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline>, where the
        attribute's name is a string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>.
        <fo:block id="id468163" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">getattr(<fo:inline font-style="italic" font-family="monospace">I</fo:inline>, <fo:inline font-style="italic" font-family="monospace">s</fo:inline>[, <fo:inline font-style="italic" font-family="monospace">default</fo:inline>])
</fo:block>
        If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> has no
        attribute whose name matches <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>:
      </fo:block><fo:list-block id="id468189" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id468194" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If you supplied the optional <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">default</fo:inline></fo:inline> value, that value is
            returned.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id468206" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If you don't supply a <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">default</fo:inline></fo:inline> value and there is no such
            attribute in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline>, this function will raise an <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">AttributeError</fo:inline></fo:inline> exception.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Example:
      </fo:block><fo:block id="id468232" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class C:
...     def __init__(self, flavor):
...         self.flavor = flavor
... 
&gt;&gt;&gt; c=C('garlicky')
&gt;&gt;&gt; getattr(c, 'flavor')
'garlicky'
&gt;&gt;&gt; getattr(c, 'aroma', 'bland')
'bland'
&gt;&gt;&gt; getattr(c, 'aroma')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
AttributeError: C instance has no attribute 'aroma'
</fo:block></fo:block><fo:block id="globals-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">globals()</fo:inline>: Dictionary of global name
      bindings</fo:marker><fo:block font-size="14.4pt">21.9. <fo:inline font-family="monospace">globals()</fo:inline>: Dictionary of global name
      bindings</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function takes no arguments and returns a dictionary that
        represents the current global namespace.  The keys of this
        dictionary are globally defined names, and each corresponding
        value is the value for that name.  This example starts from a
        fresh execution of Python in conversational mode, so the
        global namespace has only the three special names discussed in
        <fo:basic-link internal-destination="dir-function">Section 21.5, “<fo:inline font-family="monospace">dir()</fo:inline>: Display a namespace's names”</fo:basic-link><fo:basic-link internal-destination="dir-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="dir-function"/>)</fo:inline></fo:basic-link>.
        <fo:block id="id468273" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; globals()
{'__builtins__': &lt;module '__builtin__' (built-in)&gt;, '__name__': '__main_
_', '__doc__': None}
&gt;&gt;&gt; finch = 'Fleep'
&gt;&gt;&gt; globals()
{'__builtins__': &lt;module '__builtin__' (built-in)&gt;, '__name__': '__main_
_', '__doc__': None, 'finch': 'Fleep'}
</fo:block>
        The special name <fo:inline font-family="monospace">__builtins__</fo:inline> is bound to a
        module; name <fo:inline font-family="monospace">__name__</fo:inline> is bound to the string
        <fo:inline font-family="monospace">'__main__'</fo:inline>; and <fo:inline font-family="monospace">__doc__</fo:inline> is bound
        to <fo:inline font-family="monospace">None</fo:inline>.  Note that defining a new name adds an
        entry to the result of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">globals()</fo:inline></fo:inline>.
      </fo:block></fo:block><fo:block id="hasattr-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">hasattr()</fo:inline>: Does a value have an attribute
      of a given name?</fo:marker><fo:block font-size="14.4pt">21.10. <fo:inline font-family="monospace">hasattr()</fo:inline>: Does a value have an attribute
      of a given name?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> tests to
        see if some instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> has an attribute whose name is given by some string
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>:
        <fo:block id="id468344" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">hasattr(<fo:inline font-style="italic" font-family="monospace">I</fo:inline>, <fo:inline font-style="italic" font-family="monospace">s</fo:inline>)
</fo:block>
        If this function returns <fo:inline font-family="monospace">True</fo:inline>, you can be sure
        that the instance has an attribute named <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>.  However, if it returns <fo:inline font-family="monospace">False</fo:inline>, attempts to access an attribute may still
        succeed, if the class provides dynamic attributes; see <fo:basic-link internal-destination="getattr-method">Section 26.3.14, “<fo:inline font-family="monospace">__getattr__()</fo:inline>: Handle a reference
        to an unknown attribute”</fo:basic-link><fo:basic-link internal-destination="getattr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattr-method"/>)</fo:inline></fo:basic-link>.  Example:
        <fo:block id="id468376" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class C:
...     def __init__(self, disc):
...         self.disk = disc
... 
&gt;&gt;&gt; c=C('five')
&gt;&gt;&gt; hasattr(c, 'disk')
True
&gt;&gt;&gt; hasattr(c, 'disc')
False
&gt;&gt;&gt; hasattr(c, 'jukebox')
False
&gt;&gt;&gt; c.jukebox = 'Nine'
&gt;&gt;&gt; hasattr(c, 'jukebox')
True
</fo:block>
      </fo:block></fo:block><fo:block id="id-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">id()</fo:inline>: Unique identifier</fo:marker><fo:block font-size="14.4pt">21.11. <fo:inline font-family="monospace">id()</fo:inline>: Unique identifier</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function, given any Python value, returns an integer
        value that uniquely identifies it.  In most implementations,
        it is the value's physical memory address.
        <fo:block id="id468410" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; i = 20
&gt;&gt;&gt; id(i)
137727456
</fo:block>
      </fo:block></fo:block><fo:block id="isinstance-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">isinstance()</fo:inline>: Is a value an instance of
      some class or type?</fo:marker><fo:block font-size="14.4pt">21.12. <fo:inline font-family="monospace">isinstance()</fo:inline>: Is a value an instance of
      some class or type?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use this <fo:basic-link internal-destination="predicates">predicate</fo:basic-link> to
        test whether some instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> is an instance of some class
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> (or an
        instance of any ancestor class from which <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> inherits).  The
        general form:
      </fo:block><fo:block id="id468460" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">isinstance(<fo:inline font-style="italic" font-family="monospace">I</fo:inline>, <fo:inline font-style="italic" font-family="monospace">C</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The second argument may be a class name, a type object, or
        a tuple of class names and type objects.  If a tuple,
        the function will test the instance against each of the
        class names or type objects.
      </fo:block><fo:block id="id468477" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class C1:
...     pass
... 
&gt;&gt;&gt; class C2(C1):
...     pass
... 
&gt;&gt;&gt; c2=C2()
&gt;&gt;&gt; isinstance(c2,C2)
True
&gt;&gt;&gt; isinstance(c2,C1)
True
&gt;&gt;&gt; isinstance(c2,int)
False
&gt;&gt;&gt; isinstance(1,type(55))
True
&gt;&gt;&gt; isinstance(1, (int, float, long))
True
&gt;&gt;&gt; isinstance('Ni', (int, float, long))
False</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A most useful built-in Python class is <fo:inline font-family="monospace">basestring</fo:inline>, which is the ancestor class of both
        <fo:inline font-family="monospace">str</fo:inline> and <fo:inline font-family="monospace">unicode</fo:inline> types.  It
        is intended for cases where you want to test whether
        something is a string but you don't care whether it is
        <fo:inline font-family="monospace">str</fo:inline> or <fo:inline font-family="monospace">unicode</fo:inline>.
      </fo:block><fo:block id="id468511" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; isinstance(42, str)
False
&gt;&gt;&gt; isinstance('x', str)
True
&gt;&gt;&gt; isinstance(u'x', str)
False
&gt;&gt;&gt; isinstance('x', basestring)
True
&gt;&gt;&gt; isinstance(u'x', basestring)
True
</fo:block></fo:block><fo:block id="issubclass-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">issubclass()</fo:inline>: Is a class a subclass of
      some other class?</fo:marker><fo:block font-size="14.4pt">21.13. <fo:inline font-family="monospace">issubclass()</fo:inline>: Is a class a subclass of
      some other class?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To test whether some class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C1</fo:inline></fo:inline> is a subclass of another class
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C2</fo:inline></fo:inline>, use this <fo:basic-link internal-destination="predicates">predicate</fo:basic-link>:
      </fo:block><fo:block id="id468559" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">issubclass(<fo:inline font-style="italic" font-family="monospace">C1</fo:inline>, <fo:inline font-style="italic" font-family="monospace">C2</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
      </fo:block><fo:block id="id468575" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class Polygon:
...     pass
... 
&gt;&gt;&gt; class Square(Polygon):
...     pass
... 
&gt;&gt;&gt; issubclass(Square, Polygon)
True
&gt;&gt;&gt; issubclass(Polygon, Square)
False
&gt;&gt;&gt; issubclass(Square, Square)
True
&gt;&gt;&gt; issubclass(unicode, basestring)
True
&gt;&gt;&gt; issubclass(str, basestring)
True
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For more information about the built-in <fo:inline font-family="monospace">basestring</fo:inline> class, see <fo:basic-link internal-destination="isinstance-function">Section 21.12, “<fo:inline font-family="monospace">isinstance()</fo:inline>: Is a value an instance of
      some class or type?”</fo:basic-link><fo:basic-link internal-destination="isinstance-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="isinstance-function"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="locals-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">locals()</fo:inline>: Dictionary of local name
      bindings</fo:marker><fo:block font-size="14.4pt">21.14. <fo:inline font-family="monospace">locals()</fo:inline>: Dictionary of local name
      bindings</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function returns a dictionary containing the names and
        values of all variables in the local namespace.  An example:
        <fo:block id="id468621" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def f(a, b=1):
...     c=2
...     print locals()
... 
&gt;&gt;&gt; f(5)
{'a': 5, 'c': 2, 'b': 1}
</fo:block>
        For related functions, see <fo:basic-link internal-destination="dir-function">Section 21.5, “<fo:inline font-family="monospace">dir()</fo:inline>: Display a namespace's names”</fo:basic-link><fo:basic-link internal-destination="dir-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="dir-function"/>)</fo:inline></fo:basic-link> and
        <fo:basic-link internal-destination="globals-function">Section 21.9, “<fo:inline font-family="monospace">globals()</fo:inline>: Dictionary of global name
      bindings”</fo:basic-link><fo:basic-link internal-destination="globals-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="globals-function"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="property-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">property()</fo:inline>: Create an access-controlled
      attribute</fo:marker><fo:block font-size="14.4pt">21.15. <fo:inline font-family="monospace">property()</fo:inline>: Create an access-controlled
      attribute</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of this function is to create a <fo:inline font-style="italic">property</fo:inline> of a class.  A property looks and
        acts like an ordinary attribute, except that you provide
        methods that control access to the attribute.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are three kinds of attribute access: read, write, and
        delete.  When you create a property, you can provide any or
        all of three methods that handle requests to read, write, or
        delete that attribute.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is the general method for adding a property named <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> to a new-style class
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline>.
        <fo:block id="id468686" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">class <fo:inline font-style="italic" font-family="monospace">C</fo:inline>(...):
    def <fo:inline font-style="italic" font-family="monospace">R</fo:inline>(self):
        ...<fo:inline font-style="italic" font-family="monospace">read method</fo:inline>...
    def <fo:inline font-style="italic" font-family="monospace">W</fo:inline>(self, value):
        ...<fo:inline font-style="italic" font-family="monospace">write method</fo:inline>...
    def <fo:inline font-style="italic" font-family="monospace">D</fo:inline>(self):
        ...<fo:inline font-style="italic" font-family="monospace">delete method</fo:inline>...
    <fo:inline font-style="italic" font-family="monospace">p</fo:inline> = property(<fo:inline font-style="italic" font-family="monospace">R</fo:inline>, <fo:inline font-style="italic" font-family="monospace">W</fo:inline>, <fo:inline font-style="italic" font-family="monospace">D</fo:inline>, <fo:inline font-style="italic" font-family="monospace">doc</fo:inline>)
    ...
</fo:block>
        where:
      </fo:block><fo:list-block id="id468735" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id468737" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"> <fo:inline font-style="italic" font-family="monospace">R</fo:inline></fo:inline> is a 
            <fo:inline font-style="italic">getter method</fo:inline>
            that takes no arguments and returns the effective
            attribute value.  If omitted, any attempt to read that
            attribute will raise <fo:inline font-family="monospace">AttributeError</fo:inline>.
           </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id468758" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
             <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">W</fo:inline></fo:inline> is a
             <fo:inline font-style="italic">setter method</fo:inline> that takes
             one argument and sets the attribute to that
             argument's value.  If omitted, any attempt to write
             that attribute will raise <fo:inline font-family="monospace">AttributeError</fo:inline>.
           </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id468778" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
             <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> is a
             <fo:inline font-style="italic">deleter method</fo:inline> that deletes
             the attribute.  If omitted, any attempt to delete
             that attribute will raise <fo:inline font-family="monospace">AttributeError</fo:inline>.
           </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id468797" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
             <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">doc</fo:inline></fo:inline> is a
             documentation string that describes the attribute.  If
             omitted, defaults to the documentation string of the
             <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">R</fo:inline></fo:inline> method if
             any, otherwise <fo:inline font-family="monospace">None</fo:inline>.
           </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
             To retrieve a property's documentation, use this form:
             <fo:block id="id468820" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">C</fo:inline>.<fo:inline font-style="italic" font-family="monospace">p</fo:inline>.__doc__
</fo:block>
             where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> is
             the class name and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is the property name.
           </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        As an example, here is a small class that defines a property
        named <fo:inline font-family="monospace">x</fo:inline>:
      </fo:block><fo:block id="id468851" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">class C(object):
    def __init__(self):
        self.__x=None
    def getx(self):
        print "+++ getx()"
        return self.__x
    def setx(self, v):
        print "+++ setx({0})".format(v)
        self.__x  =  v
    def delx(self):
        print "+++ delx()"
        del self.__x
    x=property(getx, setx, delx, "Me property 'x'.")
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Assuming that class is defined, here is a conversational
        example.
      </fo:block><fo:block id="id468864" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; c=C()
&gt;&gt;&gt; print c.x
+++ getx()
None
&gt;&gt;&gt; print C.x.__doc__
Me property 'x'.
&gt;&gt;&gt; c.x=15
+++ setx(15)
&gt;&gt;&gt; c.x
+++ getx()
15
&gt;&gt;&gt; del c.x
+++ delx()
&gt;&gt;&gt; c.x
+++ getx()
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  File "&lt;stdin&gt;", line 6, in getx
AttributeError: 'C' object has no attribute '_C__x'
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Starting with Python 2.6, this function can also be used
        as a decorator (see <fo:basic-link internal-destination="decorators">Section 24.4, “Decorators”</fo:basic-link><fo:basic-link internal-destination="decorators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="decorators"/>)</fo:inline></fo:basic-link>).  The
        decorated method is used as the getter method.
        Furthermore, the decorated method will itself have two
        decorators named <fo:inline font-family="monospace">setter</fo:inline> and <fo:inline font-family="monospace">deleter</fo:inline>; you can use these decorators to define
        setter and deleter methods.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For example, suppose you want to provide your class with
        a property named <fo:inline font-family="monospace">state</fo:inline>, and youra getter
        method returns a private attribute named <fo:inline font-family="monospace">._state</fo:inline>.  You could define it like this:
      </fo:block><fo:block id="id468905" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    @property
    def state(self):
        '''The internal state property.'''
        return self._state
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In this example, not only will the <fo:inline font-family="monospace">.state()</fo:inline> method be the getter for this property, but the
        documentation string <fo:inline font-family="monospace">'''The internal state
        property.'''</fo:inline> will be stored as the documentation
        string for the property.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Suppose further that you want to write a setter method
        that checks to make sure the argument is a positive
        number less than or equal to 2.  To use the built-in
        <fo:inline font-family="monospace">setter</fo:inline> method to write your setter, give
        the function the same name as the property, and decorate
        it with <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P</fo:inline>.setter</fo:inline> where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P</fo:inline></fo:inline> is the name of the previously
        defined getter:
      </fo:block><fo:block id="id468945" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    @state.setter
    def state(self, k):
        if not (0 &lt;= k &lt;= 2):
            raise ValueError("Must be 0 through 2 inclusive!")
        else:
            self._state = k
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Similarly, you can write a deleter method by decorating
        it with <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P</fo:inline>.deleter</fo:inline>:
      </fo:block><fo:block id="id468964" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    @state.deleter
    def state(self):
        del self._state
</fo:block></fo:block><fo:block id="reload-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">reload()</fo:inline>: Reload a module</fo:marker><fo:block font-size="14.4pt">21.16. <fo:inline font-family="monospace">reload()</fo:inline>: Reload a module</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function reloads a previously loaded module (assuming you
        loaded it with the syntax “<fo:inline font-family="monospace">import <fo:inline font-style="italic" font-family="monospace">moduleName</fo:inline></fo:inline>”.  It is intended
        for conversational use, where you have edited the source file
        for a module and want to test it without leaving Python and
        starting it again.  General form:
        <fo:block id="id469002" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">reload(<fo:inline font-style="italic" font-family="monospace">moduleName</fo:inline>)
</fo:block>
        The <fo:inline font-family="monospace">moduleName</fo:inline> is the actual name of the
        module, not a string containing its name.  For example, if you
        have imported a module like this:
        <fo:block id="id469016" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">import parrot
</fo:block>
        you would say “<fo:inline font-family="monospace">reload(parrot)</fo:inline>”,
        not “<fo:inline font-family="monospace">reload('parrot')</fo:inline>”.
      </fo:block></fo:block><fo:block id="repr-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">repr()</fo:inline>: Representation</fo:marker><fo:block font-size="14.4pt">21.17. <fo:inline font-family="monospace">repr()</fo:inline>: Representation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">repr</fo:inline> function attempts to convert any
        value to a string.  Unlike the <fo:inline font-family="monospace">str()</fo:inline> function,
        it attempts to display the value in Python source form, that
        is, in a form suitable for passing to <fo:inline font-family="monospace">eval()</fo:inline>
        (see <fo:basic-link internal-destination="eval-function">Section 21.6, “<fo:inline font-family="monospace">eval()</fo:inline>: Evaluate an expression in source
      form”</fo:basic-link><fo:basic-link internal-destination="eval-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="eval-function"/>)</fo:inline></fo:basic-link>).  It works the same as
        the <fo:inline font-family="monospace">`...`</fo:inline> operator.  Examples:
      </fo:block><fo:block id="id469077" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s='Wensleydale'
&gt;&gt;&gt; print s
Wensleydale
&gt;&gt;&gt; print str(s)
Wensleydale
&gt;&gt;&gt; print repr(s)
'Wensleydale'
&gt;&gt;&gt; print `s`
'Wensleydale'
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To specify the behavior of the <fo:inline font-family="monospace">repr()</fo:inline> when
        it is applied to an instance of a user-defined class, see
        <fo:basic-link internal-destination="repr-method">Section 26.3.19, “<fo:inline font-family="monospace">__repr__()</fo:inline>: String representation”</fo:basic-link><fo:basic-link internal-destination="repr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="repr-method"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block><fo:block id="setattr-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">setattr()</fo:inline>: Set an attribute</fo:marker><fo:block font-size="14.4pt">21.18. <fo:inline font-family="monospace">setattr()</fo:inline>: Set an attribute</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function is the inverse of <fo:basic-link internal-destination="getattr-function">Section 21.8, “<fo:inline font-family="monospace">getattr()</fo:inline>: Retrieve an attribute of a
      given name”</fo:basic-link><fo:basic-link internal-destination="getattr-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattr-function"/>)</fo:inline></fo:basic-link>: it sets the value of some attribute whose name is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">A</fo:inline></fo:inline> from an instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> to a new value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>:
      </fo:block><fo:block id="id469142" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">setattr(<fo:inline font-style="italic" font-family="monospace">I</fo:inline>, <fo:inline font-style="italic" font-family="monospace">A</fo:inline>, <fo:inline font-style="italic" font-family="monospace">V</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Example:
        </fo:block><fo:block id="id469161" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class C5:
...     def __init__(self, x):
...         self.x = x
... 
&gt;&gt;&gt; c=C5(14)
&gt;&gt;&gt; c.x
14
&gt;&gt;&gt; setattr(c, 'x', 19)
&gt;&gt;&gt; c.x
19
&gt;&gt;&gt; setattr(c, 'violateEncapsulation', True)
&gt;&gt;&gt; c.violateEncapsulation
True
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        As the last lines above show, you can use this function
        to create attributes that didn't even exist before.
        However, this is often considered bad style, as it
        violates the principle of <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming))">encapsulation</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">23</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">23</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming))">http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
      </fo:block></fo:block><fo:block id="slice-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">slice()</fo:inline>: Create a slice instance</fo:marker><fo:block font-size="14.4pt">21.19. <fo:inline font-family="monospace">slice()</fo:inline>: Create a slice instance</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function creates an instance of type <fo:inline font-family="monospace">slice</fo:inline>.  A slice instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> can be used to index a sequence
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> in an
        expression of the form <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">I</fo:inline>]</fo:inline>.  Here is the general form:

        <fo:block id="id469225" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">slice(<fo:inline font-style="italic" font-family="monospace">start</fo:inline>, <fo:inline font-style="italic" font-family="monospace">limit</fo:inline>, <fo:inline font-style="italic" font-family="monospace">step</fo:inline>)
</fo:block>

        The result is a slice that is equivalent to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">start</fo:inline>:<fo:inline font-style="italic" font-family="monospace">limit</fo:inline>:<fo:inline font-style="italic" font-family="monospace">step</fo:inline></fo:inline>.  Use <fo:inline font-family="monospace">None</fo:inline> to get the default
        value for any of the three arguments.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:

        <fo:block id="id469261" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; r = range(9)
&gt;&gt;&gt; r
[0, 1, 2, 3, 4, 5, 6, 7, 8]
&gt;&gt;&gt; r[::2]
[0, 2, 4, 6, 8]
&gt;&gt;&gt; r[slice(None, None, 2)]
[0, 2, 4, 6, 8]
&gt;&gt;&gt; r[3:7]
[3, 4, 5, 6]
&gt;&gt;&gt; r[slice(3,7)]
[3, 4, 5, 6]
&gt;&gt;&gt; r[1::2]
[1, 3, 5, 7]
&gt;&gt;&gt; odds = slice(1, None, 2)
&gt;&gt;&gt; r[odds]
[1, 3, 5, 7]
&gt;&gt;&gt; 'roygbiv'[odds]
'ogi'
</fo:block>
      </fo:block></fo:block><fo:block id="staticmethod-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">staticmethod()</fo:inline>: Create a static
      method</fo:marker><fo:block font-size="14.4pt">21.20. <fo:inline font-family="monospace">staticmethod()</fo:inline>: Create a static
      method</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of the <fo:inline font-family="monospace">staticmethod</fo:inline> function is to
        convert a method into a <fo:inline font-style="italic">static method</fo:inline>.  See <fo:basic-link internal-destination="static-methods">Section 26.4, “Static methods”</fo:basic-link><fo:basic-link internal-destination="static-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="static-methods"/>)</fo:inline></fo:basic-link> for definitions and
        usage.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Typically you will declare a static method using the decorator
        syntax, like this:
      <fo:block id="id469312" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    @staticmethod
    def <fo:inline font-style="italic" font-family="monospace">methodName</fo:inline>(...):
        <fo:inline font-style="italic" font-family="monospace">method body</fo:inline>
</fo:block>
        An alternative is to place a line like this <fo:inline font-style="italic">after</fo:inline> the method's definition (at the same
        indentation level as its <fo:inline font-family="monospace">def</fo:inline>):
        <fo:block id="id469332" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    <fo:inline font-style="italic" font-family="monospace">methodName</fo:inline> = staticmethod(<fo:inline font-style="italic" font-family="monospace">methodName</fo:inline>)
</fo:block>
      </fo:block></fo:block><fo:block id="super-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">super()</fo:inline>: Superclass</fo:marker><fo:block font-size="14.4pt">21.21. <fo:inline font-family="monospace">super()</fo:inline>: Superclass</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of this function is to retrieve the
        superclass of a given type or object.  Superclasses are
        beyond the scope of this document; see the <fo:basic-link external-destination="url(http://docs.python.org/library/functions.html)">online documentation for
        built-in functions</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">24</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">24</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/functions.html)">http://docs.python.org/library/functions.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> (scroll down).
      </fo:block></fo:block><fo:block id="vars-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">vars()</fo:inline>: Local variables</fo:marker><fo:block font-size="14.4pt">21.22. <fo:inline font-family="monospace">vars()</fo:inline>: Local variables</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This function returns a dictionary that represents a symbol
        table: its keys are variable names, and each key's
        corresponding value is its bound value.  The official
        documentation warns you not to change anything in this
        dictionary, or Bad Things Will Happen.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are two forms of call:
      </fo:block><fo:block id="id469404" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id469406" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">vars()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the local symbol table.
            </fo:block></fo:block><fo:block id="id469422" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">vars(<fo:inline font-style="italic" font-family="monospace">ns</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the symbol table of a namespace <fo:inline font-style="italic" font-family="monospace">ns</fo:inline>, where a namespace can be a module,
              an instance, or a class.
            </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Compare the similar functions <fo:basic-link internal-destination="dir-function">Section 21.5, “<fo:inline font-family="monospace">dir()</fo:inline>: Display a namespace's names”</fo:basic-link><fo:basic-link internal-destination="dir-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="dir-function"/>)</fo:inline></fo:basic-link>,
        <fo:basic-link internal-destination="locals-function">Section 21.14, “<fo:inline font-family="monospace">locals()</fo:inline>: Dictionary of local name
      bindings”</fo:basic-link><fo:basic-link internal-destination="locals-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="locals-function"/>)</fo:inline></fo:basic-link>, and <fo:basic-link internal-destination="globals-function">Section 21.9, “<fo:inline font-family="monospace">globals()</fo:inline>: Dictionary of global name
      bindings”</fo:basic-link><fo:basic-link internal-destination="globals-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="globals-function"/>)</fo:inline></fo:basic-link>.
      </fo:block></fo:block></fo:block><fo:block id="simple-statements"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Simple statements</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">22. Simple statements</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python statement types are divided into two groups.  Simple
      statements, that are executed sequentially and do not affect the
      flow of control, are described first.  Compound statements,
      which may affect the sequence of execution, are discussed in
      <fo:basic-link internal-destination="compound-statements">Section 23, “Compound statements”</fo:basic-link><fo:basic-link internal-destination="compound-statements"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="compound-statements"/>)</fo:inline></fo:basic-link>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Here, for your convenience, is a table of all the Python
      statement types, and the sections where they are described.
      The first one, the assignment statement, does not have an
      initial keyword: an assignment statement is a statement
      of the form “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">variable</fo:inline> = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>”.
    </fo:block><fo:block id="id469518" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>Assignment</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="assignment-statement">Section 22.1, “The assignment statement: <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline> = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>”</fo:basic-link><fo:basic-link internal-destination="assignment-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="assignment-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">assert</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="assert-statement">Section 22.2, “The <fo:inline font-family="monospace">assert</fo:inline> statement: Verify
      preconditions”</fo:basic-link><fo:basic-link internal-destination="assert-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="assert-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">break</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="break-statement">Section 23.2, “The <fo:inline font-family="monospace">break</fo:inline> statement: Exit a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline> loop”</fo:basic-link><fo:basic-link internal-destination="break-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="break-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">continue</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="continue-statement">Section 23.3, “The <fo:inline font-family="monospace">continue</fo:inline> statement: Jump to the next
      cycle of a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="continue-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="continue-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">del</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="del-statement">Section 22.3, “The <fo:inline font-family="monospace">del</fo:inline> statement: Delete a name or part
      of a value”</fo:basic-link><fo:basic-link internal-destination="del-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="del-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">elif</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="if-statement">Section 23.5, “The <fo:inline font-family="monospace">if</fo:inline> statement: Conditional
      execution”</fo:basic-link><fo:basic-link internal-destination="if-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="if-statement"/>)</fo:inline></fo:basic-link> and
              <fo:basic-link internal-destination="try-statement">Section 23.8, “The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions”</fo:basic-link><fo:basic-link internal-destination="try-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="try-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">else</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="if-statement">Section 23.5, “The <fo:inline font-family="monospace">if</fo:inline> statement: Conditional
      execution”</fo:basic-link><fo:basic-link internal-destination="if-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="if-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">except</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="try-statement">Section 23.8, “The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions”</fo:basic-link><fo:basic-link internal-destination="try-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="try-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">exec</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="exec-statement">Section 22.4, “The <fo:inline font-family="monospace">exec</fo:inline> statement: Execute Python source
      code”</fo:basic-link><fo:basic-link internal-destination="exec-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exec-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">finally</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="try-statement">Section 23.8, “The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions”</fo:basic-link><fo:basic-link internal-destination="try-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="try-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">for</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="for-statement">Section 23.4, “The <fo:inline font-family="monospace">for</fo:inline> statement: Iteration over a
      sequence”</fo:basic-link><fo:basic-link internal-destination="for-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="for-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">from</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="import-statement">Section 22.6, “The <fo:inline font-family="monospace">import</fo:inline> statement: Use a
      module”</fo:basic-link><fo:basic-link internal-destination="import-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="import-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">global</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="global-statement">Section 22.5, “The <fo:inline font-family="monospace">global</fo:inline> statement: Declare access to a
      global name”</fo:basic-link><fo:basic-link internal-destination="global-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="global-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">if</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="if-statement">Section 23.5, “The <fo:inline font-family="monospace">if</fo:inline> statement: Conditional
      execution”</fo:basic-link><fo:basic-link internal-destination="if-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="if-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">import</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="import-statement">Section 22.6, “The <fo:inline font-family="monospace">import</fo:inline> statement: Use a
      module”</fo:basic-link><fo:basic-link internal-destination="import-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="import-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">pass</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="pass-statement">Section 22.7, “The <fo:inline font-family="monospace">pass</fo:inline> statement: Do nothing”</fo:basic-link><fo:basic-link internal-destination="pass-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="pass-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">print</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="print-statement">Section 22.8, “The <fo:inline font-family="monospace">print</fo:inline> statement: Display output
      values”</fo:basic-link><fo:basic-link internal-destination="print-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="print-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">raise</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="raise-statement">Section 23.6, “The <fo:inline font-family="monospace">raise</fo:inline> statement: Cause an
      exception”</fo:basic-link><fo:basic-link internal-destination="raise-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="raise-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">return</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="return-statement">Section 23.7, “The <fo:inline font-family="monospace">return</fo:inline> statement: Exit a function or
      method”</fo:basic-link><fo:basic-link internal-destination="return-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="return-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">try</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="try-statement">Section 23.8, “The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions”</fo:basic-link><fo:basic-link internal-destination="try-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="try-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">yield</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block>
              <fo:basic-link internal-destination="yield-statement">Section 23.10, “The <fo:inline font-family="monospace">yield</fo:inline> statement: Generate one result
      from a generator”</fo:basic-link><fo:basic-link internal-destination="yield-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="yield-statement"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block id="assignment-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The assignment statement: <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline> = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline></fo:marker><fo:block font-size="14.4pt">22.1. The assignment statement: <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline> = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of Python's assignment statement is to
        associate names with values in your program.  It is the
        only statement that does not start with a keyword.  An
        assignment statement is a line containing at least one
        single equal sign (<fo:inline font-family="monospace">=</fo:inline>) that is not inside
        parentheses.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is the general form of an assignment statement:
      </fo:block><fo:block id="id470019" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">target<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline> = <fo:inline font-style="italic" font-family="monospace">target<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline> = ... = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline>
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In most cases, there will be one <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">target</fo:inline></fo:inline> that is a name.  Python will
        evaluate the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>, reducing it to a single value, and then <fo:inline font-style="italic">bind</fo:inline> that name to the that value.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A <fo:inline font-style="italic">binding</fo:inline> is an association between a
        name and a value.  It is important to note that in Python,
        unlike many other languages, names themselves are not
        associated with a specific type.  A name is just a label, and
        it can be bound to any value of any type at any time.  In this
        example, name <fo:inline font-family="monospace">x</fo:inline> is bound first to an <fo:inline font-family="monospace">int</fo:inline> value 5, then to a <fo:inline font-family="monospace">str</fo:inline> value <fo:inline font-family="monospace">'Some string'</fo:inline>.
      </fo:block><fo:block id="id470080" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = 5
&gt;&gt;&gt; x
5
&gt;&gt;&gt; x = 'Some string'
&gt;&gt;&gt; print x
Some string
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If a target name was already bound to a value, the name is
        unbound from that value before it is rebound to the new value.
        For each value in a running program, Python keeps track of how
        many names are bound to that value.  When the value has no
        more names bound to it, the value's memory is automatically
        recycled.  If the value is an instance of a class, its
        destructor may be called; see <fo:basic-link internal-destination="del-method">Section 26.3.8, “<fo:inline font-family="monospace">__del__()</fo:inline>: Destructor”</fo:basic-link><fo:basic-link internal-destination="del-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="del-method"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are several other forms of assignment statement.
      </fo:block><fo:block id="id470104" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id470106" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline> = <fo:inline font-style="italic" font-family="monospace">n<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline> = ... = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If you supply multiple target names, each target will be
              assigned the value of the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>.  Example:
              <fo:block id="id470137" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; i = j = errorCount = 0
&gt;&gt;&gt; i
0
&gt;&gt;&gt; j
0
&gt;&gt;&gt; errorCount
0
</fo:block>
            </fo:block></fo:block><fo:block id="id470147" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">n<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, ... = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If the target is a comma-separated list of names, the
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>
              must evaluate to an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>
 with the same number of
              values as there are names.  Each value in the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline> is then
              bound to the corresponding name.  Example:
            </fo:block><fo:block id="id470192" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; L = ["Bell's Blue", "male", 6]
&gt;&gt;&gt; name, sex, age = L
&gt;&gt;&gt; name
"Bell's Blue"
&gt;&gt;&gt; sex
'male'
&gt;&gt;&gt; age
6
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              This feature, called “unpacking,”
              generalizes to arbritrarily nested sequences within
              sequences.  You may group targets inside parentheses
              <fo:inline font-family="monospace">(...)</fo:inline> or brackets <fo:inline font-family="monospace">[...]</fo:inline> to
              show the levels of nesting.  Here is an example:
              <fo:block id="id470213" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; s = [1, [2, 3, [4, 5], 6], 7]
&gt;&gt;&gt; a, (b, c, [d, e], f), g = s
&gt;&gt;&gt; print a,b,c,d,e,f,g
1 2 3 4 5 6 7
</fo:block>
              All the assignments are effectively simultaneous.
              Therefore, you can safely exchange the values of two
              variables using a statement like this:
              <fo:block id="id470222" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline> = <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>
</fo:block>
              Examples:
              <fo:block id="id470248" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; a=5; b=9998
&gt;&gt;&gt; print a,b
5 9998
&gt;&gt;&gt; a,b=b,a
&gt;&gt;&gt; print a,b
9998 5
&gt;&gt;&gt; c=432
&gt;&gt;&gt; a,b,c = b,c,a
&gt;&gt;&gt; print a,b,c
5 432 9998
</fo:block>
            </fo:block></fo:block><fo:block id="id470259" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline>[<fo:inline font-style="italic" font-family="monospace">i</fo:inline>] = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> is
              an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link>, the
              expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>
              must evaluate to an integer.  The element after position
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> is
              replaced by the value of the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>.
            </fo:block><fo:block id="id470308" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; L = range(6)
&gt;&gt;&gt; L
[0, 1, 2, 3, 4, 5]
&gt;&gt;&gt; L[2]
2
&gt;&gt;&gt; L[2] = 888
&gt;&gt;&gt; L
[0, 1, 888, 3, 4, 5]
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> is a
              dictionary (or other mapping), and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> does not have a key-value
              pair whose key equals <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">index</fo:inline></fo:inline>, a new key-value pair is
              added to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> with key <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>
              and value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>.
              <fo:block id="id470348" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; d={'pudding': 'figgy'}
&gt;&gt;&gt; d
{'pudding': 'figgy'}
&gt;&gt;&gt; d['tart'] = 'strawberry'
&gt;&gt;&gt; d
{'pudding': 'figgy', 'tart': 'strawberry'}
&gt;&gt;&gt; d["tart"] = "rat"
&gt;&gt;&gt; d
{'pudding': 'figgy', 'tart': 'rat'}
</fo:block>
              As the last two lines show, if the dictionary already
              has a key-value pair for key <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>, the old value of that pair is
              replaced by the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline> value.
            </fo:block></fo:block><fo:block id="id470370" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline>[<fo:inline font-style="italic" font-family="monospace">start</fo:inline>:<fo:inline font-style="italic" font-family="monospace">end</fo:inline>] =
            <fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> is a
              list or other mutable sequence, you can replace the
              elements of a slice of that sequence with the elements
              from some sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  (For an explanation of slicing, see <fo:basic-link internal-destination="sequence-common">Section 8.1, “Operations common to all the sequence types”</fo:basic-link><fo:basic-link internal-destination="sequence-common"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sequence-common"/>)</fo:inline></fo:basic-link>.)  This may result in
              addition, deletion, or replacement of the elements of
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline>.  Some
              examples will give the flavor of this kind of
              assignment.
              <fo:block id="id470418" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; L=range(6)
&gt;&gt;&gt; L
[0, 1, 2, 3, 4, 5]
&gt;&gt;&gt; L[2:4]
[2, 3]
&gt;&gt;&gt; L[2:4] = [111, 222, 333, 444, 555]
&gt;&gt;&gt; L
[0, 1, 111, 222, 333, 444, 555, 4, 5]
&gt;&gt;&gt; L[3]
222
&gt;&gt;&gt; L[3:3]
[]
&gt;&gt;&gt; L[3:3]  =  [41.0, 42.0, 43.0]
&gt;&gt;&gt; L
[0, 1, 111, 41.0, 42.0, 43.0, 222, 333, 444, 555, 4, 5]
&gt;&gt;&gt; L[4:7]
[42.0, 43.0, 222]
&gt;&gt;&gt; L[4:7] = ()
&gt;&gt;&gt; L
[0, 1, 111, 41.0, 333, 444, 555, 4, 5]
</fo:block>
            </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" start-indent="0.25in" end-indent="0.25in" border="4pt solid #d0d0d0" padding="4pt" id="id470434"><fo:block keep-with-next="always" font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The “<fo:inline font-family="monospace">=</fo:inline>” signs in an assignment
          is <fo:inline font-style="italic">not</fo:inline> an operator, as it is in
          some other languages.  You cannot assign a value to a name
          inside an expression; an assignment statement must stand alone.
          <fo:block id="id470447" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; a = 5 + (a=7)
  File "&lt;stdin&gt;", line 1
    a = 5 + (a=7)
              ^
SyntaxError: invalid syntax
</fo:block>
        </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Python also supports <fo:inline font-style="italic">augmented
        assignment</fo:inline>.  In this form, you may place certain
        operators <fo:inline font-style="italic">before</fo:inline> the “<fo:inline font-family="monospace">=</fo:inline>”.  Here is the general form:
        <fo:block id="id470472" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">name</fo:inline> <fo:inline font-style="italic" font-family="monospace">operator</fo:inline>= <fo:inline font-style="italic" font-family="monospace">expression</fo:inline>
</fo:block>
        An assignment of this general form has the same semantics as
        this form:
        <fo:block id="id470487" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">name</fo:inline> = <fo:inline font-style="italic" font-family="monospace">name</fo:inline> <fo:inline font-style="italic" font-family="monospace">operator</fo:inline> <fo:inline font-style="italic" font-family="monospace">expression</fo:inline>
</fo:block>
        Supported <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">operator</fo:inline></fo:inline>
        symbols include:
        <fo:block id="id470511" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">+  -  *  /  %  **  &gt;&gt;  &lt;&lt;  &amp;  ^  |
</fo:block>
        Examples:
        <fo:block id="id470517" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; i = 1
&gt;&gt;&gt; i += 3
&gt;&gt;&gt; i
4
&gt;&gt;&gt; i *= 5
&gt;&gt;&gt; i
20
</fo:block>
      </fo:block></fo:block><fo:block id="assert-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">assert</fo:inline> statement: Verify
      preconditions</fo:marker><fo:block font-size="14.4pt">22.2. The <fo:inline font-family="monospace">assert</fo:inline> statement: Verify
      preconditions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To check for “shouldn't happen” errors, you can
        use an <fo:inline font-family="monospace">assert</fo:inline> statement:

        <fo:block id="id470553" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">assert <fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>
assert <fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>
</fo:block>

        where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline> is some condition that should be
        true.  If the condition is false, Python raises an <fo:inline font-family="monospace">AssertionError</fo:inline> exception (see <fo:basic-link internal-destination="exceptions">Section 25, “Exceptions: Error signaling and handling”</fo:basic-link><fo:basic-link internal-destination="exceptions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exceptions"/>)</fo:inline></fo:basic-link>).
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If a second expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline> is
        provided, the value of that expression is passed with the
        exception.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Assertion checking can be disabled by running Python
        with the <fo:inline font-family="monospace">-O</fo:inline> (optimize) option.
      </fo:block></fo:block><fo:block id="del-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">del</fo:inline> statement: Delete a name or part
      of a value</fo:marker><fo:block font-size="14.4pt">22.3. The <fo:inline font-family="monospace">del</fo:inline> statement: Delete a name or part
      of a value</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of the <fo:inline font-family="monospace">del</fo:inline> statement is to
        delete things.  The general form is:
        <fo:block id="id470636" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">del <fo:inline font-style="italic" font-family="monospace">L<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">L<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, ...
</fo:block>

        where each <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> is an item to be deleted.  You
        can delete:
      </fo:block><fo:list-block id="id470662" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id470664" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A name.  For example, the statement

            <fo:block id="id470669" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">del i, j
</fo:block>

            causes names <fo:inline font-family="monospace">i</fo:inline> and <fo:inline font-family="monospace">j</fo:inline> to
            become <fo:inline font-style="italic">unbound</fo:inline>, that is,
            undefined.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id470688" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            An element or slice from a list.  For example:

            <fo:block id="id470693" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">del L[5], M[-2:]
</fo:block>
            would delete the sixth element of list <fo:inline font-family="monospace">L</fo:inline> and the last two elements of list <fo:inline font-family="monospace">M</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id470709" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            One entry in a dictionary.  For example, if
            <fo:inline font-family="monospace">D</fo:inline> is a dictionary,

            <fo:block id="id470717" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">del D['color']
</fo:block>

            would delete from <fo:inline font-family="monospace">D</fo:inline> the entry for key
            <fo:inline font-family="monospace">'color'</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="exec-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">exec</fo:inline> statement: Execute Python source
      code</fo:marker><fo:block font-size="14.4pt">22.4. The <fo:inline font-family="monospace">exec</fo:inline> statement: Execute Python source
      code</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To dynamically execute Python code, use a statement of
        this form:
      </fo:block><fo:block id="id470759" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">exec <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline> [in <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline> [, <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>]]
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline> specifies what to execute, and may be a
        string containing Python source code, an open file, or
        a code object.
        If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline>
        is omitted, the code is executed in the local scope.
        If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline>
        is given but <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>
        is not, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline>
        is a dictionary used to define the names in the global and local
        scopes.
        If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>
        is given, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline>
        is a dictionary defining the global scope, and
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>
        is a dictionary defining the local scope.
      </fo:block></fo:block><fo:block id="global-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">global</fo:inline> statement: Declare access to a
      global name</fo:marker><fo:block font-size="14.4pt">22.5. The <fo:inline font-family="monospace">global</fo:inline> statement: Declare access to a
      global name</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of the <fo:inline font-family="monospace">global</fo:inline> statement is to
        declare that a function or method intends to change the
        value of a name from the global scope, that is, a name
        from outside the function.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        When Python reads the definition of a function, it checks
        each name to see if that name's value may possibly be
        changed anywhere in the function—that is, if the
        name shows up on the left side of an assignment
        statement, or as the induction variable in a <fo:inline font-family="monospace">for</fo:inline> loop, or in any other context where the
        name's value can be changed.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Such names are assumed to be local to the function unless
        you override this behavior by declaring that name in a
        <fo:inline font-family="monospace">global</fo:inline> statement.  Here is the general form:
        <fo:block id="id470887" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">global <fo:inline font-style="italic" font-family="monospace">name<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">name<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Some conversational examples may help make this clear.
        Suppose you define a global variable <fo:inline font-family="monospace">x</fo:inline>;
        you can use that name inside a function.
        <fo:block id="id470912" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = 5
&gt;&gt;&gt; def show1():
...     print x
... 
&gt;&gt;&gt; show1()
5
</fo:block>

        However, if you assign a value to <fo:inline font-family="monospace">x</fo:inline> inside
        the function, the name <fo:inline font-family="monospace">x</fo:inline> is now local to
        the function.  It is said to <fo:inline font-style="italic">shadow</fo:inline> the global variable with the same
        name, and any changes to the value associated with that
        name inside the function will operate on a local copy,
        and will not affect the value of the global variable
        <fo:inline font-family="monospace">x</fo:inline>.

        <fo:block id="id470935" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = 5
&gt;&gt;&gt; def show2():
...     x = 42
...     print x
... 
&gt;&gt;&gt; show2()
42
&gt;&gt;&gt; x
5
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        But if you actually do want to change the value of
        the global variable inside the function, just declare it
        global like this:

        <fo:block id="id470947" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = 5
&gt;&gt;&gt; def show3():
...     global x
...     x = 42
...     print x
... 
&gt;&gt;&gt; show3()
42
&gt;&gt;&gt; x
42
</fo:block>

        Notice what happens in this case:

        <fo:block id="id470955" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = 5
&gt;&gt;&gt; def show4():
...     print x, "Before"
...     x = 42
...     print x, "After"
... 
&gt;&gt;&gt; show4()
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  File "&lt;stdin&gt;", line 2, in show4
UnboundLocalError: local variable 'x' referenced before assignment
</fo:block>

        Because the line “<fo:inline font-family="monospace">x = 42</fo:inline>”
        changes the value of <fo:inline font-family="monospace">x</fo:inline>, and because it is
        not declared as a global, execution fails because the
        value of the local variable <fo:inline font-family="monospace">x</fo:inline> is used
        before that variable has had a value assigned to it.
      </fo:block></fo:block><fo:block id="import-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">import</fo:inline> statement: Use a
      module</fo:marker><fo:block font-size="14.4pt">22.6. The <fo:inline font-family="monospace">import</fo:inline> statement: Use a
      module</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        One of the cornerstones of Python's design philosophy is
        to keep the language relatively small and well-defined,
        and move all non-essential functionality to library
        modules.  The <fo:inline font-family="monospace">import</fo:inline> and <fo:inline font-family="monospace">from</fo:inline> statements allow your programs to use items from these
        library modules.
      </fo:block><fo:list-block id="id471010" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id471015" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Your Python installation will come with a large
            collection of released modules.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id471022" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            You can also create your own modules.  Just place
            Python statements defining variables, functions,
            and classes into a file whose name ends in
            “<fo:inline font-family="monospace">.py</fo:inline>”.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are two different statements you can use to import
        items from a module:
      </fo:block><fo:list-block id="id471041" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id471045" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The <fo:inline font-family="monospace">from</fo:inline> statement copies items from a
            module into your namespace.  After importing an item
            in this way, you can refer to the item simply by its
            name.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            General forms:

            <fo:block id="id471059" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">from <fo:inline font-style="italic" font-family="monospace">moduleName</fo:inline> import *
from <fo:inline font-style="italic" font-family="monospace">moduleName</fo:inline> import <fo:inline font-style="italic" font-family="monospace">name<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">name<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...
</fo:block>

            The first form imports all the items from the module
            named <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">moduleName</fo:inline></fo:inline>.  If you want to import only specific
            items, use the second form, and enumerate the names
            you want from that module.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id471092" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The <fo:inline font-family="monospace">import</fo:inline> statement makes an entire
            module's content available to you as a separate
            namespace.  To refer to some item named <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">N</fo:inline></fo:inline> in a module
            named <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">M</fo:inline></fo:inline>,
            use the dot notation, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">M</fo:inline>.<fo:inline font-style="italic" font-family="monospace">N</fo:inline></fo:inline>.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            Here is the general form:

            <fo:block id="id471122" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">import <fo:inline font-style="italic" font-family="monospace">moduleName</fo:inline>, ...
</fo:block>

            If you want to use some module <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">M</fo:inline></fo:inline> in this way, but you want
            to change the name to some different name <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">A</fo:inline></fo:inline>, use this
            form:

            <fo:block id="id471142" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">import <fo:inline font-style="italic" font-family="monospace">M</fo:inline> as <fo:inline font-style="italic" font-family="monospace">A</fo:inline>
</fo:block>

          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here are some examples that use the standard <fo:inline font-family="monospace">math</fo:inline> module that is always available in a proper
        Python install.  This module has functions such as <fo:inline font-family="monospace">sqrt()</fo:inline> (square root), as well as variables such
        as <fo:inline font-family="monospace">pi</fo:inline>.  (Although π is a constant
        in the mathematical sense, the name <fo:inline font-family="monospace">pi</fo:inline> is
        a variable in the Python sense.)

        <fo:block id="id471178" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; from math import *
&gt;&gt;&gt; sqrt(16)
4.0
&gt;&gt;&gt; pi
3.1415926535897931
</fo:block>

        If you wanted only the <fo:inline font-family="monospace">sqrt</fo:inline> function and
        the variable <fo:inline font-family="monospace">pi</fo:inline>, this statement would do
        the job:

        <fo:block id="id471193" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">from math import sqrt, pi
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Now some examples of the second form.

        <fo:block id="id471202" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; import math
&gt;&gt;&gt; math.sqrt(25)
5.0
&gt;&gt;&gt; math.pi
3.1415926535897931
</fo:block>

        Suppose your program already used the name <fo:inline font-family="monospace">math</fo:inline> for something else, but you still want to
        use functions from the <fo:inline font-family="monospace">math</fo:inline> module.  You
        can import it under a different name like this:

        <fo:block id="id471218" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; import math as crunch
&gt;&gt;&gt; crunch.sqrt(25)
5.0
&gt;&gt;&gt; crunch.pi
3.1415926535897931
</fo:block>
      </fo:block></fo:block><fo:block id="pass-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">pass</fo:inline> statement: Do nothing</fo:marker><fo:block font-size="14.4pt">22.7. The <fo:inline font-family="monospace">pass</fo:inline> statement: Do nothing</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Python's <fo:inline font-family="monospace">pass</fo:inline> statement is a placeholder.
        It does nothing.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here's an example.  Suppose you have a function named
        <fo:inline font-family="monospace">arr()</fo:inline> that does something and then returns
        a <fo:inline font-family="monospace">True</fo:inline> or <fo:inline font-family="monospace">False</fo:inline> value.  You
        want to keep calling this function until it returns a
        false value.  This code would suffice:

        <fo:block id="id471268" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">while arr():
    pass
</fo:block>
      </fo:block></fo:block><fo:block id="print-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">print</fo:inline> statement: Display output
      values</fo:marker><fo:block font-size="14.4pt">22.8. The <fo:inline font-family="monospace">print</fo:inline> statement: Display output
      values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use this statement to display values on the standard
        output stream.  General form:

        <fo:block id="id471298" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">print <fo:inline font-style="italic" font-family="monospace">thing<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">thing<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...[,]
</fo:block>

        Each <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">thing</fo:inline></fo:inline>
        must be a string, or a value that can be converted into a
        string by the <fo:inline font-family="monospace">str()</fo:inline> function (see <fo:basic-link internal-destination="str-function">Section 20.40, “<fo:inline font-family="monospace">str()</fo:inline>: Convert to <fo:inline font-family="monospace">str</fo:inline>
      type”</fo:basic-link><fo:basic-link internal-destination="str-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="str-function"/>)</fo:inline></fo:basic-link>).  These strings are written to
        the standard output stream, with one space between each
        value.  A <fo:inline font-family="monospace">print</fo:inline> statement by itself prints
        an empty line.
      </fo:block><fo:block id="id471336" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; print 4.3, 'Sir Robin', 1./7
4.3 Sir Robin 0.142857142857
&gt;&gt;&gt; for i in range(4):
...     print i**4,
... 
0 1 16 81
&gt;&gt;&gt; 
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Normally, a newline is printed after the last value.
        However, you can suppress this behavior by appending a
        comma to the end of the list.  For example, this
        statement:
        <fo:block id="id471347" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">print 'State your name:',
</fo:block>
        would print the string followed by one space and
        leave the cursor at the end of that line.
      </fo:block></fo:block><fo:block id="print-as-function"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">print()</fo:inline> function</fo:marker><fo:block font-size="14.4pt">22.9. The <fo:inline font-family="monospace">print()</fo:inline> function</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In Python 3, <fo:inline font-family="monospace">print</fo:inline> is a function, not a
        statement.  To make it easier to convert your programs to the
        new syntax, first use this <fo:inline font-family="monospace">import</fo:inline> statement
        (introduced in Python 2.6):
      </fo:block><fo:block id="id471388" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">from __future__ import print_function
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is the interface to this function:
      </fo:block><fo:block id="id471397" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">print(*args, sep=' ', end='\n', file=None)
</fo:block><fo:block id="id471403" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id471405" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">args</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              One or more positional arguments whose values are to
              be printed.
            </fo:block></fo:block><fo:block id="id471423" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">sep</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              By default, consecutive values are separated by one
              space.  You may specify a different separator string
              using this keyword argument.
            </fo:block></fo:block><fo:block id="id471441" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">end</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              By default, a newline (<fo:inline font-family="monospace">"\n"</fo:inline>) is written
              after the last value in <fo:inline font-family="monospace">args</fo:inline>.  You may
              use this keywoard argument to specify a different line
              terminator, or no terminator at all.
            </fo:block></fo:block><fo:block id="id471466" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">file</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Output normally goes to the standard output stream
              (<fo:inline font-family="monospace">sys.stdout</fo:inline>).  To divert the output to
              another writeable file, use this keyword argument.
            </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here's an example.  Suppose you are writing three strings
        named <fo:inline font-family="monospace">clan</fo:inline>, <fo:inline font-family="monospace">moiety</fo:inline>, and
        <fo:inline font-family="monospace">distro</fo:inline> to a writeable file named <fo:inline font-family="monospace">spreader</fo:inline>, and you want to separate the fields
        with tab (<fo:inline font-family="monospace">"\t"</fo:inline>) characters, and use <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">ASCII</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">25</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">25</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> CR, Carriage
        Return (<fo:inline font-family="monospace">"\r"</fo:inline>), as the line terminator.
        Your call to the <fo:inline font-family="monospace">print()</fo:inline> function would go
        something like this:
      </fo:block><fo:block id="id471526" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">print(clan, moiety, distro, file=spreader, end='\r', sep='\t')
</fo:block></fo:block></fo:block><fo:block id="compound-statements"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Compound statements</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">23. Compound statements</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The statements in this section alter the normal sequential
      execution of a program.  They can cause a statement to be
      executed only under certain circumstances, or execute it
      repeatedly.
    </fo:block><fo:block id="blocks"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Python's block structure</fo:marker><fo:block font-size="14.4pt">23.1. Python's block structure</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        One unusual feature of Python is the way that the
        indentation of your source program organizes it into
        blocks within blocks within blocks.  This is contrary to
        the way languages like C and Perl organize code blocks by
        enclosing them in delimiters such as braces <fo:inline font-family="monospace">{
        ... }</fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Various Python branching statements like <fo:inline font-family="monospace">if</fo:inline> and <fo:inline font-family="monospace">for</fo:inline> control the execution of blocks
        of lines.
      </fo:block><fo:list-block id="id471589" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id471591" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            At the very top level of your program, all statements
            must be unindented—they must start in column one.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id471599" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Various Python branching statements like <fo:inline font-family="monospace">if</fo:inline> and <fo:inline font-family="monospace">for</fo:inline> control the execution of one
            or more subsidiary blocks of lines.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id471614" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A block is defined as a group of adjacent lines that
            are indented the same amount, but indented further
            than the controlling line. The amount of indentation
            of a block is not critical.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id471622" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            You can use either spaces or <fo:inline font-style="italic" font-family="sans-serif">tab</fo:inline>
            characters for indentation.  However, mixing the two
            is perverse and can make your program hard to
            maintain.  Tab stops are assumed to be every eight
            columns.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Blocks within blocks are simply indented further.  Here
        is an example of some nested blocks:
      </fo:block><fo:block id="id471640" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">if i &lt; 0:
    print "i is negative"
else:
    print "i is nonnegative"
    if i &lt; 10:
        print "i has one digit"
    else:
        print "i has multiple digits"
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you prefer a more horizontal style, you can always
        place statements after the colon (<fo:inline font-family="monospace">:</fo:inline>) of a
        compound statement, and you can place multiple statements
        on a line by separating them with semicolons (<fo:inline font-family="monospace">;</fo:inline>).  Example:
        <fo:block id="id471658" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; if 2 &gt; 1: print "Math still works"; print "Yay!"
... else: print "Huh?"
... 
Math still works
Yay!
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You can't mix the block style with the horizontal style:
        the consequence of an <fo:inline font-family="monospace">if</fo:inline> or <fo:inline font-family="monospace">else</fo:inline> must either be on the same line or in a
        block, never both.
      </fo:block><fo:block id="id471678" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; if 1: print "True"
...     print "Unexpected indent error here."
  File "&lt;stdin&gt;", line 2
    print "Unexpected indent error here."
    ^
IndentationError: unexpected indent
&gt;&gt;&gt;
</fo:block></fo:block><fo:block id="break-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">break</fo:inline> statement: Exit a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline> loop</fo:marker><fo:block font-size="14.4pt">23.2. The <fo:inline font-family="monospace">break</fo:inline> statement: Exit a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline> loop</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of this statement is to jump out of a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline> loop before the loop
        would terminate otherwise.  Control is transferred to the
        statement after the last line of the loop.  The statement
        looks like this:

        <fo:block id="id471726" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">break
</fo:block>

        Here's an example.

        <fo:block id="id471732" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for i in [1, 71, 13, 2, 81, 15]:
...     print i,
...     if (i%2) == 0:
...         break
... 
1 71 13 2
</fo:block>

        Normally this loop would be executed six times, once for
        each value in the list, but the <fo:inline font-family="monospace">break</fo:inline>
        statement gets executed when <fo:inline font-family="monospace">i</fo:inline> is set to
        an even value.
      </fo:block></fo:block><fo:block id="continue-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">continue</fo:inline> statement: Jump to the next
      cycle of a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline></fo:marker><fo:block font-size="14.4pt">23.3. The <fo:inline font-family="monospace">continue</fo:inline> statement: Jump to the next
      cycle of a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use a <fo:inline font-family="monospace">continue</fo:inline> statement inside a <fo:inline font-family="monospace">for</fo:inline> or <fo:inline font-family="monospace">while</fo:inline> loop when you want
        to jump directly back to the top of the loop and go
        around again.
      </fo:block><fo:list-block id="id471790" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id471795" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If used inside a <fo:inline font-family="monospace">while</fo:inline> loop, the
            loop's condition expression is evaluated again.
            If the condition is <fo:inline font-family="monospace">False</fo:inline>, the loop is
            terminated; if the condition is <fo:inline font-family="monospace">True</fo:inline>,
            the loop is executed again.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id471813" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Inside a <fo:inline font-family="monospace">for</fo:inline> loop, a <fo:inline font-family="monospace">continue</fo:inline> statement goes back to the top of the loop.  If there
            are any values remaining in the iterable that controls the
            loop, the loop variable is set to the next value in the
            iterable, and the loop body is entered.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            If the <fo:inline font-family="monospace">continue</fo:inline> is executed during the last
            pass through the loop, control goes to the statement after
            the end of the loop.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
        <fo:block id="id471841" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; i = 0
&gt;&gt;&gt; while i &lt; 10:
...     print i,
...     i += 1
...     if (i%3) != 0:
...         continue
...     print "num",
... 
0 1 2 num 3 4 5 num 6 7 8 num 9
&gt;&gt;&gt; for i in range(10):
...     print i,
...     if (i%4) != 0:
...         continue
...     print "whee",
... 
0 whee 1 2 3 4 whee 5 6 7 8 whee 9
</fo:block>
      </fo:block></fo:block><fo:block id="for-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">for</fo:inline> statement: Iteration over a
      sequence</fo:marker><fo:block font-size="14.4pt">23.4. The <fo:inline font-family="monospace">for</fo:inline> statement: Iteration over a
      sequence</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Use a <fo:inline font-family="monospace">for</fo:inline> statement to execute a block of
        statements repeatedly.  Here is the general form.  (For
        the definition of a block, see <fo:basic-link internal-destination="blocks">Section 23.1, “Python's block structure”</fo:basic-link><fo:basic-link internal-destination="blocks"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="blocks"/>)</fo:inline></fo:basic-link>.)
      </fo:block><fo:block id="id471888" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">for <fo:inline font-style="italic" font-family="monospace">V</fo:inline> in <fo:inline font-style="italic" font-family="monospace">S</fo:inline>:
    <fo:inline font-style="italic" font-family="monospace">B</fo:inline>
</fo:block><fo:list-block id="id471904" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id471906" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline> is a
            variable called the <fo:inline font-style="italic">induction
            variable</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id471921" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> is any
            iterable; see <fo:basic-link internal-destination="iterable">Section 19.2, “What is an iterable?”</fo:basic-link><fo:basic-link internal-destination="iterable"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterable"/>)</fo:inline></fo:basic-link>.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            This iterable is called the <fo:inline font-style="italic">controlling
            iterable</fo:inline> of the loop.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id471946" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B</fo:inline></fo:inline> is a
            block of statements.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The block is executed once for each value in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.  During each
        execution of the block, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline> is set to the corresponding
        value of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> in
        turn.  Example:

        <fo:block id="id471975" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for color in ['black', 'blue', 'transparent']:
...     print color
... 
black
blue
transparent
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In general, you can use any number of induction variables.  In
        this case, the members of the controlling iterable must
        themselves be iterables, which are unpacked into the induction
        variables in the same way as sequence unpacking as described
        in <fo:basic-link internal-destination="assignment-statement">Section 22.1, “The assignment statement: <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline> = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline></fo:inline>”</fo:basic-link><fo:basic-link internal-destination="assignment-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="assignment-statement"/>)</fo:inline></fo:basic-link>.  Here is an
        example.
      </fo:block><fo:block id="id471995" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; fourDays = ( ('First', 1, 'orangutan librarian'),
...              ('Second', 5, 'loaves of dwarf bread'),
...              ('Third', 3, 'dried frog pills'),
...              ('Fourth', 2, 'sentient luggages') )
&gt;&gt;&gt; for day, number, item in fourDays:
...     print ( "On the {1} day of Hogswatch, my true love gave "
...             "to me".format(day) )
...     print "{0} {1}".format(number, item)
... 
On the First day of Hogswatch, my true love gave to me
1 orangutan librarian
On the Second day of Hogswatch, my true love gave to me
5 loaves of dwarf bread
On the Third day of Hogswatch, my true love gave to me
3 dried frog pills
On the Fourth day of Hogswatch, my true love gave to me
2 sentient luggages
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        You can change the induction variable inside the loop, but
        during the next pass through the loop, it will be set to the
        next element of the controlling iterable normally.  Modifying
        the controlling iterable itself won't change anything; Python
        makes a copy of it before starting the loop.
      </fo:block><fo:block id="id472018" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for i in range(4):
...     print "Before:", i,
...     i += 1000
...     print "After:", i
... 
Before: 0 After: 1000
Before: 1 After: 1001
Before: 2 After: 1002
Before: 3 After: 1003
&gt;&gt;&gt; L = [7, 6, 1912]
&gt;&gt;&gt; for n in L:
...     L = [44, 55]
...     print n
... 
7
6
1912
</fo:block></fo:block><fo:block id="if-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">if</fo:inline> statement: Conditional
      execution</fo:marker><fo:block font-size="14.4pt">23.5. The <fo:inline font-family="monospace">if</fo:inline> statement: Conditional
      execution</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of the <fo:inline font-family="monospace">if</fo:inline> construct is to
        execute some statements only when certain conditions are
        true.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is the most general form of an <fo:inline font-family="monospace">if</fo:inline>
        construct:
      </fo:block><fo:block id="id472063" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">if <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>:
    <fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>
elif <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>:
    <fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>
elif ...:
    ...
else:
    <fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">f</fo:inline></fo:inline>
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In words, this construct means:
      </fo:block><fo:list-block id="id472100" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id472104" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline> is true,
            execute block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id472125" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline> is false but
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline> is true,
            execute block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id472152" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If there are more <fo:inline font-family="monospace">elif</fo:inline> clauses,
            evaluate each one's expression until that expression
            has a true value, and then execute the corresponding
            block.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id472164" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If all the expressions in <fo:inline font-family="monospace">if</fo:inline> and <fo:inline font-family="monospace">elif</fo:inline> clauses are false, execute block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">f</fo:inline></fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        An <fo:inline font-family="monospace">if</fo:inline> construct may have zero or more
        <fo:inline font-family="monospace">elif</fo:inline> clauses.  The <fo:inline font-family="monospace">else</fo:inline>
        clause is also optional.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
      </fo:block><fo:block id="id472204" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for i in range(5):
...     if i == 0:
...         print "i is zero",
...     elif i == 1:
...         print "it's one",
...     elif i == 2:
...         print "it's two",
...     else:
...         print "many",
...     print i
... 
i is zero 0
it's one 1
it's two 2
many 3
many 4
&gt;&gt;&gt; if 2 &gt; 3: print "Huh?"
... 
&gt;&gt;&gt; if 2 &gt; 3: print "Huh?"
... else: print "Oh, good."
... 
Oh, good.
&gt;&gt;&gt; if 2 &gt; 3: print "Huh?"
... elif 2 == 2: print "Oh."
... 
Oh.
</fo:block></fo:block><fo:block id="raise-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">raise</fo:inline> statement: Cause an
      exception</fo:marker><fo:block font-size="14.4pt">23.6. The <fo:inline font-family="monospace">raise</fo:inline> statement: Cause an
      exception</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Python's exception mechanism is the universal framework
        for dealing with errors—situations where your
        program can't really proceed normally.  For an overview,
        see <fo:basic-link internal-destination="exceptions">Section 25, “Exceptions: Error signaling and handling”</fo:basic-link><fo:basic-link internal-destination="exceptions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exceptions"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are three forms of the <fo:inline font-family="monospace">raise</fo:inline> statement:
        <fo:block id="id472255" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">raise
raise <fo:inline font-style="italic" font-family="monospace">E1</fo:inline>
raise <fo:inline font-style="italic" font-family="monospace">E1</fo:inline>, <fo:inline font-style="italic" font-family="monospace">E2</fo:inline>
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The first form is equivalent to “<fo:inline font-family="monospace">raise
        None,None</fo:inline>” and the second form is
        equivalent to “<fo:inline font-family="monospace">raise <fo:inline font-style="italic" font-family="monospace">E1</fo:inline>, None</fo:inline>”.  Each form
        raises an exception of a given type and with a given
        value.  The type and value depend on how many expressions
        you provide:
      </fo:block><fo:block id="id472290" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-column column-number="3"/><fo:table-column column-number="4"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold"><fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline></fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold"><fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E2</fo:inline></fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold">Exception type</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Exception value</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">None</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">None</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left" number-columns-spanned="2"><fo:block>
                Re-raise the current exception, if any.  This might
                be done, for example, inside an <fo:inline font-family="monospace">except</fo:inline>, <fo:inline font-family="monospace">else</fo:inline>, or <fo:inline font-family="monospace">finally</fo:inline>
                block; see <fo:basic-link internal-destination="try-statement">Section 23.8, “The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions”</fo:basic-link><fo:basic-link internal-destination="try-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="try-statement"/>)</fo:inline></fo:basic-link>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>class</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">None</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1()</fo:inline></fo:inline>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>class</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                instance of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline></fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E2</fo:inline></fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>class</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>tuple</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline></fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline>(*<fo:inline font-style="italic" font-family="monospace">E2</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>class</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>none of the above</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline></fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline>(<fo:inline font-style="italic" font-family="monospace">E2</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>instance</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">None</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">type(<fo:inline font-style="italic" font-family="monospace">E1</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E1</fo:inline></fo:inline>
              </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The current recommended practice is to use a <fo:inline font-family="monospace">raise</fo:inline> statement of this form:

        <fo:block id="id472557" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">raise <fo:inline font-style="italic" font-family="monospace">E</fo:inline>(...)
</fo:block>

        where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline></fo:inline> is
        some class derived from the built-in <fo:inline font-family="monospace">Exception</fo:inline> class: you can use one of the built-in
        exceptions, or you can create your own exception classes.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For classes derived from <fo:inline font-family="monospace">Exception</fo:inline>, the
        constructor takes one argument, an error
        message—that is, a string explaining why the
        exception was raised.  The resulting instance makes that
        message available as an attribute named <fo:inline font-family="monospace">.message</fo:inline>.  Example:
        <fo:block id="id472591" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; try:
...     raise ValueError('The day is too frabjous.')
... except ValueError as x:
...     pass
... 
&gt;&gt;&gt; type(x)
&lt;type 'exceptions.ValueError'&gt;
&gt;&gt;&gt; x.message
'The day is too frabjous.'
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To create your own exceptions, write a class that inherits
        from <fo:inline font-family="monospace">Exception</fo:inline> and passes its argument to
        the parent constructor, as in this example.
      </fo:block><fo:block id="id472608" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class VocationError(Exception):
...     def __init__(self, mismatch):
...         Exception.__init__(self, mismatch)
... 
&gt;&gt;&gt; try:
...     print "And now, the Vocational Guidance Counsellor Sketch."
...     raise VocationError("Does not have proper hat")
...     print "This print statement will not be reached."
... except VocationError as problem:
...     print "Vocation problem: {0}".format(problem)
... 
And now, the Vocational Guidance Counsellor Sketch.
Vocation problem: Does not have proper hat
</fo:block></fo:block><fo:block id="return-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">return</fo:inline> statement: Exit a function or
      method</fo:marker><fo:block font-size="14.4pt">23.7. The <fo:inline font-family="monospace">return</fo:inline> statement: Exit a function or
      method</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Within any function or method, you can exit the function
        with a <fo:inline font-family="monospace">return</fo:inline> statement.  There are two
        forms:
      </fo:block><fo:block id="id472650" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">return <fo:inline font-style="italic" font-family="monospace">expression</fo:inline>
return
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In the first form, execution resumes at the point where
        the function or method was called, and the value of the
        <fo:inline font-style="italic" font-family="monospace">expression</fo:inline> is substituted
        into the calling statement.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The second form is the equivalent of “<fo:inline font-family="monospace">return None</fo:inline>”.  (See <fo:basic-link internal-destination="None-type">Section 18, “<fo:inline font-family="monospace">None</fo:inline>: The special placeholder value”</fo:basic-link><fo:basic-link internal-destination="None-type"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="None-type"/>)</fo:inline></fo:basic-link>.)
      </fo:block></fo:block><fo:block id="try-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions</fo:marker><fo:block font-size="14.4pt">23.8. The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of a “<fo:inline font-family="monospace">try</fo:inline>”
        construct is to specify what actions to take in the event
        of errors.  For an introduction to Python's exception
        mechanism, see <fo:basic-link internal-destination="exceptions">Section 25, “Exceptions: Error signaling and handling”</fo:basic-link><fo:basic-link internal-destination="exceptions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exceptions"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        When an exception is raised, two items are associated
        with it:
      </fo:block><fo:list-block id="id472721" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id472725" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            An exception type, and
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id472732" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            an exception value.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is the most general form of a <fo:inline font-family="monospace">try</fo:inline>
        construct.  Symbols like <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline> represent indented blocks of statements.  Each
        <fo:inline font-family="monospace">except</fo:inline> clause names some exception class
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> (or a tuple of exception
        classes), and optionally a variable <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> that
        will be set to the exception value.
      </fo:block><fo:block id="id472779" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">try:
    <fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>
except <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline> [as <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>]:
    <fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>
except <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline> [as <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>]:
    <fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>
except ...:
    ...
else:
    <fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">e</fo:inline></fo:inline>
finally:
    <fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">f</fo:inline></fo:inline>
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">else:</fo:inline> and <fo:inline font-family="monospace">finally:</fo:inline>
        blocks are optional.  There must be at least one <fo:inline font-family="monospace">except</fo:inline> block, but there may be any number.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is a simplified description of the execution of a
        <fo:inline font-family="monospace">try</fo:inline> block in general:
      </fo:block><fo:block id="id472858" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-block provisional-distance-between-starts="2em" provisional-label-separation="0.2em" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id472860">1.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline> executes without raising any
            exceptions, the <fo:inline font-family="monospace">else</fo:inline> block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">e</fo:inline></fo:inline></fo:inline> is executed, then the <fo:inline font-family="monospace">finally</fo:inline> block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">f</fo:inline></fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id472897">2.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If the execution of block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline>
            raises some exception with type <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline>,
            that type is compared against each <fo:inline font-family="monospace">except</fo:inline> clause until one of them matches
            the raised exception or there are no more <fo:inline font-family="monospace">except</fo:inline> clauses.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            The matching condition is slightly complicated:
            for some clause “<fo:inline font-family="monospace">except <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline> as <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline>:</fo:inline>”,
            expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> is either an
            exception class or a tuple of exception classes.
          </fo:block><fo:list-block id="id472954" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id472958" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> is a single class, it is
                considered a match if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline> is either the same class as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> or a subclass of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id472992" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> is a tuple of exception
                classes, the raised exception is compared to each
                to see if it is the same class or a subclass, as
                in the single-class case.
              </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            If multiple <fo:inline font-family="monospace">except</fo:inline> clauses match, the
            first matching clause is said to <fo:inline font-style="italic">handle</fo:inline> the exception.  The
            corresponding variable <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>
            (if present) is bound to the raised exception
            instance, and control passes to the corresponding
            block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473035">3.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If there is a <fo:inline font-family="monospace">finally</fo:inline> clause, it is
            executed, whether the exception was caught or not.
            If the exception was not caught, it is re-raised
            after the end of the <fo:inline font-family="monospace">finally</fo:inline> clause.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Examples:
      </fo:block><fo:block id="id473058" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; try:
...     raise ValueError("Strike three!")
... except IOError as x:
...     print "I/O error caught:", x
... except ValueError as x:
...     print "Value error caught:", x
... except SyntaxError as x:
...     print "Syntax error caught:", x
... else:
...     print "This is the else clause"
... finally:
...     print "This is the finally clause"
... 
Value error caught: Strike three!
This is the finally clause
&gt;&gt;&gt; try:
...     raise ValueError("Uncaught!")
... except IOError as x:
...     print "I/O error:", x
... else:
...     print "This is the else clause"
... finally:
...     print "This is the finally clause"
... 
This is the finally clause
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 2, in &lt;module&gt;
ValueError: Uncaught!
&gt;&gt;&gt; try:
...     print "No exceptions raised"
... except ValueError as x:
...     print "ValueError:", x
... else:
...     print "This is the else clause"
... finally:
...     print "This is the finally clause"
... 
No exceptions raised
This is the else clause
This is the finally clause
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For those of you who are interested in the gory details,
        the fun begins when a second or even a third exception is
        raised inside an <fo:inline font-family="monospace">except</fo:inline>, <fo:inline font-family="monospace">else</fo:inline>, or <fo:inline font-family="monospace">finally</fo:inline> clause.  The results are
        well-defined, and here is a pseudocode description of the
        edge cases.  In this procedure, we'll use two internal
        variables named <fo:inline font-family="monospace">pending</fo:inline> and <fo:inline font-family="monospace">detail</fo:inline>.
      </fo:block><fo:block id="id473109" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-block provisional-distance-between-starts="2em" provisional-label-separation="0.2em" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473111">1.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Set <fo:inline font-family="monospace">pending</fo:inline> to <fo:inline font-family="monospace">None</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473128">2.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Attempt to execute block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline>.
            If this block raises an exception <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline>
            with detail <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline>, set <fo:inline font-family="monospace">pending</fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline> and set <fo:inline font-family="monospace">detail</fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473178">3.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace">pending</fo:inline> is <fo:inline font-family="monospace">None</fo:inline>, go
            to <fo:basic-link internal-destination="else-check-step">Step 8</fo:basic-link><fo:basic-link internal-destination="else-check-step"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="else-check-step"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473201">4.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Find the first block <fo:inline font-family="monospace">except <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline>,
            <fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline>:</fo:inline> such that <fo:inline font-family="monospace">issubclass(<fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline> )</fo:inline>.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            If there is no such match, go to <fo:basic-link internal-destination="finally-step">Step 10</fo:basic-link><fo:basic-link internal-destination="finally-step"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="finally-step"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473249">5.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Set <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> to <fo:inline font-family="monospace">detail</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473268">6.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Attempt to execute block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline>.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            If this block raises some new exception <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline> with detail <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline>, set <fo:inline font-family="monospace">pending</fo:inline>
            to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline> and set <fo:inline font-family="monospace">detail</fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline>.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            However, if block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> executes
            without exception, set <fo:inline font-family="monospace">pending</fo:inline> to
            <fo:inline font-family="monospace">None</fo:inline>.  In this case, the original
            exception is said to have been caught or handled.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473341">7.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Go to <fo:basic-link internal-destination="finally-step">Step 10</fo:basic-link><fo:basic-link internal-destination="finally-step"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="finally-step"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="else-check-step">8.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If there is no <fo:inline font-family="monospace">else:</fo:inline> clause, go to
            <fo:basic-link internal-destination="finally-step">Step 10</fo:basic-link><fo:basic-link internal-destination="finally-step"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="finally-step"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473377">9.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Attempt to execute the <fo:inline font-family="monospace">else:</fo:inline> block
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B<fo:inline font-size="75%" baseline-shift="sub">e</fo:inline></fo:inline></fo:inline>.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            If this block raises some new exception <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline> with detail <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline>, set <fo:inline font-family="monospace">pending</fo:inline>
            to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline> and set <fo:inline font-family="monospace">detail</fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="finally-step">10.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If there is no <fo:inline font-family="monospace">finally:</fo:inline> clause,
            proceed to <fo:basic-link internal-destination="try-exit-step">Step 12</fo:basic-link><fo:basic-link internal-destination="try-exit-step"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="try-exit-step"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id473458">11.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            Attempt to execute the <fo:inline font-family="monospace">finally:</fo:inline> block
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">f</fo:inline></fo:inline></fo:inline>.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            If this block raises some new exception <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline> with detail <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline>, set <fo:inline font-family="monospace">pending</fo:inline>
            to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline> and set <fo:inline font-family="monospace">detail</fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="try-exit-step">12.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If <fo:inline font-family="monospace">pending</fo:inline> is not <fo:inline font-family="monospace">None</fo:inline>,
            re-raise the exception as in this statement:
            <fo:block id="id473533" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">raise pending, detail
</fo:block>
            If <fo:inline font-family="monospace">pending</fo:inline> is <fo:inline font-family="monospace">None</fo:inline>,
            fall through to the statement following the <fo:inline font-family="monospace">try:</fo:inline> block.            
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="with-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">with</fo:inline> statement and context
      managers</fo:marker><fo:block font-size="14.4pt">23.9. The <fo:inline font-family="monospace">with</fo:inline> statement and context
      managers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of this statement is to protect a block of code
        with a <fo:inline font-style="italic">context manager</fo:inline> that insures
        that certain initialization and cleanup steps get performed,
        regardless of whether that block raises an exception.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A context manager is a class that has <fo:inline font-family="monospace">.__enter__()</fo:inline> and <fo:inline font-family="monospace">.__exit__()</fo:inline> methods.
      </fo:block><fo:list-block id="id473594" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id473603" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The <fo:inline font-family="monospace">.__enter__()</fo:inline> method performs any
            necessary initialization, and returns a value.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id473614" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The <fo:inline font-family="monospace">.__exit__()</fo:inline> method is always executed
            to perform necessary cleanup actions.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Starting with version 2.6, Python now was a <fo:inline font-family="monospace">with</fo:inline> statement that executes a block using a context manager.
        Here is the general form, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B</fo:inline></fo:inline> is the block to be executed.
      </fo:block><fo:block id="id473639" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">with <fo:inline font-style="italic" font-family="monospace">E</fo:inline>[ as <fo:inline font-style="italic" font-family="monospace">V</fo:inline>]:
    <fo:inline font-style="italic" font-family="monospace">B</fo:inline>
</fo:block><fo:list-block id="id473654" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id473657" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline></fo:inline> is an
            expression that evaluates to a <fo:inline font-style="italic">context
            manager</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id473672" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If you provide a variable <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline> in the optional part
            “<fo:inline font-family="monospace">as <fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>”, that variable will be set to the value returned
            by the context manager's <fo:inline font-family="monospace">.__enter__()</fo:inline>
            method.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Python's <fo:inline font-family="monospace">file</fo:inline> class is a context manager; its
        <fo:inline font-family="monospace">.__enter__()</fo:inline> method returns the opened file,
        and its <fo:inline font-family="monospace">.__exit__()</fo:inline> method closes the file.
        For example, suppose you want to call a function <fo:inline font-family="monospace">beat()</fo:inline> and pass it an opened file named <fo:inline font-family="monospace">"goat"</fo:inline>, but you want to be sure the file is closed
        even if the <fo:inline font-family="monospace">beat()</fo:inline> function raises an
        exception.  This code would do that:
      </fo:block><fo:block id="id473723" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">with open("goat") as inFile:
    beat(inFile)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        When the <fo:inline font-family="monospace">beat()</fo:inline> function terminates (either
        normally or because it raised an exception), the file will be
        closed (in the <fo:inline font-family="monospace">file.__exit__()</fo:inline> method).  If the
        function raised an exception, that exception will then be
        re-raised.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Starting in Python 2.7, you can enclose a block in multiple
        context managers by repeating the “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline>[ as <fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>” parts of the statement.  For example:
      </fo:block><fo:block id="id473756" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">with open('in') as inFile, open('out', 'w') as outFile:
    for rawLine in inFile:
        outFile.write(rawLine)
</fo:block></fo:block><fo:block id="yield-statement"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-family="monospace">yield</fo:inline> statement: Generate one result
      from a generator</fo:marker><fo:block font-size="14.4pt">23.10. The <fo:inline font-family="monospace">yield</fo:inline> statement: Generate one result
      from a generator</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A generator is any function or method that contains at
        least one <fo:inline font-family="monospace">yield</fo:inline> statement.  Generators are
        a special type of iterator; see <fo:basic-link internal-destination="generators">Section 24.3, “Generators: Functions that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="generators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="generators"/>)</fo:inline></fo:basic-link>.  Here is the general form:

        <fo:block id="id473795" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">yield <fo:inline font-style="italic" font-family="monospace">expression</fo:inline>
</fo:block>

        Unlike ordinary functions or methods that use the <fo:inline font-family="monospace">return</fo:inline> statement to return a single value, a
        generator is a mechanism that produces a sequence of zero
        or more values.  Each execution of a <fo:inline font-family="monospace">yield</fo:inline>
        statement produces an additional value.  To signal the
        caller that there are no more values, use this <fo:inline font-family="monospace">raise</fo:inline> statement:

        <fo:block id="id473817" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">raise StopIteration
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        As an example, here is a function that generates the 
        sequence 0, 1, 2, ..., <fo:inline font-style="italic" font-family="monospace">n</fo:inline>-1,
        <fo:inline font-style="italic" font-family="monospace">n</fo:inline>,  <fo:inline font-style="italic" font-family="monospace">n</fo:inline>-1, <fo:inline font-style="italic" font-family="monospace">n</fo:inline>-2,
        ..., 2, 1, 0.
      </fo:block><fo:block id="id473842" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def updown(n):
...     '''Generate the values 0, 1, 2, ..., n-1, n, n-1, n-2, ...0.
...     '''
...     for answer in range(0,n):
...         yield answer
...     for answer in range(n, -1, -1):
...         yield answer
...     raise StopIteration
... 
&gt;&gt;&gt; for x in updown(4):
...     print x,
... 
0 1 2 3 4 3 2 1 0
</fo:block></fo:block></fo:block><fo:block id="def"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">def()</fo:inline>: Defining your own functions</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">24. <fo:inline font-family="monospace">def()</fo:inline>: Defining your own functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The <fo:inline font-family="monospace">def</fo:inline> construct is used to define
      functions and methods.  Here is the general form:
    </fo:block><fo:block id="id473883" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">def <fo:inline font-style="italic" font-family="monospace">n</fo:inline>(<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>[=<fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>][,<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>[=<fo:inline font-style="italic" font-family="monospace">e<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>]]...[,*<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">v</fo:inline></fo:inline>][,**<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">d</fo:inline></fo:inline>]):
    <fo:inline font-style="italic" font-family="monospace">B</fo:inline>
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The name <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> of
      the function is followed by a pair of parentheses
      containing descriptions of the arguments to the function.
      The block <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B</fo:inline></fo:inline> is
      called the <fo:inline font-style="italic">body</fo:inline> of the function,
      and is executed when the function is called.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      A function may have no arguments at all.  If there are
      arguments to be passed to the function when it is called,
      they must be declared in this order:
    </fo:block><fo:list-block id="id473952" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id473954" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          A <fo:inline font-style="italic">positional argument</fo:inline> is a
          name that is not followed by an equal sign (<fo:inline font-family="monospace">=</fo:inline>) and default value.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id473967" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          A <fo:inline font-style="italic">keyword</fo:inline> argument is followed
          by an equal sign and an expression that gives its
          <fo:inline font-style="italic">default value</fo:inline>.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a function has both positional arguments and keyword
          arguments, all positional arguments must precede all
          keyword arguments.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id473987" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          If there is a <fo:inline font-family="monospace">*<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">v</fo:inline></fo:inline></fo:inline>
          parameter, when the function is called that name is
          bound to a (possibly empty) tuple of all positional
          arguments passed to the function that do not correspond
          to other positional or keyword arguments in the <fo:inline font-family="monospace">def</fo:inline>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474007" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          If there is a <fo:inline font-family="monospace">**<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">d</fo:inline></fo:inline></fo:inline>
          parameter, when the function is called that name is
          bound to a dictionary of all keyword arguments
          passed to the function that do not appear in the
          function's <fo:inline font-family="monospace">def</fo:inline>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      When you call a function, the argument values you pass to
      it must obey these rules:
    </fo:block><fo:list-block id="id474032" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id474034" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          There are two kinds of arguments: positional (also
          called non-default arguments) and keyword (also called
          default arguments).  A positional argument is simply an
          expression, whose value is passed to the argument.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          A keyword argument has this form:

          <fo:block id="id474044" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">name</fo:inline>=<fo:inline font-style="italic" font-family="monospace">expression</fo:inline>
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474058" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          All positional arguments in the function call (if any) must
          precede all keyword arguments (if any).
          <fo:block id="id474063" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def wrong(f=1, g):
...     print f, g
... 
  File "&lt;stdin&gt;", line 1
SyntaxError: non-default argument follows default argument
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474074" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          You must supply at least as many positional arguments
          as the function expects.
          <fo:block id="id474079" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def wantThree(a, b, c):
...     print a,b,c
... 
&gt;&gt;&gt; wantThree('nudge', 'nudge', 'nudge')
nudge nudge nudge
&gt;&gt;&gt; wantThree('nudge')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
TypeError: wantThree() takes exactly 3 arguments (1 given)
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474090" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          If you supply more positional arguments than the
          function expects, the extra arguments are matched
          against keyword arguments in the order of their
          declaration in the <fo:inline font-family="monospace">def</fo:inline>.  Any additional
          keyword arguments are set to their default values.
          <fo:block id="id474100" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def f(a, b, c=1, d='elk'):
...     print a,b,c,d
... 
&gt;&gt;&gt; f(99, 111)
99 111 1 elk
&gt;&gt;&gt; f(99, 111, 222, 333)
99 111 222 333
&gt;&gt;&gt; f(8, 9, 10, 11, 12, 13)
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
TypeError: f() takes at most 4 arguments (6 given)
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474112" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          You may supply arguments for keyword parameters in any
          order by using the form <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline>=<fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline>
          is the keyword used in the declaration of that
          parameter and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline> is your desired argument.
          <fo:block id="id474134" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def blackKeys(fish='Eric', dawn='Stafford', attila='Abdul'):
...     print fish, dawn, attila
... 
&gt;&gt;&gt; blackKeys()
Eric Stafford Abdul
&gt;&gt;&gt; blackKeys(attila='Gamera', fish='Abdul')
Abdul Stafford Gamera
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474145" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          If you declare a parameter of the form “<fo:inline font-family="monospace">*<fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline>”,
          the caller can provide any number of additional
          keyword arguments, and the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> will be bound to a tuple
          containing those additional arguments.
          <fo:block id="id474164" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def posish(i, j, k, *extras):
...     print i,j,k,extras
... 
&gt;&gt;&gt; posish(38, 40, 42)
38 40 42 ()
&gt;&gt;&gt; posish(44, 46, 48, 51, 57, 88)
44 46 48 (51, 57, 88)
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474174" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Similarly, you may declare a final parameter of the
          form “<fo:inline font-family="monospace">**<fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline>”.  If the caller provides any keyword
          arguments whose names do not match declared keyword
          arguments, that <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> will be bound to a dictionary containing
          the additional keyword arguments as key-value pairs.
          
<fo:block id="id474193" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def extraKeys(a, b=1, *c, **d):
...     print a, b, c, d
... 
&gt;&gt;&gt; extraKeys(1,2)
1 2 () {}
&gt;&gt;&gt; extraKeys(3,4,6,12, hovercraft='eels', record='scratched')
3 4 (6, 12) {'record': 'scratched', 'hovercraft': 'eels'}
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="function-locals"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">A function's local namespace</fo:marker><fo:block font-size="14.4pt">24.1. A function's local namespace</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Any name that appears in a function's argument list, or
        any name that is set to a value anywhere in the function,
        is said to be <fo:inline font-style="italic">local</fo:inline> to the
        function.  If a local name is the same as a name from
        outside the function (a so-called <fo:inline font-style="italic">global</fo:inline> name), references to that name
        inside the function will refer to the local name, and the
        global name will be unaffected.  Here is an example:
        <fo:block id="id474232" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = 'lobster'
&gt;&gt;&gt; y = 'Thermidor'
&gt;&gt;&gt; def f(x):
...     y = 'crevettes'
...     print x, y
... 
&gt;&gt;&gt; f('spam')
spam crevettes
&gt;&gt;&gt; print x, y
lobster Thermidor
</fo:block>
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Keyword parameters have a special characteristic: their
        names are local to the function, but they are also used
        to match keyword arguments when the function is called.
      </fo:block></fo:block><fo:block id="iterators"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Iterators: Values that can produce a sequence of
      values</fo:marker><fo:block font-size="14.4pt">24.2. Iterators: Values that can produce a sequence of
      values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Closely related to Python's concept of sequences is the
        concept of an <fo:inline font-style="italic">iterator</fo:inline>:
      </fo:block><fo:block margin-left="0.5in" margin-right="0.5in" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For a given sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, an iterator <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> is essentially
          a set of instructions for producing the elements of
          <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> as a
          sequence of zero or more values.
        </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To produce an iterator over some sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>, use this function:
      </fo:block><fo:block id="id474299" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">iter(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)
</fo:block><fo:list-block id="id474308" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id474310" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            The result of this function is an “iterator
            object” that can be used in a <fo:inline font-family="monospace">for</fo:inline> statement.
            <fo:block id="id474321" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; continents = ('AF', 'AS', 'EU', 'AU', 'AN', 'SA', 'NA')
&gt;&gt;&gt; worldWalker = iter(continents)
&gt;&gt;&gt; type(worldWalker)
&lt;type 'tupleiterator'&gt;
&gt;&gt;&gt; for landMass in worldWalker:
...     print "Visit {0}.".format(landMass,)
... 
Visit AF. Visit AS. Visit EU. Visit AU. Visit AN. Visit SA. Visit NA.
</fo:block>
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474335" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            All iterators have a <fo:inline font-family="monospace">.next()</fo:inline> method
            that you can call to get the next element in the
            sequence.  This method takes no arguments.  It
            returns the next element in the sequence, if any.
            When there are no more elements, it raises a <fo:inline font-family="monospace">StopIteration</fo:inline> exception.
          </fo:block><fo:block id="id474350" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; trafficSignal = [ 'green', 'yellow', 'red' ]
&gt;&gt;&gt; signalCycle = iter(trafficSignal)
&gt;&gt;&gt; type(signalCycle)
&lt;type 'listiterator'&gt;
&gt;&gt;&gt; signalCycle.next()
'green'
&gt;&gt;&gt; signalCycle.next()
'yellow'
&gt;&gt;&gt; signalCycle.next()
'red'
&gt;&gt;&gt; signalCycle.next()
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
StopIteration
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            Once an iterator is exhausted, it will continue to raise
            <fo:inline font-family="monospace">StopIteration</fo:inline> indefinitely.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474371" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            You can also use an iterator as the right-hand
            operand of the “<fo:inline font-family="monospace">in</fo:inline>”
            operator.
          </fo:block><fo:block id="id474382" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; signalCycle = iter(trafficSignal)
&gt;&gt;&gt; 'red' in signalCycle
True
</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="generators"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Generators: Functions that can produce a sequence of
      values</fo:marker><fo:block font-size="14.4pt">24.3. Generators: Functions that can produce a sequence of
      values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Unlike conventional functions that return only a single
        result, a <fo:inline font-style="italic">generator</fo:inline> is a
        function that produces a sequence of zero or more
        results.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Generators are a special case of iterators (see <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>), so they can be used as the
        controlling iterable in <fo:inline font-family="monospace">for</fo:inline> statements
        and the other places where iterators are allowed.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In a conventional function, the body of the function is
        executed until it either executes a <fo:inline font-family="monospace">return</fo:inline>
        statement, or until it runs out of body statements (which
        is the equivalent of a “<fo:inline font-family="monospace">return None</fo:inline>” statement).
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        By contrast, when a generator function is called, its
        body is executed until it either has another value to
        produce, or until there are no more values.
      </fo:block><fo:list-block id="id474447" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id474452" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            When a function wishes to return the next generated
            value, it executes a statement of this form:

            <fo:block id="id474457" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    yield <fo:inline font-style="italic" font-family="monospace">e</fo:inline>
</fo:block>

            where the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e</fo:inline></fo:inline> is any Python expression.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            The difference between <fo:inline font-family="monospace">yield</fo:inline> and <fo:inline font-family="monospace">return</fo:inline> is that when a <fo:inline font-family="monospace">return</fo:inline>
            is executed, the function is considered finished with
            its execution, and all its current state diasppears.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            By contrast, when a function executes a <fo:inline font-family="monospace">yield</fo:inline> statement, execution of the function
            is expected to resume just after that statement, at
            the point when the caller of the function needs the
            next generated value.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474498" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A generator signals that there are no more values by
            executing this statement:

            <fo:block id="id474503" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    raise StopIteration
</fo:block>

          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For an example of a generator, see <fo:basic-link internal-destination="yield-statement">Section 23.10, “The <fo:inline font-family="monospace">yield</fo:inline> statement: Generate one result
      from a generator”</fo:basic-link><fo:basic-link internal-destination="yield-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="yield-statement"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you are writing a container class (that is, a class
        whose instances are containers for a set of values), and
        you want to define an iterator (see <fo:basic-link internal-destination="iter-method">Section 26.3.17, “<fo:inline font-family="monospace">__iter__()</fo:inline>: Create an iterator”</fo:basic-link><fo:basic-link internal-destination="iter-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iter-method"/>)</fo:inline></fo:basic-link>), that method can be a
        generator.  Here is a small example.  The constructor for
        class <fo:inline font-family="monospace">Bunch</fo:inline> takes a sequence of values and
        stores them in instance attribute <fo:inline font-family="monospace">.__stuffList</fo:inline>.  The iterator method <fo:inline font-family="monospace">.__iter__()</fo:inline> generates the elements of the
        sequence in order, except it wraps each of them in
        parentheses:

        <fo:block id="id474545" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class Bunch(object):
...     def __init__(self, stuffList):
...         self.__stuffList  =  stuffList
...     def __iter__(self):
...         for thing in self.__stuffList:
...             yield "({0})".format(thing)
...         raise StopIteration
... 
&gt;&gt;&gt; mess = Bunch(('lobster Thermidor', 'crevettes', 'Mornay'))
&gt;&gt;&gt; for item in mess:
...     print item,
... 
(lobster Thermidor) (crevettes) (Mornay)
&gt;&gt;&gt; messWalker = iter(mess)
&gt;&gt;&gt; for thing in messWalker: print thing,
... 
(lobster Thermidor) (crevettes) (Mornay)</fo:block>
      </fo:block></fo:block><fo:block id="decorators"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Decorators</fo:marker><fo:block font-size="14.4pt">24.4. Decorators</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The purpose of a Python decorator is to replace a
        function or method with a modified version <fo:inline font-style="italic">at
        the time it is defined</fo:inline>.  For example, the
        original way to declare a <fo:basic-link internal-destination="static-methods">static method</fo:basic-link> was like this:
      </fo:block><fo:block id="id474592" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def someMethod(x, y):
        ...
    someMethod = staticmethod(someMethod)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Using Python's decorator syntax, you can get the same
        effect like this:
      </fo:block><fo:block id="id474602" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    @staticmethod
    def someMethod(x, y):
         ...
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In general, a function or method may be preceded by any
        number of decorator expressions, and you may also provide
        arguments to the decorators.
      </fo:block><fo:list-block id="id474612" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id474617" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If a function <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is preceded by a decorator expression of
            the form “<fo:inline font-family="monospace">@<fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline>”, it is the equivalent of this code:
          </fo:block><fo:block id="id474634" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">def <fo:inline font-style="italic" font-family="monospace">f</fo:inline>(...):
    ...
<fo:inline font-style="italic" font-family="monospace">f</fo:inline> = <fo:inline font-style="italic" font-family="monospace">d</fo:inline>(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>)
</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474654" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            You may provide a parenthesized argument list after
            the name of your decorator.  A decorator expression
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline>(...)</fo:inline> is
            the equivalent of this code:
          </fo:block><fo:block id="id474667" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">def <fo:inline font-style="italic" font-family="monospace">f</fo:inline>(...):
    ...
<fo:inline font-style="italic" font-family="monospace">f</fo:inline> = <fo:inline font-style="italic" font-family="monospace">d</fo:inline>(...)(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            First, the decorator is called with the argument list
            you provided.  It must return a callable object.
            That callable is then called with one argument, the
            decorated function.  The name of the decorated
            function is then bound to the returned value.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474693" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            If you provide multiple decorators, they are applied
            inside out, in sequence from the last to the first.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is an example of a function wrapped with two
        decorators, of which the second has additional arguments:
      </fo:block><fo:block id="id474706" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">@f1
@f2('Pewty')
def f0(...):
    ...
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This is the equivalent code without using decorators:
      </fo:block><fo:block id="id474716" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">def f0(...):
    ...
f0 = f1 ( f2('Pewty') ( f0 ) )
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        First function <fo:inline font-family="monospace">f2</fo:inline> is called with one
        argument, the string <fo:inline font-family="monospace">'Pewty'</fo:inline>.  The return
        value, which must be callable, is then called with <fo:inline font-family="monospace">f0</fo:inline> as its argument.  The return value from that
        call is then passed to <fo:inline font-family="monospace">f1</fo:inline>.  Name <fo:inline font-family="monospace">f0</fo:inline> is then bound to the return value from the
        call to <fo:inline font-family="monospace">f1</fo:inline>.
      </fo:block></fo:block></fo:block><fo:block id="exceptions"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Exceptions: Error signaling and handling</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">25. Exceptions: Error signaling and handling</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Python's exception system provides a way to signal error
      conditions and other disruptions in normal processing, and
      also a way for programs to recover from these conditions.      
    </fo:block><fo:list-block id="id474775" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id474779" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="exception-terms">Section 25.1, “Definitions of exception terms”</fo:basic-link><fo:basic-link internal-destination="exception-terms"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exception-terms"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474792" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="exception-lifecycle">Section 25.2, “Life cycle of an exception”</fo:basic-link><fo:basic-link internal-destination="exception-lifecycle"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exception-lifecycle"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474805" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="exception-hierarchy">Section 25.3, “Built-in exceptions”</fo:basic-link><fo:basic-link internal-destination="exception-hierarchy"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exception-hierarchy"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="exception-terms"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Definitions of exception terms</fo:marker><fo:block font-size="14.4pt">25.1. Definitions of exception terms</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Some definitions:
      </fo:block><fo:list-block id="id474835" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id474837" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            To <fo:inline font-style="italic">raise</fo:inline> an exception means to
            signal that the program cannot proceed normally due to
            an error or other condition.  (In other programming
            languages, such as Java, the equivalent term is to
            <fo:inline font-style="italic">throw</fo:inline> an exception.)
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            Two values accompany the raising of an exception: the
            <fo:inline font-style="italic">type</fo:inline> and the <fo:inline font-style="italic">value</fo:inline>.  For example, if a program
            attempts to open an existing disk file but there is no
            such file, the type is <fo:inline font-family="monospace">IOError</fo:inline>, and the
            value is an instance of the <fo:inline font-family="monospace">IOError</fo:inline>
            class that contains additional information about this
            error.
          </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            For more information about raising exceptions, see
            <fo:basic-link internal-destination="raise-statement">Section 23.6, “The <fo:inline font-family="monospace">raise</fo:inline> statement: Cause an
      exception”</fo:basic-link><fo:basic-link internal-destination="raise-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="raise-statement"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474883" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A program may choose to <fo:inline font-style="italic">handle</fo:inline>
            an exception.  That is, a program may say that if a
            certain exception or category of exceptions occurs in a
            specific block of code, Python must execute another
            code block called a <fo:inline font-style="italic">handler</fo:inline>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id474899" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            A <fo:inline font-style="italic">traceback</fo:inline> is a message from
            Python showing where an exception occurred.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you type a statement in conversational mode that causes
        an exception, you will see a short traceback like this:
        <fo:block id="id474915" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; x = 59 / 0
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ZeroDivisionError: integer division or modulo by zero
</fo:block>

The above example showed that the offending statement was
read from the standard input stream (<fo:inline font-family="monospace">&lt;stdin&gt;</fo:inline>).
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        When looking at a traceback, always look at the last line
        first.  It tells you the general type of exception (in the
        example, a <fo:inline font-family="monospace">ZeroDivisionError</fo:inline>), followed by
        additional details (“integer division or modulo by
        zero”).
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If an exception occurs inside one or more function calls,
        the traceback will give a complete list of the functions
        involved, from outermost to innermost.  Again, the last
        line shows the exception type and details.

        <fo:block id="id474944" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def f(): g()
... 
&gt;&gt;&gt; def g(): h()
... 
&gt;&gt;&gt; def h(): return 1/0
... 
&gt;&gt;&gt; f()
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  File "&lt;stdin&gt;", line 1, in f
  File "&lt;stdin&gt;", line 1, in g
  File "&lt;stdin&gt;", line 1, in h
ZeroDivisionError: integer division or modulo by zero
</fo:block>
      </fo:block></fo:block><fo:block id="exception-lifecycle"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Life cycle of an exception</fo:marker><fo:block font-size="14.4pt">25.2. Life cycle of an exception</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If you anticipate that executing a particular statement may
        cause an exception and you don't want your program to
        terminate and display a traceback, you can use a <fo:inline font-family="monospace">try</fo:inline> construct to specify handlers to be executed
        if an exception occurs.  For details, see <fo:basic-link internal-destination="try-statement">Section 23.8, “The <fo:inline font-family="monospace">try</fo:inline> statement: Anticipate
      exceptions”</fo:basic-link><fo:basic-link internal-destination="try-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="try-statement"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If an exception occurs inside a function and it is not
        handled at that level by a <fo:inline font-family="monospace">try</fo:inline> construct,
        Python will work back through the pending function calls
        until it either finds a handler for that exception or
        runs out of pending function calls.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        If there are multiple handlers for the exception in
        calling functions, the innermost will be used.  If there
        are no handlers for the exception in calling functions,
        you will get a stack traceback and the program will
        terminate.
        
        <fo:block id="id475000" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; def f():
...     try:
...         g()
...     except ValueError, detail:
...         print "Caught a ValueError:", detail.message
... 
&gt;&gt;&gt; def g(): h()
... 
&gt;&gt;&gt; def h():
...     raise ValueError('This is a test.')
... 
&gt;&gt;&gt; f()
Caught a ValueError: This is a test.
</fo:block>

        In the example above, function <fo:inline font-family="monospace">f()</fo:inline> calls
        function <fo:inline font-family="monospace">g()</fo:inline>, which in turn calls function
        <fo:inline font-family="monospace">h()</fo:inline>.  Function <fo:inline font-family="monospace">h()</fo:inline> raises a
        <fo:inline font-family="monospace">ValueError</fo:inline> exception, but there is no
        <fo:inline font-family="monospace">try:</fo:inline> block around it.  Python looks to see
        if there is a <fo:inline font-family="monospace">ValueError</fo:inline> handler in <fo:inline font-family="monospace">g()</fo:inline>, but there is not.  Finally a handler for
        <fo:inline font-family="monospace">ValueError</fo:inline> is found inside function <fo:inline font-family="monospace">f()</fo:inline>, so control resumes inside that handler.
        Note that no stack traceback is displayed, because the
        <fo:inline font-family="monospace">ValueError</fo:inline> exception was handled
        successfully.
      </fo:block></fo:block><fo:block id="exception-hierarchy"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Built-in exceptions</fo:marker><fo:block font-size="14.4pt">25.3. Built-in exceptions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Python defines a complete hierarchy of built-in exception
        classes.  When you write a handler, you can specify any
        class in this hierarchy, and that handler will apply to
        that class <fo:inline font-style="italic">and any derived classes</fo:inline>.  This allows you to write generic handlers that catch
        whole groups of exception types.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        In describing this hierarchy, we will use indentation to
        show the subclass/parent class relationships.  Generally
        a <fo:inline font-family="monospace">raise</fo:inline> statement will name one of the
        “leaf” classes, that is, a class that does
        not have any subclasses.  Ancestor classes that are not
        usually raised are marked with
        an asterisk (*) in the section below.
      </fo:block><fo:list-block id="id475092" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475094" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-family="monospace">BaseException</fo:inline>*: This is the ancestor
            of all exception classes.  The constructor for this
            class takes one argument, a string containing the
            error message.  That argument is available as the
            <fo:inline font-family="monospace">.message</fo:inline> attribute.
          </fo:block><fo:list-block id="id475111" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475113" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                <fo:inline font-family="monospace">SystemExit</fo:inline>: Raise this exception
                to terminate execution of your program; it is a
                special case in that it does not produce a stack
                traceback.  In module <fo:inline font-family="monospace">sys</fo:inline>, the
                <fo:inline font-family="monospace">.exit()</fo:inline> method raises this
                exception.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                It is possible to write a handler for this
                exception.  To defeat such a handler and force
                immediate termination, import module <fo:inline font-family="monospace">os</fo:inline> and use method <fo:inline font-family="monospace">os._exit()</fo:inline>.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475150" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                <fo:inline font-family="monospace">KeyboardInterrupt</fo:inline>: Raised when the
                user signals an interruption with the keyboard
                (<fo:inline font-style="italic" font-family="sans-serif">del</fo:inline> under Windows, or <fo:inline font-style="italic" font-family="sans-serif">Control-C</fo:inline> in Linux or Mac environments).
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                This class inherits from <fo:inline font-family="monospace">BaseException</fo:inline> rather than from <fo:inline font-family="monospace">Exception</fo:inline> so that catch-all handlers for
                class <fo:inline font-family="monospace">Exception</fo:inline> will not prevent
                program termination.
              </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475189" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                <fo:inline font-family="monospace">Exception</fo:inline>*: This is the preferred
                base class for all built-in and user-defined
                exceptions.  If you want to write a handler for
                all these exception types, use <fo:inline font-family="monospace">Exception</fo:inline> as the handler's type.
                <fo:block id="id475205" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; try:
...     x = 1 / 0
... except Exception, detail:
...     print "Fail:", detail.message
... 
Fail: integer division or modulo by zero
&gt;&gt;&gt; try:
...     x = noSuchVariable
... except Exception, detail:
...     print "Fail:", detail.message
... 
Fail: name 'noSuchVariable' is not defined
</fo:block>
              </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" start-indent="0.25in" end-indent="0.25in" border="4pt solid #d0d0d0" padding="4pt" id="id475217"><fo:block keep-with-next="always" font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Warning</fo:block><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                  A catch-all handler like this can mask any
                  number of errors.  Do not use such a handler
                  unless your program must absolutely stay
                  running.
                </fo:block></fo:block></fo:block><fo:list-block id="id475225" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475227" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    <fo:inline font-family="monospace">StopIteration</fo:inline>: This is the
                    exception that a generator must raise in
                    order to signal that no more generated values
                    are available.  See <fo:basic-link internal-destination="generators">Section 24.3, “Generators: Functions that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="generators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="generators"/>)</fo:inline></fo:basic-link>.
                  </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475250" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    <fo:inline font-family="monospace">StandardError</fo:inline>*: This is the base
                    class for all built-in exceptions that are
                    considered errors.
                  </fo:block><fo:list-block id="id475262" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475264" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">ArithmeticError</fo:inline>*: This is
                        the base class for errors involving
                        arithmetic computations.
                      </fo:block><fo:list-block id="id475277" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475279" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">FloatingPointError</fo:inline>: This is
                            raised for arithmetic errors
                            involving the <fo:inline font-family="monospace">float</fo:inline>
                            type.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475300" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">OverflowError</fo:inline>: This is
                            raised when the result of an
                            operation cannot be represented.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475317" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">ZeroDivisionError</fo:inline>: An
                            attempt to divide by zero.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475338" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">AssertionError</fo:inline>: An <fo:inline font-family="monospace">assert</fo:inline> statement has failed.
                        See <fo:basic-link internal-destination="assert-statement">Section 22.2, “The <fo:inline font-family="monospace">assert</fo:inline> statement: Verify
      preconditions”</fo:basic-link><fo:basic-link internal-destination="assert-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="assert-statement"/>)</fo:inline></fo:basic-link>.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475363" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">AttributeError</fo:inline>: Failure to
                        access an attribute.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475379" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">EnvironmentError</fo:inline>*: Errors
                        caused by functions outside of Python,
                        such as the operating system or
                        peripheral devices.
                      </fo:block><fo:list-block id="id475392" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475394" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">IOError</fo:inline>: Errors
                            related to file input or output.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475410" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">OSError</fo:inline>: Errors signaled
                            from the operating system.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475431" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">ImportError</fo:inline>: Failure to
                        import a module or to import items from a
                        module.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475448" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">LookupError</fo:inline>*: Superclass for
                        errors caused by attempts to retrieve
                        values from inside a container class.
                      </fo:block><fo:list-block id="id475460" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475462" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">IndexError</fo:inline>: Attempt to
                            retrieve a sequence member <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline>[<fo:inline font-style="italic" font-family="monospace">I</fo:inline>]</fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> is not a
                            valid index in sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475497" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">KeyError</fo:inline>: Attempt to
                            retrieve a dictionary member <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline>[<fo:inline font-style="italic" font-family="monospace">K</fo:inline>]</fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">K</fo:inline></fo:inline> is not a
                            valid key in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475536" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">MemoryError</fo:inline>: No more
                        processor memory is available.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475552" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">NameError</fo:inline>: Attempt to
                        retrieve a name that is not defined.
                      </fo:block><fo:list-block id="id475564" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475566" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">UnboundLocalError</fo:inline>:
                            Attempt to retrieve the value of a local
                            name when no value has yet been
                            assigned to it.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475589" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">RuntimeError</fo:inline>: An error
                        that doesn't fit the other categories.
                      </fo:block><fo:list-block id="id475601" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475603" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            <fo:inline font-family="monospace">NotImplementedError</fo:inline>:
                            This is the preferred way for the
                            virtual methods of a base class to
                            signal that they have not been
                            replaced by a concrete method in a
                            derived class.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475623" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">SyntaxError</fo:inline>: Attempt to
                        execute invalid Python source code.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475639" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">TypeError</fo:inline>: Attempt to
                        perform an operation on a value that does
                        not support that operation, such as
                        trying to use exponentiation (<fo:inline font-family="monospace">**</fo:inline>) on a string.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475660" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        <fo:inline font-family="monospace">ValueError</fo:inline>: Caused by an
                        operation that is performed on values of
                        the correct type, but the actual values
                        are not valid.  Example: taking a
                        negative number to a fractional power.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="classes"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Classes: Defining your own types</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">26. Classes: Defining your own types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      This section assumes you already understand the basics of
      object-oriented programming in Python, and that you know the
      meaning of concepts such as class, instance, method, and
      attribute.  For a general tutorial on these concepts, see the
      <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/lang/pytut/obj-intro.html)">introduction to object-oriented Python programming</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">26</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">26</fo:inline> <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/lang/pytut/obj-intro.html)">http://www.nmt.edu/tcc/help/pubs/lang/pytut/obj-intro.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> in
      the Tech Computer Center's <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/lang/pytut/)"><fo:inline font-style="italic">Python tutorial</fo:inline></fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">27</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">27</fo:inline> <fo:basic-link external-destination="url(http://www.nmt.edu/tcc/help/pubs/lang/pytut/)">http://www.nmt.edu/tcc/help/pubs/lang/pytut/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Here is the general form of the class declaration for some
      class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> with
      one or more parent classes <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline>, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>, …:

      <fo:block id="id475754" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">class <fo:inline font-style="italic" font-family="monospace">C</fo:inline>(<fo:inline font-style="italic" font-family="monospace">P<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">P<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...):
    <fo:inline font-style="italic" font-family="monospace">attribute definitions</fo:inline>
    ...
</fo:block>

      To declare a class that does not inherit from any parent classes:

      <fo:block id="id475778" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">class <fo:inline font-style="italic" font-family="monospace">C</fo:inline>:
    <fo:inline font-style="italic" font-family="monospace">attribute definitions</fo:inline>
    ...
</fo:block>

      The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">attribute definitions</fo:inline></fo:inline> may include any number of <fo:inline font-family="monospace">def</fo:inline>
      blocks that declare methods of the class, and any number
      of class variable declarations.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Functionally, a class is really just a namespace.  This
      namespace is just a place to store the pieces of the class
      mechanisms: its methods and class variables.
    </fo:block><fo:list-block id="id475806" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id475810" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          When Python reads a “<fo:inline font-family="monospace">class</fo:inline>” declaration, it creates a new, empty
          namespace.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475822" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          When Python reads a “def” within a class,
          the name of that method is added to the class's
          namespace.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475832" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          If you define a class variable (that is, if you assign
          a value to a name inside a class but outside of any
          methods of the class), the class variable's name and
          value are added to the namespace.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      A brief conversational session may serve to illustrate
      these concepts.  We'll make use of the built-in function
      <fo:inline font-family="monospace">dir()</fo:inline> to show the contents of the class's
      namespace; see <fo:basic-link internal-destination="dir-function">Section 21.5, “<fo:inline font-family="monospace">dir()</fo:inline>: Display a namespace's names”</fo:basic-link><fo:basic-link internal-destination="dir-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="dir-function"/>)</fo:inline></fo:basic-link>.
    </fo:block><fo:block id="id475856" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class Taunter:          <fo:inline id="taunt-class"><fo:external-graphic src="url(callouts/1.pdf)"/></fo:inline>
...     tauntCount  =  0    <fo:inline id="taunt-clsvar"><fo:external-graphic src="url(callouts/2.pdf)"/></fo:inline>
...     def taunt(self):    <fo:inline id="taunt-taunt"><fo:external-graphic src="url(callouts/3.pdf)"/></fo:inline>
...         print "Go away, or I shall taunt you a second time!"
... 
&gt;&gt;&gt; dir(Taunter)            <fo:inline id="taunt-class-ns"><fo:external-graphic src="url(callouts/4.pdf)"/></fo:inline>
['__doc__', '__module__', 'taunt', 'tauntCount']
&gt;&gt;&gt; type(Taunter.__doc__)
&lt;type 'NoneType'&gt;
&gt;&gt;&gt; Taunter.__module__
'__main__'
&gt;&gt;&gt; Taunter.tauntCount      <fo:inline id="taunt-clsvar-show"><fo:external-graphic src="url(callouts/5.pdf)"/></fo:inline>
0
&gt;&gt;&gt; Taunter.taunt           <fo:inline id="taunt-unbound"><fo:external-graphic src="url(callouts/6.pdf)"/></fo:inline>
&lt;unbound method Taunter.taunt&gt;
</fo:block><fo:block id="id475902" text-align="justify"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" provisional-distance-between-starts="2.2em" provisional-label-separation="0.2em"><fo:list-item id="id475905"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/1.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          When Python reads this line, it adds the name <fo:inline font-family="monospace">Taunter</fo:inline> to the current local namespace,
          bound to a new, empty namespace of type <fo:inline font-family="monospace">class</fo:inline>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475923"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/2.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Because this assignment takes place inside class <fo:inline font-family="monospace">Taunter</fo:inline> but not inside a <fo:inline font-family="monospace">def</fo:inline>,
          name <fo:inline font-family="monospace">tauntCount</fo:inline> becomes a class
          variable, bound to an <fo:inline font-family="monospace">int</fo:inline> value of zero.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475949"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/3.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          The next two lines define a method named <fo:inline font-family="monospace">taunt()</fo:inline> within the class.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id475963"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/4.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          After we've finished entering the class definition, we
          use <fo:inline font-family="monospace">dir(Taunter)</fo:inline> to see what names are
          in the class's namespace.  Variables <fo:inline font-family="monospace">__doc__</fo:inline> and <fo:inline font-family="monospace">__module__</fo:inline> are
          added automatically.  Because there was no
          documentation string in the class, <fo:inline font-family="monospace">__doc__</fo:inline> is bound to <fo:inline font-family="monospace">None</fo:inline>.  The <fo:inline font-family="monospace">__module__</fo:inline> variable has the value <fo:inline font-family="monospace">'__main__'</fo:inline> because the class was entered in
          conversational mode.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476003"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/5.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          To retrieve the value of a class variable <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline> in class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline>, use the syntax
          “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline>.<fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>”.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476031"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/6.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Name <fo:inline font-family="monospace">taunt</fo:inline> in the class namespace is
          bound to an object of type “unbound
          method.” An unbound method is a method
          (function) that is inside a class, but it is not
          associated with an instance of the class.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      An instance of a class is also a namespace.  When the
      instance is created, all the names from the class's
      namespace are copied into the instance namespace.  From
      that point on, any changes made to the instance's namespace
      do not affect the class namespace:
    </fo:block><fo:block id="id476057" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; frenchy = Taunter()             <fo:inline id="frenchy-dir"><fo:external-graphic src="url(callouts/1.pdf)"/></fo:inline>
&gt;&gt;&gt; dir(frenchy)
['__doc__', '__module__', 'taunt', 'tauntCount']
&gt;&gt;&gt; frenchy.where = 'crenelations'  <fo:inline id="frenchy-cren"><fo:external-graphic src="url(callouts/2.pdf)"/></fo:inline>
&gt;&gt;&gt; dir(frenchy)                    <fo:inline id="frenchy-got-cren"><fo:external-graphic src="url(callouts/3.pdf)"/></fo:inline>
['__doc__', '__module__', 'where', 'taunt', 'tauntCount']
&gt;&gt;&gt; frenchy.where
'crenelations'
&gt;&gt;&gt; dir(Taunter)
['__doc__', '__module__', 'taunt', 'tauntCount']
&gt;&gt;&gt; frenchy.tauntCount              <fo:inline id="frenchy-inst-var"><fo:external-graphic src="url(callouts/4.pdf)"/></fo:inline>
0
&gt;&gt;&gt; frenchy.tauntCount += 1         <fo:inline id="frenchy-bump-i"><fo:external-graphic src="url(callouts/5.pdf)"/></fo:inline>
&gt;&gt;&gt; frenchy.tauntCount
1
&gt;&gt;&gt; Taunter.tauntCount
0
&gt;&gt;&gt; type(frenchy.taunt)             <fo:inline id="frenchy-method-type"><fo:external-graphic src="url(callouts/6.pdf)"/></fo:inline>
&lt;type 'instancemethod'&gt;
&gt;&gt;&gt; frenchy.taunt()                 <fo:inline id="frenchy-method-call"><fo:external-graphic src="url(callouts/7.pdf)"/></fo:inline>
Go away, or I shall taunt you a second time!
&gt;&gt;&gt; Taunter.taunt(frenchy)          <fo:inline id="frenchy-unbound-call"><fo:external-graphic src="url(callouts/8.pdf)"/></fo:inline>
Go away, or I shall taunt you a second time!
</fo:block><fo:block id="id476115" text-align="justify"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" provisional-distance-between-starts="2.2em" provisional-label-separation="0.2em"><fo:list-item id="id476117"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/1.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          This class does not have a constructor (<fo:inline font-family="monospace">__init__</fo:inline>) method, so when an instance is
          created, the instance is a namespace with the same
          names as the class, and the same values.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476133"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/2.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          This line adds a new name <fo:inline font-family="monospace">where</fo:inline> to
          the instance's namespace.  It is bound to the string
          value <fo:inline font-family="monospace">'crenelations'</fo:inline>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476151"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/3.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Note that the instance namespace now contains the name
          <fo:inline font-family="monospace">where</fo:inline>, but the class's namespace is
          unchanged.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476166"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/4.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          To retrieve an attribute <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">A</fo:inline></fo:inline> of an instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline>, use the syntax
          “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline>.<fo:inline font-style="italic" font-family="monospace">A</fo:inline></fo:inline>”.
          Initially, the instance variable has the same value as
          the class variable of the same name.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476197"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/5.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Here, we add one to the instance variable <fo:inline font-family="monospace">tauntCount</fo:inline>.  The instance variable has the new
          value, but the class variable <fo:inline font-family="monospace">tauntCount</fo:inline>
          is unchanged.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476216"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/6.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Within the instance namespace, name <fo:inline font-family="monospace">taunt</fo:inline> is now a <fo:inline font-style="italic">bound method</fo:inline>: it is
          associated with the instance <fo:inline font-family="monospace">frenchy</fo:inline>.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The next two lines show two equivalent methods of
          calling the <fo:inline font-family="monospace">taunt</fo:inline> method.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476246"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/7.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          Most method calls are <fo:inline font-style="italic">bound method
          calls</fo:inline>.  To call a bound method <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B</fo:inline></fo:inline> of an instance
          <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline>, use the
          syntax “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline>.<fo:inline font-style="italic" font-family="monospace">B</fo:inline>(...)</fo:inline>”.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          When a method <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">B</fo:inline></fo:inline> is bound to an instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline>, the instance namespace <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> becomes the
          “<fo:inline font-family="monospace">self</fo:inline>” argument passed in
          to the method.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476302"><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic src="url(callouts/8.pdf)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          This line has the same effect as the previous line, but
          it is an <fo:inline font-style="italic">unbound method call</fo:inline>.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The expression “<fo:inline font-family="monospace">Taunter.taunt</fo:inline>” retrieves the unbound method from the class
          definition.  When you call an unbound method, you must
          supply the “<fo:inline font-family="monospace">self</fo:inline>” argument
          explicitly as the first argument.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Unbound method calls are not terribly common, but you
          will need to know about them when you write the
          constructor for a derived class: you must call the
          parent class constructor as an unbound call.
          Generally, if class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> has parent class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline>, the derived class might look
          something like this:
          <fo:block id="id476344" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">class <fo:inline font-style="italic" font-family="monospace">D</fo:inline>(<fo:inline font-style="italic" font-family="monospace">C</fo:inline>):
    def __init__(self, ...):
        <fo:inline font-style="italic" font-family="monospace">C</fo:inline>.__init__(self, ...)
        ...
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Namespaces are very much like dictionaries.  Where a
      dictionary has unique keys, a namespace has unique names.
      As a matter of fact, classes and instances have a special
      built-in attribute called “<fo:inline font-family="monospace">__dict__</fo:inline>” which, for most purposes, <fo:inline font-style="italic">is</fo:inline> the namespace as a dictionary.  Continuing the examples
      above:

      <fo:block id="id476377" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; Taunter.__dict__
{'taunt': &lt;function taunt at 0xb7ed002c&gt;, '__module__': '__main__', 'tau
ntCount': 0, '__doc__': None}
&gt;&gt;&gt; newFrenchy=Taunter()
&gt;&gt;&gt; newFrenchy.__dict__
{}
&gt;&gt;&gt; frenchy.__dict__
{'tauntCount': 1, 'where': 'crenelations'}
</fo:block>

      The class's dictionary has the four names we expect: the
      built-ins <fo:inline font-family="monospace">__module__</fo:inline> and <fo:inline font-family="monospace">__doc__</fo:inline>, the class variable <fo:inline font-family="monospace">tauntCount</fo:inline>, and the method <fo:inline font-family="monospace">taunt</fo:inline>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      But notice that the <fo:inline font-family="monospace">__dict__</fo:inline> attribute of
      the newly created instance <fo:inline font-family="monospace">newFrenchy</fo:inline> does
      not have the four names copied from the class.  In fact, it
      is empty.  And the <fo:inline font-family="monospace">__dict__</fo:inline> of instance
      <fo:inline font-family="monospace">frenchy</fo:inline> contains only the names that have
      changed since its instantation.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      What actually happens when you refer to an attribute is
      that Python looks first in the instance's <fo:inline font-family="monospace">__dict__</fo:inline>; if the name is not found there, it looks
      in the <fo:inline font-family="monospace">__dict__</fo:inline> of the class.  For derived
      classes, Python will also search the <fo:inline font-family="monospace">__dict__</fo:inline> attributes of all the ancestor classes.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      So, in our example, a reference to <fo:inline font-family="monospace">frenchy.tauntCount</fo:inline> would find the value of 1 in
      the instance.  A reference to <fo:inline font-family="monospace">newFrenchy.tauntCount</fo:inline> would fail to find that name
      in <fo:inline font-family="monospace">newFrench.__dict__</fo:inline>, but would succeed in
      finding the class variable value 0 in <fo:inline font-family="monospace">Taunter.__dict__['tauntCount']</fo:inline>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      Let's now look at the life cycles of classes in more detail.
      Due to improvements made in the language since it was first
      introduced, Python has two kinds of classes, old-style and
      new-style.  We encourage you to use new-style classes; old-style
      classes will no longer be supported in the next major
      release, Python 3000.
    </fo:block><fo:list-block id="id476467" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id476469" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          All new-style classes must declare at least one parent class
          that is either the top-level class <fo:inline font-family="monospace">object</fo:inline> or
          some other class that derives ultimately from <fo:inline font-family="monospace">object</fo:inline>.  Such a class is said to be <fo:inline font-style="italic">derived from</fo:inline>, or <fo:inline font-style="italic">inherits
          from</fo:inline>, the <fo:inline font-family="monospace">object</fo:inline> class.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          To declare a new-style class <fo:inline font-style="italic" font-family="monospace">C</fo:inline>
          that inherits from <fo:inline font-family="monospace">object</fo:inline>:
          <fo:block id="id476505" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">class <fo:inline font-style="italic" font-family="monospace">C</fo:inline>(object):
    ...<fo:inline font-style="italic" font-family="monospace">class methods and variables</fo:inline>...
</fo:block>
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476520" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          An old-style class is one that doesn't declare a parent
          class at all, or a class that inherits from an existing
          old-style class.  The life cycle of an old-style class
          is described in <fo:basic-link internal-destination="old-classes-intro">Section 26.1, “Old-style classes”</fo:basic-link><fo:basic-link internal-destination="old-classes-intro"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-classes-intro"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      In most respects, the two classes perform identically.
    </fo:block><fo:list-block id="id476540" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id476545" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          We'll start by explaining old-style classes in <fo:basic-link internal-destination="old-classes-intro">Section 26.1, “Old-style classes”</fo:basic-link><fo:basic-link internal-destination="old-classes-intro"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-classes-intro"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476557" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          To benefit from the many functional improvements of
          new-style classes, and especially if you expect to migrate
          your code to the major changes of Python 3.0, see
          <fo:basic-link internal-destination="new-classes-intro">Section 26.2, “Life cycle of a new-style class”</fo:basic-link><fo:basic-link internal-destination="new-classes-intro"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-classes-intro"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="old-classes-intro"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Old-style classes</fo:marker><fo:block font-size="14.4pt">26.1. Old-style classes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Old-style classes are those declared without a parent
        class, or classes that inherit from an existing old-style
        class.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Here is an outline of the birth, life, and death of an
        old-style class and its instances.
      </fo:block><fo:list-block id="id476594" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id476599" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="old-class-def">Section 26.1.1, “Defining an old-style class”</fo:basic-link><fo:basic-link internal-destination="old-class-def"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-class-def"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476612" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="old-constructor">Section 26.1.2, “Instantiation of an old-style class: The
        constructor, <fo:inline font-family="monospace">.__init__()</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="old-constructor"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-constructor"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476625" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="old-attribute-ref">Section 26.1.3, “Attribute references in old-style classes”</fo:basic-link><fo:basic-link internal-destination="old-attribute-ref"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-attribute-ref"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476638" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="old-method-call">Section 26.1.4, “Method calls in an old-style class”</fo:basic-link><fo:basic-link internal-destination="old-method-call"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-method-call"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476651" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="old-del">Section 26.1.5, “Instance deletion: the destructor, <fo:inline font-family="monospace">.__del__()</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="old-del"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-del"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="old-class-def"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.1.1. Defining an old-style class</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          To define an old-style class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> with no parent class, use
          this general form:

          <fo:block id="id476684" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">class <fo:inline font-style="italic" font-family="monospace">C</fo:inline>:
    ...<fo:inline font-style="italic" font-family="monospace">class methods and variables</fo:inline>...
</fo:block>

          To create a class that inherits from one or more parent
          classes <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline></fo:inline>, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline></fo:inline>,
          …:

          <fo:block id="id476710" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">class <fo:inline font-style="italic" font-family="monospace">C</fo:inline>(<fo:inline font-style="italic" font-family="monospace">P<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">P<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...):              
    ...<fo:inline font-style="italic" font-family="monospace">class methods and variables</fo:inline>...
</fo:block>

        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          As Python reads the definition of your class, it
          first creates a new, empty namespace called the
          <fo:inline font-style="italic">class namespace</fo:inline>.  You can
          access the class namespace directly as an
          attribute named <fo:inline font-family="monospace">__dict__</fo:inline>, a dictionary
          whose keys are the names in that namespace.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          As Python reads each method or class variable in your
          class declaration, it adds the name of that method or
          variable to the class namespace.
        </fo:block></fo:block><fo:block id="old-constructor"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.1.2. Instantiation of an old-style class: The
        constructor, <fo:inline font-family="monospace">.__init__()</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The creation of a new instance of a class happens when a
          running Python program encounters a call to that class,
          that is, the class name with a pair of parentheses after
          it, with zero or more arguments inside the parentheses.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the general form:

          <fo:block id="id476780" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">C(<fo:inline font-style="italic" font-family="monospace">a<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">a<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...)                
</fo:block>

          The instance creation (also called <fo:inline font-style="italic">instantiation</fo:inline>) is handled by the <fo:inline font-family="monospace">__init__()</fo:inline> or constructor method.
        </fo:block><fo:block id="id476806" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-block provisional-distance-between-starts="2em" provisional-label-separation="0.2em" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id476808">1.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              First Python creates the instance with an empty
              <fo:inline font-family="monospace">.__dict__</fo:inline> attribute that will
              contain the instance's values.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id476822">2.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Python then calls the constructor.  The argument list
              for this call always has the special first argument
              <fo:inline font-family="monospace">self</fo:inline> (the instance), followed by
              whatever arguments were used in the initial call.
              The constructor call is equivalent to this:

              <fo:block id="id476835" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">C</fo:inline>.__init__(self, <fo:inline font-style="italic" font-family="monospace">a<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">a<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...)
</fo:block>
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id476856">3.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The constructor method then executes.  Typically the
              constructor will set up new instance attributes by
              assignments of this form:

              <fo:block id="id476864" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">        self.<fo:inline font-style="italic" font-family="monospace">name</fo:inline> = <fo:inline font-style="italic" font-family="monospace">expression</fo:inline>
</fo:block>
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              When the constructor finishes executing, the
              instance is returned to the constructor's caller.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="old-attribute-ref"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.1.3. Attribute references in old-style classes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The names inside the instance are called <fo:inline font-style="italic">attributes</fo:inline>.  (The methods are technically
          attributes—attributes that are of type
          function.)  There are three operations on attributes:
          get, set, and delete.
        </fo:block><fo:list-block id="id476912" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id476917" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              To <fo:inline font-style="italic">get</fo:inline> an attribute means
              to retrieve its value.  Python searches the
              instance's <fo:inline font-family="monospace">.__dict__</fo:inline> for the
              attribute's name; if that name is found, its value
              is returned.  If the instance's <fo:inline font-family="monospace">.__dict__</fo:inline> does not have a binding for the
              given name, Python searches the class's <fo:inline font-family="monospace">.__dict__</fo:inline>.  If no value is found there,
              Python searches the namespaces of the ancestor
              classes (if any).

              <fo:block id="id476939" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class C:
...     def __init__(self, x):
...         self.thingy = x
... 
&gt;&gt;&gt; c=C(42)
&gt;&gt;&gt; c.thingy
42
&gt;&gt;&gt; c.__dict__['thingy']
42
</fo:block>

            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              When you call a method <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">M</fo:inline></fo:inline> of an instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> in an
              expression of the form “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline>.<fo:inline font-style="italic" font-family="monospace">M</fo:inline>(...)</fo:inline>”, this is considered just
              another attribute “get” operation:
              the get operation <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline>.<fo:inline font-style="italic" font-family="monospace">M</fo:inline></fo:inline> retrieves the method, and then that
              method is called using the arguments inside the
              “<fo:inline font-family="monospace">(...)</fo:inline>”.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id476986" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              To <fo:inline font-style="italic">set</fo:inline> an attribute means
              to give it a value.  If there is an existing
              attribute with the same name, its old value is
              discarded, and the attribute name is bound to the
              new value.  The new value is stored in the
              instance's <fo:inline font-family="monospace">.__dict__</fo:inline>.

              <fo:block id="id477000" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; c.thingy
42
&gt;&gt;&gt; c.thingy = 58
&gt;&gt;&gt; c.thingy
58
&gt;&gt;&gt; c.__dict__['thingy']
58
</fo:block>

            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477009" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              You can <fo:inline font-style="italic">delete</fo:inline> an
              attribute from an instance using a <fo:inline font-family="monospace">del</fo:inline> statement (see <fo:basic-link internal-destination="del-statement">Section 22.3, “The <fo:inline font-family="monospace">del</fo:inline> statement: Delete a name or part
      of a value”</fo:basic-link><fo:basic-link internal-destination="del-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="del-statement"/>)</fo:inline></fo:basic-link>).

              <fo:block id="id477027" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; c.thingy
58
&gt;&gt;&gt; del c.thingy
&gt;&gt;&gt; c.thingy
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
AttributeError: C instance has no attribute 'thingy'
</fo:block>

            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          In addition to ordinary attributes and methods,
          your class can accept references to names that do
          <fo:inline font-style="italic">not</fo:inline> exist in the instance
          or class namespace.  You can define special
          methods that will be called when some statement
          tries to get, set, or delete an attribute that
          isn't found in the instance's <fo:inline font-family="monospace">.__dict__</fo:inline>.  See <fo:basic-link internal-destination="getattr-method">Section 26.3.14, “<fo:inline font-family="monospace">__getattr__()</fo:inline>: Handle a reference
        to an unknown attribute”</fo:basic-link><fo:basic-link internal-destination="getattr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattr-method"/>)</fo:inline></fo:basic-link>, <fo:basic-link internal-destination="setattr-method">Section 26.3.21, “<fo:inline font-family="monospace">__setattr__()</fo:inline>: Intercept all
        attribute changes”</fo:basic-link><fo:basic-link internal-destination="setattr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="setattr-method"/>)</fo:inline></fo:basic-link>, and <fo:basic-link internal-destination="delattr-method">Section 26.3.9, “<fo:inline font-family="monospace">__delattr__()</fo:inline>: Delete an
        attribute”</fo:basic-link><fo:basic-link internal-destination="delattr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="delattr-method"/>)</fo:inline></fo:basic-link>.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If all else fails—if an attribute is not found
          in the instance's namespace and the class does not
          provide a special method that handles the attribute
          reference—Python will raise an <fo:inline font-family="monospace">AttributeError</fo:inline> exception.
        </fo:block></fo:block><fo:block id="old-method-call"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.1.4. Method calls in an old-style class</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          There are two different ways to call a method
          <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">M</fo:inline></fo:inline> of
          some class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline>:
        </fo:block><fo:list-block id="id477108" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id477110" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Most calls are <fo:inline font-style="italic">bound method</fo:inline> calls of this form, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> is an instance of some
              class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline>:

              <fo:block id="id477128" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">I</fo:inline>.<fo:inline font-style="italic" font-family="monospace">methodName</fo:inline>(<fo:inline font-style="italic" font-family="monospace">a<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">a<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...)
</fo:block>

              The instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">I</fo:inline></fo:inline> replaces <fo:inline font-family="monospace">self</fo:inline> as the
              first argument when setting up the arguments to be
              passed to the method.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477162" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>            
              The following form, called an <fo:inline font-style="italic">unbound
              method call</fo:inline>, is exactly equivalent to
              the above:

              <fo:block id="id477171" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">C</fo:inline>.methodName(<fo:inline font-style="italic" font-family="monospace">i</fo:inline>, <fo:inline font-style="italic" font-family="monospace">a<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">a<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...)
</fo:block>
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is a demonstration of the equivalence of bound
          and unbound method calls.
          <fo:block id="id477199" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class C:
...     def __init__(self, x):
...         self.x = x
...     def show(self, y):
...         print "*** ({0},{1}) ***".format(self.x, y)
... 
&gt;&gt;&gt; c=C(42)
&gt;&gt;&gt; c.show(58)
*** (42,58) ***
&gt;&gt;&gt; C.show(c,58)
*** (42,58) ***
</fo:block>
        </fo:block></fo:block><fo:block id="old-del"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.1.5. Instance deletion: the destructor, <fo:inline font-family="monospace">.__del__()</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          When there are no values that refer to an instance any
          more, the storage occupied by the instance is
          recycled.  However, if there are certain cleanup
          operations that must be done (such as closing external
          files), these operations can be placed into a
          <fo:inline font-style="italic">destructor</fo:inline> method that will
          be called before recycling the instance.  Here is the
          general form of a destructor:

          <fo:block id="id477238" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __del__(self):
        ...<fo:inline font-style="italic" font-family="monospace">cleanup statements</fo:inline>...
</fo:block>
        </fo:block></fo:block></fo:block><fo:block id="new-classes-intro"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Life cycle of a new-style class</fo:marker><fo:block font-size="14.4pt">26.2. Life cycle of a new-style class</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Most of the features of new-style classes are the same as
        for old-syle classes.  This section will discuss only the
        differences.  We won't cover a few of the more obscure
        advanced features here; for information on such topics as
        descriptors and metaclasses, see the <fo:basic-link external-destination="url(http://docs.python.org/reference/datamodel.html)">“Data
        model” section of the <fo:inline font-style="italic">Python Reference
        Manual</fo:inline></fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">28</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">28</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/reference/datamodel.html)">http://docs.python.org/reference/datamodel.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The declaration of a new-style class looks the same as
        for an old-style class, with one constraint: the class
        must inherit from the universal base class named <fo:inline font-family="monospace">object</fo:inline>, or from one or more other new-style
        classes.
      </fo:block><fo:list-block id="id477293" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id477296" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="new-new-method">Section 26.2.1, “<fo:inline font-family="monospace">__new__()</fo:inline>: New instance creation”</fo:basic-link><fo:basic-link internal-destination="new-new-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-new-method"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477309" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="new-attr-access">Section 26.2.2, “Attribute access control in new-style classes”</fo:basic-link><fo:basic-link internal-destination="new-attr-access"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-attr-access"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477323" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="new-property">Section 26.2.3, “Properties in new-style classes: Fine-grained
        attribute access control”</fo:basic-link><fo:basic-link internal-destination="new-property"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-property"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477336" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="new-slots">Section 26.2.4, “Conserving memory with <fo:inline font-family="monospace">__slots__</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="new-slots"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-slots"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="new-new-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.2.1. <fo:inline font-family="monospace">__new__()</fo:inline>: New instance creation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          New-style classes have a new special method name, <fo:inline font-family="monospace">__new__()</fo:inline>, that is called on instantiation
          <fo:inline font-style="italic">before</fo:inline> the constructor.  It
          handles the creation of a new instance.
        </fo:block><fo:list-block id="id477377" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id477379" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The <fo:inline font-family="monospace">.__new__()</fo:inline> method is called when
              an instance is created.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477390" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Method <fo:inline font-family="monospace">.__new__()</fo:inline> is always a static
              method (see <fo:basic-link internal-destination="static-methods">Section 26.4, “Static methods”</fo:basic-link><fo:basic-link internal-destination="static-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="static-methods"/>)</fo:inline></fo:basic-link>),
              even if you do not specifically make it a static
              method.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477407" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              A constructor call for
              some class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> has this general form:

              <fo:block id="id477417" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">C</fo:inline>(*<fo:inline font-style="italic" font-family="monospace">p</fo:inline>, **<fo:inline font-style="italic" font-family="monospace">k</fo:inline>)
</fo:block>

              That is, it can have any number of positional
              arguments and any number of keyword arguments.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The equivalent call to the <fo:inline font-family="monospace">.__new__()</fo:inline> method will look like this:

              <fo:block id="id477440" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __new__(<fo:inline font-style="italic" font-family="monospace">cls</fo:inline>, *<fo:inline font-style="italic" font-family="monospace">p</fo:inline>, **<fo:inline font-style="italic" font-family="monospace">k</fo:inline>):
        ...              
</fo:block>

              The first argument <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">cls</fo:inline></fo:inline> must be the class being
              created.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477463" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The <fo:inline font-family="monospace">.__new__()</fo:inline> method must call the
              parent class's <fo:inline font-family="monospace">.__new__()</fo:inline> method to
              create the instance.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              For example, if your class inherits directly from
              <fo:inline font-family="monospace">object</fo:inline>, you must call:

              <fo:block id="id477484" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">        object.__new__(<fo:inline font-family="monospace">cls</fo:inline>)
</fo:block>

              The value returned by that call is the new instance.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477496" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              In most cases, the <fo:inline font-family="monospace">.__new__()</fo:inline> method
              will return a new instance of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">cls</fo:inline></fo:inline>, and that class's <fo:inline font-family="monospace">.__init__()</fo:inline> will then be called with that
              instance as its <fo:inline font-family="monospace">self</fo:inline> argument, and
              the positional and keyword arguments <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">k</fo:inline></fo:inline> will be
              passed to that constructor as well.

              <fo:block id="id477527" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class Test(object):
...     def __new__(cls, *p, **k):
...         inst = object.__new__(cls)
...         return inst
...     def __init__(self, *p, **k):
...         print "p={0} k={1}".format(p, k)
... 
&gt;&gt;&gt; t=Test('egg', 'kale', sauce='Bearnaise')
p=('egg', 'kale') k={'sauce': 'Bearnaise'}
</fo:block>
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              <fo:inline font-style="italic">However</fo:inline>, if the <fo:inline font-family="monospace">.__new__()</fo:inline> method does <fo:inline font-style="italic">not</fo:inline> return an instance of class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">cls</fo:inline></fo:inline>, the
              constructor method <fo:inline font-family="monospace">.__init__()</fo:inline> will
              <fo:inline font-style="italic">not</fo:inline> be called.  This allows
              the class more control over how new instances are
              created and initialized.  You can return an
              instance of an entirely different class if you
              like.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="new-attr-access"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.2.2. Attribute access control in new-style classes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          New-style classes give you more ways to control what
          happens when an instance's attribute is accessed.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the general procedure for access to attribute
          <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> of
          instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>,
          where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> is
          the class of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>.
        </fo:block><fo:block id="id477612" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-block provisional-distance-between-starts="2em" provisional-label-separation="0.2em" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id477614">1.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If the instance has a <fo:inline font-family="monospace">__getattribute__()</fo:inline> special method (see
              <fo:basic-link internal-destination="getattribute-method">Section 26.3.15, “<fo:inline font-family="monospace">__getattribute__()</fo:inline>: Intercept all
        attribute references”</fo:basic-link><fo:basic-link internal-destination="getattribute-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattribute-method"/>)</fo:inline></fo:basic-link>), execute
              that method, which must either return the attribute
              value or raise <fo:inline font-family="monospace">AttributeError</fo:inline>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id477638">2.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If the instance has a <fo:inline font-family="monospace">__slots__</fo:inline>
              attribute (see <fo:basic-link internal-destination="new-slots">Section 26.2.4, “Conserving memory with <fo:inline font-family="monospace">__slots__</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="new-slots"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-slots"/>)</fo:inline></fo:basic-link>),
              return the value of the slot with name <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline>.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> does not
              match any of the slot names, or if the named slot
              has never been set to a value, raise <fo:inline font-family="monospace">AttributeError</fo:inline>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id477670">3.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> is
              a key in <fo:inline font-family="monospace">i</fo:inline>.__dict__, return the
              corresponding value.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id477688">4.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Search for attribute <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> in class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline>.  If that
              fails, search all the parent classes of C all the
              way back to <fo:inline font-family="monospace">object</fo:inline>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id477710">5.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If all searches in the preceding step failed and
              the instance has a <fo:inline font-family="monospace">.__getattr__()</fo:inline>
              special method, call that method.  See <fo:basic-link internal-destination="getattr-method">Section 26.3.14, “<fo:inline font-family="monospace">__getattr__()</fo:inline>: Handle a reference
        to an unknown attribute”</fo:basic-link><fo:basic-link internal-destination="getattr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattr-method"/>)</fo:inline></fo:basic-link>; please note the
              differences from <fo:basic-link internal-destination="getattribute-method">Section 26.3.15, “<fo:inline font-family="monospace">__getattribute__()</fo:inline>: Intercept all
        attribute references”</fo:basic-link><fo:basic-link internal-destination="getattribute-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattribute-method"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id477735">6.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If all the above steps fail to produce a value,
              raise <fo:inline font-family="monospace">AttributeError</fo:inline>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="new-property"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.2.3. Properties in new-style classes: Fine-grained
        attribute access control</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The outline of attribute access in <fo:basic-link internal-destination="new-attr-access">Section 26.2.2, “Attribute access control in new-style classes”</fo:basic-link><fo:basic-link internal-destination="new-attr-access"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-attr-access"/>)</fo:inline></fo:basic-link> is slightly oversimplified
          in one respect.  Any of the attribute search steps in
          this procedure may produce a <fo:inline font-style="italic">property</fo:inline> rather than the actual attribute
          value.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          A property is a special object that is produced by the
          <fo:inline font-family="monospace">property()</fo:inline> function.  For a discussion
          of the three types of attribute access (get, set, and
          delete), the protocols for the accessor functions, and
          examples, see <fo:basic-link internal-destination="property-function">Section 21.15, “<fo:inline font-family="monospace">property()</fo:inline>: Create an access-controlled
      attribute”</fo:basic-link><fo:basic-link internal-destination="property-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="property-function"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block><fo:block id="new-slots"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.2.4. Conserving memory with <fo:inline font-family="monospace">__slots__</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Normally, you can add new attributes to an instance's
          namespace with any name you want.  The instance's <fo:inline font-family="monospace">.__dict__</fo:inline> attribute is effectively a
          dictionary, and you can add any number of names to it.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          However, in a new-style class, you may specify a given,
          limited set of attribute names that are allowed in
          instances of the class.  There are two reasons why you
          might want to do this:
        </fo:block><fo:list-block id="id477830" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id477834" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If your program is going to create large numbers of
              instances of a class, to the point where you may
              run out of memory, you can save some storage within
              each instance by sacrificing the ability to add
              arbitrary attribute names.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id477843" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If you limit the set of permissible attribute
              names, Python will detect any reference to a
              name not in the permissible set, and raise an
              <fo:inline font-family="monospace">AttributeError</fo:inline> exception.  This
              may help you catch certain programming errors.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          To limit the set of attribute names in a new-style
          class, assign to a class variable named <fo:inline font-family="monospace">__slots__</fo:inline> a tuple containing the allowable
          names, like this:

          <fo:block id="id477864" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    __slots__ = (<fo:inline font-style="italic" font-family="monospace">n<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">n<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>, ...)
</fo:block>

        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here's a small example.  Suppose you want instances of
          class <fo:inline font-family="monospace">Point</fo:inline> to contain nothing more than
          two attributes named <fo:inline font-family="monospace">.x</fo:inline> and <fo:inline font-family="monospace">.y</fo:inline>:

      <fo:block id="id477896" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class Point(object):
...     __slots__ = ('x', 'y')
...     def __init__(self, abscissa, ordinate):
...         self.x, self.y = abscissa, ordinate
... 
&gt;&gt;&gt; x2=Point(3, 7)
&gt;&gt;&gt; x2.x
3
&gt;&gt;&gt; x2.y
7
&gt;&gt;&gt; x2.temperature = 98.6
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
AttributeError: 'Point' object has no attribute 'temperature'
</fo:block>

        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          When you declare a <fo:inline font-family="monospace">__slots__</fo:inline> attribute
          in a new-style class, instances will <fo:inline font-style="italic">not</fo:inline> have a <fo:inline font-family="monospace">.__dict__</fo:inline> attribute.
        </fo:block></fo:block></fo:block><fo:block id="special-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Special method names</fo:marker><fo:block font-size="14.4pt">26.3. Special method names</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Within a class, a number of reserved method names have
        special meaning.  Here is a list of the ones covered
        in this document.
      </fo:block><fo:block id="id477947" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__abs__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__add__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__and__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__call__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="call-method">Section 26.3.5, “<fo:inline font-family="monospace">__call__()</fo:inline>: What to do when someone
        calls an instance”</fo:basic-link><fo:basic-link internal-destination="call-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="call-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__cmp__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="cmp-method">Section 26.3.6, “<fo:inline font-family="monospace">__cmp__()</fo:inline>: Generalized
        comparison”</fo:basic-link><fo:basic-link internal-destination="cmp-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="cmp-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__complex__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__contains__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="contains-method">Section 26.3.7, “<fo:inline font-family="monospace">__contains__()</fo:inline>: The “<fo:inline font-family="monospace">in</fo:inline>” and “<fo:inline font-family="monospace">not in</fo:inline>” operators”</fo:basic-link><fo:basic-link internal-destination="contains-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="contains-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__del__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="del-method">Section 26.3.8, “<fo:inline font-family="monospace">__del__()</fo:inline>: Destructor”</fo:basic-link><fo:basic-link internal-destination="del-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="del-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__delattr__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="delattr-method">Section 26.3.9, “<fo:inline font-family="monospace">__delattr__()</fo:inline>: Delete an
        attribute”</fo:basic-link><fo:basic-link internal-destination="delattr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="delattr-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__delitem__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="delitem-method">Section 26.3.10, “<fo:inline font-family="monospace">__delitem__()</fo:inline>: Delete one item of a
        sequence”</fo:basic-link><fo:basic-link internal-destination="delitem-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="delitem-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__divmod__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__div__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__divmod__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__enter__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="enter-method">Section 26.3.11, “<fo:inline font-family="monospace">__enter__</fo:inline>: Context manager
        initialization”</fo:basic-link><fo:basic-link internal-destination="enter-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="enter-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__exit__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="exit-method">Section 26.3.12, “<fo:inline font-family="monospace">__exit__</fo:inline>: Context manager
        cleanup”</fo:basic-link><fo:basic-link internal-destination="exit-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exit-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__eq__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="rich-compare-methods">Section 26.3.1, “Rich comparison methods”</fo:basic-link><fo:basic-link internal-destination="rich-compare-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="rich-compare-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__floordiv__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__float__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ge__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="rich-compare-methods">Section 26.3.1, “Rich comparison methods”</fo:basic-link><fo:basic-link internal-destination="rich-compare-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="rich-compare-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__getattr__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="getattr-method">Section 26.3.14, “<fo:inline font-family="monospace">__getattr__()</fo:inline>: Handle a reference
        to an unknown attribute”</fo:basic-link><fo:basic-link internal-destination="getattr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattr-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__getattribute__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="getattribute-method">Section 26.3.15, “<fo:inline font-family="monospace">__getattribute__()</fo:inline>: Intercept all
        attribute references”</fo:basic-link><fo:basic-link internal-destination="getattribute-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattribute-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__getitem__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="getitem-method">Section 26.3.16, “<fo:inline font-family="monospace">__getitem__()</fo:inline>: Get one item from a
        sequence or mapping”</fo:basic-link><fo:basic-link internal-destination="getitem-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getitem-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__gt__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="rich-compare-methods">Section 26.3.1, “Rich comparison methods”</fo:basic-link><fo:basic-link internal-destination="rich-compare-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="rich-compare-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__hex__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__iadd__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__iand__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__idiv__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ifloordiv__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ilshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__imod__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__imul__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__init__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="classes">Section 26, “Classes: Defining your own types”</fo:basic-link><fo:basic-link internal-destination="classes"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="classes"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__int__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__invert__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="unary-operator-methods">Section 26.3.3, “Unary operator special methods”</fo:basic-link><fo:basic-link internal-destination="unary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ior__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ipow__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__irshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__isub__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__iter__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="iter-method">Section 26.3.17, “<fo:inline font-family="monospace">__iter__()</fo:inline>: Create an iterator”</fo:basic-link><fo:basic-link internal-destination="iter-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iter-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ixor__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__le__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="rich-compare-methods">Section 26.3.1, “Rich comparison methods”</fo:basic-link><fo:basic-link internal-destination="rich-compare-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="rich-compare-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__len__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__long__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__lshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__lt__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="rich-compare-methods">Section 26.3.1, “Rich comparison methods”</fo:basic-link><fo:basic-link internal-destination="rich-compare-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="rich-compare-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__mod__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__mul__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ne__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="rich-compare-methods">Section 26.3.1, “Rich comparison methods”</fo:basic-link><fo:basic-link internal-destination="rich-compare-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="rich-compare-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__neg__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="unary-operator-methods">Section 26.3.3, “Unary operator special methods”</fo:basic-link><fo:basic-link internal-destination="unary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__new__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="new-new-method">Section 26.2.1, “<fo:inline font-family="monospace">__new__()</fo:inline>: New instance creation”</fo:basic-link><fo:basic-link internal-destination="new-new-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-new-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__nonzero__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="nonzero-method">Section 26.3.18, “<fo:inline font-family="monospace">__nonzero__()</fo:inline>: True/false
        evaluation”</fo:basic-link><fo:basic-link internal-destination="nonzero-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="nonzero-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__oct__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__or__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__pos__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="unary-operator-methods">Section 26.3.3, “Unary operator special methods”</fo:basic-link><fo:basic-link internal-destination="unary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__pow__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__radd__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rand__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rdiv__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__repr__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="repr-method">Section 26.3.19, “<fo:inline font-family="monospace">__repr__()</fo:inline>: String representation”</fo:basic-link><fo:basic-link internal-destination="repr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="repr-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__reversed__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="reversed-method">Section 26.3.20, “<fo:inline font-family="monospace">__reversed__()</fo:inline>: Implement the <fo:inline font-family="monospace">reversed()</fo:inline> function”</fo:basic-link><fo:basic-link internal-destination="reversed-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="reversed-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rfloordiv__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rlshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rmod__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rmul__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ror__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rpow__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rrshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rsub__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__rxor__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__setattr__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="setattr-method">Section 26.3.21, “<fo:inline font-family="monospace">__setattr__()</fo:inline>: Intercept all
        attribute changes”</fo:basic-link><fo:basic-link internal-destination="setattr-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="setattr-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__setitem__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="setitem-method">Section 26.3.22, “<fo:inline font-family="monospace">__setitem__()</fo:inline>: Assign a value to
        one item of a sequence”</fo:basic-link><fo:basic-link internal-destination="setitem-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="setitem-method"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__str__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__sub__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__unicode__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__xor__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block>
                <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>
              </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The most important special method name is the class
        constructor, <fo:inline font-family="monospace">.__init__()</fo:inline>.
      </fo:block><fo:list-block id="id479530" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id479532" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            For a general introduction to class constructors, see
            <fo:basic-link internal-destination="classes">Section 26, “Classes: Defining your own types”</fo:basic-link><fo:basic-link internal-destination="classes"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="classes"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479545" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            For old-style class constructors, see <fo:basic-link internal-destination="old-constructor">Section 26.1.2, “Instantiation of an old-style class: The
        constructor, <fo:inline font-family="monospace">.__init__()</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="old-constructor"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-constructor"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479558" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            For new-style class constructors, see <fo:basic-link internal-destination="new-classes-intro">Section 26.2, “Life cycle of a new-style class”</fo:basic-link><fo:basic-link internal-destination="new-classes-intro"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-classes-intro"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Many special methods fall into broad categories:
      </fo:block><fo:list-block id="id479575" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id479580" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="rich-compare-methods">Section 26.3.1, “Rich comparison methods”</fo:basic-link><fo:basic-link internal-destination="rich-compare-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="rich-compare-methods"/>)</fo:inline></fo:basic-link>: for methods
            that implement comparisons such as “<fo:inline font-family="monospace">&lt;=</fo:inline>” and “<fo:inline font-family="monospace">==</fo:inline>”.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479600" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="binary-operator-methods">Section 26.3.2, “Special methods for binary operators”</fo:basic-link><fo:basic-link internal-destination="binary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="binary-operator-methods"/>)</fo:inline></fo:basic-link>: for
            operators that operate on two operands, such as
            “<fo:inline font-family="monospace">%</fo:inline>”.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479617" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="unary-operator-methods">Section 26.3.3, “Unary operator special methods”</fo:basic-link><fo:basic-link internal-destination="unary-operator-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="unary-operator-methods"/>)</fo:inline></fo:basic-link>: for
            operators that operate on a single operand, such as
            negation, “<fo:inline font-family="monospace">-</fo:inline>”.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479634" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="builtin-function-methods">Section 26.3.4, “Special methods to emulate built-in functions”</fo:basic-link><fo:basic-link internal-destination="builtin-function-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="builtin-function-methods"/>)</fo:inline></fo:basic-link>: for
            classes that handle calls to built-in functions such
            as “<fo:inline font-family="monospace">str()</fo:inline>”.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="rich-compare-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.1. Rich comparison methods</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          These special methods allow your class to specify what
          happens when comparison operators such as “<fo:inline font-family="monospace">&lt;=</fo:inline>” are used, and the left-hand
          operator is an instance of your class.  (In most cases
          the right-hand operator is also an instance of the same
          class, but this is not actually required.)
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          In each case, the calling sequence for the method must
          look like this:

          <fo:block id="id479681" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def <fo:inline font-style="italic" font-family="monospace">__method__</fo:inline>(self, other):
        ...
</fo:block>

          The <fo:inline font-family="monospace">self</fo:inline> argument is the left-hand
          operand and the <fo:inline font-family="monospace">other</fo:inline> argument is the
          operand on the right hand of the operator.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Each method must return a numeric value:
        </fo:block><fo:list-block id="id479703" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id479707" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              A negative number indicates that <fo:inline font-family="monospace">self</fo:inline> precedes <fo:inline font-family="monospace">other</fo:inline>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479722" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Zero indicates that <fo:inline font-family="monospace">self</fo:inline> and <fo:inline font-family="monospace">other</fo:inline> are considered equal.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479736" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              A positive number indicates that <fo:inline font-family="monospace">other</fo:inline> precedes <fo:inline font-family="monospace">self</fo:inline>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479750" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If the method does not implement the operation, it
              may return the special value <fo:inline font-family="monospace">NotImplemented</fo:inline>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="id479763" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block font-weight="bold">Operator</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Method name</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">==</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__eq__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">&gt;=</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ge__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">&gt;</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__gt__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">&lt;=</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__le__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">&lt;</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__lt__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">!=</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__ne__</fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="binary-operator-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.2. Special methods for binary operators</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Your class can define special methods with these names
          to tell Python how to handle binary operators such as
          “<fo:inline font-family="monospace">*</fo:inline>” or “<fo:inline font-family="monospace">%</fo:inline>”.  In each case, the calling sequence
          will look something like this:

          <fo:block id="id479923" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def <fo:inline font-style="italic" font-family="monospace">__method__</fo:inline>(self, other):
        ...
</fo:block>

          The <fo:inline font-family="monospace">self</fo:inline> argument is the left-hand
          operand, and the <fo:inline font-family="monospace">other</fo:inline> argument is the
          right-hand operand.  Your method will return the result
          of the operation.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For each operator, you may supply up to three
          methods:
        </fo:block><fo:list-block id="id479947" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id479951" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The method in the first column performs the normal
              operation.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479958" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The method in the second column is used when the
              left-hand operand does not support the given
              operation and the operands have different types.
              In these methods, <fo:inline font-family="monospace">self</fo:inline> is the
              <fo:inline font-style="italic">right-hand</fo:inline> operand and <fo:inline font-family="monospace">other</fo:inline> is the left-hand operand.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id479978" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The third column implements the “augmented
              assignment” operators such as “<fo:inline font-family="monospace">+=</fo:inline>”.  For example, for method <fo:inline font-family="monospace">__iadd__(self, other)</fo:inline>, the method must
              perform the equivalent of “<fo:inline font-family="monospace">self +=
              other</fo:inline>”.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="id480000" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-column column-number="3"/><fo:table-column column-number="4"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block font-weight="bold">Operator</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold">Normal</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold">Reversed</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Augmented</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">+</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__add__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__radd__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__iadd__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">&amp;</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__and__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rand__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__iand__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">/</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__div__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rdiv__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__idiv__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">//</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__floordiv__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rfloordiv__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__ifloordiv__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">&lt;&lt;</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__lshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rlshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__ilshift__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">%</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__mod__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rmod__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__imod__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">*</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__mul__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rmul__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__imul__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">|</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__or__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__ror__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__ior__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">**</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__pow__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rpow__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__ipow__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">&gt;&gt;</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rrshift__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__irshift__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">-</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__sub__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rsub__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__isub__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block><fo:inline font-family="monospace">^</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__xor__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">__rxor__</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="left"><fo:block><fo:inline font-family="monospace">__ixor__</fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="unary-operator-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.3. Unary operator special methods</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          You can define these special methods in your class to
          specify what happens when a unary operator such as
          “<fo:inline font-family="monospace">-</fo:inline>” (negate) is applied to
          an instance of the class.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          In each case, the definition will look like this:

          <fo:block id="id480332" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def <fo:inline font-style="italic" font-family="monospace">__method__</fo:inline>(self):
        ...
</fo:block>

          The method returns the result of the operation.
        </fo:block><fo:block id="id480343" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="center"><fo:block font-weight="bold">Operator</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Method</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">~</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__invert__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">-</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__neg__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="center"><fo:block><fo:inline font-family="monospace">+</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__pos__</fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="builtin-function-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.4. Special methods to emulate built-in functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          You can define special methods that will handle calls
          to some of Python's built-in functions.  The number
          of arguments will be the same as for the built-in
          functions, except that <fo:inline font-family="monospace">self</fo:inline> is always
          the first argument.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For example, a special method to handle calls to
          function <fo:inline font-family="monospace">divmod(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>,
          <fo:inline font-style="italic" font-family="monospace">y</fo:inline>)</fo:inline> will look like
          this:

          <fo:block id="id480464" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __divmod__(self, other):
        ...
</fo:block>

          In this method, the value of the first argument will be
          passed to <fo:inline font-family="monospace">self</fo:inline> and the second argument
          to <fo:inline font-family="monospace">other</fo:inline>.
        </fo:block><fo:block id="id480480" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block font-weight="bold">Function</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block font-weight="bold">Method</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">abs</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__abs__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">complex</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__complex__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">divmod</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__divmod__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">hex</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__hex__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">int</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__int__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">len</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__len__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">long</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__long__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">mod</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__mod__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">oct</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__oct__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">str</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__str__</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">unicode</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" display-align="before" text-align="left"><fo:block><fo:inline font-family="monospace">__unicode__</fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="call-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.5. <fo:inline font-family="monospace">__call__()</fo:inline>: What to do when someone
        calls an instance</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class has a <fo:inline font-family="monospace">.__call__()</fo:inline> method, its
          instances can be called as if they were functions.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Any arguments passed in that function call become
          arguments to the <fo:inline font-family="monospace">.__call__()</fo:inline> method.
          Example:

          <fo:block id="id480725" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class CallMe(object):
...     def __call__(self, *p, **k):
...         print "CallMe instance called with:"
...         print "Positional arguments", p
...         print "Keyword arguments", k
... 
&gt;&gt;&gt; c=CallMe()
&gt;&gt;&gt; c(1, 'rabbit', fetchez='la vache', hamster='elderberries')
CallMe instance called with:
Positional arguments (1, 'rabbit')
Keyword arguments {'fetchez': 'la vache', 'hamster': 'elderberries'}
</fo:block>

        </fo:block></fo:block><fo:block id="cmp-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.6. <fo:inline font-family="monospace">__cmp__()</fo:inline>: Generalized
        comparison</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The purpose of this special method is to implement
          comparison operations between instances.  It will
          be called in these situations:
        </fo:block><fo:list-block id="id480762" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id480764" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              If the built-in <fo:inline font-family="monospace">cmp()</fo:inline> function is
              called to compare an instance of a class to some
              other value, and the class has a <fo:inline font-family="monospace">.__cmp__()</fo:inline> method, that method is called
              to perform the comparison.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id480779" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              When an instance appears on the left-hand side of a
              comparison (relational) operator, and that
              instance's class has a the corresponding
              rich-comparison method (such as <fo:inline font-family="monospace">.__eq__()</fo:inline> for the “<fo:inline font-family="monospace">==</fo:inline>” operator; see <fo:basic-link internal-destination="rich-compare-methods">Section 26.3.1, “Rich comparison methods”</fo:basic-link><fo:basic-link internal-destination="rich-compare-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="rich-compare-methods"/>)</fo:inline></fo:basic-link>), the
              rich-comparison method will be called to perform
              the comparison.  and, if so, that method is called.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The comparison operators are “<fo:inline font-family="monospace">&lt;</fo:inline>”, “<fo:inline font-family="monospace">&lt;=</fo:inline>”,
              “<fo:inline font-family="monospace">==</fo:inline>”, “<fo:inline font-family="monospace">!=</fo:inline>”, “<fo:inline font-family="monospace">&gt;</fo:inline>”, and “<fo:inline font-family="monospace">&gt;=</fo:inline>”.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              However, if the class does not have the correct
              rich-comparison method, but it does have a <fo:inline font-family="monospace">.__cmp__()</fo:inline> method, that method will be
              called to evaluate the comparison.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The calling sequence is:

          <fo:block id="id480841" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __cmp__(self, other):
        ...
</fo:block>

          The convention for return values is the same one
          described in <fo:basic-link internal-destination="cmp-function">Section 20.8, “<fo:inline font-family="monospace">cmp()</fo:inline>: Compare two values”</fo:basic-link><fo:basic-link internal-destination="cmp-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="cmp-function"/>)</fo:inline></fo:basic-link>: negative
          if <fo:inline font-family="monospace">self</fo:inline> precedes <fo:inline font-family="monospace">other</fo:inline>,
          positive if <fo:inline font-family="monospace">other</fo:inline> precedes <fo:inline font-family="monospace">self</fo:inline>, zero if they are considered equal.
        </fo:block></fo:block><fo:block id="contains-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.7. <fo:inline font-family="monospace">__contains__()</fo:inline>: The “<fo:inline font-family="monospace">in</fo:inline>” and “<fo:inline font-family="monospace">not in</fo:inline>” operators</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          This special method defines how instances of a class
          behave when they appear as the right-hand operand of
          Python's “<fo:inline font-family="monospace">in</fo:inline>” and
          “<fo:inline font-family="monospace">not in</fo:inline>” operators.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the calling sequence:

          <fo:block id="id480911" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __contains__(self, x):
        ...
</fo:block>

          The method returns <fo:inline font-family="monospace">True</fo:inline> if <fo:inline font-family="monospace">x</fo:inline> is considered to be in <fo:inline font-family="monospace">self</fo:inline>,
          <fo:inline font-family="monospace">False</fo:inline> otherwise.
        </fo:block></fo:block><fo:block id="del-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.8. <fo:inline font-family="monospace">__del__()</fo:inline>: Destructor</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class has a <fo:inline font-family="monospace">.__del__()</fo:inline> method, that
          method is called when an instance is deleted.  For
          details, see <fo:basic-link internal-destination="old-del">Section 26.1.5, “Instance deletion: the destructor, <fo:inline font-family="monospace">.__del__()</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="old-del"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="old-del"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block><fo:block id="delattr-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.9. <fo:inline font-family="monospace">__delattr__()</fo:inline>: Delete an
        attribute</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class has a <fo:inline font-family="monospace">.__delattr__()</fo:inline> method,
          that method is called when an attribute is deleted.
          Here is the calling sequence:

          <fo:block id="id480991" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __delattr__(self, name):
        ...
</fo:block>

          The <fo:inline font-family="monospace">name</fo:inline> argument is the name of the
          attribute to be deleted.
        </fo:block></fo:block><fo:block id="delitem-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.10. <fo:inline font-family="monospace">__delitem__()</fo:inline>: Delete one item of a
        sequence</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          This method defines the behavior of a <fo:inline font-family="monospace">del</fo:inline> statement of this form:

          <fo:block id="id481027" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">del <fo:inline font-style="italic" font-family="monospace">s</fo:inline>[<fo:inline font-style="italic" font-family="monospace">i</fo:inline>]
</fo:block>

          Such a statement can be used either on objects that act
          like sequences, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> specifies the position of the
          element to be deleted, or mapping objects (that is,
          dictionary-like objects), where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> is the key of the key-value
          pair to be deleted.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The calling sequence is:

          <fo:block id="id481053" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __delitem__(self, i):
        ...
</fo:block>
        </fo:block></fo:block><fo:block id="enter-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.11. <fo:inline font-family="monospace">__enter__</fo:inline>: Context manager
        initialization</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For a general explanation of context managers, see
          <fo:basic-link internal-destination="with-statement">Section 23.9, “The <fo:inline font-family="monospace">with</fo:inline> statement and context
      managers”</fo:basic-link><fo:basic-link internal-destination="with-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="with-statement"/>)</fo:inline></fo:basic-link>.  A class that acts a
          content manager must provide this special method as
          well as the one described in <fo:basic-link internal-destination="exit-method">Section 26.3.12, “<fo:inline font-family="monospace">__exit__</fo:inline>: Context manager
        cleanup”</fo:basic-link><fo:basic-link internal-destination="exit-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="exit-method"/>)</fo:inline></fo:basic-link>.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The expression that follows the word <fo:inline font-family="monospace">with</fo:inline> in the <fo:inline font-family="monospace">with</fo:inline> statement must evaluate to
          a context manager, whose <fo:inline font-family="monospace">.__enter__()</fo:inline>
          method is called with no arguments (other than
          <fo:inline font-family="monospace">self</fo:inline>).  The value it returns will be
          bound to the variable named in the <fo:inline font-family="monospace">with</fo:inline>
          statement's <fo:inline font-family="monospace">as</fo:inline> clause, if one was
          provided.
        </fo:block></fo:block><fo:block id="exit-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.12. <fo:inline font-family="monospace">__exit__</fo:inline>: Context manager
        cleanup</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For a general explanation of context managers, see
          <fo:basic-link internal-destination="with-statement">Section 23.9, “The <fo:inline font-family="monospace">with</fo:inline> statement and context
      managers”</fo:basic-link><fo:basic-link internal-destination="with-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="with-statement"/>)</fo:inline></fo:basic-link>.  A class that acts a
          content manager must provide this special method as
          well as the one described in <fo:basic-link internal-destination="enter-method">Section 26.3.11, “<fo:inline font-family="monospace">__enter__</fo:inline>: Context manager
        initialization”</fo:basic-link><fo:basic-link internal-destination="enter-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="enter-method"/>)</fo:inline></fo:basic-link>.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          When the body of a <fo:inline font-family="monospace">with</fo:inline> statement
          completes its execution, the <fo:inline font-family="monospace">.__exit__()</fo:inline>
          method of the related context manager <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">M</fo:inline></fo:inline> is called with
          three arguments.  If the block terminated without
          raising an exception, all three arguments will be <fo:inline font-family="monospace">None</fo:inline>; otherwise see below.
        </fo:block><fo:block id="id481180" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">M</fo:inline>.__exit__(self, <fo:inline font-style="italic" font-family="monospace">eType</fo:inline>, <fo:inline font-style="italic" font-family="monospace">eValue</fo:inline>, <fo:inline font-style="italic" font-family="monospace">eTrace</fo:inline>)
</fo:block><fo:block id="id481198" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id481201" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">eType</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                The type of the exception.
              </fo:block></fo:block><fo:block id="id481221" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">eValue</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                The exception instance raised.
              </fo:block></fo:block><fo:block id="id481239" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">eTrace</fo:inline></fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                A traceback instance.  For more information about
                stack traces, see <fo:basic-link external-destination="url(http://docs.python.org/library/traceback.html)">the documentation
                for the <fo:inline font-family="monospace">traceback</fo:inline> module</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">29</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">29</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/traceback.html)">http://docs.python.org/library/traceback.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
              </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Your <fo:inline font-family="monospace">.__exit__()</fo:inline> method's return value
          determines what happens next if the block raised an
          exception.  If it returns <fo:inline font-family="monospace">True</fo:inline>, Python
          ignores the exception and proceeds with execution at a
          point just after the <fo:inline font-family="monospace">with</fo:inline> block.  If you
          don't want your context manager to suppress the
          exception, don't re-raise it explicitly, just return
          <fo:inline font-family="monospace">False</fo:inline> and Python will then re-raise the
          exception.
        </fo:block></fo:block><fo:block id="format-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.13. <fo:inline font-family="monospace">__format__</fo:inline>: Implement the <fo:inline font-family="monospace">format()</fo:inline> function</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Use this special method to determine how an instance of
          your class acts when passed to the function described
          in <fo:basic-link internal-destination="format-function">Section 20.16, “<fo:inline font-family="monospace">format()</fo:inline>: Format a value”</fo:basic-link><fo:basic-link internal-destination="format-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="format-function"/>)</fo:inline></fo:basic-link>.  The calling
          sequence is:
        </fo:block><fo:block id="id481324" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __format__(self, fmt):
        ...
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The interpretation of the <fo:inline font-family="monospace">fmt</fo:inline> argument
          is entirely up to you.  The return value should be a
          string representation of the instance.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If the call to the <fo:inline font-family="monospace">format()</fo:inline> function
          does not provide a second argument, the <fo:inline font-family="monospace">fmt</fo:inline> value passed to this method will be an
          empty string.
        </fo:block></fo:block><fo:block id="getattr-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.14. <fo:inline font-family="monospace">__getattr__()</fo:inline>: Handle a reference
        to an unknown attribute</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          This method, if present, handles statements that get an
          attribute value of an instance, but there is no such
          entry in the instance's namespace.  The calling
          sequence is:

          <fo:block id="id481372" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __getattr__(self, name):
        ...
</fo:block>

          The argument is the name of the desired attribute.  The
          method must either return the attribute's value or
          raise an <fo:inline font-family="monospace">AttributeError</fo:inline> exception.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Compare <fo:basic-link internal-destination="getattribute-method">Section 26.3.15, “<fo:inline font-family="monospace">__getattribute__()</fo:inline>: Intercept all
        attribute references”</fo:basic-link><fo:basic-link internal-destination="getattribute-method"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="getattribute-method"/>)</fo:inline></fo:basic-link>, which
          is called even if the instance namespace <fo:inline font-style="italic">does</fo:inline> have an attribute with the desired
          name.
        </fo:block></fo:block><fo:block id="getattribute-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.15. <fo:inline font-family="monospace">__getattribute__()</fo:inline>: Intercept all
        attribute references</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          This method is called whenever an attribute is
          referenced, whether the instance or class namespace has
          an attribute with the given name or not.  It works only
          with new-style classes.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For an overview and examples, see <fo:basic-link internal-destination="new-attr-access">Section 26.2.2, “Attribute access control in new-style classes”</fo:basic-link><fo:basic-link internal-destination="new-attr-access"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="new-attr-access"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block><fo:block id="getitem-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.16. <fo:inline font-family="monospace">__getitem__()</fo:inline>: Get one item from a
        sequence or mapping</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class defines it, this special method is called
          whenever a value is retrieved from a sequence or
          mapping (dictionary-like object) using the syntax
          “<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline>[<fo:inline font-style="italic" font-family="monospace">i</fo:inline>]</fo:inline>”,
          where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline> is
          the sequence or mapping and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> is a position in a sequence,
          or a key in a mapping.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the calling sequence:

          <fo:block id="id481478" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __getitem__(self, i):
        ...
</fo:block>

          The method either returns the corresponding item or
          raises an appropriate exception: <fo:inline font-family="monospace">IndexError</fo:inline> for sequences or <fo:inline font-family="monospace">KeyError</fo:inline> for mappings.
        </fo:block></fo:block><fo:block id="iter-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.17. <fo:inline font-family="monospace">__iter__()</fo:inline>: Create an iterator</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class defines an <fo:inline font-family="monospace">.__iter__()</fo:inline>
          method, that method is called:
        </fo:block><fo:list-block id="id481520" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id481522" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Whenever the built-in <fo:inline font-family="monospace">iter()</fo:inline>
              function is applied to an instance of the class.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id481533" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              In any situation where the instance is iterated
              over, such as when it appears as the controlling
              iterable of a <fo:inline font-family="monospace">for</fo:inline> statement.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The calling sequence is:
        </fo:block><fo:block id="id481549" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __iter__(self):
        ...
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The return value must be an iterator.  An iterator is any
          object that has a <fo:inline font-family="monospace">.next()</fo:inline> method that returns
          the next value in the sequence, or raises <fo:inline font-family="monospace">StopIteration</fo:inline> when the sequence is exhausted.  For
          more information, see <fo:basic-link internal-destination="iterators">Section 24.2, “Iterators: Values that can produce a sequence of
      values”</fo:basic-link><fo:basic-link internal-destination="iterators"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="iterators"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block><fo:block id="nonzero-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.18. <fo:inline font-family="monospace">__nonzero__()</fo:inline>: True/false
        evaluation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class defines it, this special method is called
          whenever an instance is converted to a Boolean value,
          either implicitly (for example, when it is the test in
          an “<fo:inline font-family="monospace">if</fo:inline>” statement) or
          explicitly via the built-in <fo:inline font-family="monospace">bool()</fo:inline>
          function.  Here is the calling sequence:

          <fo:block id="id481605" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __nonzero__(self):
        ...
</fo:block>

          Return a Boolean value, either <fo:inline font-family="monospace">True</fo:inline> or
          <fo:inline font-family="monospace">False</fo:inline>.
        </fo:block></fo:block><fo:block id="repr-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.19. <fo:inline font-family="monospace">__repr__()</fo:inline>: String representation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class defines it, this special method is called
          to find the “representation” of an
          object.  There are two ways to get a representation:
        </fo:block><fo:list-block id="id481646" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id481650" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Via the function described in <fo:basic-link internal-destination="repr-function">Section 21.17, “<fo:inline font-family="monospace">repr()</fo:inline>: Representation”</fo:basic-link><fo:basic-link internal-destination="repr-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="repr-function"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id481664" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Via the “back-quote operator”,
              enclosing a Python expression in open single
              quotes.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The calling sequence is:

          <fo:block id="id481677" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __repr__(self):
        ...
</fo:block>

          The method returns the representation of <fo:inline font-family="monospace">self</fo:inline> as a string.
        </fo:block></fo:block><fo:block id="reversed-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.20. <fo:inline font-family="monospace">__reversed__()</fo:inline>: Implement the <fo:inline font-family="monospace">reversed()</fo:inline> function</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If provided, this method allows the <fo:inline font-family="monospace">reversed()</fo:inline> function to be applied to an instance of the class.  It
          returns an iterator that iterates over the contained
          elements in reverse order.
        </fo:block></fo:block><fo:block id="setattr-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.21. <fo:inline font-family="monospace">__setattr__()</fo:inline>: Intercept all
        attribute changes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class defines it, this method is called whenever a
          new value is stored into an attribute.  Calling
          sequence:

          <fo:block id="id481740" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __setattr__(self, name, value):
        ...
</fo:block>

          The method sets the attribute given by the <fo:inline font-family="monospace">name</fo:inline> argument to the <fo:inline font-family="monospace">value</fo:inline>
          argument, or raises <fo:inline font-family="monospace">AttributeError</fo:inline>
          if that operation is not permitted.
        </fo:block></fo:block><fo:block id="setitem-method"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">26.3.22. <fo:inline font-family="monospace">__setitem__()</fo:inline>: Assign a value to
        one item of a sequence</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          If a class defines it, this method is called whenever a
          new value is stored into a sequence or mapping
          (dictionary-like object), such as in statements
          of this form:

          <fo:block id="id481782" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">V</fo:inline>[<fo:inline font-style="italic" font-family="monospace">i</fo:inline>]  =  <fo:inline font-style="italic" font-family="monospace">expr</fo:inline>
</fo:block>
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the calling sequence:

          <fo:block id="id481801" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    def __setitem__(self, i, value):
        ...
</fo:block>

          For sequence-type objects, the <fo:inline font-family="monospace">i</fo:inline>
          argument specifies the position in the sequence to be
          modified.  For mappings, the <fo:inline font-family="monospace">i</fo:inline> argument
          is the key under which the <fo:inline font-family="monospace">value</fo:inline> is to
          be stored.
        </fo:block></fo:block></fo:block><fo:block id="static-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Static methods</fo:marker><fo:block font-size="14.4pt">26.4. Static methods</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A <fo:inline font-style="italic">static method</fo:inline> of a Python class is
        a method that does not obey the usual convention in which
        <fo:inline font-family="monospace">self</fo:inline>, an instance of the class, is the first
        argument to the method.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To declare a static method, declare the method normally, and
        wrap it with the built-in <fo:inline font-family="monospace">staticmethod</fo:inline>
        function, using either of the techniques described in <fo:basic-link internal-destination="staticmethod-function">Section 21.20, “<fo:inline font-family="monospace">staticmethod()</fo:inline>: Create a static
      method”</fo:basic-link><fo:basic-link internal-destination="staticmethod-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="staticmethod-function"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Once you have declared a method to be static, the arguments
        you pass it are exactly the arguments it receives.  Example:

        <fo:block id="id481869" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class Hobbs:
...     @staticmethod
...     def represent():
...         print "Hobbs represent!"
... 
&gt;&gt;&gt; Hobbs.represent()
Hobbs represent!
</fo:block>
      </fo:block></fo:block><fo:block id="class-methods"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Class methods</fo:marker><fo:block font-size="14.4pt">26.5. Class methods</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A class method is similar to a static method (see <fo:basic-link internal-destination="static-methods">Section 26.4, “Static methods”</fo:basic-link><fo:basic-link internal-destination="static-methods"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="static-methods"/>)</fo:inline></fo:basic-link>), except that its first argument
        is always the class that contains the method.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To declare a class method, use a declaration of this general
        form:

        <fo:block id="id481907" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">    @classmethod
    def <fo:inline font-family="monospace">methodName</fo:inline>(cls, ...):
        ...
</fo:block>

        When this method is called, the first argument (<fo:inline font-family="monospace">cls</fo:inline>) will be the class containing <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">methodName</fo:inline></fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        There are two ways to call a class method: using its class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline>, or an instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>.  These two general
        forms are:

        <fo:block id="id481939" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">C</fo:inline>.<fo:inline font-style="italic" font-family="monospace">methodName</fo:inline>(...)
<fo:inline font-style="italic" font-family="monospace">i</fo:inline>.<fo:inline font-style="italic" font-family="monospace">methodName</fo:inline>(...)
</fo:block>

        In the first case, the class <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> is passed as the <fo:inline font-family="monospace">cls</fo:inline>
        argument of the method.  In the second case, the class of
        instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> is
        passed as the <fo:inline font-family="monospace">cls</fo:inline> argument.

        <fo:block id="id481974" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; class Jal(object):
...     @classmethod
...     def whatClass(cls, n):
...         print "cls={0} n={1}".format(cls, n)
...     def __init__(self, color):
...         self.color = color
... 
&gt;&gt;&gt; Jal.whatClass(5)
cls=&lt;class '__main__.Jal'&gt; n=5
&gt;&gt;&gt; eunice=Jal('green')
&gt;&gt;&gt; eunice.whatClass(17)
cls=&lt;class '__main__.Jal'&gt; n=17
</fo:block>
      </fo:block></fo:block></fo:block><fo:block id="pdb"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">pdb</fo:inline>: The Python interactive debugger</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">27. <fo:inline font-family="monospace">pdb</fo:inline>: The Python interactive debugger</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The Python debugger allows you to monitor and control
      execution of a Python program, to examine the values of
      variables during execution, and to examine the state of a
      program after abnormal termination (post-mortem analysis).
    </fo:block><fo:list-block id="id482012" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id482017" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="pdb-startup">Section 27.1, “Starting up <fo:inline font-family="monospace">pdb</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="pdb-startup"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="pdb-startup"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id482030" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="pdb-exports">Section 27.2, “Functions exported by <fo:inline font-family="monospace">pdb</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="pdb-exports"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="pdb-exports"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id482043" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
          <fo:basic-link internal-destination="pdb-commands">Section 27.3, “Commands available in <fo:inline font-family="monospace">pdb</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="pdb-commands"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="pdb-commands"/>)</fo:inline></fo:basic-link>.
        </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="pdb-startup"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Starting up <fo:inline font-family="monospace">pdb</fo:inline></fo:marker><fo:block font-size="14.4pt">27.1. Starting up <fo:inline font-family="monospace">pdb</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To execute any Python statement under the control of
        <fo:inline font-family="monospace">pdb</fo:inline>:

        <fo:block id="id482073" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; import pdb
&gt;&gt;&gt; import yourModule
&gt;&gt;&gt; pdb.run('yourModule.test()')  # Or any other statement
</fo:block>

        where <fo:inline font-family="monospace">yourModule.py</fo:inline> contains the source
        code you want to debug.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To debug a Python script named <fo:inline font-family="monospace">myscript.py</fo:inline>:
      </fo:block><fo:block id="id482093" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">python /usr/lib/python2.5/pdb.py myscript.py
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        To perform post-mortem analysis:
      </fo:block><fo:block id="id482103" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; import pdb
&gt;&gt;&gt; import yourModule
&gt;&gt;&gt; yourModule.test()
[crash traceback appears here]
&gt;&gt;&gt; pdb.pm()
(pdb)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Then you can type debugger commands at the <fo:inline font-family="monospace">(pdb)</fo:inline> prompt.
      </fo:block></fo:block><fo:block id="pdb-exports"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Functions exported by <fo:inline font-family="monospace">pdb</fo:inline></fo:marker><fo:block font-size="14.4pt">27.2. Functions exported by <fo:inline font-family="monospace">pdb</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">pdb</fo:inline> module exports these functions:
      </fo:block><fo:block id="id482139" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id482143" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">pdb.run(<fo:inline font-style="italic" font-family="monospace">stmt</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">globals</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">locals</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Executes any Python statement.  You must provide
              the statement <fo:inline font-style="italic">as a string</fo:inline>.
              The debugger prompts you before beginning
              execution.  You can provide your own global name
              space by providing a <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">globals</fo:inline></fo:inline> argument; this
              must be a dictionary mapping global names to
              values.  Similarly, you can provide a local
              namespace by passing a dictionary <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">locals</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id482187" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">pdb.runeval(<fo:inline font-style="italic" font-family="monospace">expr</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">globals</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">locals</fo:inline>]])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              This is similar to the <fo:inline font-family="monospace">pdb run</fo:inline>
              command, but it evaluates an expression, rather
              than a statement.  The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expr</fo:inline></fo:inline> is any Python
              expression in string form.
            </fo:block></fo:block><fo:block id="id482223" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">pdb.runcall(<fo:inline font-style="italic" font-family="monospace">func</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">arg</fo:inline>]...)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Calls a function under <fo:inline font-family="monospace">pdb</fo:inline>
                control.  The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">func</fo:inline></fo:inline> must be either a
                function or a method.  Arguments after the first
                argument are passed to your
                function.
              </fo:block></fo:block></fo:block></fo:block><fo:block id="pdb-commands"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Commands available in <fo:inline font-family="monospace">pdb</fo:inline></fo:marker><fo:block font-size="14.4pt">27.3. Commands available in <fo:inline font-family="monospace">pdb</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The debugger prompts with a line like this:

        <fo:block id="id482275" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">(pdb)
</fo:block>

        At this prompt, you can type any of the <fo:inline font-family="monospace">pdb</fo:inline> commands discussed below.  You can abbreviate any
        command by omitting the characters in square brackets.
        For example, the <fo:inline font-family="monospace">where</fo:inline> command can be
        abbreviated as simply <fo:inline font-family="monospace">w</fo:inline>.
      </fo:block><fo:block id="id482294" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id482296" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">expr</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Evaluate an expression <fo:inline font-style="italic" font-family="monospace">expr</fo:inline> and print its value.
            </fo:block></fo:block><fo:block id="id482318" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">!<fo:inline font-style="italic" font-family="monospace">stmt</fo:inline></fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Execute a Python statement
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">stmt</fo:inline></fo:inline>.
              The “<fo:inline font-family="monospace">!</fo:inline>” may be omitted if the
              statement does not resemble a
              <fo:inline font-family="monospace">pdb</fo:inline> command.
            </fo:block></fo:block><fo:block id="id482350" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">(empty line)</fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If you press Enter at the <fo:inline font-family="monospace">(pdb)</fo:inline>
              prompt, the previous command is repeated.  The
              <fo:inline font-family="monospace">list</fo:inline> command is an exception: an
              empty line entered after a <fo:inline font-family="monospace">list</fo:inline>
              command shows you the next 11 lines after the ones
              previously listed.
            </fo:block></fo:block><fo:block id="id482377" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">a[rgs]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Display the argument names and values to the
              currently executing function.
            </fo:block></fo:block><fo:block id="id482394" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">b[reak] [[<fo:inline font-style="italic" font-family="monospace">filename</fo:inline>:]<fo:inline font-style="italic" font-family="monospace">lineno</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">condition</fo:inline>]]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The <fo:inline font-family="monospace">break</fo:inline> command sets a breakpoint
              at some location in your program.  If execution
              reaches a breakpoint, execution will be suspended
              and you will get back to the <fo:inline font-family="monospace">(pdb)</fo:inline>
              prompt.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              This form of the command sets a breakpoint at a
              specific line in a source file.  Specify the line
              number within your source file as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">lineno</fo:inline></fo:inline>; add
              the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">filename</fo:inline>:</fo:inline> if you are working with multiple source
              files, or if your source file hasn't been loaded
              yet.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              You can also specify a conditional breakpoint, that
              is, one that interrupts execution only if a given
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">condition</fo:inline></fo:inline> evaluates as true.  For example, the command
              <fo:inline font-family="monospace">break 92,i&gt;5</fo:inline> would break at line
              92 only when <fo:inline font-family="monospace">i</fo:inline> is greater than 5.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              When you set a breakpoint, <fo:inline font-family="monospace">pdb</fo:inline>
              prints a “breakpoint number.” You will
              need to know this number to clear the breakpoint.
            </fo:block></fo:block><fo:block id="id482474" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">b[reak] [<fo:inline font-style="italic" font-family="monospace">function</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">condition</fo:inline>]]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              This form of the <fo:inline font-family="monospace">break</fo:inline> command sets
              a breakpoint on the first executable statement of
              the given <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">function</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id482507" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">c[ont[inue]]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Resume execution until the next breakpoint (if
              any).
            </fo:block></fo:block><fo:block id="id482524" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">cl[ear] [<fo:inline font-style="italic" font-family="monospace">lineno</fo:inline>]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If used without an argument, clears all
              breakpoints.  To clear one breakpoint, give its
              breakpoint number (see <fo:inline font-family="monospace">break</fo:inline> above).
            </fo:block></fo:block><fo:block id="id482550" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">h[elp] [<fo:inline font-style="italic" font-family="monospace">cmd</fo:inline>]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Without an argument, prints a list of valid
              commands.  Use the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">cmd</fo:inline></fo:inline> argument to get help on
              command <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">cmd</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id482580" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">l[ist] [<fo:inline font-style="italic" font-family="monospace">begin</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">end</fo:inline>]]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Displays your Python source code.  With no
              arguments, it shows 11 lines centered around the
              current point of execution.  The line about to be
              executed is marked with an arrow (<fo:inline font-family="monospace">-&gt;</fo:inline>), and the letter <fo:inline font-family="monospace">B</fo:inline>
              appears at the beginning of lines with breakpoints
              set.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              To look at a given range of source lines, use the
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">begin</fo:inline></fo:inline>
              argument to list 11 lines around that line number,
              or provide the ending line number as an <fo:inline font-family="monospace">end<fo:inline font-style="italic" font-family="monospace"/></fo:inline> argument.
              For example, the command <fo:inline font-family="monospace">list 50,65</fo:inline>
              would list lines 50-65.
            </fo:block></fo:block><fo:block id="id482631" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">n[ext]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Like <fo:inline font-family="monospace">step</fo:inline>, but does not stop upon
              entry to a called function.
            </fo:block></fo:block><fo:block id="id482652" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">q[uit]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Exit <fo:inline font-family="monospace">pdb</fo:inline>.
            </fo:block></fo:block><fo:block id="id482672" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">r[eturn]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Resume execution until the current function
              returns.
            </fo:block></fo:block><fo:block id="id482689" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">s[tep]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Single step: execute the current line.  If any
              functions are called in the current line, <fo:inline font-family="monospace">pdb</fo:inline> will break upon entering the
              function.
            </fo:block></fo:block><fo:block id="id482710" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">tbreak</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Same options and behavior as <fo:inline font-family="monospace">break</fo:inline>,
              but the breakpoint is temporary, that is, it is
              removed after the first time it is hit.
            </fo:block></fo:block><fo:block id="id482732" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">w[here]</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Shows your current location in the program as a
              stack traceback, with an arrow (<fo:inline font-family="monospace">-&gt;</fo:inline>) pointing to the current stack
              frame.
            </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="common-modules"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Commonly used modules</fo:marker><fo:block border-bottom-style="solid" border-bottom-width="1pt" font-size="17.28pt">28. Commonly used modules</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      The sections below discuss only a tiny fraction of the
      official and unofficial module library of Python.  For a
      full set, consult the <fo:basic-link external-destination="url(http://docs.python.org/library/)"><fo:inline font-style="italic">Python
      Library Reference</fo:inline></fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">30</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">30</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/)">http://docs.python.org/library/</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
    </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
      If you want to use any of these modules, you must
      import them.  See <fo:basic-link internal-destination="import-statement">Section 22.6, “The <fo:inline font-family="monospace">import</fo:inline> statement: Use a
      module”</fo:basic-link><fo:basic-link internal-destination="import-statement"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="import-statement"/>)</fo:inline></fo:basic-link>.
    </fo:block><fo:block id="math-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">math</fo:inline>: Common mathematical
      operations</fo:marker><fo:block font-size="14.4pt">28.1. <fo:inline font-family="monospace">math</fo:inline>: Common mathematical
      operations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This module provides the usual basic transcendental
        mathematical functions.  All trig functions use angles in
        radians.  (For a similar set of functions using the complex
        number system, see <fo:basic-link external-destination="url(http://docs.python.org/library/cmath.html)">the
        Python library documentation for the <fo:inline font-family="monospace">cmath</fo:inline>
        module</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">31</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">31</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/cmath.html)">http://docs.python.org/library/cmath.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.)
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">math</fo:inline> module has two constant
        attributes:
      </fo:block><fo:block id="id482836" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">pi</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="left"><fo:block>The constant 3.14159...</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">e</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="left"><fo:block>The base of natural logarithms, 2.71828...</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Functions in this module include:
      </fo:block><fo:block id="id482883" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">acos(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Angle (in radians) whose cosine is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>, that is,
                arccosine of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">acosh(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Inverse hyperbolic cosine of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">asin(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Arcsine of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">asinh(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Inverse hyperbolic sine of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">atan(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Arctangent of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">atanh(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Inverse hyperbolic tangent of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">atan2(<fo:inline font-style="italic" font-family="monospace">y</fo:inline>,<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Angle whose slope is
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y/x</fo:inline></fo:inline>, even if
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
                is zero.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">ceil(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                True ceiling function, defined as the smallest
                integer that is greater than or equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.  For
                example, <fo:inline font-family="monospace">ceil(3.9)</fo:inline> yields 4.0,
                while <fo:inline font-family="monospace">ceil(-3.9)</fo:inline> yields -3.0.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">cos(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Cosine of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> is expressed in
                radians.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">cosh(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Hyperbolic cosine of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">degrees(<fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                For <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
                in radians, returns that angle in degrees.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">erf(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Error function.                
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">erfc(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Error function complement.                
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">exp(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                <fo:inline font-style="italic" font-family="monospace">e</fo:inline> to the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> power.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">fabs(<fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Returns the absolute value of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> as a <fo:inline font-family="monospace">float</fo:inline> value.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">factorial(<fo:inline font-style="italic" font-family="monospace">n</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Returns the factorial of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>, which must be a
                nonnegative integer.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">floor(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                True floor function, defined as the largest
                integer that is less than or equal to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.  For
                example, <fo:inline font-family="monospace">floor(3.9)</fo:inline> is 3.0, and
                <fo:inline font-family="monospace">floor(-3.9)</fo:inline> is -4.0.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">fmod(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>,<fo:inline font-style="italic" font-family="monospace">y</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Returns <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>-int(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>/<fo:inline font-style="italic" font-family="monospace">y</fo:inline>)*<fo:inline font-style="italic" font-family="monospace">y</fo:inline>)</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">frexp(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                For a float value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>, returns a tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>, <fo:inline font-style="italic" font-family="monospace">e</fo:inline>)</fo:inline> where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline> is the
                mantissa and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e</fo:inline></fo:inline> is the exponent.  For <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline>=0.0</fo:inline>, it
                returns <fo:inline font-family="monospace">(0.0, 0)</fo:inline>; otherwise, <fo:inline font-family="monospace">abs(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline> is a
                float in the half-open interval [0.5, 1) and
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e</fo:inline></fo:inline> is
                an integer, such that <fo:inline font-family="monospace">x == m*2**e</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">gamma(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Gamma function.                
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">hypot(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>,<fo:inline font-style="italic" font-family="monospace">y</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                The square root of (<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline><fo:inline font-size="75%" baseline-shift="super">2</fo:inline>+<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline><fo:inline font-size="75%" baseline-shift="super">2</fo:inline>).
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">ldexp(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>,
                <fo:inline font-style="italic" font-family="monospace">i</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Returns <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> *
                (2**<fo:inline font-style="italic" font-family="monospace">i</fo:inline>)</fo:inline>.
                This is the inverse of <fo:inline font-family="monospace">frexp()</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">lgamma(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                Natural log of <fo:inline font-family="monospace">abs(gamma(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>))</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">log(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>[,
                <fo:inline font-style="italic" font-family="monospace">b</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                With one argument, returns the natural log of
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
                With the second argument, returns the log of
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline> to
                the base <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">b</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">log10(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Common log (base 10) of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">modf(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Returns a tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>, <fo:inline font-style="italic" font-family="monospace">i</fo:inline>)</fo:inline> where
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> is the
                fractional part of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> is the integral part (as a
                float), and both have the same sign as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" display-align="before" text-align="left"><fo:block>
                <fo:inline font-family="monospace">radians(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" display-align="before" text-align="justify"><fo:block>
                For <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>
                in degrees, returns that angle in radians.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">sin(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Sine of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">sinh(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Hyperbolic sine of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">sqrt(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Square root of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">tan(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Tangent of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">tanh(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
                Hyperbolic tangent of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>.
              </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="string-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">string</fo:inline>: Utility functions for strings</fo:marker><fo:block font-size="14.4pt">28.2. <fo:inline font-family="monospace">string</fo:inline>: Utility functions for strings</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Variables and functions for working with character
        strings.
      </fo:block><fo:block id="id483804" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id483807" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">ascii_letters</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A string containing all the letters from <fo:inline font-family="monospace">ascii_uppercase</fo:inline> and <fo:inline font-family="monospace">ascii_lowercase</fo:inline>.
            </fo:block></fo:block><fo:block id="id483830" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">ascii_lowercase</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The characters that are considered lowercase
              letters in the <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">ASCII</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">32</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">32</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> character set, namely:
            </fo:block><fo:block id="id483853" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">"abcdefghijklmnopqrstuvwxyz"
</fo:block></fo:block><fo:block id="id483860" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">ascii_uppercase</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block id="id483871" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              The value of this constant does not depend on the
              locale setting; see <fo:basic-link internal-destination="locale">Section 19.4, “What is the locale?”</fo:basic-link><fo:basic-link internal-destination="locale"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="locale"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block><fo:block id="id483889" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">digits</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The decimal digits: <fo:inline font-family="monospace">"0123456789"</fo:inline>.
            </fo:block></fo:block><fo:block id="id483909" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">hexdigits</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The hexadecimal digits: <fo:inline font-family="monospace">"0123456789abcdefABCDEF"</fo:inline>.
            </fo:block></fo:block><fo:block id="id483930" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">letters</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A string containing all the characters that are
              considered letters in the current <fo:basic-link internal-destination="locale">locale</fo:basic-link>.
            </fo:block></fo:block><fo:block id="id483954" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">lowercase</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A string containing all the characters that are
              considered lowercase letters in the current <fo:basic-link internal-destination="locale">locale</fo:basic-link>.
            </fo:block></fo:block><fo:block id="id483978" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">maketrans(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>, <fo:inline font-style="italic" font-family="monospace">t</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Builds a translation table to be used as the first
              argument to the <fo:inline font-family="monospace">.translate()</fo:inline> string
              method.  The arguments <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline> are two strings of the
              same length; the result is a translation table that
              will convert each character of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> to the corresponding
              character of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline>.
              <fo:block id="id484022" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; import string
&gt;&gt;&gt; bingo=string.maketrans("lLrR", "rRlL")
&gt;&gt;&gt; "Cornwall Llanfair".translate(bingo)
'Colnwarr Rranfail'
&gt;&gt;&gt; "Cornwall Llanfair".translate(bingo, 'ai')
'Colnwrr Rrnfl'</fo:block>
            </fo:block></fo:block><fo:block id="id484036" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">octdigits</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The octal digits: <fo:inline font-family="monospace">"01234567"</fo:inline>.
            </fo:block></fo:block><fo:block id="id484056" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">printable</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A string containing all the printable characters.
            </fo:block></fo:block><fo:block id="id484073" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">punctuation</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              All printable characters that are not letters or
              digits in the current <fo:basic-link internal-destination="locale">locale</fo:basic-link>.  If <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">ASCII</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">33</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">33</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ASCII)">http://en.wikipedia.org/wiki/ASCII</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> is the locale's current encoding,
              these characters are included:
              
              <fo:block id="id484102" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">!"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^_`{|}~
</fo:block>
            </fo:block></fo:block><fo:block id="id484110" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">uppercase</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A string containing all the characters that are
              considered uppercase letters in the current <fo:basic-link internal-destination="locale">locale</fo:basic-link>.  May not be the
              same as <fo:inline font-family="monospace">ascii_uppercase</fo:inline>
            </fo:block></fo:block><fo:block id="id484138" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">whitespace</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A string containing all the characters considered
              to be white space in the current <fo:basic-link internal-destination="locale">locale</fo:basic-link>.  For ASCII this
              will be:

              <fo:block id="id484160" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">"\t\n\x0b\x0c\r "
</fo:block>
              
              See <fo:basic-link internal-destination="whitespace">Section 9.2, “Definition of “whitespace””</fo:basic-link><fo:basic-link internal-destination="whitespace"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="whitespace"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:block></fo:block><fo:block id="random-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">random</fo:inline>: Random number generation</fo:marker><fo:block font-size="14.4pt">28.3. <fo:inline font-family="monospace">random</fo:inline>: Random number generation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This module provides for the generation of pseudorandom
        numbers.
      </fo:block><fo:block margin-left="0.5in" margin-right="0.5in" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
            Any one who considers arithmetical methods of producing
            random digits is, of course, in a state of sin.  For,
            as has been pointed out several times, there is no such
            thing as a random number—there are only methods
            to produce random numbers, and a strict arithmetic
            procedure of course is not such a method.
          </fo:block></fo:block><fo:block text-align="right">—<fo:inline>
          <fo:basic-link external-destination="url(http://en.wikiquote.org/wiki/John_von_Neumann)">John von
          Neumann</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">34</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">34</fo:inline> <fo:basic-link external-destination="url(http://en.wikiquote.org/wiki/John_von_Neumann)">http://en.wikiquote.org/wiki/John_von_Neumann</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>
        </fo:inline></fo:block></fo:block><fo:block id="id484220" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id484224" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">choice(<fo:inline font-style="italic" font-family="monospace">S</fo:inline>)</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a randomly selected element from an <fo:basic-link internal-destination="iterable">iterable</fo:basic-link> <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline>.
            </fo:block><fo:block id="id484250" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for i in range(9): print choice ( ['s', 'h', 'd', 'c'] ),
... 
s c c h c s s h d
</fo:block></fo:block><fo:block id="id484259" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">normalvariate(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Generate a normally distributed pseudorandom number with
              mean <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline> and
              standard deviation <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id484292" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">randint(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>,<fo:inline font-style="italic" font-family="monospace">y</fo:inline>)</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a random integer in the closed interval
              [<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>,<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>];
              that is, any result r will satisfy <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> &lt;= <fo:inline font-style="italic" font-family="monospace">r</fo:inline> &lt;= <fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>.

              <fo:block id="id484331" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for i in range(20): print randint(1,6),
... 
3 4 6 3 2 1 1 2 1 2 1 2 3 3 3 5 6 4 4 2
</fo:block>
            </fo:block></fo:block><fo:block id="id484341" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">random()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a random float in the half-open
                interval [0.0, 1.0); that is, for any result
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>,
                <fo:inline font-family="monospace">0.0 &lt;= <fo:inline font-style="italic" font-family="monospace">r</fo:inline> &lt; 1.0</fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">

              <fo:block id="id484369" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; for count in range(48):
...     print "{0:.3f}".format(random()),
...     if (count % 12) == 11: print
... 
0.012 0.750 0.899 0.339 0.371 0.561 0.358 0.931 0.822 0.990 0.682 0.847
0.245 0.541 0.992 0.151 0.394 0.335 0.702 0.885 0.986 0.350 0.417 0.748
0.918 0.103 0.109 0.328 0.423 0.180 0.203 0.689 0.600 0.794 0.201 0.008
0.564 0.920 0.906 0.469 0.510 0.818 0.142 0.589 0.590 0.290 0.650 0.889
</fo:block>
             </fo:block></fo:block><fo:block id="id484384" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">randrange([<fo:inline font-style="italic" font-family="monospace">start</fo:inline>,]<fo:inline font-style="italic" font-family="monospace">stop</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">step</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a random element from the sequence <fo:basic-link internal-destination="range-function"><fo:inline font-family="monospace">range</fo:inline></fo:basic-link><fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">start</fo:inline>,<fo:inline font-style="italic" font-family="monospace">stop</fo:inline>,<fo:inline font-style="italic" font-family="monospace">step</fo:inline>)</fo:inline> <fo:inline font-family="monospace"/>.

              <fo:block id="id484431" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; from random import *
&gt;&gt;&gt; for i in range(35): print randrange(4),
... 
0 2 2 2 1 1 2 3 1 3 3 2 2 2 3 0 2 0 0 1 2 0 2 1 1 1 2 2 2 1 1 3 1 1 2
&gt;&gt;&gt; for i in range(35): print randrange(1,5),
... 
3 3 2 1 1 1 4 4 3 2 1 1 3 2 1 2 4 4 1 4 2 4 4 1 1 1 1 1 4 4 1 1 2 2 1
&gt;&gt;&gt; range(2,18,5)
[2, 7, 12, 17]
&gt;&gt;&gt; for i in range(28): print randrange(2,18,5),
... 
12 2 7 2 17 17 7 7 12 17 17 2 7 17 12 7 7 12 17 17 7 12 7 7 7 7 7 7
</fo:block>
            </fo:block></fo:block><fo:block id="id484447" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">shuffle(<fo:inline font-style="italic" font-family="monospace">L</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Randomly permute the elements of a sequence <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              Here's an example.  First we build a (small) deck of
              cards, using a list comprehension to build a list of all
              possible combinations of three ranks (ace, king, queen)
              and four suits (spades, hearts, diamonds, and clubs).
              Then we shuffle the deck twice and inspect the results.

              <fo:block id="id484475" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; ranks = 'AKQ'
&gt;&gt;&gt; suits = 'shdc'
&gt;&gt;&gt; deck = [ r+s
...          for s in suits
...          for r in ranks ]
&gt;&gt;&gt; deck
['As', 'Ks', 'Qs', 'Ah', 'Kh', 'Qh', 'Ad', 'Kd', 'Qd', 'Ac', 'Kc', 'Qc']
&gt;&gt;&gt; shuffle(deck)
&gt;&gt;&gt; deck
['Qh', 'Ks', 'Kh', 'As', 'Kc', 'Kd', 'Qd', 'Qc', 'Ah', 'Ad', 'Qs', 'Ac']
&gt;&gt;&gt; shuffle(deck)
&gt;&gt;&gt; deck
['As', 'Qs', 'Ks', 'Kc', 'Ad', 'Kh', 'Qh', 'Ac', 'Ah', 'Qc', 'Qd', 'Kd']
</fo:block>
            </fo:block></fo:block><fo:block id="id484490" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">uniform(<fo:inline font-style="italic" font-family="monospace">x</fo:inline>,<fo:inline font-style="italic" font-family="monospace">y</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a random float in the half-open interval [<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline></fo:inline>,<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>); that is, each
              result <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>
              will satisfy <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">x</fo:inline> &lt;=
              <fo:inline font-style="italic" font-family="monospace">r</fo:inline> &lt; <fo:inline font-style="italic" font-family="monospace">y</fo:inline></fo:inline>.
            </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">An assortment of other pseudorandom distributions
        is available.  See the
        <fo:basic-link external-destination="url(http://docs.python.org/library/random.html)"><fo:inline font-style="italic">Python Library Reference</fo:inline></fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">35</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">35</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/random.html)">http://docs.python.org/library/random.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>
        for details.
      </fo:block></fo:block><fo:block id="time-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">time</fo:inline>: Clock and calendar functions</fo:marker><fo:block font-size="14.4pt">28.4. <fo:inline font-family="monospace">time</fo:inline>: Clock and calendar functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This module provides minimal time and date functions.  For a
        newer and more complete module, see <fo:basic-link external-destination="url(http://docs.python.org/library/datetime)">the <fo:inline font-family="monospace">datetime</fo:inline> module</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">36</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">36</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/datetime)">http://docs.python.org/library/datetime</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
      </fo:block><fo:list-block id="id484586" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id484588" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-style="italic">Epoch time</fo:inline> is the time in seconds
            since some arbitrary starting point.  For example, Unix
            measures time in seconds since January 1,
            1970.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id484600" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-style="italic">UTC</fo:inline> is Coordinated Universal Time,
            the time on the zero meridian (which goes through
            London).
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id484610" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:inline font-style="italic">DST</fo:inline> refers to Daylight
            Savings Time.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        A <fo:inline font-style="italic">time tuple</fo:inline> is a 9-tuple <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline> with these elements,
        all integers:
      </fo:block><fo:block id="id484634" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-column column-number="3"/><fo:table-column column-number="4"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[0]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>Four-digit year.</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[5]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Second, in [0,59].</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[1]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>Month, 1 for January, 12 for December.</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[6]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Day of week, 0 for Monday, 6 for Sunday.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[2]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>Day of month, in [1,31].</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[7]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Ordinal day of the year, in [1,366].</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[3]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>Hour, in [0,23].</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[8]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                DST flag: <fo:inline font-family="monospace">1</fo:inline> if the time is DST, <fo:inline font-family="monospace">0</fo:inline> if it is not DST, and <fo:inline font-family="monospace">-1</fo:inline> if
                unknown.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline>[4]</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="justify"><fo:block>Minute, in [0,59].</fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block> </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block> </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Contents of the <fo:inline font-family="monospace">time</fo:inline> module:
      </fo:block><fo:block id="id484814" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id484818" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">altzone</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The local DST offset, in seconds west of UTC
              (negative for east of UTC).
            </fo:block></fo:block><fo:block id="id484833" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">asctime([<fo:inline font-style="italic" font-family="monospace">T</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              For a time-tuple <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline>, returns a string of exactly 24 characters
              with this format:
              <fo:block id="id484855" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">"Thu Jun 12 15:25:31 1997"
              </fo:block>
              The default time is now.
            </fo:block></fo:block><fo:block id="id484865" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">clock()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The accumulated CPU time of the current process in
              seconds, as a float.
            </fo:block></fo:block><fo:block id="id484880" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">ctime([<fo:inline font-style="italic" font-family="monospace">E</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Converts an epoch time <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline></fo:inline> to a string with the same
              format as <fo:inline font-family="monospace">asctime()</fo:inline>.  The default time is
              now.
            </fo:block></fo:block><fo:block id="id484909" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">daylight</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Nonzero if there is a DST value defined locally.
            </fo:block></fo:block><fo:block id="id484924" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">gmtime([<fo:inline font-style="italic" font-family="monospace">E</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the time-tuple corresponding to UTC at epoch
              time <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline></fo:inline>; the
              DST flag will be zero.  The default time is now.
            </fo:block></fo:block><fo:block id="id484949" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">localtime([<fo:inline font-style="italic" font-family="monospace">E</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the time-tuple corresponding to local time at
              epoch time <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline></fo:inline>.  The default time is now.
            </fo:block></fo:block><fo:block id="id484974" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">mktime(<fo:inline font-style="italic" font-family="monospace">T</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Converts a time-tuple <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline> to epoch time as a float,
              where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline> is
              the <fo:inline font-style="italic">local</fo:inline> time.
            </fo:block></fo:block><fo:block id="id485007" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">sleep(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Suspend execution of the current process for <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> seconds, where
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> can be a
              float or integer.
            </fo:block></fo:block><fo:block id="id485037" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">strftime(<fo:inline font-style="italic" font-family="monospace">f</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">t</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Time formatting function; formats a time-tuple
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline>
              according to format string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline>.  The default time <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline> is now.  As
              with the <fo:basic-link internal-destination="old-str-format">old string
              format operator</fo:basic-link>, format codes start with
              <fo:inline font-family="monospace">%</fo:inline>, and other text appears unchanged
              in the result.  See the <fo:basic-link internal-destination="strftime-codes">table of codes</fo:basic-link>
              below.
            </fo:block></fo:block><fo:block id="id485095" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">time()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The current epoch time, as a float.
            </fo:block></fo:block><fo:block id="id485110" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">timezone</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The local non-DST time zone as an offset in seconds west
              of UTC (negative for east of UTC).  This value applies
              when daylight savings time is not in effect.
            </fo:block></fo:block><fo:block id="id485126" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">tzname</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A 2-tuple (<fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline>) where
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> is the
              name of the non-DST time zone locally and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline> is the name of
              the local DST time zone. For example, in Socorro, NM,
              you get <fo:inline font-family="monospace">('MST', 'MDT')</fo:inline>.
            </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        Format codes for the <fo:inline font-family="monospace">strftime</fo:inline>
        function include:
      </fo:block><fo:block id="strftime-codes" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%a</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Abbreviated weekday name, e.g., <fo:inline font-family="monospace">'Tue'</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%A</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Full weekday name, e.g., <fo:inline font-family="monospace">'Tuesday'</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">%b</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Abbreviated month name, e.g., <fo:inline font-family="monospace">'Jul'</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%B</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Full month name, e.g., <fo:inline font-family="monospace">'July'</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%d</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Day of the month, two digits with left zero fill; e.g.
                <fo:inline font-family="monospace">'03'</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%H</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Hour on the 24-hour clock, two digits with zero fill.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%I</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Hour on the 12-hour clock, two digits with zero fill.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%j</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Day of the year as a decimal number, three digits with
                zero fill, e.g. '366'.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%m</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Decimal month, two digits with zero fill.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%M</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Minute, two digits with zero fill.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%p</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Either <fo:inline font-family="monospace">'AM'</fo:inline> or <fo:inline font-family="monospace">'PM'</fo:inline>.
                Midnight is considered AM and noon PM.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%S</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Second, two digits with zero fill.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%w</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Numeric weekday: 0 for Sunday, 6 for Saturday.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%y</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Two-digit year.  <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Y2k)">Not
                recommended!</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">37</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">37</fo:inline> <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Y2k)">http://en.wikipedia.org/wiki/Y2k</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%Y</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                Four-digit year.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%Z</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                If there is a time zone, a string representing that
                zone; e.g., <fo:inline font-family="monospace">'PST'</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">%%</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
                Outputs the character <fo:inline font-family="monospace">%</fo:inline>.
              </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="re-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">re</fo:inline>: Regular expression
      pattern-matching</fo:marker><fo:block font-size="14.4pt">28.5. <fo:inline font-family="monospace">re</fo:inline>: Regular expression
      pattern-matching</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">re</fo:inline> module provides functions for
        matching strings against regular expressions.  See the
        O'Reilly book <fo:inline font-style="italic">Mastering Regular
        Expressions</fo:inline> by Friedl and Oram for the whys
        and hows of regular expressions.  We discuss only the
        most common functions here.  Refer to the <fo:basic-link external-destination="url(http://docs.python.org/library/re.html)"><fo:inline font-style="italic">Python Library Reference</fo:inline></fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">38</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">38</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/re.html)">http://docs.python.org/library/re.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>
        for the full feature set.
      </fo:block><fo:list-block id="id485478" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id485481" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="regex-chars">Section 28.5.1, “Characters in regular expressions”</fo:basic-link><fo:basic-link internal-destination="regex-chars"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="regex-chars"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id485494" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="regex-functions">Section 28.5.2, “Functions in the <fo:inline font-family="monospace">re</fo:inline> module”</fo:basic-link><fo:basic-link internal-destination="regex-functions"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="regex-functions"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id485507" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="compiled-re">Section 28.5.3, “Compiled regular expression objects”</fo:basic-link><fo:basic-link internal-destination="compiled-re"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="compiled-re"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id485520" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="match-object">Section 28.5.4, “Methods on a <fo:inline font-family="monospace">MatchObject</fo:inline>”</fo:basic-link><fo:basic-link internal-destination="match-object"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="match-object"/>)</fo:inline></fo:basic-link>.
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="regex-chars"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.5.1. Characters in regular expressions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          <fo:inline font-style="italic">Note</fo:inline>: The raw string notation
          <fo:inline font-family="monospace">r'...'</fo:inline> is most useful
          for regular expressions; see 
          <fo:basic-link internal-destination="raw-str-constants">raw strings</fo:basic-link><fo:basic-link internal-destination="raw-str-constants"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="raw-str-constants"/>)</fo:inline></fo:basic-link>,
          above.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          These characters have special meanings in regular
          expressions:
        </fo:block><fo:block id="id485569" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">.</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Matches any character except a newline.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">^</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Matches the start of the string.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">$</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Matches the end of the string.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>*</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches zero or more repetitions of regular
                  expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>+</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches one or more repetitions of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>?</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches zero or one <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>*?</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Non-greedy form of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>*</fo:inline>; matches as few
                  characters as possible.  The normal <fo:inline font-family="monospace">*</fo:inline>
                  operator is greedy: it matches as much text as
                  possible.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>+?</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Non-greedy form of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>+</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>??</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Non-greedy form of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>?</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>{<fo:inline font-style="italic" font-family="monospace">m</fo:inline>,<fo:inline font-style="italic" font-family="monospace">n</fo:inline>}</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> repetitions of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>.  For example, <fo:inline font-family="monospace">r'x{3,5}'</fo:inline> matches between three and five
                  copies of letter <fo:inline font-family="monospace">'x'</fo:inline>; <fo:inline font-family="monospace">r'(bl){4}'</fo:inline> matches the string <fo:inline font-family="monospace">'blblblbl'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>{<fo:inline font-style="italic" font-family="monospace">m</fo:inline>,<fo:inline font-style="italic" font-family="monospace">n</fo:inline>}?</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Non-greedy version of the previous form.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">[...]</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches one character from a set of characters.  You
                  can put all the allowable characters inside the
                  brackets, or use <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline>-<fo:inline font-style="italic" font-family="monospace">b</fo:inline></fo:inline> to mean all
                  characters from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">b</fo:inline></fo:inline> inclusive.  For example, regular
                  expression <fo:inline font-family="monospace">r'[abc]'</fo:inline> will match either
                  <fo:inline font-family="monospace">'a'</fo:inline>, <fo:inline font-family="monospace">'b'</fo:inline>, or <fo:inline font-family="monospace">'c'</fo:inline>.  Pattern <fo:inline font-family="monospace">r'[0-9a-zA-Z]'</fo:inline>
                  will match any single letter or digit.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">[^...]</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches any character <fo:inline font-style="italic">not</fo:inline> in
                  the given set.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">rs</fo:inline></fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> followed by expression
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline>|<fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches either <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> or <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>)</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> and forms it into a group that can be retrieved
                  separately after a match; see <fo:basic-link internal-destination="match-object"><fo:inline font-family="monospace">MatchObject</fo:inline></fo:basic-link>, below.  Groups are numbered starting from
                  1.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">(?:<fo:inline font-style="italic" font-family="monospace">r</fo:inline>)</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> but does not form a group for later retrieval.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">(?P&lt;<fo:inline font-style="italic" font-family="monospace">n</fo:inline>&gt;<fo:inline font-style="italic" font-family="monospace">r</fo:inline>)</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> and forms it into a named group, with name <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>, for later
                  retrieval.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">(?P=<fo:inline font-style="italic" font-family="monospace">n</fo:inline>)</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches whatever string matched an earlier
                  <fo:inline font-family="monospace">(?P&lt;<fo:inline font-style="italic" font-family="monospace">n</fo:inline>&gt;<fo:inline font-style="italic" font-family="monospace">r</fo:inline>)</fo:inline>
                  group.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">(?#...)</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Comment: the “<fo:inline font-family="monospace">...</fo:inline>”
                  portion is ignored and may contain a comment.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">(?=...)</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  The “<fo:inline font-family="monospace">...</fo:inline>” portion
                  must be matched, but is not consumed by the
                  match.  This is sometimes called a lookahead
                  match.  For example, <fo:inline font-family="monospace">r'a(?=bcd)'</fo:inline>
                  matches the string <fo:inline font-family="monospace">'abcd'</fo:inline> but
                  not the string <fo:inline font-family="monospace">'abcxyz'</fo:inline>.
                  Compared to using <fo:inline font-family="monospace">r'abcd'</fo:inline> as the
                  regular expression, the difference is that in
                  this case the matched portion would be <fo:inline font-family="monospace">'a'</fo:inline> and not <fo:inline font-family="monospace">'abcd'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">(?!...)</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
                  This is similar to the <fo:inline font-family="monospace">(?=...)</fo:inline>:
                  it specifies a regular expression that must
                  <fo:inline font-style="italic">not</fo:inline> match, but does not
                  consume any characters.  For example, <fo:inline font-family="monospace">r'a(?!bcd)'</fo:inline> would match <fo:inline font-family="monospace">'axyz'</fo:inline>, and return <fo:inline font-family="monospace">'a'</fo:inline>
                  as the matched portion; but it would not match
                  <fo:inline font-family="monospace">'abcdef'</fo:inline>.  You could call it
                  a negative lookahead match.
                </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The special sequences in the table below are
          recognized.  However, many of them function in ways
          that depend on the locale; see <fo:basic-link internal-destination="locale">Section 19.4, “What is the locale?”</fo:basic-link><fo:basic-link internal-destination="locale"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="locale"/>)</fo:inline></fo:basic-link>.  For example, the <fo:inline font-family="monospace">r'\s'</fo:inline> sequence
          matches characters that are considered whitespace in
          the current locale.
        </fo:block><fo:block id="id486169" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\<fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches the same text as a group that matched earlier,
                  where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> is
                  the number of that group.  For example, <fo:inline font-family="monospace">r'([a-zA-Z]+):\1'</fo:inline> matches the string <fo:inline font-family="monospace">"foo:foo"</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\A</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches only at the start of the string.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\b</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches the empty string but only at the start or end
                  of a word (where a word is set off by whitespace or a
                  non-alphanumeric character).  For example, <fo:inline font-family="monospace">r'foo\b'</fo:inline> would match <fo:inline font-family="monospace">"foo"</fo:inline> but
                  not <fo:inline font-family="monospace">"foot"</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\B</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches the empty string when <fo:inline font-style="italic">not</fo:inline>
                  at the start or end of a word.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\d</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches any digit.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\D</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches any non-digit.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\s</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches any <fo:basic-link internal-destination="whitespace">whitespace
                  character</fo:basic-link>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\S</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches any non-whitespace character.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\w</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches any alphanumeric character plus the
                  underbar <fo:inline font-family="monospace">'_'</fo:inline>.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\W</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches any non-alphanumeric character.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\Z</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                  Matches only at the end of the string.
                </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                  <fo:inline font-family="monospace">\\</fo:inline>
                </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
                  Matches a backslash (<fo:inline font-family="monospace">\</fo:inline>) character.
                </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="regex-functions"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.5.2. Functions in the <fo:inline font-family="monospace">re</fo:inline> module</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          There are two ways to match regular expressions with
          the <fo:inline font-family="monospace">re</fo:inline> module.  Assuming you import the
          module with <fo:inline font-family="monospace">import re</fo:inline>, you can test
          whether a regular expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> matches a string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> with the
          construct:

          <fo:block id="id486441" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">re.match(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>)
</fo:block>

        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          However, if you will be matching the same regular
          expression many times, the performance will be better
          if you compile the regular expression like this:

          <fo:block id="id486458" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">re.compile(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>)
</fo:block>

          The <fo:inline font-family="monospace">re.compile()</fo:inline> function returns a
          compiled regular expression object.  You can then check
          a string s for matching by using the <fo:inline font-family="monospace">.match(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>)</fo:inline> method
          on that object.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here are the functions in module <fo:inline font-family="monospace">re</fo:inline>:
        </fo:block><fo:block id="id486487" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id486489" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">compile(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">f</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Compile regular expression <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>.  This function returns
                a compiled regular expression object; see <fo:basic-link internal-destination="compiled-re">Section 28.5.3, “Compiled regular expression objects”</fo:basic-link><fo:basic-link internal-destination="compiled-re"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="compiled-re"/>)</fo:inline></fo:basic-link>.  To get
                case-insensitive matching, use <fo:inline font-family="monospace">re.I</fo:inline> as the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> argument. There are other flags that
                may be passed to the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">f</fo:inline></fo:inline> argument; see the
                <fo:basic-link external-destination="url(http://docs.python.org/library/re.html)"><fo:inline font-style="italic">Python Library Reference</fo:inline></fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">39</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">39</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/re.html)">http://docs.python.org/library/re.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
              </fo:block></fo:block><fo:block id="id486545" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">match(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">f</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>
                matches the start of string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>, return a <fo:basic-link internal-destination="match-object"><fo:inline font-family="monospace">MatchObject</fo:inline></fo:basic-link> (see below), otherwise return <fo:inline font-family="monospace">None</fo:inline>.
              </fo:block></fo:block><fo:block id="id486592" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">search(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">f</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Like the <fo:inline font-family="monospace">match()</fo:inline> method, but matches
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> anywhere
                in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>, not
                just at the beginning.
              </fo:block></fo:block><fo:block id="id486631" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">split(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[,maxsplit=<fo:inline font-style="italic" font-family="monospace">m</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Splits string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> into pieces where pattern <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> occurs.  If
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> does not
                contain groups, returns a list of the parts of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> that match
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>, in
                order.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> contains groups, returns a list containing all the
                characters from <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>, with parts matching <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> in separate elements from
                the non-matching parts.  If the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline> argument is given, it
                specifies the maximum number of pieces that will be
                split, and the leftovers will be returned as an extra
                string at the end of the list.
              </fo:block></fo:block><fo:block id="id486702" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">sub(<fo:inline font-style="italic" font-family="monospace">r</fo:inline>,<fo:inline font-style="italic" font-family="monospace">R</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[,count=<fo:inline font-style="italic" font-family="monospace">c</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Replace the leftmost non-overlapping parts of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> that match
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> using
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">R</fo:inline></fo:inline>; returns
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> if there
                is no match.  The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">R</fo:inline></fo:inline> argument can be a string or a function that
                takes one <fo:basic-link internal-destination="match-object"><fo:inline font-family="monospace">MatchObject</fo:inline></fo:basic-link> argument and returns the
                string to be substituted.  If the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> argument is supplied
                (defaulting to 0), no more than <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> replacements are done, where
                a value of 0 means do them all.
              </fo:block></fo:block></fo:block></fo:block><fo:block id="compiled-re"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.5.3. Compiled regular expression objects</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Compiled regular expression objects returned by
          <fo:inline font-family="monospace">re.compile()</fo:inline> have these methods:
        </fo:block><fo:block id="id486797" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id486799" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.match(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[,[<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">s</fo:inline></fo:inline>][,<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">e</fo:inline></fo:inline>]])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                If the start of string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> matches, return a <fo:basic-link internal-destination="match-object"><fo:inline font-family="monospace">MatchObject</fo:inline></fo:basic-link>; if there is no match, return <fo:inline font-family="monospace">None</fo:inline>.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">s</fo:inline></fo:inline></fo:inline>
                is given, it specifies the index within <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> where
                matching is to start; this defaults to 0.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">e</fo:inline></fo:inline></fo:inline> is
                given, it specifies the maximum length of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> that can be
                used in matching.
              </fo:block></fo:block><fo:block id="id486870" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.pattern</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                The string from which this object was compiled.
              </fo:block></fo:block><fo:block id="id486887" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.search(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[,[<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">s</fo:inline></fo:inline>][,<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">e</fo:inline></fo:inline>]])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Like <fo:inline font-family="monospace">match()</fo:inline>, but matches anywhere in
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>.
              </fo:block></fo:block><fo:block id="id486926" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.split(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[,maxsplit=<fo:inline font-style="italic" font-family="monospace">m</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Like <fo:inline font-family="monospace">re.split()</fo:inline>.
              </fo:block></fo:block><fo:block id="id486953" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.sub(<fo:inline font-style="italic" font-family="monospace">R</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>[,count=<fo:inline font-style="italic" font-family="monospace">c</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Like <fo:inline font-family="monospace">re.sub()</fo:inline>.
              </fo:block></fo:block></fo:block></fo:block><fo:block id="match-object"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.5.4. Methods on a <fo:inline font-family="monospace">MatchObject</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          A <fo:inline font-family="monospace">MatchObject</fo:inline> is the object returned by
          <fo:inline font-family="monospace">.match()</fo:inline> or other methods.  Such an object
          has these methods and attributes:
        </fo:block><fo:block id="id487011" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id487015" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.end([<fo:inline font-style="italic" font-family="monospace">n</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Returns the location where a match ended.  If no
                argument is given, returns the index of the first
                character past the match.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> is given, returns the
                index of the first character past where the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>th group
                matched.
              </fo:block></fo:block><fo:block id="id487046" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.endpos</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                The effective <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">e</fo:inline></fo:inline></fo:inline>
                value passed to <fo:inline font-family="monospace">.match()</fo:inline> or <fo:inline font-family="monospace">.search()</fo:inline>.
              </fo:block></fo:block><fo:block id="id487077" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.group([<fo:inline font-style="italic" font-family="monospace">n</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Retrieves the text that matched.  If there are no
                arguments, or if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> is zero, it returns the
                entire string that matched.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                To retrieve just the text that matched the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>th group, pass
                in an integer <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>, where the groups are numbered starting at
                1.  For example, for a <fo:inline font-family="monospace">MatchObject</fo:inline>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>, <fo:inline font-family="monospace">m<fo:inline font-style="italic" font-family="monospace"/>.group(2)</fo:inline> would
                return the text that matched the second group, or
                <fo:inline font-family="monospace">None</fo:inline> if there were no second group.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                If you have named the groups in your regular
                expression using a construct of the form <fo:inline font-family="monospace">(?P&lt;<fo:inline font-style="italic" font-family="monospace">name</fo:inline>&gt;...)</fo:inline>, the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> argument can be the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">name</fo:inline></fo:inline> as a
                string.  For example, if you have a group <fo:inline font-family="monospace">(?P&lt;year&gt;[\d]{4})</fo:inline> (which matches four
                digits), you can retrieve that field using <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline>.group('year')</fo:inline>.
              </fo:block></fo:block><fo:block id="id487166" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.groups([<fo:inline font-style="italic" font-family="monospace">default</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Return a tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>,<fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">2</fo:inline></fo:inline>,...)</fo:inline> containing all the matched strings, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> is the string
                that matched the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline>th group.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                For groups that did not match, the corresponding value
                in the tuple will be <fo:inline font-family="monospace">None</fo:inline>, or an
                optional default value that you specify in the call to
                this method.
              </fo:block></fo:block><fo:block id="id487222" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.groupdict([<fo:inline font-style="italic" font-family="monospace">default</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Return a dictionary whose keys are the named groups in
                the regular expression.  Each corresponding value will
                be the text that matched the group.  If a group did
                not match, the corresponding value will be <fo:inline font-family="monospace">None</fo:inline>, or an alternate default value that you
                supply when you call the method.
              </fo:block></fo:block><fo:block id="id406698" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.lastgroup</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Holds the name of the last named group (using the
                <fo:inline font-family="monospace">(?P&lt;<fo:inline font-style="italic" font-family="monospace">n</fo:inline>&gt;<fo:inline font-style="italic" font-family="monospace">r</fo:inline>)</fo:inline>
                construct) that matched.  It will be <fo:inline font-family="monospace">None</fo:inline> if no named groups matched, or if
                the last group that matched was a numbered group
                and not a named group.
              </fo:block></fo:block><fo:block id="id406731" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.lastindex</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Holds the index of the last group that matched,
                or <fo:inline font-family="monospace">None</fo:inline> if no groups matched.
              </fo:block></fo:block><fo:block id="id406752" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.pos</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                The effective <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">s</fo:inline></fo:inline></fo:inline>
                value passed to <fo:inline font-family="monospace">.match()</fo:inline> or <fo:inline font-family="monospace">.search()</fo:inline>.
              </fo:block></fo:block><fo:block id="id487401" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.re</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                The regular expression object used to produce this
                <fo:inline font-family="monospace">MatchObject</fo:inline>.
              </fo:block></fo:block><fo:block id="id487422" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.span([<fo:inline font-style="italic" font-family="monospace">n</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Returns a 2-tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>.start(<fo:inline font-style="italic" font-family="monospace">n</fo:inline>),<fo:inline font-style="italic" font-family="monospace">m</fo:inline>.end(<fo:inline font-style="italic" font-family="monospace">n</fo:inline>))</fo:inline>.
              </fo:block></fo:block><fo:block id="id487459" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.start([<fo:inline font-style="italic" font-family="monospace">n</fo:inline>])</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Returns the location where a match started.  If no
                argument is given, returns the index within the
                string where the entire match started.  If an
                argument <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> is given, returns the index of the start of the
                match for the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>th group.
              </fo:block></fo:block><fo:block id="id487490" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">.string</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> argument passed to
                <fo:inline font-family="monospace">.match()</fo:inline> or
                <fo:inline font-family="monospace">.search()</fo:inline>.
              </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="sys-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">sys</fo:inline>: Universal system interface</fo:marker><fo:block font-size="14.4pt">28.6. <fo:inline font-family="monospace">sys</fo:inline>: Universal system interface</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The services in this module give you access to command line
        arguments, standard input and output streams, and other
        system-related facilities.
      </fo:block><fo:block id="id487546" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id487548" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">argv</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:inline font-family="monospace">sys.argv[0]</fo:inline> is the name of your Python
              script, or <fo:inline font-family="monospace">'-c'</fo:inline> if in interactive mode.
              The remaining elements, <fo:inline font-family="monospace">sys.argv[1:]</fo:inline>,
              are the command line arguments, if any.
            </fo:block></fo:block><fo:block id="id487573" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">builtin_module_names</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A list of the names of the modules compiled into your
              installation of Python.
            </fo:block></fo:block><fo:block id="id487588" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">exit(<fo:inline font-style="italic" font-family="monospace">n</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Terminate execution with status <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id487613" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">modules</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A dictionary of the modules already loaded.
            </fo:block></fo:block><fo:block id="id487628" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">path</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The search path for modules, a list of strings in
              search order.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              <fo:inline font-style="italic">Note:</fo:inline> You can modify this list.
              For example, if you want Python to search directory
              <fo:inline font-family="monospace">/u/dora/python/lib</fo:inline> for modules to
              import before searching any other directory, these two
              lines will do it:

              <fo:block id="id487652" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">import sys
sys.path.insert(0, "/u/dora/python/lib")
</fo:block>
            </fo:block></fo:block><fo:block id="id487661" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">platform</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A string identifying the software architecture.
            </fo:block></fo:block><fo:block id="id487676" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">stderr</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The standard error stream as a <fo:basic-link internal-destination="file-type">file object</fo:basic-link>.
            </fo:block></fo:block><fo:block id="id487698" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">stdin</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The standard input stream as a <fo:basic-link internal-destination="file-type">file object</fo:basic-link>.
            </fo:block></fo:block><fo:block id="id487719" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">stdout</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The standard output stream as a <fo:basic-link internal-destination="file-type">file object</fo:basic-link>.
            </fo:block></fo:block></fo:block></fo:block><fo:block id="os-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">os</fo:inline>: The operating
      system interface</fo:marker><fo:block font-size="14.4pt">28.7. <fo:inline font-family="monospace">os</fo:inline>: The operating
      system interface</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The variables and methods in the <fo:inline font-family="monospace">os</fo:inline> module
        allow you to interact with files and directories.  In most
        cases the names and functionalities are the same as the
        equivalent C language functions, so refer to Kernighan and
        Ritchie, <fo:inline font-style="italic">The C Programming Language</fo:inline>,
        second edition, or the equivalent for more details.
      </fo:block><fo:block id="id487774" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id487778" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">chdir(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Change the current working directory to that given by
              string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>
            </fo:block></fo:block><fo:block id="os-chmod" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">chmod(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Change the permissions for pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>.  See <fo:basic-link internal-destination="os-stat-module">module <fo:inline font-family="monospace">stat</fo:inline></fo:basic-link>, below, for symbolic constants to be used in
              making up <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>
              values.
            </fo:block></fo:block><fo:block id="id487854" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">chown(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">u</fo:inline>,<fo:inline font-style="italic" font-family="monospace">g</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Change the owner of pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> to user id <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">u</fo:inline></fo:inline> and group id <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">g</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id487894" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">environ</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              A dictionary whose keys are the names of all currently
              defined environmental variables, and whose values are
              the values of those variables.
            </fo:block></fo:block><fo:block id="id487910" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">error</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The <fo:basic-link internal-destination="exceptions">exception</fo:basic-link> raised
              for errors in this module.
            </fo:block></fo:block><fo:block id="id487932" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">execv(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">A</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Replace the current process with a new process executing
              the file at pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">A</fo:inline></fo:inline> is a list of the strings to be passed to the
              new process as command line arguments.
            </fo:block></fo:block><fo:block id="id487965" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">execve(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">A</fo:inline>,<fo:inline font-style="italic" font-family="monospace">E</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Like <fo:inline font-family="monospace">execv()</fo:inline>, but you supply a dictionary
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline></fo:inline> that
              defines the environmental variables for the new process.
            </fo:block></fo:block><fo:block id="id488001" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">_exit(<fo:inline font-style="italic" font-family="monospace">n</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Exit the current process and return status code <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>.  This method
              should be used only by the child process after a <fo:inline font-family="monospace">fork()</fo:inline>; normally you should use <fo:inline font-family="monospace">sys.exit()</fo:inline>.
            </fo:block></fo:block><fo:block id="id488033" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">fork()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Fork a child process.  In the child process, this
              function returns <fo:inline font-family="monospace">0</fo:inline>; in the parent, it
              returns the child's process ID.
            </fo:block></fo:block><fo:block id="id488052" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">getcwd()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the current working directory name as a string.
            </fo:block></fo:block><fo:block id="id488067" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">getegid()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the effective group ID.
            </fo:block></fo:block><fo:block id="id488082" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">geteuid()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the effective user ID.
            </fo:block></fo:block><fo:block id="id488097" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">getgid()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the current process's group ID.  To decode
              user IDs, see the <fo:basic-link external-destination="url(http://docs.python.org/library/grp.html)"><fo:inline font-family="monospace">grp</fo:inline> standard module</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">40</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">40</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/grp.html)">http://docs.python.org/library/grp.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
            </fo:block></fo:block><fo:block id="id488122" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">getpid()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the current process's process ID.
            </fo:block></fo:block><fo:block id="id488136" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">getppid()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the parent process's PID (process ID).
            </fo:block></fo:block><fo:block id="id488151" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">getuid()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns the current process's user ID.  To decode
              user IDs, see the <fo:basic-link external-destination="url(http://docs.python.org/library/pwd.html)"><fo:inline font-family="monospace">pwd</fo:inline> standard module</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">41</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">41</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/pwd.html)">http://docs.python.org/library/pwd.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
            </fo:block></fo:block><fo:block id="id488175" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">kill(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Send signal <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> to the process whose process ID is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id488207" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">link(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>,<fo:inline font-style="italic" font-family="monospace">d</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Create a hard link to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> and call the link <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id488240" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">listdir(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a list of the names of the files in the directory
              whose pathname is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.  This list will never contain the special
              entries <fo:inline font-family="monospace">'.'</fo:inline> and <fo:inline font-family="monospace">'..'</fo:inline> for
              the current and parent directories.  The entries may not
              be in any particular order.
            </fo:block></fo:block><fo:block id="id488274" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">lstat(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Like <fo:inline font-family="monospace">stat()</fo:inline>, but if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is a link, you will get the
              status tuple for the link itself, rather than the file
              it points at.
            </fo:block></fo:block><fo:block id="id488303" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">makedirs(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>[,
              <fo:inline font-style="italic" font-family="monospace">mode]</fo:inline>)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Works like <fo:inline font-family="monospace">mkdir()</fo:inline>, but will also
                create any intermediate directories between existing
                directories and the desired new directory.
              </fo:block></fo:block><fo:block id="id488331" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">mkdir(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>[,<fo:inline font-style="italic" font-family="monospace">m</fo:inline>])</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Create a directory at pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.  You may optionally specify
              permissions <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>; see <fo:basic-link internal-destination="os-stat-module">module <fo:inline font-family="monospace">stat</fo:inline></fo:basic-link> below for the interpretation of
              permission values.
            </fo:block></fo:block><fo:block id="id488373" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">mkfifo(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Create a named pipe with name <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> and open mode <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>.  The server
              side of the pipe will open it for reading, and the
              client side for writing.  This function does not
              actually open the fifo, it just creates the rendezvous
              point.
            </fo:block></fo:block><fo:block id="id488407" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">nice(<fo:inline font-style="italic" font-family="monospace">i</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Renice (change the priority) of the current process by
              adding <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">i</fo:inline></fo:inline> to
              its current priority.
            </fo:block></fo:block><fo:block id="id488432" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">readlink(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is the
              pathname to a soft (symbolic) link, this function
              returns the pathname to which that link points.
            </fo:block></fo:block><fo:block id="id488457" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">remove(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Removes the file with pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>, as in the Unix <fo:inline font-family="monospace">rm</fo:inline> command.  Raises <fo:inline font-family="monospace">OSError</fo:inline> if
              it fails.
            </fo:block></fo:block><fo:block id="id488490" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">removedirs(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Similar to <fo:inline font-family="monospace">remove()</fo:inline>, but also removes
                any other parent directory in the path that has no
                other children.
              </fo:block></fo:block><fo:block id="id488514" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">rename(<fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">o</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Rename path <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">o</fo:inline></fo:inline></fo:inline> to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p<fo:inline font-size="75%" baseline-shift="sub">n</fo:inline></fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id488555" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">rmdir(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Remove the directory at path <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="os-stat" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">stat(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a status tuple describing the file or directory
              at pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.  See module <fo:inline font-family="monospace">stat</fo:inline>, below, for the
              interpretation of a status tuple.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is a link, you
              will get the status tuple of the file to which <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is linked.
            </fo:block></fo:block><fo:block id="id488622" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">symlink(<fo:inline font-style="italic" font-family="monospace">s</fo:inline>,<fo:inline font-style="italic" font-family="monospace">d</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Create a symbolic link to path <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>, and call the link <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id488655" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">system(<fo:inline font-style="italic" font-family="monospace">c</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Execute the command in string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">c</fo:inline></fo:inline> as a sub-shell. Returns the
              exit status of the process.
            </fo:block></fo:block><fo:block id="id488680" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">times()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a tuple of statistics about the current
              process's elapsed time.  This tuple has the form <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">u</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s</fo:inline>,<fo:inline font-style="italic" font-family="monospace">u'</fo:inline>,<fo:inline font-style="italic" font-family="monospace">s'</fo:inline>,<fo:inline font-style="italic" font-family="monospace">r</fo:inline>)</fo:inline> where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">u</fo:inline></fo:inline> is user time, <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline> is system time,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">u'</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s'</fo:inline></fo:inline> are user and
              system time including all child processes, and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline> is elapsed real
              time.  All values are in seconds as floats.
            </fo:block></fo:block><fo:block id="id488740" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">tmpfile()</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a new, open temporary file, with update mode
              <fo:inline font-family="monospace">"w+b"</fo:inline>.  This file will not appear in any
              directory, and will disappear when it is no longer in
              use.
            </fo:block></fo:block><fo:block id="id488762" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">umask(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Sets the “<fo:inline font-style="italic">umask</fo:inline>” that
              determines the default permissions for newly created
              files.  Returns the previous value.  Each bit set in the
              umask corresponds to a permission that is
              <fo:inline font-style="italic">not</fo:inline> granted by default.
            </fo:block></fo:block><fo:block id="id488793" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">uname()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a tuple of strings descriping the operating
              system's version:
              <fo:inline font-family="monospace">(s,n,r,v,m)</fo:inline> where
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s</fo:inline></fo:inline>
              is the name of the operating system,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline>
              is the name of the processor (node) where you are running,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">r</fo:inline></fo:inline>
              is the operating system's version number,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline>
              is the major version, and
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>
              describes the type of processor.
            </fo:block></fo:block><fo:block id="id488836" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">urandom(<fo:inline font-style="italic" font-family="monospace">n</fo:inline>)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Return a string of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> random bytes.  These bytes should be
                sufficiently random for use in cryptographic
                applications.
              </fo:block></fo:block><fo:block id="id488862" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">utime(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">t</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">t</fo:inline></fo:inline>
              argument must be a tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">a</fo:inline>, <fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline> where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline>
              and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline> are
              epoch times.  For pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>, set the last access time to
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> and the
              last modification to <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id488923" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">wait()</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Wait for the termination of a child process.  Returns a
              tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">e</fo:inline>)</fo:inline> where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is the child's
              process ID and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">e</fo:inline></fo:inline> is its exit status.
            </fo:block></fo:block><fo:block id="id488957" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">waitpid(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">o</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Like <fo:inline font-family="monospace">wait()</fo:inline>, but it waits for the process
              whose ID is <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.  The option value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">o</fo:inline></fo:inline> specifies what to do if the child is still
              running.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">o</fo:inline></fo:inline> is 0, you wait for the child to terminate.  Use a
              value of <fo:inline font-family="monospace">os.WNOHANG</fo:inline> if you don't want to
              wait.
            </fo:block></fo:block><fo:block id="id489003" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold"><fo:inline font-family="monospace">WNOHANG</fo:inline></fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              See <fo:inline font-family="monospace">waitpid()</fo:inline> above.
            </fo:block></fo:block></fo:block></fo:block><fo:block id="os-stat-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">stat</fo:inline>: Interpretation of file
      status</fo:marker><fo:block font-size="14.4pt">28.8. <fo:inline font-family="monospace">stat</fo:inline>: Interpretation of file
      status</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">stat</fo:inline> module contains a number of variables
        used in encoding and decoding various items returned by
        certain methods in the <fo:basic-link internal-destination="os-module"><fo:inline font-family="monospace">os</fo:inline></fo:basic-link> module, such as <fo:basic-link internal-destination="os-stat"><fo:inline font-family="monospace">stat()</fo:inline></fo:basic-link> and <fo:basic-link internal-destination="os-chmod"><fo:inline font-family="monospace">chmod()</fo:inline></fo:basic-link>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        First, there are constants for indexing the
        components of a “status tuple” such as that returned by
        <fo:inline font-family="monospace">os.stat()</fo:inline>:
      </fo:block><fo:block id="id489084" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_ATIME</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                The epoch time of last access (see the <fo:basic-link internal-destination="time-module"><fo:inline font-family="monospace">time</fo:inline>
                module</fo:basic-link> for interpretation of times).
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_CTIME</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The epoch time of the file's last status change.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_DEV</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The device number.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_GID</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The group ID.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_INO</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The i-node number.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_MODE</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The file's permissions.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_MTIME</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The epoch time of last modification.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_NLINK</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The number of hard links.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_SIZE</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>The current size in bytes.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">ST_UID</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>The user ID.</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The following functions are defined in the
        <fo:inline font-family="monospace">stat</fo:inline> module for testing a mode
        value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>,
        where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">m</fo:inline></fo:inline>
        is the <fo:inline font-family="monospace">ST_MODE</fo:inline> element of the
        status tuple.  Each function is a <fo:basic-link internal-destination="predicates">predicate</fo:basic-link>:
      </fo:block><fo:block id="id489257" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">S_ISBLK(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Is this a block device?</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">S_ISCHR(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Is this a character device?</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">S_ISDIR(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Is this a directory?</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">S_ISFIFO(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Is this a FIFO?</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">S_ISLNK(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Is this a soft (symbolic) link?</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">S_ISREG(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Is this an ordinary file?</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace">S_ISSOCK(<fo:inline font-style="italic" font-family="monospace">m</fo:inline>)</fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>Is this a socket?</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        These constants are defined for use as mask values in testing
        and assembling permission values such as those returned by
        <fo:inline font-family="monospace">os.stat()</fo:inline> in <fo:basic-link internal-destination="os-module">Section 28.7, “<fo:inline font-family="monospace">os</fo:inline>: The operating
      system interface”</fo:basic-link><fo:basic-link internal-destination="os-module"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="os-module"/>)</fo:inline></fo:basic-link>.
      </fo:block><fo:block id="id489410" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IRGRP</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Group read permission.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IROTH</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>World read permission.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IRUSR</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Owner read permission.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_ISGID</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>SGID (set group ID) bit.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_ISUID</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>SUID (set user ID) bit.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IWGRP</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Group write permission.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IWOTH</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>World write permission.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IWUSR</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Owner write permission.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IXGRP</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>Group execute permission.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IXOTH</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>World execute permission.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block><fo:inline font-family="monospace">S_IXUSR</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>Owner execute permission.</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="os.path-module"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">os.path</fo:inline>: File and directory interface</fo:marker><fo:block font-size="14.4pt">28.9. <fo:inline font-family="monospace">os.path</fo:inline>: File and directory interface</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        These functions allow you to deal with path names and
        directory trees.  To use a given <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">method</fo:inline></fo:inline> in this module, import the
        <fo:inline font-family="monospace">os</fo:inline> module and then use <fo:inline font-family="monospace">os.path.<fo:inline font-style="italic" font-family="monospace">method()</fo:inline></fo:inline>.
      </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        For example, to get the base name of a path <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>, use <fo:inline font-family="monospace">os.path.basename(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>.
      </fo:block><fo:block id="id489609" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id489614" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">abspath(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return the absolute path name that is equivalent to
              path <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id489638" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">basename(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return the base name portion of a path name string <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.  See <fo:inline font-family="monospace">split()</fo:inline>, below.
            </fo:block></fo:block><fo:block id="id489666" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">commonprefix(<fo:inline font-style="italic" font-family="monospace">L</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              For a list <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>
              containing pathname strings, return the longest string
              that is a prefix of each element in <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">L</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id489696" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">exists(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> for testing
              whether pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> exists.
            </fo:block></fo:block><fo:block id="id489727" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">expanduser(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is a
              pathname starting with a tilde character (<fo:inline font-family="monospace">~</fo:inline>), return the equivalent full pathname; otherwise
              return <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id489760" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">isabs(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              <fo:basic-link internal-destination="predicates">Predicate</fo:basic-link> for testing
              whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is
              an absolute pathname (e.g., starts with a slash on Unix
              systems).
            </fo:block></fo:block><fo:block id="id489792" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">isfile(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Predicate for testing whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> refers to a regular file, as
              opposed to a directory, link, or
              device.
            </fo:block></fo:block><fo:block id="id489818" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">islink(p)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Predicate for testing whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is a soft (symbolic) link.
            </fo:block></fo:block><fo:block id="id489839" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">ismount(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Predicate for testing whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is a mount point, that is,
              whether <fo:inline font-style="italic" font-family="monospace">p</fo:inline> is on a different
              device than its parent directory.
            </fo:block></fo:block><fo:block id="id489868" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">join(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">q</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">q</fo:inline></fo:inline> is an
              absolute path, returns <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">q</fo:inline></fo:inline>.  Otherwise, if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> is empty or ends
              in a slash, returns <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline>+<fo:inline font-style="italic" font-family="monospace">q</fo:inline></fo:inline>, but otherwise
              it returns <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline>+'/'+<fo:inline font-style="italic" font-family="monospace">q</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id489921" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">normcase(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return pathname <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> with its case normalized.  On Unix systems,
              this does nothing, but on Macs it lowercases <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.
            </fo:block></fo:block><fo:block id="id489951" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">samefile(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">q</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Predicate for testing whether <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">q</fo:inline></fo:inline> are the same file (that is,
              the same inode on the same device).  This method may
              raise an exception if <fo:inline font-family="monospace">os.stat()</fo:inline> fails for
              either argument.
            </fo:block></fo:block><fo:block id="id489988" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">split(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Return a 2-tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">H</fo:inline>,<fo:inline font-style="italic" font-family="monospace">T</fo:inline>)</fo:inline> where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">T</fo:inline></fo:inline> is the tail end
              of the pathname (not containing a slash) and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">H</fo:inline></fo:inline> is everything up
              to the tail.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> ends with a slash, returns <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,'</fo:inline><fo:inline font-family="monospace">')</fo:inline>.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> contains no slashes, returns <fo:inline font-family="monospace">('</fo:inline><fo:inline font-family="monospace">',<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>.  The
              returned <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">H</fo:inline></fo:inline>
              string will have its trailing slash removed unless <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">H</fo:inline></fo:inline> is the root
              directory.
            </fo:block></fo:block><fo:block id="id490066" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">splitext(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Returns a 2-tuple <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">R</fo:inline>,<fo:inline font-style="italic" font-family="monospace">E</fo:inline>)</fo:inline> where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline></fo:inline> is the
              “extension” part of the pathname and <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">R</fo:inline></fo:inline> is the
              “root” part.  If <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> contains at least one period,
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">E</fo:inline></fo:inline> will
              contain the last period and everything after that, and
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">R</fo:inline></fo:inline> will be
              everything up to but not including the last period.  If
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline> contains
              no periods, returns <fo:inline font-family="monospace">(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,'</fo:inline><fo:inline font-family="monospace">')</fo:inline>.
            </fo:block></fo:block><fo:block id="id490135" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
            <fo:inline font-family="monospace">walk(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">V</fo:inline>,<fo:inline font-style="italic" font-family="monospace">a</fo:inline>)</fo:inline>
          </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
              Walks an entire directory structure starting at pathname
              <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>.  See
              below for more information.
            </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        The <fo:inline font-family="monospace">os.path.walk(<fo:inline font-style="italic" font-family="monospace">p</fo:inline>,<fo:inline font-style="italic" font-family="monospace">V</fo:inline>,<fo:inline font-style="italic" font-family="monospace">a</fo:inline>)</fo:inline> function does
        the following for every directory at or below
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>
        (including <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>
        if <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">p</fo:inline></fo:inline>
        is a directory), this method calls the “visitor function”
        <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>
        with arguments
        <fo:block id="id490202" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">V</fo:inline>(<fo:inline font-style="italic" font-family="monospace">a</fo:inline>,<fo:inline font-style="italic" font-family="monospace">d</fo:inline>,<fo:inline font-style="italic" font-family="monospace">N</fo:inline>)
</fo:block>
      </fo:block><fo:block id="id490221" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-left-style="solid" border-right-style="solid" border-top-style="solid" border-bottom-style="solid" border-left-width="0.5pt" border-right-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-left-color="black" border-right-color="black" border-top-color="black" border-bottom-color="black" width="auto"><fo:table-column column-number="1"/><fo:table-column column-number="2"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                The same <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline>
                passed to <fo:inline font-family="monospace">os.path.walk()</fo:inline>.  You can use
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">a</fo:inline></fo:inline> to
                provide information to the <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline>()</fo:inline> function, or to accumulate
                information throughout the traversal of the directory
                structure.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" text-align="justify"><fo:block>
                A string containing the name of the directory being
                visited.
              </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" border-right-width="0.5pt" border-right-style="solid" border-right-color="black" text-align="left"><fo:block>
                <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">N</fo:inline></fo:inline>
              </fo:block></fo:table-cell><fo:table-cell padding-left="2pt" padding-right="2pt" padding-top="2pt" padding-bottom="2pt" text-align="justify"><fo:block>
                A list of all the names within directory <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline>.  You can
                remove elements from this list in place if there are
                some elements of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">d</fo:inline></fo:inline> that you don't want <fo:inline font-family="monospace">walk()</fo:inline> to
                visit.
              </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="argparse"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"><fo:inline font-family="monospace">argparse</fo:inline>: Processing command line
      arguments</fo:marker><fo:block font-size="14.4pt">28.10. <fo:inline font-family="monospace">argparse</fo:inline>: Processing command line
      arguments</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
        This module is the current recommended standard module for
        processing arguments from the command line.  The module has
        many more features than those described here: refer to the
        <fo:basic-link external-destination="url(http://docs.python.org/library/argparse.html)">full
        documentation</fo:basic-link><fo:footnote><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">42</fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" text-indent="0pt"><fo:block><fo:inline font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">42</fo:inline> <fo:basic-link external-destination="url(http://docs.python.org/library/argparse.html)">http://docs.python.org/library/argparse.html</fo:basic-link></fo:block></fo:footnote-body></fo:footnote>.
      </fo:block><fo:list-block id="id490352" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id490356" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="argparse-defs">Section 28.10.1, “Types of command line arguments”</fo:basic-link><fo:basic-link internal-destination="argparse-defs"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-defs"/>)</fo:inline></fo:basic-link>
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id490369" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="argparse-flow">Section 28.10.2, “Overall flow of argument processing”</fo:basic-link><fo:basic-link internal-destination="argparse-flow"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-flow"/>)</fo:inline></fo:basic-link>
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id490382" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="argparse-init">Section 28.10.3, “The <fo:inline font-family="monospace">ArgumentParser()</fo:inline> constructor”</fo:basic-link><fo:basic-link internal-destination="argparse-init"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-init"/>)</fo:inline></fo:basic-link>
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id490395" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="argparse-add_argument">Section 28.10.4, “The <fo:inline font-family="monospace">ArgumentParser.add_argument()</fo:inline>
        method”</fo:basic-link><fo:basic-link internal-destination="argparse-add_argument"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-add_argument"/>)</fo:inline></fo:basic-link>
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id490408" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="argparse-parse_args">Section 28.10.5, “The <fo:inline font-family="monospace">ArgumentParser.parse_args()</fo:inline>
        method”</fo:basic-link><fo:basic-link internal-destination="argparse-parse_args"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-parse_args"/>)</fo:inline></fo:basic-link>
          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id490420" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
            <fo:basic-link internal-destination="argparse-utilities">Section 28.10.6, “Other useful <fo:inline font-family="monospace">ArgumentParser</fo:inline> methods”</fo:basic-link><fo:basic-link internal-destination="argparse-utilities"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-utilities"/>)</fo:inline></fo:basic-link>
          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="argparse-defs"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.10.1. Types of command line arguments</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For the purposes of this module, arguments are divided into
          two types:
        </fo:block><fo:list-block id="id490451" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id490453" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              <fo:inline font-style="italic">Positional</fo:inline> arguments do not
              begin with a hyphen.  When there are multiple
              positional arguments, the meaning of each one is
              inferred from their position relative to the other
              positional arguments.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id490465" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              <fo:inline font-style="italic">Optional</fo:inline> arguments begin
              with a hyphen.  In general each optional argument may
              have two forms, a short form consisting of a hyphen
              and a letter (e.g., “<fo:inline font-family="monospace">-h</fo:inline>”
              for help), and a long form consisting of two hyphens
              and a full name (e.g., “<fo:inline font-family="monospace">--help</fo:inline>”).  Generally optional arguments are not
              required, but your program can make them required if
              you wish.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              Some optional arguments may allow or require a value.
              For example, let's suppose your script has an option
              that specifies the name of a river, and that the
              short form is “<fo:inline font-family="monospace">-r</fo:inline>” and
              the long form is “<fo:inline font-family="monospace">--river</fo:inline>”.  On the command line, the user can specify
              the Nile in any of these four ways:
            </fo:block><fo:block id="id490505" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">-r Nile
-rNile
--river Nile
--river=Nile
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              Users may group multiple short-form options together.
              For example, if a script named <fo:inline font-family="monospace">sss</fo:inline> has
              options “<fo:inline font-family="monospace">-a</fo:inline>”, “<fo:inline font-family="monospace">-m</fo:inline>”, “<fo:inline font-family="monospace">-p</fo:inline>”,
              and “<fo:inline font-family="monospace">-s</fo:inline>”, these two examples
              are valid and equivalent:
            </fo:block><fo:block id="id490536" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">sss -a -m -p -s
sss -spma
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              A short-form option that takes an argument may occur as
              part of such a group, but only if it is the last option
              in the group.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              Contrary to Unix practice, optional arguments may occur
              anywhere relative to the positional arguments.  Also,
              the names of long-form optional arguments may be
              abbreviated if the abbreviation is unambiguous.  For
              example, if a script has two long-form options <fo:inline font-family="monospace">--pratt</fo:inline> and <fo:inline font-family="monospace">--polonius</fo:inline>, option
              <fo:inline font-family="monospace">--pr</fo:inline> will be accepted as an abbreviation
              for <fo:inline font-family="monospace">--pratt</fo:inline>; but <fo:inline font-family="monospace">--p</fo:inline> would
              not be acceptable because it is ambiguous.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="argparse-flow"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.10.2. Overall flow of argument processing</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the general procedure for using the <fo:inline font-family="monospace">argparse</fo:inline> module to check and process your command
          line arguments, which in most cases will come from <fo:inline font-family="monospace">sys.argv</fo:inline> (see <fo:basic-link internal-destination="sys-module">Section 28.6, “<fo:inline font-family="monospace">sys</fo:inline>: Universal system interface”</fo:basic-link><fo:basic-link internal-destination="sys-module"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="sys-module"/>)</fo:inline></fo:basic-link>).
        </fo:block><fo:block id="id490608" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-block provisional-distance-between-starts="2em" provisional-label-separation="0.2em" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id490610">1.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Create an <fo:inline font-family="monospace">argparse.ArgumentParser</fo:inline>
              instance.  See <fo:basic-link internal-destination="argparse-init">Section 28.10.3, “The <fo:inline font-family="monospace">ArgumentParser()</fo:inline> constructor”</fo:basic-link><fo:basic-link internal-destination="argparse-init"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-init"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id490629">2.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              For each command line argument, call the <fo:inline font-family="monospace">.add_argument()</fo:inline> method of that instance
              once to define what that argument may be.  See
              <fo:basic-link internal-destination="argparse-add_argument">Section 28.10.4, “The <fo:inline font-family="monospace">ArgumentParser.add_argument()</fo:inline>
        method”</fo:basic-link><fo:basic-link internal-destination="argparse-add_argument"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-add_argument"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block id="id490648">3.
          </fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              Call the <fo:inline font-family="monospace">.parse_args()</fo:inline> method of the
              instance.  If there are any errors in the command
              line, this method will print a message summarizing
              the arguments, and then terminate execution.
            </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
              If the arguments are correct according to the rules
              that you have specified, all the values will be
              packaged into an object containing all your
              arguments as attributes, with default values filled
              in where necessary.  See <fo:basic-link internal-destination="argparse-parse_args">Section 28.10.5, “The <fo:inline font-family="monospace">ArgumentParser.parse_args()</fo:inline>
        method”</fo:basic-link><fo:basic-link internal-destination="argparse-parse_args"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="argparse-parse_args"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="argparse-init"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.10.3. The <fo:inline font-family="monospace">ArgumentParser()</fo:inline> constructor</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here is the calling sequence to create an <fo:inline font-family="monospace">ArgumentParser</fo:inline> instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P</fo:inline></fo:inline>:
        </fo:block><fo:block id="id490706" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">import argparse

<fo:inline font-style="italic" font-family="monospace">P</fo:inline> = argparse.ArgumentParser(**<fo:inline font-style="italic" font-family="monospace">kw</fo:inline>)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Valid keyword arguments include:  
        </fo:block><fo:block id="id490722" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id490725" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">description</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                A string describing the overall purpose of your
                script.  This string will be displayed in the
                generated help message.
              </fo:block></fo:block><fo:block id="id490742" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">add_help=True</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                By default, the returned parser will implement
                options <fo:inline font-family="monospace">-h</fo:inline> and <fo:inline font-family="monospace">--help</fo:inline>
                to display the help message showing the valid
                option syntax.  Use <fo:inline font-family="monospace">add_help=False</fo:inline>
                if you don't want this behavior.
              </fo:block></fo:block><fo:block id="id490771" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">prog</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                By default, when the name of your script is
                displayed, it will be the name from <fo:inline font-family="monospace">sys.argv[0]</fo:inline>.  If you would like to display
                a different program name, pass that name as the
                value of this keyword argument.
              </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here's an example.
        </fo:block><fo:block id="id490798" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">parser = argparse.ArgumentParser(prog="nile-source",
              description="Find the source of the Nile")
</fo:block></fo:block><fo:block id="argparse-add_argument"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.10.4. The <fo:inline font-family="monospace">ArgumentParser.add_argument()</fo:inline>
        method</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          To define each command line argument, call the <fo:inline font-family="monospace">.add_argument()</fo:inline> method of an <fo:inline font-family="monospace">ArgumentParser</fo:inline> instance <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P</fo:inline></fo:inline>.  There are two forms, depending
          on whether you are defining a positional command line
          argument or an optional argument.  In either case, there are
          a number of keyword arguments denoted as “<fo:inline font-family="monospace">**kw</fo:inline>”; we will describe these arguments
          below.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          To define a positional command line argument, use this form:
        </fo:block><fo:block id="id490852" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">P</fo:inline>.add_argument(<fo:inline font-style="italic" font-family="monospace">posName</fo:inline>, **kw)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">posName</fo:inline></fo:inline> is a
          string that specifies the name of the argument (which cannot
          begin with “<fo:inline font-family="monospace">-</fo:inline>”).  For example,
          if your <fo:inline font-family="monospace">ArgumentParser</fo:inline> instance is <fo:inline font-family="monospace">p</fo:inline>, to define a positional argument called
          “<fo:inline font-family="monospace">inFile</fo:inline>”, your call might begin
          like this:
        </fo:block><fo:block id="id490890" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">p.add_argument("inFile", ...)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          To define an optional command line argument, use this form:
        </fo:block><fo:block id="id490900" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">P</fo:inline>.add_argument(<fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">0</fo:inline></fo:inline>, <fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">1</fo:inline></fo:inline>, ..., , **kw)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Each <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">s<fo:inline font-size="75%" baseline-shift="sub">i</fo:inline></fo:inline></fo:inline> is a string defining the option
          name, starting with either <fo:inline font-family="monospace">"-"</fo:inline> for short-form
          options or <fo:inline font-family="monospace">"--"</fo:inline> for options with the long
          form.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          For example, if you have an option whose short form is
          “<fo:inline font-family="monospace">-x</fo:inline>” and whose long form is
          “<fo:inline font-family="monospace">--exec</fo:inline>”, your method call
          would begin:
        </fo:block><fo:block id="id490951" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">p.add_argument("-x", "--exec", ...)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          You can specify any number of short and long form options in
          this way.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here are the principle keyword arguments to the <fo:inline font-family="monospace">.add_argument()</fo:inline> method.  Some of these require
          information to be passed through other keyword arguments.
        </fo:block><fo:block id="id490969" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id490971" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">dest</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Name of the attribute where the value of this
                argument will be stored in the result returned by
                the <fo:inline font-family="monospace">ArgumentParser.parse_args()</fo:inline>
                method.  If you don't specify this, the attribute
                name will be:
              </fo:block><fo:list-block id="id490992" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id490994" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    For positional arguments, the attribute name
                    will be the name passed as the first argument
                    to <fo:inline font-family="monospace">.add_argument()</fo:inline>.
                  </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491005" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    For optional arguments, the attribute name is the
                    first long-form option name given if there is at
                    least one; otherwise the attribute name is the
                    first short-form option name given.
                  </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                    For example, if the method call looks like
                    <fo:inline font-family="monospace">.add_argument('-x', '--exec', '--run',
                    ...)</fo:inline>, the value will be stored in the
                    <fo:inline font-family="monospace">.exec</fo:inline> attribute of the result
                    returned by <fo:inline font-family="monospace">.arg_parse()</fo:inline>.
                  </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="id491034" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">action</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Specifies what happens when this command line argument
                is processed.  The value must be one of the following:
              </fo:block><fo:block id="id491049"><fo:block id="id491051" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
                    <fo:inline font-family="monospace">action='store'</fo:inline>
                  </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                      Store the argument value as a string in the
                      result returned by <fo:inline font-family="monospace">.arg_parse()</fo:inline>.
                      The name of the attribute where it is stored is
                      given by the <fo:inline font-family="monospace">dest</fo:inline> keyword
                      argument, or the default name as explained
                      above.
                    </fo:block></fo:block><fo:block id="id491078" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
                    <fo:inline font-family="monospace">action='store_const'</fo:inline>
                  </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                      You must provide a keyword argument <fo:inline font-family="monospace">const=<fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>,
                      where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline> is the value to be stored in the
                      result returned from <fo:inline font-family="monospace">.arg_parse()</fo:inline>.
                    </fo:block></fo:block><fo:block id="id491110" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
                    <fo:inline font-family="monospace">action='store_true'</fo:inline>
                  </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                      Store a <fo:inline font-family="monospace">True</fo:inline> value in the
                      returned result.  If the user does not supply
                      this option, <fo:inline font-family="monospace">.parse_args()</fo:inline> stores
                      a <fo:inline font-family="monospace">False</fo:inline> value in the returned
                      result.
                    </fo:block></fo:block><fo:block id="id491139" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
                    <fo:inline font-family="monospace">action='store_false'</fo:inline>
                  </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                      Store a <fo:inline font-family="monospace">False</fo:inline> value in the
                      returned result.  If the user doesn't supply
                      this option, <fo:inline font-family="monospace">.parse_args()</fo:inline> stores
                      a <fo:inline font-family="monospace">True</fo:inline> value in the returned
                      result.
                    </fo:block></fo:block><fo:block id="id491168" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
                    <fo:inline font-family="monospace">action='append'</fo:inline>
                  </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                      For arguments that may be repeated, this action
                      causes each repeated argument to be appended to
                      the list of values in the result returned by
                      <fo:inline font-family="monospace">.arg_parse()</fo:inline> .
                    </fo:block></fo:block><fo:block id="id491190" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
                    <fo:inline font-family="monospace">action='append_const'</fo:inline>
                  </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                      This works like <fo:inline font-family="monospace">action='append'</fo:inline>,
                      but the value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>, specified elsewhere
                      by <fo:inline font-family="monospace">const=<fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline> is appended to the list of arguments.
                    </fo:block></fo:block><fo:block id="id491222" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
                    <fo:inline font-family="monospace">action='version'</fo:inline>
                  </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                      This option instructs the <fo:inline font-family="monospace">ArgumentParser</fo:inline> instance to implement a
                      <fo:inline font-family="monospace">--version</fo:inline> option that reports the
                      current version of your script.  You must
                      provide a <fo:inline font-family="monospace">version=<fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline> argument that defines
                      the version string as <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>.
                    </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                If you don't supply an <fo:inline font-family="monospace">action</fo:inline>
                argument, the default is <fo:inline font-family="monospace">action=None</fo:inline>.  In this case:
              </fo:block><fo:list-block id="id491271" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id491275" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    For positional command line arguments, the value
                    of the argument is stored.
                  </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491283" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    For optional command line arguments, the stored
                    value is <fo:inline font-family="monospace">None</fo:inline>, unless you provide a
                    <fo:inline font-family="monospace">default=<fo:inline font-style="italic" font-family="monospace">S</fo:inline></fo:inline> argument to <fo:inline font-family="monospace">.add_argument()</fo:inline>.
                  </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="id491307" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">nargs</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Specifies the number of this kind of argument.  This
                feature works for both positional and optional
                arguments.  In the value returned by <fo:inline font-family="monospace">.parse_args()</fo:inline>, the attribute associated with
                this argument will be a list, not a single value.
              </fo:block><fo:list-block id="id491327" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id491330" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    If the value of the <fo:inline font-family="monospace">nargs</fo:inline> option is
                    an integer, exactly that many arguments must be
                    provided.
                  </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491341" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    <fo:inline font-family="monospace">nargs='*'</fo:inline> means zero or more.  For
                    positional arguments, this means all the remaining
                    arguments supplied will be included in the returned
                    list of values.
                  </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491353" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    <fo:inline font-family="monospace">nargs='+'</fo:inline> means one or more: there
                    must be at least one such argument, but there may be
                    any number.
                  </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491364" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    <fo:inline font-family="monospace">nargs='?'</fo:inline> means that this argument is
                    optional.
                  </fo:block><fo:list-block id="id491374" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id491376" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        For positional command line arguments, the
                        returned value will be the value from the
                        command line if there is one; otherwise you will
                        supply the default returned value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> by
                        providing keyword argument <fo:inline font-family="monospace">default=<fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>
                        to the <fo:inline font-family="monospace">.add_argument()</fo:inline> call.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491399" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        For optional command line arguments, <fo:inline font-family="monospace">nargs='?'</fo:inline> signifies that the option
                        may be given a value.
                      </fo:block><fo:list-block id="id491410" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id491412" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            If the user does not provide this option,
                            the value returned by <fo:inline font-family="monospace">.arg_parse()</fo:inline> will be the
                            default value from the <fo:inline font-family="monospace">const=<fo:inline font-style="italic" font-family="monospace">C</fo:inline></fo:inline> argument to <fo:inline font-family="monospace">.add_argument()</fo:inline>.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491433" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            If the user provides this option but does
                            not follow it with a value, 
                            the value returned by <fo:inline font-family="monospace">.arg_parse()</fo:inline> will be the
                            default value from the <fo:inline font-family="monospace">default=<fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> argument to <fo:inline font-family="monospace">.add_argument()</fo:inline>.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491455" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                            If the user provides this option with a
                            value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>, the attribute of the value
                            returned by <fo:inline font-family="monospace">.arg_parse()</fo:inline> will
                            be <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">V</fo:inline></fo:inline>.
                          </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491480" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                    The default value is <fo:inline font-family="monospace">nargs=None</fo:inline>.
                    In this case:
                  </fo:block><fo:list-block id="id491490" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id491495" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        For a positional command line argument,
                        this means exactly one is expected.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491502" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
                        For an optional command line argument, the
                        stored value is <fo:inline font-family="monospace">None</fo:inline> unless you
                        provide a default value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline> with <fo:inline font-family="monospace">default=<fo:inline font-style="italic" font-family="monospace">D</fo:inline></fo:inline>.
                      </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="id491530" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">const</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                See above under <fo:inline font-family="monospace">action='store_const'</fo:inline> and
                <fo:inline font-family="monospace">action='append_const'</fo:inline>.
              </fo:block></fo:block><fo:block id="id491554" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">default</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Provides a default value; see above under <fo:inline font-family="monospace">nargs</fo:inline>.
              </fo:block></fo:block><fo:block id="id491575" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">type</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Convert the value to a given type.  For example, <fo:inline font-family="monospace">type=int</fo:inline> would attempt to convert the
                associated argument to a Python <fo:inline font-family="monospace">int</fo:inline>; if
                the argument is not a valid integer, <fo:inline font-family="monospace">.arg_parse()</fo:inline> will print the usage message and
                terminate.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                For arguments that are file names, the <fo:inline font-family="monospace">argparse</fo:inline> module will even open the file for
                you.  Here is the general form:

                <fo:block id="id491609" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">type=argparse.FileType(mode=<fo:inline font-style="italic" font-family="monospace">M</fo:inline>)
</fo:block>

                where <fo:inline font-family="monospace">M</fo:inline> is the mode string as in the
                second argument to <fo:inline font-family="monospace">open()</fo:inline>.  For
                example, this form 
                would attempt to open a new file for writing, using
                the value of the command line option as the file name.
              </fo:block><fo:block id="id491629" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">p.add_argument(..., type=argparse.FileType(mode='w'), ...)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">

                Note that <fo:inline font-family="monospace">.arg_parse()</fo:inline> may raise an
                <fo:inline font-family="monospace">IOError</fo:inline> or <fo:inline font-family="monospace">OSError</fo:inline>
                exception if the file can't be opened.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                You can specify any converter function as the value of
                the <fo:inline font-family="monospace">type</fo:inline> keyword argument.  This
                function takes one argument, a string, and returns a
                value of whatever type you like.  Your converter
                function may also raise an <fo:inline font-family="monospace">argparse.ArgumentTypeError</fo:inline> exception to
                signify an invalid value.
              </fo:block></fo:block><fo:block id="id491666" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">choices</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                An iterable that specifies the only valid choices.  For
                example, <fo:inline font-family="monospace">choices=('red', 'grn', 'blu')</fo:inline>
                would allow only those three specific strings as values
                of the associated command line argument.
              </fo:block></fo:block><fo:block id="id491688" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">required</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                If an argument that starts with a hyphen is not actually
                optional, use <fo:inline font-family="monospace">required=True</fo:inline>.
              </fo:block></fo:block><fo:block id="id491709" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">help</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                A string describing what this option does.  Strongly
                recommended, and it will be displayed in the help
                message.
              </fo:block></fo:block><fo:block id="id491727" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">metavar</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Specifies the name of this optional for external
                display.  For example, suppose your <fo:inline font-family="monospace">.add_argument()</fo:inline> call starts like this:

                <fo:block id="id491745" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">P</fo:inline>.add_argument('inFile', metavar='INFILE', ...)
</fo:block>

                Then the argument value will be stored in attribute
                <fo:inline font-family="monospace">.inFile</fo:inline> of the result returned by <fo:inline font-family="monospace">.arg_parse()</fo:inline>, but the help message will refer
                to this argument as “<fo:inline font-family="monospace">INFILE</fo:inline>”.
              </fo:block></fo:block></fo:block></fo:block><fo:block id="argparse-parse_args"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.10.5. The <fo:inline font-family="monospace">ArgumentParser.parse_args()</fo:inline>
        method</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Once you have added all your command line arguments, the
          call to the <fo:inline font-family="monospace">.parse_args()</fo:inline> method looks like
          this, where <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">P</fo:inline></fo:inline> is
          your <fo:inline font-family="monospace">ArgumentParser</fo:inline> instance.
        </fo:block><fo:block id="id491807" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0"><fo:inline font-style="italic" font-family="monospace">P</fo:inline>.parse_args(args=None, namespace=None)
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          The <fo:inline font-family="monospace">args</fo:inline> parameter specifies a set of command
          line arguments as a list of strings. If you omit this, the
          command line arguments will be taken from <fo:inline font-family="monospace">sys.argv</fo:inline>.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          By default, the returned value will be an instance of class
          <fo:inline font-family="monospace">argparse.Namespace</fo:inline>.  The values returned by
          parsing the command line will be stored as attributes in this
          instance.  However, you may instead use <fo:inline font-family="monospace">namespace</fo:inline> to specify some instance to which the attributes will be
          added.
        </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Here's an extended example.  This script sets up four command
          line arguments and then tests it against various simulated
          argument lists.
        </fo:block><fo:block id="id491848" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">#!/usr/bin/env python
from __future__ import print_function
import sys
import argparse

def test(p, argList):
    print("\n=== Test with", argList)
    r = p.parse_args(args=argList)
    print(vars(r))

p = argparse.ArgumentParser(prog='larch',
                            description="Number 1: The Larch")
p.add_argument('-n', '--name', default='Dinsdale',
               help='Name your amoeba')
p.add_argument('-x', '--exec', action='store_true',
               help='Shoot amoeba afterwards')
p.add_argument('in', help='Input file', metavar='INFILE')
p.add_argument('outs', nargs='*', help='Output file(s)',
               metavar='OUTFILE')

print("=== Usage message:")
p.print_usage()

print("\n=== Help message:")
p.print_help()

test(p, ['ingoat'])
test(p, ['-x', 'Brian'])
test(p, ['--exec', 'Brian', 'Reg', 'Dirk'])
test(p, ['-n', 'Brian', 'Reg', 'Dirk'])
test(p, ['--name=Pinnet', 'notlob', 'bolton'])
test(p, ['--nosuch', 'Centurion'])
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Output of this script:
        </fo:block><fo:block id="id491865" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">=== Usage message:
usage: larch [-h] [-n NAME] [-x] INFILE [OUTFILE [OUTFILE ...]]

=== Help message:
usage: larch [-h] [-n NAME] [-x] INFILE [OUTFILE [OUTFILE ...]]

Number 1: The Larch

positional arguments:
  INFILE                Input file
  OUTFILE               Output file(s)

optional arguments:
  -h, --help            show this help message and exit
  -n NAME, --name NAME  Name your amoeba
  -x, --exec            Shoot amoeba afterwards

=== Test with ['ingoat']
{'in': 'ingoat', 'name': 'Dinsdale', 'outs': [], 'exec': False}

=== Test with ['-x', 'Brian']
{'in': 'Brian', 'name': 'Dinsdale', 'outs': [], 'exec': True}

=== Test with ['--exec', 'Brian', 'Reg', 'Dirk']
{'in': 'Brian', 'name': 'Dinsdale', 'outs': ['Reg', 'Dirk'], 'exec': True}

=== Test with ['-n', 'Brian', 'Reg', 'Dirk']
{'in': 'Reg', 'name': 'Brian', 'outs': ['Dirk'], 'exec': False}

=== Test with ['--name=Pinnet', 'notlob', 'bolton']
{'in': 'notlob', 'name': 'Pinnet', 'outs': ['bolton'], 'exec': False}

=== Test with ['--nosuch', 'Centurion']
usage: larch [-h] [-n NAME] [-x] INFILE [OUTFILE [OUTFILE ...]]
larch: error: unrecognized arguments: --nosuch
</fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          Notes on this example:  
        </fo:block><fo:list-block id="id491883" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id491888" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The <fo:inline font-family="monospace">print_function</fo:inline> import uses the Python
              3.x <fo:inline font-family="monospace">print()</fo:inline> function; see <fo:basic-link internal-destination="print-as-function">Section 22.9, “The <fo:inline font-family="monospace">print()</fo:inline> function”</fo:basic-link><fo:basic-link internal-destination="print-as-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="print-as-function"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491909" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The <fo:inline font-family="monospace">vars()</fo:inline> function is used to convert
              the <fo:inline font-family="monospace">argparse.Namespace</fo:inline> instance returned
              by the <fo:inline font-family="monospace">.parse_args()</fo:inline> method to a
              dictionary for display; see <fo:basic-link internal-destination="vars-function">Section 21.22, “<fo:inline font-family="monospace">vars()</fo:inline>: Local variables”</fo:basic-link><fo:basic-link internal-destination="vars-function"><fo:inline keep-together.within-line="always"> (p. <fo:page-number-citation ref-id="vars-function"/>)</fo:inline></fo:basic-link>.
            </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id491934" space-before.optimum="0em" space-before.minimum="0em" space-before.maximum="0.2em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
              The last time the <fo:inline font-family="monospace">test()</fo:inline> function is
              called, the function does not return, because the
              specified set of options is not valid.  The last two lines
              shown in the output below were sent to <fo:inline font-family="monospace">sys.stderr</fo:inline>, not to <fo:inline font-family="monospace">sys.stdout</fo:inline> like
              all the preceding lines.
            </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="argparse-utilities"><fo:block><fo:block><fo:block margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2em" space-before.maximum="2.2em" text-align="left" start-indent="0pt"><fo:block font-size="12pt">28.10.6. Other useful <fo:inline font-family="monospace">ArgumentParser</fo:inline> methods</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
          These methods are available on your <fo:inline font-family="monospace">ArgumentParser</fo:inline> instance:
        </fo:block><fo:block id="id491983" space-before.minimum="0.70em" space-before.optimum="0.75em" space-before.maximum="0.80em" space-after.minimum="0.70em" space-after.optimum="0.75em" space-after.maximum="0.80em"><fo:block id="id491985" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.print_usage(file=None)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Prints the short summary of argument usage.  The
                default <fo:inline font-family="monospace">file</fo:inline> is <fo:inline font-family="monospace">sys.stdout</fo:inline>.
              </fo:block></fo:block><fo:block id="id492009" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.print_help(file=None)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Prints the full summary of argument usage, including
                the help text for each argument.  The default <fo:inline font-family="monospace">file</fo:inline> is <fo:inline font-family="monospace">sys.stdout</fo:inline>.
              </fo:block></fo:block><fo:block id="id492034" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.format_usage()</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Formats the short summary of argument usage and
                returns it as a string.
              </fo:block></fo:block><fo:block id="id492052" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.format_help()</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Formats the full help text and returns it as a string.
              </fo:block></fo:block><fo:block id="id492069" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.exit(status=0, message=None)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Terminates execution with status 0 (or the <fo:inline font-family="monospace">status</fo:inline> value you provide).  If you provide a
                <fo:inline font-family="monospace">message</fo:inline> string, that message will be
                printed before termination.
              </fo:block></fo:block><fo:block id="id492094" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.error(message)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Prints the usage message, plus the <fo:inline font-family="monospace">message</fo:inline> string you provide, then terminates
                execution with status 2.
              </fo:block></fo:block><fo:block id="id492115" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.add_mutually_exclusive_group(required=False)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                If you have two or more options that cannot be
                specified on the same command line, use this method to
                create an option group.  Then call the <fo:inline font-family="monospace">.add_argument()</fo:inline> on the <fo:inline font-style="italic">group</fo:inline> instance to add these options.  If
                you specify <fo:inline font-family="monospace">required=True</fo:inline>, the user is
                required supply one of the options in the group.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                Suppose for example that you have two mutually
                exclusive options <fo:inline font-family="monospace">--english</fo:inline> and <fo:inline font-family="monospace">--metric</fo:inline>.  This code would prohibit the user
                from specifying both at once:
              </fo:block><fo:block id="id492155" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">p = argparse.ArgumentParser()
g = p.add_mutually_exclusive_group()
g.add_argument("-e", "--english", dest="isMetric", action="store_false")
g.add_argument("-m", "--metric", dest="isMetric", action="store_true")
</fo:block></fo:block><fo:block id="id492165" keep-together.within-column="always" keep-with-next.within-column="always" space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em"><fo:inline font-weight="bold">
              <fo:inline font-family="monospace">.set_defaults(**kw)</fo:inline>
            </fo:inline></fo:block><fo:block margin-left="0.25in"><fo:block>
                Use this method to specify the default values of any
                variable.  For each keyword argument <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline>=<fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline>, the value of <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">n</fo:inline></fo:inline> in the result
                returned by <fo:inline font-family="monospace">.parse_args()</fo:inline> will have
                value <fo:inline font-family="monospace"><fo:inline font-style="italic" font-family="monospace">v</fo:inline></fo:inline> in
                case the user does not specify a value explicitly.
              </fo:block><fo:block space-before.minimum="0.50em" space-before.optimum="0.60em" space-before.maximum="0.70em">
                For example, if you have two mutually exclusive
                options, but you don't require one or the other, the
                <fo:inline font-family="monospace">.set_defaults()</fo:inline> method is a good way to
                specify the value of the option when neither is given.
                Here is an interactive example showing this technique.
              </fo:block><fo:block id="id492211" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" wrap-option="wrap" hyphenation-character="&#xBB;" margin="0.5pt" text-align="start" space-before.minimum="0.4em" space-before.optimum="0.5em" space-before.maximum="0.6em" space-after.minimum="0.4em" space-after.optimum="0.5em" space-after.maximum="0.6em" border-width="0.1mm" border-style="solid" padding="1mm" hyphenate="false" font-family="monospace" background-color="#E0E0E0">&gt;&gt;&gt; parser = argparse.ArgumentParser()
&gt;&gt;&gt; group = parser.add_mutually_exclusive_group()
&gt;&gt;&gt; group.add_argument("-y", "--yes", dest="which", action="store_true")
&gt;&gt;&gt; group.add_argument("-n", "--no", dest="which", action="store_false")
&gt;&gt;&gt; parser.set_defaults(which=True)
&gt;&gt;&gt; print parser.parse_args(["--no"])
Namespace(which=False)
&gt;&gt;&gt; print parser.parse_args(["-y"])
Namespace(which=True)
&gt;&gt;&gt; print parser.parse_args([])
Namespace(which=True)
</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence></fo:root>

