]> granicus.if.org Git - python/commitdiff
SF bug #1076955: Tutorial corrections Part II
authorRaymond Hettinger <python@rcn.com>
Thu, 2 Dec 2004 07:29:43 +0000 (07:29 +0000)
committerRaymond Hettinger <python@rcn.com>
Thu, 2 Dec 2004 07:29:43 +0000 (07:29 +0000)
Doc/tut/glossary.tex
Doc/tut/tut.tex

index 538c5ea59101f6b6f691aec634ab1c12ef8210e3..b0ac97f552d6df1fc86a6a2778917b0eea79fe77 100644 (file)
@@ -40,7 +40,7 @@ Any class which does not inherit from \class{object}.  See
 
 The implicit conversion of an instance of one type to another during an
 operation which involves two arguments of the same type.  For example,
-{}\code{int(3.15)} converts the floating point number to the integer,
+{}\code{int(3.15)} converts the floating point number to the integer
 {}\code{3}, but in {}\code{3+4.5}, each argument is of a different type (one
 int, one float), and both must be converted to the same type before they can
 be added or it will raise a {}\code{TypeError}.  Coercion between two
@@ -169,7 +169,7 @@ sophisticated, multi-platform GUI application.
 An object with fixed value.  Immutable objects are numbers, strings or
 tuples (and more).  Such an object cannot be altered.  A new object
 has to be created if a different value has to be stored.  They play an
-important role in places where a constant hash value is needed.  For
+important role in places where a constant hash value is needed, for
 example as a key in a dictionary.
 
 \index{integer division}
@@ -189,7 +189,7 @@ operator.  See also \emph{__future__}.
 \index{interactive}
 \item[interactive]
 Python has an interactive interpreter which means that you can try out
