加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python 2.7终结于7个月后,这是你必要相识的3.X炫酷新特征

发布时间:2019-05-21 01:19:41 所属栏目:建站 来源:机器之心编译
导读:很多人在相识到 Python 2.7 即将遏制维护后,都开始将他们的 Python 版本从 2 切换到 3。截至到 5 月 19 号上午 10 点,Python 2.7 将终结于... 在这一段时刻中,许多优越开源项目与库已经遏制了对 2.7 的支持。譬喻到本年 1 月份,NumPy 将遏制支持 Pytho
副问题[/!--empirenews.page--]

很多人在相识到 Python 2.7 即将遏制维护后,都开始将他们的 Python 版本从 2 切换到 3。截至到 5 月 19 号上午 10 点,Python 2.7 将终结于...

Python 3

在这一段时刻中,许多优越开源项目与库已经遏制了对 2.7 的支持。譬喻到本年 1 月份,NumPy 将遏制支持 Python 2;到本年年尾,Ipython、Cython 和 Pandas 等等都将延续遏制支持 Python 2。

固然我们都往 3.X 迁徙,但很多人编写的 Python 3 代码如故看起来像 Python 2 一样,只不外插手了一些括号或改了些 API。在本文中,作者将展示一些令人感动的 Python 3.X 新特征。这些特征或要领都是 Python 3 各个版本中新加的,它们对比传统的 Python 要领,更轻易办理实践中的一些题目。

全部的示例都是在 Python 3.7 的情形下编写的,每个特征示例都给出了其正常事变所需的最低的 Python 版本。

名目化字符串 f-string(最低 Python 版本为 3.6)

在任何的编程说话中,不行使字符串都是寸步难行的。而为了保持思绪清楚,你会但愿有一种布局化的要领来处理赏罚字符串。大大都行使 Python 的人会方向于行使「format」要领。

  1. user = "Jane Doe" 
  2. action = "buy" 
  3. log_message = 'User {} has logged in and did an action {}.'.format( 
  4.   user, 
  5.   action 
  6. print(log_message) 
  7. # User Jane Doe has logged in and did an action buy. 

除了「format」,Python 3 还提供了一种通过「f-string」举办字符串插入的机动要领。行使「f-string」编写的与上面成果沟通的代码是这样的:

  1. user = "Jane Doe" 
  2. action = "buy" 
  3. log_message = f'User {user} has logged in and did an action {action}.' 
  4. print(log_message) 
  5. # User Jane Doe has logged in and did  

对比于常见的字符串名目符 %s 或 format 要领,f-strings 直接在占位符中插入变量显得越发利便,也更好领略。

路径打点库 Pathlib(最低 Python 版本为 3.4)

f-string 很是强盛,可是有些像文件路径这样的字符串有他们本身的库,这些库使得对它们的操纵越发轻易。Python 3 提供了一种处理赏罚文件路径的抽象库「pathlib」。假如你不知道为什么应该行使 pathlib,请参阅下面这篇 Trey Hunner 编写的炒鸡棒的博文:

「https://treyhunner.com/2018/12/why-you-should-be-using-pathlib/」

  1. from pathlib import Path 
  2.  
  3. root = Path('post_sub_folder') 
  4. print(root) 
  5. # post_sub_folder 
  6.  
  7. path = root / 'happy_user' 
  8.  
  9. # Make the path absolute 
  10. print(path.resolve()) 
  11. # /home/weenkus/Workspace/Projects/DataWhatNow-Codes/how_your_python3_should_look_like/post_sub_folder/happy_user 

如上所示,我们可以直接对路径的字符串举办「/」操纵,并在绝对与相对地点间做转换。

范例提醒 Type hinting(最低 Python 版本为 3.5)

静态和动态范例是软件工程中一个热点的话题,险些每小我私人 对此有本身的观点。读者应该本身抉择何时应该编写何种范例,因此你至少必要知道 Python 3 是支持范例提醒的。

  1. def sentence_has_animal(sentence: str) -> bool: 
  2.   return "animal" in sentence 
  3.  
  4. sentence_has_animal("Donald had a farm without animals") 
  5. # True 

列举(最低 Python 版本为 3.4)

Python 3 支持通过「Enum」类编写列举的简朴要领。列举是一种封装常量列表的便捷要领,因此这些列表不会在布局性不强的环境下随机漫衍在代码中。

  1. from enum import Enum, auto 
  2.  
  3. class Monster(Enum): 
  4.     ZOMBIE = auto() 
  5.     WARRIOR = auto() 
  6.     BEAR = auto() 
  7.  
  8. print(Monster.ZOMBIE) 
  9. # Monster.ZOMBIE 

列举是标记名称(成员)的荟萃,这些标记名称与独一的常量值绑定在一路。在列举中,可以通过标识对成员举办较量操纵,列举自己也可以被遍历。

参考:https://docs.python.org/3/library/enum.html

  1. for monster in Monster: 
  2.     print(monster) 
  3.  
  4. # Monster.ZOMBIE 
  5. # Monster.WARRIOR 
  6. # Monster.BEAR 

原生 LRU 缓存(最低 Python 版本为 3.2)

今朝,险些全部层面上的软件和硬件中都必要缓存。Python 3 将 LRU(最近起码行使算法)缓存作为一个名为「lru_cache」的装饰器,使得对缓存的行使很是简朴。

(编辑:河北网)

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

热点阅读