没有合适的资源?快使用搜索试试~ 我知道了~
首页Python 2.7.6 发布亮点:功能更新与模块增强
本篇文档是关于Python 2.76版本的系统文档PDF,由A.M.Kuchling撰写,发布日期为2014年1月14日。这份资料旨在介绍Python 2.7.6的重要更新和改进,对于那些仍在使用Python 2.x的开发者来说,是一份不可或缺的学习参考资料。
首先,标题中的"Python 276"暗示了该文档关注的是Python 2.7.6的具体变化和新特性,这意味着它涵盖了在这一版本中引入的功能、模块升级、优化以及对开发者可能遇到的迁移建议。以下是文档的主要内容概览:
1. **Python 2.x的未来**:这部分讨论了Python 2.7.6作为即将进入维护阶段的版本,可能会面临的升级和转型策略,以及对向Python 3.x版本过渡的指导。
2. **Python 3.1特性和迁移**:虽然主要关注的是2.7.6,但这里也提到了与未来版本Python 3.1的对比,帮助用户理解新功能如何影响现有代码。
3. **PEPs(Python Enhancement Proposals)**:文档列举了几个重要的PEPs,如PEP 372(添加有序字典到collections)、PEP 378(千位分隔符格式化)等,这些PEPs反映了Python语言的持续改进和规范制定。
4. **改进的模块**:包括了新模块如importlib和sysconfig,以及已更新的unittest和ElementTree模块,这些更新增强了标准库的功能和性能。
5. **内存管理和视图对象**:PEP 3106和3137分别介绍了Dictionary Views和Memoryview Object,这些都是Python 2.7.6在数据处理和性能优化方面的进步。
6. **构建和C API的变化**:涉及Python编译器接口(C API)的调整,以及胶囊(Capsules)的新功能,这些更改有助于提高开发效率和底层兼容性。
7. **平台特定的改进**:针对Windows、MacOSX和FreeBSD等不同操作系统进行了专门的优化,确保了跨平台兼容性。
8. **迁移指南**:为打算将代码迁移到Python 2.7.6或更高版本的开发者提供了实用的策略和注意事项。
9. **作者及索引**:文章由A.M.Kuchling撰写,结尾附有详细的索引,方便读者查找特定主题。
这份文档提供了Python 2.7.6的核心技术更新,帮助开发者更好地理解和利用这个版本,同时也预示着Python语言的发展趋势。对于任何在Python 2环境中工作的专业人士,这份文档是理解和掌握最新特性的关键资源。
• The Fraction class now accepts a single float or Decimal instance, or two rational numbers, as argu-
ments to its constructor. (Implemented by Mark Dickinson; rationals added in issue 5812, and float/decimal
in issue 8294.)
Ordering comparisons (<, <=, >, >=) between fractions and complex numbers now raise a TypeError.
This fixes an oversight, making the Fraction match the other numeric types.
• New class: FTP_TLS in the ftplib module provides secure FTP connections using TLS encapsulation of
authentication as well as subsequent control and data transfers. (Contributed by Giampaolo Rodola; issue
2054.)
The storbinary() method for binary uploads can now restart uploads thanks to an added rest parameter
(patch by Pablo Mouzo; issue 6845.)
• New class decorator: total_ordering() in the functools module takes a class that defines an
__eq__() method and one of __lt__(), __le__(), __gt__(), or __ge__(), and generates the
missing comparison methods. Since the __cmp__() method is being deprecated in Python 3.x, this deco-
rator makes it easier to define ordered classes. (Added by Raymond Hettinger; issue 5479.)
New function: cmp_to_key() will take an old-style comparison function that expects two arguments and
return a new callable that can be used as the key parameter to functions such as sorted(), min() and
max(), etc. The primary intended use is to help with making code compatible with Python 3.x. (Added by
Raymond Hettinger.)
• New function: the gc module’s is_tracked() returns true if a given instance is tracked by the garbage
collector, false otherwise. (Contributed by Antoine Pitrou; issue 4688.)
• The gzip module’s GzipFile now supports the context management protocol, so you can write with
gzip.GzipFile(...) as f: (contributed by Hagen Fürstenau; issue 3860), and it now implements
the io.BufferedIOBase ABC, so you can wrap it with io.BufferedReader for faster processing
(contributed by Nir Aides; issue 7471). It’s also now possible to override the modification time recorded in
a gzipped file by providing an optional timestamp to the constructor. (Contributed by Jacques Frechet; issue
4272.)
Files in gzip format can be padded with trailing zero bytes; the gzip module will now consume these
trailing bytes. (Fixed by Tadek Pietraszek and Brian Curtin; issue 2846.)
• New attribute: the hashlib module now has an algorithms attribute containing a tuple nam-
ing the supported algorithms. In Python 2.7, hashlib.algorithms contains (’md5’, ’sha1’,
’sha224’, ’sha256’, ’sha384’, ’sha512’). (Contributed by Carl Chenet; issue 7418.)
• The default HTTPResponse class used by the httplib module now supports buffering, resulting in
much faster reading of HTTP responses. (Contributed by Kristján Valur Jónsson; issue 4879.)
The HTTPConnection and HTTPSConnection classes now support a source_address parameter, a
(host, port) 2-tuple giving the source address that will be used for the connection. (Contributed by
Eldon Ziegler; issue 3972.)
• The ihooks module now supports relative imports. Note that ihooks is an older module for customizing
imports, superseded by the imputil module added in Python 2.0. (Relative import support added by Neil
Schemenauer.)
• The imaplib module now supports IPv6 addresses. (Contributed by Derek Morr; issue 1655.)
• New function: the inspect module’s getcallargs() takes a callable and its positional and keyword
arguments, and figures out which of the callable’s parameters will receive each argument, returning a dic-
tionary mapping argument names to their values. For example:
>>> from inspect import getcallargs
>>> def f(a, b=1,
*
pos,
**
named):
... pass
>>> getcallargs(f, 1, 2, 3)
{’a’: 1, ’b’: 2, ’pos’: (3,), ’named’: {}}
>>> getcallargs(f, a=2, x=4)
{’a’: 2, ’b’: 1, ’pos’: (), ’named’: {’x’: 4}}
>>> getcallargs(f)
Traceback (most recent call last):
...
TypeError: f() takes at least 1 argument (0 given)
Contributed by George Sakkis; issue 3135.
• Updated module: The io library has been upgraded to the version shipped with Python 3.1. For 3.1, the
I/O library was entirely rewritten in C and is 2 to 20 times faster depending on the task being performed.
The original Python version was renamed to the _pyio module.
One minor resulting change: the io.TextIOBase class now has an errors attribute giving the error
setting used for encoding and decoding errors (one of ’strict’, ’replace’, ’ignore’).
The io.FileIO class now raises an OSError when passed an invalid file descriptor. (Implemented by
Benjamin Peterson; issue 4991.) The truncate() method now preserves the file position; previously it
would change the file position to the end of the new file. (Fixed by Pascal Chambon; issue 6939.)
• New function: itertools.compress(data, selectors) takes two iterators. Elements of data
are returned if the corresponding value in selectors is true:
itertools.compress(’ABCDEF’, [1,0,1,0,1,1]) =>
A, C, E, F
New function: itertools.combinations_with_replacement(iter, r) returns all the pos-
sible r-length combinations of elements from the iterable iter. Unlike combinations(), individual
elements can be repeated in the generated combinations:
itertools.combinations_with_replacement(’abc’, 2) =>
(’a’, ’a’), (’a’, ’b’), (’a’, ’c’),
(’b’, ’b’), (’b’, ’c’), (’c’, ’c’)
Note that elements are treated as unique depending on their position in the input, not their actual values.
The itertools.count() function now has a step argument that allows incrementing by values other
than 1. count() also now allows keyword arguments, and using non-integer values such as floats or
Decimal instances. (Implemented by Raymond Hettinger; issue 5032.)
itertools.combinations() and itertools.product() previously raised ValueError for
values of r larger than the input iterable. This was deemed a specification error, so they now return an empty
iterator. (Fixed by Raymond Hettinger; issue 4816.)
• Updated module: The json module was upgraded to version 2.0.9 of the simplejson package, which
includes a C extension that makes encoding and decoding faster. (Contributed by Bob Ippolito; issue 4136.)
To support the new collections.OrderedDict type, json.load() now has an optional ob-
ject_pairs_hook parameter that will be called with any object literal that decodes to a list of pairs. (Con-
tributed by Raymond Hettinger; issue 5381.)
• The mailbox module’s Maildir class now records the timestamp on the directories it reads, and only
re-reads them if the modification time has subsequently changed. This improves performance by avoiding
unneeded directory scans. (Fixed by A.M. Kuchling and Antoine Pitrou; issue 1607951, issue 6896.)
• New functions: the math module gained erf() and erfc() for the error function and the complemen-
tary error function, expm1() which computes e
**
x - 1 with more precision than using exp() and
subtracting 1, gamma() for the Gamma function, and lgamma() for the natural log of the Gamma func-
tion. (Contributed by Mark Dickinson and nirinA raseliarison; issue 3366.)
• The multiprocessing module’s Manager
*
classes can now be passed a callable that will be called
whenever a subprocess is started, along with a set of arguments that will be passed to the callable. (Con-
tributed by lekma; issue 5585.)
The Pool class, which controls a pool of worker processes, now has an optional maxtasksperchild param-
eter. Worker processes will perform the specified number of tasks and then exit, causing the Pool to start
a new worker. This is useful if tasks may leak memory or other resources, or if some tasks will cause the
worker to become very large. (Contributed by Charles Cazabon; issue 6963.)
• The nntplib module now supports IPv6 addresses. (Contributed by Derek Morr; issue 1664.)
• New functions: the os module wraps the following POSIX system calls: getresgid() and
getresuid(), which return the real, effective, and saved GIDs and UIDs; setresgid() and
setresuid(), which set real, effective, and saved GIDs and UIDs to new values; initgroups(),
which initialize the group access list for the current process. (GID/UID functions contributed by Travis H.;
issue 6508. Support for initgroups added by Jean-Paul Calderone; issue 7333.)
The os.fork() function now re-initializes the import lock in the child process; this fixes problems on
Solaris when fork() is called from a thread. (Fixed by Zsolt Cserna; issue 7242.)
• In the os.path module, the normpath() and abspath() functions now preserve Unicode; if their
input path is a Unicode string, the return value is also a Unicode string. (normpath() fixed by Matt
Giuca in issue 5827; abspath() fixed by Ezio Melotti in issue 3426.)
• The pydoc module now has help for the various symbols that Python uses. You can now do help(’<<’)
or help(’@’), for example. (Contributed by David Laban; issue 4739.)
• The re module’s split(), sub(), and subn() now accept an optional flags argument, for consistency
with the other functions in the module. (Added by Gregory P. Smith.)
• New function: run_path() in the runpy module will execute the code at a provided path argument.
path can be the path of a Python source file (example.py), a compiled bytecode file (example.pyc), a
directory (./package/), or a zip archive (example.zip). If a directory or zip path is provided, it will
be added to the front of sys.path and the module __main__ will be imported. It’s expected that the
directory or zip contains a __main__.py; if it doesn’t, some other __main__.py might be imported
from a location later in sys.path. This makes more of the machinery of runpy available to scripts that
want to mimic the way Python’s command line processes an explicit path name. (Added by Nick Coghlan;
issue 6816.)
• New function: in the shutil module, make_archive() takes a filename, archive type (zip or tar-
format), and a directory path, and creates an archive containing the directory’s contents. (Added by Tarek
Ziadé.)
shutil‘s copyfile() and copytree() functions now raise a SpecialFileError exception
when asked to copy a named pipe. Previously the code would treat named pipes like a regular file by
opening them for reading, and this would block indefinitely. (Fixed by Antoine Pitrou; issue 3002.)
• The signal module no longer re-installs the signal handler unless this is truly necessary, which fixes a
bug that could make it impossible to catch the EINTR signal robustly. (Fixed by Charles-Francois Natali;
issue 8354.)
• New functions: in the site module, three new functions return various site- and user-
specific paths. getsitepackages() returns a list containing all global site-packages direc-
tories, getusersitepackages() returns the path of the user’s site-packages directory, and
getuserbase() returns the value of the USER_BASE environment variable, giving the path to a di-
rectory that can be used to store data. (Contributed by Tarek Ziadé; issue 6693.)
The site module now reports exceptions occurring when the sitecustomize module is imported, and
will no longer catch and swallow the KeyboardInterrupt exception. (Fixed by Victor Stinner; issue
3137.)
• The create_connection() function gained a source_address parameter, a (host, port) 2-tuple
giving the source address that will be used for the connection. (Contributed by Eldon Ziegler; issue 3972.)
The recv_into() and recvfrom_into() methods will now write into objects that support the buffer
API, most usefully the bytearray and memoryview objects. (Implemented by Antoine Pitrou; issue
8104.)
• The SocketServer module’s TCPServer class now supports socket timeouts and disabling the Nagle
algorithm. The disable_nagle_algorithm class attribute defaults to False; if overridden to be True,
new request connections will have the TCP_NODELAY option set to prevent buffering many small sends
into a single TCP packet. The timeout class attribute can hold a timeout in seconds that will be applied
to the request socket; if no request is received within that time, handle_timeout() will be called and
handle_request() will return. (Contributed by Kristján Valur Jónsson; issue 6192 and issue 6267.)
• Updated module: the sqlite3 module has been updated to version 2.6.0 of the pysqlite package. Ver-
sion 2.6.0 includes a number of bugfixes, and adds the ability to load SQLite extensions from shared
libraries. Call the enable_load_extension(True) method to enable extensions, and then call
load_extension() to load a particular shared library. (Updated by Gerhard Häring.)
• The ssl module’s SSLSocket objects now support the buffer API, which fixed a test suite failure (fix
by Antoine Pitrou; issue 7133) and automatically set OpenSSL’s SSL_MODE_AUTO_RETRY, which will
prevent an error code being returned from recv() operations that trigger an SSL renegotiation (fix by
Antoine Pitrou; issue 8222).
The ssl.wrap_socket() constructor function now takes a ciphers argument that’s a string listing the
encryption algorithms to be allowed; the format of the string is described in the OpenSSL documentation.
(Added by Antoine Pitrou; issue 8322.)
Another change makes the extension load all of OpenSSL’s ciphers and digest algorithms so that they’re all
available. Some SSL certificates couldn’t be verified, reporting an “unknown algorithm” error. (Reported
by Beda Kosata, and fixed by Antoine Pitrou; issue 8484.)
The version of OpenSSL being used is now available as the module attributes ssl.OPENSSL_VERSION
(a string), ssl.OPENSSL_VERSION_INFO (a 5-tuple), and ssl.OPENSSL_VERSION_NUMBER (an
integer). (Added by Antoine Pitrou; issue 8321.)
• The struct module will no longer silently ignore overflow errors when a value is too large for a particular
integer format code (one of bBhHiIlLqQ); it now always raises a struct.error exception. (Changed
by Mark Dickinson; issue 1523.) The pack() function will also attempt to use __index__() to convert
and pack non-integers before trying the __int__() method or reporting an error. (Changed by Mark
Dickinson; issue 8300.)
• New function: the subprocess module’s check_output() runs a command with a specified set of
arguments and returns the command’s output as a string when the command runs without error, or raises a
CalledProcessError exception otherwise.
>>> subprocess.check_output([’df’, ’-h’, ’.’])
’Filesystem Size Used Avail Capacity Mounted on\n
/dev/disk0s2 52G 49G 3.0G 94% /\n’
>>> subprocess.check_output([’df’, ’-h’, ’/bogus’])
...
subprocess.CalledProcessError: Command ’[’df’, ’-h’, ’/bogus’]’ returned non-zero exit status 1
(Contributed by Gregory P. Smith.)
The subprocess module will now retry its internal system calls on receiving an EINTR signal. (Reported
by several people; final patch by Gregory P. Smith in issue 1068268.)
• New function: is_declared_global() in the symtable module returns true for variables that are
explicitly declared to be global, false for ones that are implicitly global. (Contributed by Jeremy Hylton.)
• The syslog module will now use the value of sys.argv[0] as the identifier instead of the previous
default value of ’python’. (Changed by Sean Reifschneider; issue 8451.)
• The sys.version_info value is now a named tuple, with attributes named major, minor, micro,
releaselevel, and serial. (Contributed by Ross Light; issue 4285.)
sys.getwindowsversion() also returns a named tuple, with attributes named major,
minor, build, platform, service_pack, service_pack_major, service_pack_minor,
suite_mask, and product_type. (Contributed by Brian Curtin; issue 7766.)
• The tarfile module’s default error handling has changed, to no longer suppress fatal errors. The default
error level was previously 0, which meant that errors would only result in a message being written to the
debug log, but because the debug log is not activated by default, these errors go unnoticed. The default error
level is now 1, which raises an exception if there’s an error. (Changed by Lars Gustäbel; issue 7357.)
tarfile now supports filtering the TarInfo objects being added to a tar file. When you call add(), you
may supply an optional filter argument that’s a callable. The filter callable will be passed the TarInfo for
every file being added, and can modify and return it. If the callable returns None, the file will be excluded
from the resulting archive. This is more powerful than the existing exclude argument, which has therefore
been deprecated. (Added by Lars Gustäbel; issue 6856.) The TarFile class also now supports the context
manager protocol. (Added by Lars Gustäbel; issue 7232.)
• The wait() method of the threading.Event class now returns the internal flag on exit. This means
the method will usually return true because wait() is supposed to block until the internal flag becomes
true. The return value will only be false if a timeout was provided and the operation timed out. (Contributed
by Tim Lesher; issue 1674032.)
• The Unicode database provided by the unicodedata module is now used internally to determine which
characters are numeric, whitespace, or represent line breaks. The database also includes information from
the Unihan.txt data file (patch by Anders Chrigström and Amaury Forgeot d’Arc; issue 1571184) and
has been updated to version 5.2.0 (updated by Florent Xicluna; issue 8024).
• The urlparse module’s urlsplit() now handles unknown URL schemes in a fashion compliant with
RFC 3986: if the URL is of the form "<something>://...", the text before the :// is treated as the
scheme, even if it’s a made-up scheme that the module doesn’t know about. This change may break code
that worked around the old behaviour. For example, Python 2.6.4 or 2.5 will return the following:
>>> import urlparse
>>> urlparse.urlsplit(’invented://host/filename?query’)
(’invented’, ’’, ’//host/filename?query’, ’’, ’’)
Python 2.7 (and Python 2.6.5) will return:
>>> import urlparse
>>> urlparse.urlsplit(’invented://host/filename?query’)
(’invented’, ’host’, ’/filename?query’, ’’, ’’)
(Python 2.7 actually produces slightly different output, since it returns a named tuple instead of a standard
tuple.)
The urlparse module also supports IPv6 literal addresses as defined by
RFC 2732 (contributed by Senthil Kumaran; issue 2987).
>>> urlparse.urlparse(’http://[1080::8:800:200C:417A]/foo’)
ParseResult(scheme=’http’, netloc=’[1080::8:800:200C:417A]’,
path=’/foo’, params=’’, query=’’, fragment=’’)
• New class: the WeakSet class in the weakref module is a set that only holds weak references to its
elements; elements will be removed once there are no references pointing to them. (Originally implemented
in Python 3.x by Raymond Hettinger, and backported to 2.7 by Michael Foord.)
• The ElementTree library, xml.etree, no longer escapes ampersands and angle brackets when out-
putting an XML processing instruction (which looks like <?xml-stylesheet href="#style1"?>)
or comment (which looks like <!-- comment -->). (Patch by Neil Muller; issue 2746.)
• The XML-RPC client and server, provided by the xmlrpclib and SimpleXMLRPCServer modules,
have improved performance by supporting HTTP/1.1 keep-alive and by optionally using gzip encoding to
compress the XML being exchanged. The gzip compression is controlled by the encode_threshold
attribute of SimpleXMLRPCRequestHandler, which contains a size in bytes; responses larger than
this will be compressed. (Contributed by Kristján Valur Jónsson; issue 6267.)
• The zipfile module’s ZipFile now supports the context management protocol, so you can write with
zipfile.ZipFile(...) as f:. (Contributed by Brian Curtin; issue 5511.)
zipfile now also supports archiving empty directories and extracts them correctly. (Fixed by Kuba Wiec-
zorek; issue 4710.) Reading files out of an archive is faster, and interleaving read() and readline()
now works correctly. (Contributed by Nir Aides; issue 7610.)
The is_zipfile() function now accepts a file object, in addition to the path names accepted in earlier
versions. (Contributed by Gabriel Genellina; issue 4756.)
The writestr() method now has an optional compress_type parameter that lets you override the default
compression method specified in the ZipFile constructor. (Contributed by Ronald Oussoren; issue 6003.)
剩余2430页未读,继续阅读
1079 浏览量
447 浏览量
2918 浏览量
2020-02-15 上传
351 浏览量
278 浏览量
puyran
- 粉丝: 2
- 资源: 36
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- trading-using-options-sentiment-indicators
- CIS基础知识
- torch_cluster-1.5.6-cp37-cp37m-linux_x86_64whl.zip
- NOTHING ON THE INTERNET-crx插件
- 解决sqlserver 2012 中ID 自动增长 1000的问题.zip
- 在游戏中解谜游戏
- 导航栏左右滑动焦点高亮菜单
- Omicron35:正在进行中的Panda3D游戏
- Audio-Classification:针对“重新思考音频分类的CNN模型”的Pytorch代码
- be-the-hero-app:在OmniStack 11.0周开发的前端项目
- awvs12_40234.zip
- torch_sparse-0.6.4-cp37-cp37m-win_amd64whl.zip
- 团队建设讲座PPT
- 导航菜单下拉滑动油漆刷墙
- wkhtmltopdf.zip
- ShapeShit:软件开发
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功