-things and directly see its result.  Just launch \code{python} with no
+things and immediately see their results.  Just launch \code{python} with no
 arguments (possibly by selecting it from your computer's main menu).
 It is a very powerful way to test out new ideas or inspect modules and
 packages (remember \code{help(x)}).
@@ -235,7 +235,7 @@ code that attempts multiple iteration passes.  A container object
 (such as a \class{list}) produces a fresh new iterator each time you
 pass it to the \function{iter()} function or use it in a
 {}\keyword{for} loop.  Attempting this with an iterator will just
-return the same exhausted iterator object from the second iteration
+return the same exhausted iterator object used in the previous iteration
 pass, making it appear like an empty container.
 
 \index{list comprehension}
@@ -245,7 +245,15 @@ return a list with the results.  \code{result = ["0x\%02x"
 \% x for x in range(256) if x \% 2 == 0]} generates a list of strings
 containing hex numbers (0x..) that are even and in the range from 0 to 255.
 The \keyword{if} clause is optional.  If omitted, all elements in
-{}\code{range(256)} are processed in that case.
+{}\code{range(256)} are processed.
+
+
+\index{LBYL}
+\item[LBYL]
+Look before you leap.  This coding style explicitly tests for
+pre-conditions before making calls or lookups.  This style contrasts
+with the \emph{EAFP} approach and is characterized by the presence of
+many \keyword{if} statements.
 
 \index{mapping}
 \item[mapping]
@@ -265,13 +273,6 @@ have been used for logging attribute access, adding thread-safety,
 tracking object creation, implementing singletons, and many other
 tasks.
 
-\index{LBYL}
-\item[LBYL]
-Look before you leap.  This coding style explicitly tests for
-pre-conditions before making calls or lookups.  This style contrasts
-with the \emph{EAFP} approach and is characterized the presence of
-many \keyword{if} statements.
-
 \index{mutable}
 \item[mutable]
 Mutable objects can change their value but keep their \function{id()}.
@@ -280,8 +281,8 @@ See also \emph{immutable}.
 \index{namespace}
 \item[namespace]
 The place where a variable is stored.  Namespaces are implemented as
-dictionary.  There is the local, global and builtins namespace and the
-nested namespaces in objects (in methods).  Namespaces support
+dictionaries.  There are the local, global and builtin namespaces
+as well asnested namespaces in objects (in methods).  Namespaces support
 modularity by preventing naming conflicts.  For instance, the
 functions \function{__builtin__.open()} and \function{os.open()} are
 distinguished by their namespaces.  Namespaces also aid readability
@@ -312,7 +313,7 @@ classes can use Python's newer, versatile features like
 
 \index{Python3000}
 \item[Python3000]
-A mythical python release, allowed not to be backward compatible, with
+A mythical python release, not required be backward compatible, with
 telepathic interface.
 
 \index{__slots__}
@@ -321,7 +322,7 @@ A declaration inside a \emph{new-style class} that saves memory by
 pre-declaring space for instance attributes and eliminating instance
 dictionaries.  Though popular, the technique is somewhat tricky to get
 right and is best reserved for rare cases where there are large
-numbers of instances in a memory critical application.
+numbers of instances in a memory-critical application.
 
 \index{sequence}
 \item[sequence]
index 50ab792ef71072fc0635d7b7cefc0c1b1c2585ce..aae2763e878c57b314ce0d244e2e52de48582ad3 100644 (file)
@@ -2175,7 +2175,7 @@ pattern, list comprehensions can compactly specify the key-value list.
 \begin{verbatim}
 >>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
 {'sape': 4139, 'jack': 4098, 'guido': 4127}
->>> dict([(x, x**2) for x in (2, 4, 6))     # use a list comprehension
+>>> dict([(x, x**2) for x in (2, 4, 6)])     # use a list comprehension
 {2: 4, 4: 16, 6: 36}
 \end{verbatim}
 
@@ -4193,6 +4193,7 @@ in this case (the instance will have a single copy of ``instance
 variables'' or data attributes used by the common base class), it is
 not clear that these semantics are in any way useful.
 
+%% XXX Add rules for new-style MRO?
 
 \section{Private Variables \label{private}}
 
@@ -4201,9 +4202,9 @@ identifiers.  Any identifier of the form \code{__spam} (at least two
 leading underscores, at most one trailing underscore) is textually
 replaced with \code{_classname__spam}, where \code{classname} is the
 current class name with leading underscore(s) stripped.  This mangling
-is done without regard of the syntactic position of the identifier, so
+is done without regard to the syntactic position of the identifier, so
 it can be used to define class-private instance and class variables,
-methods, as well as globals, and even to store instance variables
+methods, variables stored in globals, and even variables stored in instances.
 private to this class on instances of \emph{other} classes.  Truncation
 may occur when the mangled name would be longer than 255 characters.
 Outside classes, or when the class name consists of only underscores,
@@ -4232,7 +4233,7 @@ when referencing \code{__dict__} directly.
 \section{Odds and Ends \label{odds}}
 
 Sometimes it is useful to have a data type similar to the Pascal
-``record'' or C ``struct'', bundling together a couple of named data
+``record'' or C ``struct'', bundling together a few named data
 items.  An empty class definition will do nicely:
 
 \begin{verbatim}
@@ -4251,7 +4252,7 @@ A piece of Python code that expects a particular abstract data type
 can often be passed a class that emulates the methods of that data
 type instead.  For instance, if you have a function that formats some
 data from a file object, you can define a class with methods
-\method{read()} and \method{readline()} that gets the data from a string
+\method{read()} and \method{readline()} that get the data from a string
 buffer instead, and pass it as an argument.%  (Unfortunately, this
 %technique has its limitations: a class can't define operations that
 %are accessed by special syntax such as sequence subscripting or
@@ -4261,7 +4262,7 @@ buffer instead, and pass it as an argument.%  (Unfortunately, this
 
 
 Instance method objects have attributes, too: \code{m.im_self} is the
-object of which the method is an instance, and \code{m.im_func} is the
+instance object with the method \method{m}, and \code{m.im_func} is the
 function object corresponding to the method.
 
 
@@ -4530,7 +4531,7 @@ wildcard searches:
 
 \section{Command Line Arguments\label{command-line-arguments}}
 
-Common utility scripts often invoke processing command line arguments.
+Common utility scripts often need to process command line arguments.
 These arguments are stored in the
 \ulink{\module{sys}}{../lib/module-sys.html}\ module's \var{argv}
 attribute as a list.  For instance the following output results from
@@ -4557,7 +4558,7 @@ module also has attributes for \var{stdin}, \var{stdout}, and
 messages to make them visible even when \var{stdout} has been redirected:
 
 \begin{verbatim}
->>> sys.stderr.write('Warning, log file not found starting a new one')
+>>> sys.stderr.write('Warning, log file not found starting a new one\n')
 Warning, log file not found starting a new one
 \end{verbatim}
 
@@ -4636,7 +4637,7 @@ for sending mail:
 >>> import smtplib
 >>> server = smtplib.SMTP('localhost')
 >>> server.sendmail('soothsayer@example.org', 'jceasar@example.org',
-"""To: jceasar@example.org
+"""To: jcaesar@example.org
 From: soothsayer@example.org
 
 Beware the Ides of March.
@@ -4660,8 +4661,8 @@ that are time zone aware.
 >>> now = date.today()
 >>> now
 datetime.date(2003, 12, 2)
->>> now.strftime("%m-%d-%y or %d%b %Y is a %A on the %d day of %B")
-'12-02-03 or 02Dec 2003 is a Tuesday on the 02 day of December'
+>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
+'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'
 
 # dates support calendar arithmetic
 >>> birthday = date(1964, 7, 31)
@@ -4691,8 +4692,8 @@ by modules including:
 37
 >>> zlib.decompress(t)
 'witch which has which witches wrist watch'
->>> zlib.crc32(t)
--1438085031
+>>> zlib.crc32(s)
+226805979
 \end{verbatim}
 
 
@@ -5219,7 +5220,7 @@ Decimal("0.142857142857142857142857142857142857")
 \chapter{What Now? \label{whatNow}}
 
 Reading this tutorial has probably reinforced your interest in using
-Python --- you should be eager to apply Python to solve your
+Python --- you should be eager to apply Python to solving your
 real-world problems.  Now what should you do?
 
 You should read, or at least page through, the
@@ -5382,7 +5383,7 @@ A more capable startup file might look like this example.  Note that
 this deletes the names it creates once they are no longer needed; this
 is done since the startup file is executed in the same namespace as
 the interactive commands, and removing the names avoids creating side
-effects in the interactive environments.  You may find it convenient
+effects in the interactive environment.  You may find it convenient
 to keep some of the imported modules, such as
 \ulink{\module{os}}{../lib/module-os.html}, which turn
 out to be needed in most sessions with the interpreter.
@@ -5474,7 +5475,7 @@ or, better,
 
 and so on.  No matter how many digits you're willing to write down, the
 result will never be exactly 1/3, but will be an increasingly better
-approximation to 1/3.
+approximation of 1/3.
 
 In the same way, no matter how many base 2 digits you're willing to
 use, the decimal value 0.1 cannot be represented exactly as a base 2
@@ -5520,7 +5521,7 @@ turns out that's enough (on most machines) so that
 \var{x}, but rounding to 16 digits is not enough to make that true.
 
 Note that this is in the very nature of binary floating-point: this is
-not a bug in Python, it is not a bug in your code either, and you'll
+not a bug in Python, it is not a bug in your code either.  You'll
 see the same kind of thing in all languages that support your
 hardware's floating-point arithmetic (although some languages may
 not \emph{display} the difference by default, or in all output modes).
@@ -5634,7 +5635,7 @@ and recalling that \var{J} has exactly 53 bits (is \code{>= 2**52} but
 \code{< 2**53}), the best value for \var{N} is 56:
 
 \begin{verbatim}
->>> 2L**52
+>>> 2**52
 4503599627370496L
 >>> 2L**53
 9007199254740992L