Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
e995d16f
Commit
e995d16f
authored
Jul 11, 2002
by
Andrew M. Kuchling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add some items
Expand the "Other Language Changes" section Rewrite various passages.
parent
7845e7c7
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
159 additions
and
113 deletions
+159
-113
Doc/whatsnew/whatsnew23.tex
Doc/whatsnew/whatsnew23.tex
+159
-113
No files found.
Doc/whatsnew/whatsnew23.tex
View file @
e995d16f
...
...
@@ -22,10 +22,6 @@
%
% Optik (or whatever it gets called)
%
% getopt.gnu_getopt
%
% Docstrings now optional (with --without-doc-strings)
%
% New dependency argument to distutils.Extension
%
...
...
@@ -233,7 +229,7 @@ and implemented by Jack Jansen.}
%======================================================================
\section
{
PEP 279: The
\function
{
enumerate()
}
Built-in Function
}
\section
{
PEP 279: The
\function
{
enumerate()
}
Built-in Function
\label
{
section-enumerate
}
}
A new built-in function,
\function
{
enumerate()
}
, will make
certain loops a bit clearer.
\code
{
enumerate(thing)
}
, where
...
...
@@ -340,15 +336,21 @@ strings \samp{True} and \samp{False} instead of \samp{1} and \samp{0}.
\end{seealso}
\section
{
Extended Slices
\label
{
extended-slices
}}
Ever since Python 1.4 the slice syntax has supported a third
``stride'' argument, but the built-in sequence types have not
supported this feature (it was initially included at the behest of the
developers of the Numerical Python package). Starting with Python
2.3, the built-in sequence types do support the stride.
\section
{
Extended Slices
\label
{
section-slices
}}
Ever since Python 1.4, the slicing syntax has supported an optional
third ``step'' or ``stride'' argument. For example, these are all
legal Python syntax:
\code
{
L[1:10:2]
}
,
\code
{
L[:-1:1]
}
,
\code
{
L[::-1]
}
. This was added to Python included at the request of
the developers of Numerical Python. However, the built-in sequence
types of lists, tuples, and strings have never supported this feature,
and you got a
\exception
{
TypeError
}
if you tried it. Michael Hudson
contributed a patch that was applied to Python 2.3 and fixed this
shortcoming.
For example, to extract the elements of a list with even indexes:
For example, you can now easily extract the elements of a list that
have even indexes:
\begin{verbatim}
>>> L = range(10)
...
...
@@ -356,38 +358,137 @@ For example, to extract the elements of a list with even indexes:
[0, 2, 4, 6, 8]
\end{verbatim}
To make a copy of the same list in reverse order:
Negative values also work, so you can make a copy of the same list in
reverse order:
\begin{verbatim}
>>> L[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
\end{verbatim}
This also works for strings:
\begin{verbatim}
>>> s='abcd'
>>> s[::2]
'ac'
>>> s[::-1]
'dcba'
\end{verbatim}
%======================================================================
\section
{
Other Language Changes
}
%Here are the changes that Python 2.3 makes to the core language.
Here are all of the changes that Python 2.3 makes to the core Python
language.
\begin{itemize}
\item
The
\keyword
{
yield
}
statement is now always a keyword, as
described in section~
\ref
{
section-generators
}
of this document.
\item
A new built-in function
\function
{
enumerate()
}
was added, as described in section~
\ref
{
section-enumerate
}
of this
document.
\item
Two new constants,
\constant
{
True
}
and
\constant
{
False
}
were
added along with the built-in
\class
{
bool
}
type, as described in
section~
\ref
{
section-bool
}
of this document.
%\begin{itemize}
%\item The \keyword{yield} statement is now always a keyword, as
%described in section~\ref{section-generators}.
\item
Built-in types now support the extended slicing syntax,
as described in section~
\ref
{
section-slices
}
of this document.
%\item Two new constants, \constant{True} and \constant{False} were
%added along with the built-in \class{bool} type, as described in
%section~\ref{section-bool}.
\item
Dictionaries have a new method,
\method
{
pop(
\var
{
key
}
)
}
, that
returns the value corresponding to
\var
{
key
}
and removes that
key/value pair from the dictionary.
\method
{
pop()
}
will raise a
\exception
{
KeyError
}
if the requested key isn't present in the
dictionary:
\begin{verbatim}
>>> d =
{
1:2
}
>>> d
{
1: 2
}
>>> d.pop(4)
Traceback (most recent call last):
File ``stdin'', line 1, in ?
KeyError: 4
>>> d.pop(1)
2
>>> d.pop(1)
Traceback (most recent call last):
File ``stdin'', line 1, in ?
KeyError: pop(): dictionary is empty
>>> d
{}
>>>
\end{verbatim}
%\item
%\end{itemize}
(Patch contributed by Raymond Hettinger.)
\item
The
\method
{
strip()
}
,
\method
{
lstrip()
}
, and
\method
{
rstrip()
}
string methods now have an optional argument for specifying the
characters to strip. The default is still to remove all whitespace
characters:
%\begin{PendingDeprecationWarning}
\begin{verbatim}
>>> ' abc '.strip()
'abc'
>>> '><><abc<><><>'.strip('<>')
'abc'
>>> '><><abc<><><>
\n
'.strip('<>')
'abc<><><>
\n
'
>>> u'
\u
4000
\u
4001abc
\u
4000'.strip(u'
\u
4000')
u'
\u
4001abc'
>>>
\end{verbatim}
\item
The
\method
{
startswith()
}
and
\method
{
endswith()
}
string methods now accept negative numbers for the start and end
parameters.
\item
Another new string method is
\method
{
zfill()
}
, originally a
function in the
\module
{
string
}
module.
\method
{
zfill()
}
pads a
numeric string with zeros on the left until it's the specified width.
Note that the
\code
{
\%
}
operator is still more flexible and powerful
than
\method
{
zfill()
}
.
\begin{verbatim}
>>> '45'.zfill(4)
'0045'
>>> '12345'.zfill(4)
'12345'
>>> 'goofy'.zfill(6)
'0goofy'
\end{verbatim}
\item
A new warning,
\exception
{
PendingDeprecationWarning
}
was added to
provide direction on features which are in the process of being
deprecated. The warning will not be printed by default. To see the
pending deprecations, use
\programopt
{
-Walways::PendingDeprecationWarning::
}
on the command line
or use
\function
{
warnings.filterwarnings()
}
.
%\end{PendingDeprecationWarning}
deprecated. The warning will
\emph
{
not
}
be printed by default. To
check for use of features that will be deprecated in the future,
supply
\programopt
{
-Walways::PendingDeprecationWarning::
}
on the
command line or use
\function
{
warnings.filterwarnings()
}
.
\item
One minor but far-reaching change is that the names of extension
types defined by the modules included with Python now contain the
module and a
\samp
{
.
}
in front of the type name. For example, in
Python 2.2, if you created a socket and printed its
\member
{__
class
__}
, you'd get this output:
\begin{verbatim}
>>> s = socket.socket()
>>> s.
__
class
__
<type 'socket'>
\end{verbatim}
In 2.3, you get this:
\begin{verbatim}
>>> s.
__
class
__
<type '
_
socket.socket'>
\end{verbatim}
\end{itemize}
%======================================================================
...
...
@@ -457,9 +558,9 @@ support, turn on the Python interpreter's debugging code by running
To aid extension writers, a header file
\file
{
Misc/pymemcompat.h
}
is
distributed with the source to Python 2.3 that allows Python
extensions to use the 2.3 interfaces to memory allocation and compile
against any version of Python since 1.5.2.
(The idea is that you tak
e
the file from Python's source distribution and bundle it with the
source of your extension)
.
against any version of Python since 1.5.2.
You would copy the fil
e
from Python's source distribution and bundle it with the source of
your extension
.
\begin{seealso}
...
...
@@ -471,6 +572,7 @@ SourceForge CVS browser.}
\end{seealso}
%======================================================================
\section
{
New and Improved Modules
}
...
...
@@ -515,87 +617,6 @@ documentation for details.
% XXX add a link to the module docs?
(Contributed by Greg Ward.)
\item
One minor but far-reaching change is that the names of extension
types defined by the modules included with Python now contain the
module and a
\samp
{
.
}
in front of the type name. For example, in
Python 2.2, if you created a socket and printed its
\member
{__
class
__}
, you'd get this output:
\begin{verbatim}
>>> s = socket.socket()
>>> s.
__
class
__
<type 'socket'>
\end{verbatim}
In 2.3, you get this:
\begin{verbatim}
>>> s.
__
class
__
<type '
_
socket.socket'>
\end{verbatim}
\item
The
\method
{
strip()
}
,
\method
{
lstrip()
}
, and
\method
{
rstrip()
}
string methods now have an optional argument for specifying the
characters to strip. The default is still to remove all whitespace
characters:
\begin{verbatim}
>>> ' abc '.strip()
'abc'
>>> '><><abc<><><>'.strip('<>')
'abc'
>>> '><><abc<><><>
\n
'.strip('<>')
'abc<><><>
\n
'
>>> u'
\u
4000
\u
4001abc
\u
4000'.strip(u'
\u
4000')
u'
\u
4001abc'
>>>
\end{verbatim}
\item
The
\method
{
startswith()
}
and
\method
{
endswith()
}
string methods now have accept negative numbers for
start and end parameters.
\item
Another new string method is
\method
{
zfill()
}
, originally a
function in the
\module
{
string
}
module.
\method
{
zfill()
}
pads a
numeric string with zeros on the left until it's the specified width.
Note that the
\code
{
\%
}
operator is still more flexible and powerful
than
\method
{
zfill()
}
.
\begin{verbatim}
>>> '45'.zfill(4)
'0045'
>>> '12345'.zfill(4)
'12345'
>>> 'goofy'.zfill(6)
'0goofy'
\end{verbatim}
\item
Dictionaries have a new method,
\method
{
pop(
\var
{
key
}
)
}
, that
returns the value corresponding to
\var
{
key
}
and removes that
key/value pair from the dictionary.
\method
{
pop()
}
will raise a
\exception
{
KeyError
}
if the requsted key isn't present in the
dictionary:
\begin{verbatim}
>>> d =
{
1:2
}
>>> d
{
1: 2
}
>>> d.pop(4)
Traceback (most recent call last):
File ``stdin'', line 1, in ?
KeyError: 4
>>> d.pop(1)
2
>>> d.pop(1)
Traceback (most recent call last):
File ``stdin'', line 1, in ?
KeyError: pop(): dictionary is empty
>>> d
{}
>>>
\end{verbatim}
(Contributed by Raymond Hettinger.)
\item
Two new functions in the
\module
{
math
}
module,
\function
{
degrees(
\var
{
rads
}
)
}
and
\function
{
radians(
\var
{
degs
}
)
}
,
convert between radians and degrees. Other functions in the
...
...
@@ -605,7 +626,25 @@ input values measured in radians. (Contributed by Raymond Hettinger.)
\item
Three new functions,
\function
{
getpgid()
}
,
\function
{
killpg()
}
,
and
\function
{
mknod()
}
, were added to the
\module
{
posix
}
module that
underlies the
\module
{
os
}
module.
underlies the
\module
{
os
}
module. (Contributed by Gustavo Niemeyer
and Geert Jansen.)
\item
The
\module
{
getopt
}
module gained a new function,
\function
{
gnu
_
getopt()
}
, that supports the same arguments as the existing
\function
{
getopt()
}
function but uses GNU-style scanning mode.
The existing
\function
{
getopt()
}
stops processing options as soon as a
non-option argument is encountered, but in GNU-style mode processing
continues, meaning that options and arguments can be mixed. For
example:
\begin{verbatim}
>>> getopt.getopt(['-f', 'filename', 'output', '-v'], 'f:v')
([('-f', 'filename')], ['output', '-v'])
>>> getopt.gnu
_
getopt(['-f', 'filename', 'output', '-v'], 'f:v')
([('-f', 'filename'), ('-v', '')], ['output'])
\end{verbatim}
(Contributed by Peter
\AA
{
strand
}
.)
\item
Two new binary packagers were added to the Distutils.
\code
{
bdist
_
pkgtool
}
builds
\file
{
.pkg
}
files to use with Solaris
...
...
@@ -652,6 +691,13 @@ Changes to Python's build process, and to the C API, include:
when running Python's
\file
{
configure
}
script. (Contributed by Ondrej
Palkovsky.)
\item
The interpreter can be compiled without any docstrings for
the built-in functions and modules by supplying
\longprogramopt
{
--without-doc-strings
}
to the
\file
{
configure
}
script.
This makes the Python executable about 10
\%
smaller, but will also
mean that you can't get help for Python's built-ins. (Contributed by
Gustavo Niemeyer.)
\item
The
\cfunction
{
PyArg
_
NoArgs()
}
macro is now deprecated, and code
that uses it should be changed. For Python 2.2 and later, the method
definition table can specify the
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment