In response to issue 1101, place vastly more emphasis on the new print()
function.
This commit is contained in:
parent
67ced426bc
commit
dff1c31fb4
|
@ -79,6 +79,48 @@ and fast errors; it's the subtle behavioral changes in code that
|
||||||
remains syntactically valid that trips people up. I'm also omitting
|
remains syntactically valid that trips people up. I'm also omitting
|
||||||
changes to rarely used features.)
|
changes to rarely used features.)
|
||||||
|
|
||||||
|
* The ``print`` statement has been replaced with a ``print()`` function,
|
||||||
|
with keyword arguments to replace most of the special syntax of the
|
||||||
|
old ``print`` statement (PEP 3105). Examples::
|
||||||
|
|
||||||
|
Old: print "The answer is", 2*2
|
||||||
|
New: print("The answer is", 2*2)
|
||||||
|
|
||||||
|
Old: print x, # Trailing comma suppresses newline
|
||||||
|
New: print(x, end=" ") # Appends a space instead of a newline
|
||||||
|
|
||||||
|
Old: print # Prints a newline
|
||||||
|
New: print() # You must call the function!
|
||||||
|
|
||||||
|
Old: print >>sys.stderr, "fatal error"
|
||||||
|
New: print("fatal error", file=sys.stderr)
|
||||||
|
|
||||||
|
Old: print (x, y) # prints repr((x, y))
|
||||||
|
New: print((x, y)) # Not the same as print(x, y)!
|
||||||
|
|
||||||
|
You can also customize the separator between items, e.g.::
|
||||||
|
|
||||||
|
print("There are <", 2**32, "> possibilities!", sep="")
|
||||||
|
|
||||||
|
which produces::
|
||||||
|
|
||||||
|
There are <4294967296> possibilities!
|
||||||
|
|
||||||
|
Notes about the ``print()`` function:
|
||||||
|
|
||||||
|
* The ``print()`` function doesn't support the "softspace" feature of
|
||||||
|
the old ``print`` statement. For example, in Python 2.x,
|
||||||
|
``print "A\n", "B"`` would write ``"A\nB\n"``; but in Python 3.0,
|
||||||
|
``print("A\n", "B")`` writes ``"A\n B\n"``.
|
||||||
|
|
||||||
|
* Initially, you'll be finding yourself typing the old ``print x``
|
||||||
|
a lot in interactive mode. Time to retrain your fingers to type
|
||||||
|
``print(x)`` instead!
|
||||||
|
|
||||||
|
* When using the ``2to3`` source-to-source conversion tool, all
|
||||||
|
``print`` statements are autmatically converted to ``print()``
|
||||||
|
function calls, so this is mostly a non-issue for larger projects.
|
||||||
|
|
||||||
* Python 3.0 uses strings and bytes instead of the Unicode strings and
|
* Python 3.0 uses strings and bytes instead of the Unicode strings and
|
||||||
8-bit strings. This means that pretty much all code that uses
|
8-bit strings. This means that pretty much all code that uses
|
||||||
Unicode, encodings or binary data in any way has to change. The
|
Unicode, encodings or binary data in any way has to change. The
|
||||||
|
@ -109,19 +151,6 @@ changes to rarely used features.)
|
||||||
* Code that unconditionally strips the trailing ``L`` from the ``repr()``
|
* Code that unconditionally strips the trailing ``L`` from the ``repr()``
|
||||||
of a long integer will chop off the last digit instead.
|
of a long integer will chop off the last digit instead.
|
||||||
|
|
||||||
* The ``print()`` function doesn't support the "softspace" feature of
|
|
||||||
the old ``print`` statement. For example, in Python 2.x,
|
|
||||||
``print "A\n", "B"`` would write ``"A\nB\n"``; but in Python 3.0,
|
|
||||||
``print("A\n", "B")`` writes ``"A\n B\n"``.
|
|
||||||
|
|
||||||
* Also, ``print`` and ``print (x, y)`` behave differently without
|
|
||||||
warning: the former used to add a newline in 2.x, but does nothing
|
|
||||||
in 3.0; the latter used to print the ``repr()`` of a tuple in 2.x,
|
|
||||||
but prints the individual values in 3.0.
|
|
||||||
|
|
||||||
* You'll be finding yourself typing ``print x`` a lot in interactive
|
|
||||||
mode. Time to retrain your fingers. :-)
|
|
||||||
|
|
||||||
|
|
||||||
Strings and Bytes
|
Strings and Bytes
|
||||||
=================
|
=================
|
||||||
|
@ -241,10 +270,6 @@ language and built-in functions.
|
||||||
* PEP 3104: ``nonlocal`` statement. Using ``nonlocal x`` you can now
|
* PEP 3104: ``nonlocal`` statement. Using ``nonlocal x`` you can now
|
||||||
assign directly to a variable in an outer (but non-global) scope.
|
assign directly to a variable in an outer (but non-global) scope.
|
||||||
|
|
||||||
* PEP 3105: ``print`` is now a function. Keyword arguments
|
|
||||||
``file=sys.stdout``, ``sep=" "`` and ``end="\n"`` let you customize
|
|
||||||
it.
|
|
||||||
|
|
||||||
* PEP 3111: ``raw_input()`` renamed to ``input()``. That is, the new
|
* PEP 3111: ``raw_input()`` renamed to ``input()``. That is, the new
|
||||||
``input()`` function reads a line from ``sys.stdin`` and returns it
|
``input()`` function reads a line from ``sys.stdin`` and returns it
|
||||||
with the trailing newline stripped. It raises ``EOFError`` if the
|
with the trailing newline stripped. It raises ``EOFError`` if the
|
||||||
|
|
Loading…
Reference in New Issue