加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Python 3.8 新特性全面解读

发布时间:2019-04-02 20:18:13 所属栏目:优化 来源:佚名
导读:副标题#e# 本文详细介绍 Python 3.8 中的新功能,以及和与 3.7 相比的一些不同点。 新功能 编译的字节码文件的并行文件系统缓存新的 PYTHONPYCACHEPREFIX设置 (也可用 )将隐式字节码缓存配置为使用单独的并行文件系统树,而不是每个源目录中的默认子目录

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. 1>>> 
  2. 2>>> temperature_feb = NormalDist.from_samples([4, 12, -3, 2, 7, 14]) 
  3. 3>>> temperature_feb 
  4. 4NormalDist(mu=6.0, sigma=6.356099432828281) 
  5. 6>>> temperature_feb.cdf(3)            # Chance of being under 3 degrees 
  6. 70.3184678262814532 
  7. 8>>> # Relative chance of being 7 degrees versus 10 degrees 
  8. 9>>> temperature_feb.pdf(7) / temperature_feb.pdf(10) 
  9. 101.2039930378537762 
  10. 11 
  11. 12>>> el_nino = NormalDist(4, 2.5) 
  12. 13>>> temperature_feb += el_nino        # Add in a climate effect 
  13. 14>>> temperature_feb 
  14. 15NormalDist(mu=10.0, sigma=6.830080526611674) 
  15. 16 
  16. 17>>> temperature_feb * (9/5) + 32      # Convert to Fahrenheit 
  17. 18NormalDist(mu=50.0, sigma=12.294144947901014) 
  18. 19>>> temperature_feb.samples(3)        # Generate random samples 
  19. 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()在某些情况下使用该功能以获得更好的性能。目前,如果满足所有这些条件,它仅用于macOSLinux

    -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个字节。

  • (编辑:应用网_丽江站长网)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读