python没有用_你可能没有在Python3中使用但却应该使用的东西
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
由于Python EOL的发布,许多人开始将他们的Python版本从2切换到3。不幸的是,我发现大多数Python3看起来仍然像Python2,但是要加括号(尽管在我之前的文章《使用Python进行web抓取介绍》中的代码示例也是这样)。下面,我将展示一些令人兴奋的特性示例,你只能在Python3中使用它们,希望它可以让你使用Python解决问题变得更容易。
所有示例都是在Python 3.7中编写的,每个特性都包含该特性所需的最低Python版本。
f-strings (3.6+)
在任何编程语言中,没有字符串是很难做任何事情的,为了保持理智,你希望有一种结构化的方法来处理字符串。大多数使用Python的人更喜欢使用format方法。
除了format,Python 3还提供了一种通过f-strings进行字符串插值的灵活方法。和上面一样使用f-strings的代码是这样的:
Pathlib (3.4+)
f-strings非常棒,但是有些字符串(比如文件路径)有自己的库,这使得它们的操作更加容易。Python 3提供了pathlib作为一个处理文件路径的方便抽象。如果你不确定为什么你应该使用pathlib,试着阅读这篇优秀的文章——《为什么你应该使用pathlib》——Trey Hunner。
类型提示 (3.5+)
静态和动态类型是软件工程中一个热门的话题,几乎每个人都对此有自己的看法。我将让读者决定何时应该编写类型,但我认为你至少应该知道Python 3支持类型提示。
枚举 (3.4+)
Python 3提供了一种通过Enum类来编写枚举的简单方法。枚举是封装常量列表的一种方便的方法,因此它们不会在没有太多结构的情况下随机分布在你的代码中。
枚举是一组符号名称(成员),它们绑定到惟一的常量值。在枚举中,可以通过标识对成员进行比较,并且枚举本身也可以被遍 历。
内置的 LRU 缓存 (3.2+)
缓存存在于我们今天使用的几乎所有水平的软件和硬件中。Python 3通过将LRU(最近最少使用的)缓存公开为一个名为lru_cache的装饰器,使得使用它们变得非常简单。
下面是一个简单的Fibonacci函数,我们知道它将从缓存中受益,因为它通过递归多次执行相同的任务。
现在我们可以使用lru_cache对其进行优化(这种优化技术称为memoization(记忆化))。执行时间从几秒降到几纳秒。
扩展的可迭代对象解包 (3.0+)
数据类 (3.7+)
Python 3引入了数据类,这些数据类并没有太多限制,可以使用它们来减少样板代码,因为装饰器会自动生成特殊的方法,比如__init__() 和__repr()__。根据官方建议,它们被描述为“具有默认值的可变命名元组”。
使用数据类的Armor的相同实现。
隐式命名空间包 (3.3+)
结构化Python代码的一种方法是在包中(带有一个__init__.py文件的文件夹)。下面的示例是由官方Python文档提供的。
在Python2中,上面的每个文件夹都必须有一个__init__.py文件,它会将该文件夹转换为一个Python包。在Python3中,随着隐式命名空间包的引入,这些文件就不再需要了。
编者注:正如一些人所说,这并不像我在本节中指出的那样简单,从官方的PEP 420规范来看——__init__.py对于普通包仍然是必需的,将它从文件夹结构中删除将会把文件夹变成一个带有附加限制的本地命名空间包,关于本机命名空间包的官方文档对此展示了一个很好的例子,以及命名所有的限制。
结束语英文原文:https://datawhatnow.com/things-you-are-probably-not-using-in-python-3-but-should/
译者:野生大熊猫
python没有用_你可能没有在Python3中使用但却应该使用的东西相关推荐
- python多个strip_python 格式化多个Python3中strip()、lstrip()、rstrip()用法详解
Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括n.r.t.' ',即:换行.回车.制表符.空格) lstrip:用来去除开头字符.空白符(包 ...
- python3 unicode字符串_【已解决】Python3中如何声明字符串是unicode类型以避免log日志打印出错...
Python3中代码: CreateTableSqlTemplate = """CREATE TABLE IF NOT EXISTS `%s` ( `id` int(11 ...
- python3不再区分整数和长整数_【判断题】Python3中不再区分整数和长整数,统一为int。...
[判断题]Python3中不再区分整数和长整数,统一为int. 更多相关问题 [多选] 热轧钢材轧后冷却的目的(). [多选] 粗轧最大侧压量受()等工况条件的限制. [判断题] 电压互感器的额定二次 ...
- 知乎python储存_模拟知乎登录——Python3
经常写爬虫的都知道,有些页面在登录之前是被禁止抓取的,比如知乎的话题页面就要求用户登录才能访问,而 "登录" 离不开 HTTP 中的 Cookie 技术. 登录原理 Cookie ...
- python中csv文件把成绩加入_【学习笔记】python3中csv文件使用
1. reader=csv.reader(f, delimiter=','):按行读取数据,reader为生成器,读取的每行数据为列表格式,可以通过delimiter参数指定分隔符. import c ...
- 程序员python工作_程序员如何在工作中进步
工作,对于大部分人都是不可避免的一件事,有的人是为了生存,有的人是为了自我价值的实现,也有人是为了将来不工作而现在努力工作,出发点可能各种各样,但是工作总是大部分人不可避免的一部分. 程序员,相对来说 ...
- anaconda如何保存python文件_想在Jupyter Notebook(Anaconda)中保存并运行Python脚本
确保您的ipython笔记本与python脚本位于同一文件夹中.此外,您可能必须在与python脚本相同的文件夹中创建一个空的__init__.py文件,以使导入工作. 由于您可能正在修改您的pyth ...
- python【Configparser解析配置文件库】Python3中的configparser模块
文章目录 configparser模块简介 看一下configparser生成的配置文件的格式 现在看一下类似上方的配置文件是如何生成的 读文件内容 修改 configparser模块简介 该模块适用 ...
- pdf python 位置_如何使用PDFMiner获取PDF中文本的位置?
您正在每个布局对象上查找bbox属性.PDFMiner文档中有一些关于how to parse the layout hierarchy的信息,但它并没有涵盖所有内容. 下面是一个例子:from pd ...
最新文章
- 语义分割:基于openCV和深度学习(二)
- 用Swift实现一款天气预报APP(三)
- 如何在JQuery $ .each函数中编辑全局变量?
- 照亮云备份的“钱”途
- api分层内部外部 spring_java - Spring boot restful API分层架构验证 - SO中文参考 - www.soinside.com...
- retrofit 会请求两次_Retrofit2+Rxjava-Rxjava2.x-篇二-依次执行多个请求-flatMap/map
- wpf 切换搜狗输入法英文_搜狗输入法全新升级手写功能,中英数字自由写,告别切换丨本周新闻...
- 图解算法学习笔记(六):广度优先搜索
- Windows10下python3.5的sklearn库安装
- oracle10g rac导出ocr,Oracle RAC OCR磁盘故障快速恢复方法
- Excel学习 -- 数据透视表功能
- JavaWeb学习笔记(全)(狂神)
- 编写第一个JavaFX界面
- ubuntu下安装网易云音乐
- 冲破服务机器人赛道“不可能三角”,科沃斯展现行业第一的统治力
- Java,第一次作业——解一元二次方程
- 【BZOJ 4010】 [HNOI2015]菜肴制作
- 【办公-WORD】Word书法字贴默认密码,修改默认密码
- php删除英文链接词,英语作文必备的过渡连接词
- 深入理解http协议原理
热门文章
- AJAX 信息查询管理
- wordpress 通过域名无法访问_VPS主机和宝塔面板搭建WordPress网站教程
- 深度linux安装好上不了网,Deepin Linux 无法上网
- 【OpenCV 例程200篇】55. 可分离卷积核
- java scanner转string,Java InputStream to String 转化
- php 根据数量创建数组,php实现根据字符串生成对应数组的方法
- TensorFlow10-多层神经网络建模,存储和载入
- C++中log的底数理解
- C++ const 引用 指针答疑
- linux Ubuntu安装ftp并将本地文件上传到云服务器