pathlib.Path返回布尔结果类似方法 exists(),is_dir(), is_file(),is_mount(), is_symlink(),is_block_device(), is_char_device(),is_fifo(), is_socket()现在回到False而不是提高 ValueError或它的子类UnicodeEncodeError的包含字符的不可表示在操作系统级别路径。(由Serhiy Storchaka供稿于bpo-33721。)
shutil
shutil.copytree() 现在接受一个新的dirs_exist_ok 关键字参数。
SSL
添加SSLContext.post_handshake_auth 以启用和 ssl.SSLSocket.verify_client_post_handshake() 启动TLS 1.3握手后身份验证。
统计
添加statistics.fmean() 为更快的浮点变体statistics.mean() 。
添加statistics.multimode() 了返回最常见值的列表。
添加statistics.NormalDist 了一个用于创建和操作随机变量的正态分布的工具.
- 1>>>
- 2>>> temperature_feb = NormalDist.from_samples([4, 12, -3, 2, 7, 14])
- 3>>> temperature_feb
- 4NormalDist(mu=6.0, sigma=6.356099432828281)
- 5
- 6>>> temperature_feb.cdf(3) # Chance of being under 3 degrees
- 70.3184678262814532
- 8>>> # Relative chance of being 7 degrees versus 10 degrees
- 9>>> temperature_feb.pdf(7) / temperature_feb.pdf(10)
- 101.2039930378537762
- 11
- 12>>> el_nino = NormalDist(4, 2.5)
- 13>>> temperature_feb += el_nino # Add in a climate effect
- 14>>> temperature_feb
- 15NormalDist(mu=10.0, sigma=6.830080526611674)
- 16
- 17>>> temperature_feb * (9/5) + 32 # Convert to Fahrenheit
- 18NormalDist(mu=50.0, sigma=12.294144947901014)
- 19>>> temperature_feb.samples(3) # Generate random samples
- 20[7.672102882379219, 12.000027119750287, 4.647488369766392]
tar文件
该tarfile模块现在默认为新档案的现代pax(POSIX.1-2001)格式,而不是之前的GNU特定格式。这通过标准化和可扩展格式的一致编码(UTF-8)提高了跨平台的可移植性,并提供了其他一些好处。
令牌化
当提供没有尾随新行的输入时,tokenize模块现在隐式地发出NEWLINE令牌。此行为现在与C tokenizer在内部执行的操作相匹配。
Tkinter
添加的方法selection_from(), selection_present(), selection_range()和 selection_to() 在tkinter.Spinbox类。
moveto() 在tkinter.Canvas课堂上添加了方法。
时间
CLOCK_UPTIME_RAW为macOS 10.12 添加了新时钟。
unicodedata
新函数is_normalized() 可用于验证字符串是否处于特定的正常形式。
单元测试
添加addModuleCleanup()并 addClassCleanup()进行unittest以支持setUpModule()和的 清理setUpClass()。
VENV
venv现在,Activate.ps1在PowerShell Core 6.1下,所有平台上都包含一个用于激活虚拟环境的脚本。
XML
作为对DTD和外部实体检索的缓解,默认情况下, xml.dom.minidom和xml.sax模块不再处理外部实体。
优化
-
subprocess现在,模块可以os.posix_spawn()在某些情况下使用该功能以获得更好的性能。目前,如果满足所有这些条件,它仅用于macOS 和Linux
-close_fds为false;
未设置preexec_fn,pass_fds,cwd和start_new_session参数;
该可执行文件路径中包含一个目录。
-shutil.copyfile(),shutil.copy(),shutil.copy2(), shutil.copytree()并shutil.move()使用特定于平台的“快速复制”在Linux,MacOS的和Solaris,以更有效地复制文件系统调用。“快速复制”意味着复制操作发生在内核中,避免在Python中使用用户空间缓冲区,如“ outfd.write(infd.read())”。在Windows上shutil.copyfile()使用更大的默认缓冲区大小(1 MiB而不是16 KiB),并使用memoryview()基于a 的变体 - shutil.copyfileobj()。在同一分区中复制512 MiB文件的速度在Linux上约为+ 26%,在macOS上为+ 50%,在Windows上为+ 40%。此外,消耗的CPU周期更少。请参阅与平台相关的高效复制操作部分。
-
shutil.copytree()使用os.scandir()函数和依赖它的所有复制函数使用缓存os.stat()值。复制具有8000个文件的目录的速度在Linux上约为+ 9%,在Windows上为+ 20%,在Windows SMB共享上为+ 30%。此外,os.stat() 系统调用的数量减少了38%,使shutil.copytree()网络文件系统的速度更快。
-pickle模块中的默认协议现在是协议4,,首先在Python 3.4中引入。与Python 3.0以来提供的Protocol 3相比,它提供了更好的性能和更小的尺寸。
删除了一个Py_ssize_t成员PyGC_Head。所有GC跟踪对象(例如元组,列表,字典)的大小减少了4或8个字节。
-
(编辑:ASP站长网)
|