pep

Python 3.10 版本采纳了首个 PEP,中文翻译即将推出

大兔子大兔子 提交于 2020-08-17 07:50:25
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨豌豆花下猫 来源丨Python猫 ( python_cat ) 现在距离 Python 3.9.0 的最终版本还有 3 个月,官方公布的时间线是: 3.9.0 beta 4: Monday, 2020-06-29 3.9.0 beta 5: Monday, 2020-07-20 3.9.0 candidate 1: Monday, 2020-08-10 3.9.0 candidate 2: Monday, 2020-09-14 3.9.0 final: Monday, 2020-10-05 详情参见 PEP-596 这其实也意味着 Python 3.10 的第一个 alpha 版本快要面世了——因为它会随着 3.9.0 的 final 版本一起发布! 之前有读者问下个版本是不是 4.0,或者误以为下个版本是 4.0,还担心会再次出现 2 升 3 这种大版本不兼容的情况。其实官方早就有消息出来了,下个版本只会是 3.10,是个小版本的特性升级。 Python 采用了语义化版本(Semantic Versioning)命名风格,也就是“ 主版本号.次版本号.修订号 ”,在可预见的未来,主版本号还会保持为 3,继续 3.11、3

typing-python用于类型注解的库

一笑奈何 提交于 2020-08-17 02:44:21
简介 动态语言的灵活性使其在做一些工具,脚本时非常方便,但是同时也给大型项目的开发带来了一些麻烦。 自python3.5开始,PEP484为python引入了类型注解(type hints),虽然在 pep3107 定义了函数注释(function annotation)的语法,但仍然故意留下了一些未定义的行为.现在已经拥有许多对于静态类型的分析的第三方工具,而pep484引入了一个模块来提供这些工具,同时还规定一些不能使用注释(annoation)的情况 #一个典型的函数注释例子,为参数加上了类型 def greeting(name: str) -> str: return 'Hello ' + name 伴随着python3.6的pep526则更进一步引入了 对变量类型的声明 ,和在以前我们只能在注释中对变量的类型进行说明 # 使用注释来标明变量类型 primes = [] # type:list[int] captain = ... #type:str class Starship: stats = {} #type:Dict[str,int] primes:List[int] = [] captain:str #Note: no initial value class Starship: stats: ClassVar[Dict[str,int]] = {} typing-

在现代Python中声明自定义异常的正确方法?

僤鯓⒐⒋嵵緔 提交于 2020-08-14 08:02:21
问题: What's the proper way to declare custom exception classes in modern Python? 在现代Python中声明自定义异常类的正确方法是什么? My primary goal is to follow whatever standard other exception classes have, so that (for instance) any extra string I include in the exception is printed out by whatever tool caught the exception. 我的主要目标是遵循其他异常类具有的任何标准,以便(例如)我捕获到异常中的任何工具都会打印出我包含在异常中的任何多余字符串。 By "modern Python" I mean something that will run in Python 2.5 but be 'correct' for the Python 2.6 and Python 3.* way of doing things. “现代Python”是指可以在Python 2.5中运行但对于Python 2.6和Python 3. *是“正确”的方式。 And by "custom" I mean an

一篇文章掌握 Python 内置 zip() 的全部内容

隐身守侯 提交于 2020-08-13 08:57:06
一篇文章掌握 Python 内置 zip() 的全部内容 zip() 是 Python 中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来。 我之前写迭代器系列的时候,在《 Python进阶:设计模式之迭代器模式 》中简单地介绍过它,前几天翻译了 Python 3.10 采纳的 PEP-618 ,介绍了它将会迎来的变更。 但是,还有不少同学并不知道 zip(),或者不能熟练掌握它的用法,因此本文打算来做一个更为详细的梳理。 内容主要分三部分: 用法部分:介绍它的基础用法、高级用法、骚操作用法 进阶部分:介绍它的实现原理,关注几个实现的细节 发散部分:聚焦它的不足,以及解决方法 1、zip() 的 n 种用法 基本用法:像拉链一样,将多个可迭代对象组合起来,然后可以用 for 循环依次取出,或者一次性将结果存入列表、元组或者字典之类的容器中。 它的结果是一个迭代器,迭代器生成的元素是元组,第 i 个元组的元素分别来自可迭代对象参数的第 i 个元素,如上图所示。 另外,for 循环还可以把元组内的元素依次取出,这样会很方便: 它的参数并不要求是同一类的可迭代对象,因此可以有非常多的组合方式,例如: 但是,如果把字典作为 zip() 的参数,会是什么结果呢?字典是 key-value 键值对形式,跟列表之类的单一元素结构不同。

毕威迪和RDC在Chartis KYC/AML数据解决方案报告中双双赢得类别领导者殊荣

痞子三分冷 提交于 2020-08-12 01:14:13
纽约--(美国商业资讯)--在一份最新的Chartis Research报告中,穆迪分析(Moody’s Analytics)旗下公司毕威迪(Bureau van Dijk)和穆迪1月份 收购 的Regulatory DataCorp (RDC)被评为类别领导者。这份题为《 KYC/AML 数据解决方案 2020 :市场与供应商格局 》的报告评估了15家领先的了解客户(KYC)和反洗钱(AML)数据解决方案供应商。 毕威迪执行董事Dan Russell表示:“我们对Chartis在其新报告中将毕威迪和RDC评为类别领导者感到非常高兴。对两家公司的认可证明了我们的战略:RDC的AML和KYC数据集使其成为了行业领导者,而其解决方案对毕威迪的全面实体信息又形成了天然的补充。将这些数据资源整合在一起使我们能够为客户提供无与伦比的综合能力。” 上图摘录的该报告的供应商能力表对所有供应商的九项具体能力进行了评估。毕威迪被认为提供了三项“同类最佳”能力(公司结构、实体关系和地域范围),比其他任何供应商都多;而RDC凭借两项不同的能力(负面新闻和政治敏感人物(PEP)、数据管理)获得“同类最佳”。 下图所示的该报告的2020年度RiskTech Quadrant® KYC/AML数据解决方案,则强调了供应商的“产品完整性”和“市场潜力”。 毕威迪是世界领先的实体数据库 Orbis 的发行方

Python成为专业人士笔记–comprehension生成式

孤街醉人 提交于 2020-08-11 23:41:56
“专业人士笔记”系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新! ​ zhuanlan.zhihu.com Python中的列表生成式是简洁的语法结构。通过对列表中的每个元素应用函数,可以利用它们从其他列表生成列表。下面的部分将解释和演示这些表达式的用法。 生成式语法 列表生成式通过对iterable的每个元素应用一个表达式来创建一个新列表。最基本的形式是 [ <表达式> for <元素> in <迭代器> ] 还有一个可选的“if”条件 [ <表达式> for <元素> in <迭代器> if <条件> ] 创建一个整数平方的list : squares = [x * x for x in (1, 2, 3, 4)] #squares: [1, 4, 9, 16] for表达式依次先将x设置为(1、2、3、4)中的每个值。表达式x * x的结果被附加到一个内部列表中。内部列表在计算完成时分配给最终的数值并返回 上面的代码会提高运算速度,它的计算过程类似下面代码: squares = [] for x in (1, 2, 3, 4): squares.append(x * x) # squares: [1, 4, 9, 16] 应用于每个元素的表达式可以根据业务逻辑写得更加复杂: #从字符串中获取大写字符列表 [s.upper() for s in

python中if及if-else如何使用

坚强是说给别人听的谎言 提交于 2020-08-11 20:54:56
if 结构 if 结构允许程序做出选择,并根据不同的情况执行不同的操作 基本用法 比较运算符 根据 PEP 8 标准,比较运算符两侧应该各有一个空格,比如:5 == 3。 PEP8 标准 ==(相等):如果该运算符两侧的值完全相同则返回 True !=(不等):与相等相反 print(5 == '5') print(True == '1') print(True == 1) print('Eric'.lower() == 'eric'.lower()) >(大于):左侧大于右侧则输出 True <(小于):与大于相反 >=(大于等于):左侧大于或者等于右侧则输出 True <=(小于等于):左侧小于或者等于右侧则输出 True print(5 > 3) print(2 > True) print(True > False) if的用法 1.只有 if 进行判断 desserts = ['ice cream', 'chocolate', 'apple crisp', 'cookies'] favorite_dessert = 'apple crisp' hate_dessert = 'chocolate' for dessert in desserts: if dessert == favorite_dessert: print("%s is my favorite dessert!

检测Python代码规范--Flake8

白昼怎懂夜的黑 提交于 2020-08-11 20:07:49
Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强。 Flake8 是“将 PEP 8、Pyflakes(类似 Pylint)、McCabe(代码复杂性检查器)和第三方插件整合到一起,以检查 Python 代码风格和质量的一个 Python 工具”。与 pyLint 的功能一样,用于对代码的静态检测。 执行 pip install flake8 安装 flake8 ,然后执行 flake8 [options] path/to/dir 或者 flake8 [options] path/to/module.py 可以查看报出的错误和警告。 和 Pylint 类似,Flake8 允许通过配置文件来自定义检查的内容。它有非常清晰的文档,包括一些有用的提交钩子,可以将自动检查代码纳入到开发工作流程之中。 Flake8 也可以集成到一些流行的编辑器和 IDE 当中,但在文档中并没有详细说明。要将 Flake8 集成到喜欢的编辑器或 IDE 中,可以搜索插件(例如 Sublime Text 的 Flake8 插件)。 (BlogChecker) D:\pyve\BlogChecker>flake8 LinkCheck.py LinkCheck.py:8:1: F401

如何编写简洁美观的Python代码

☆樱花仙子☆ 提交于 2020-08-11 02:59:59
作者|ANIRUDDHA BHANDARI 编译|VK 来源|Analytics Vidhya 概述 Python风格教程将使你能够编写整洁漂亮的Python代码 在这个风格教程中学习不同的Python约定和Python编程的其他细微差别 介绍 你有没有遇到过一段写得很糟糕的Python代码?我知道你们很多人都会点头的。 编写代码是数据科学家或分析师角色的一部分。另一方面,编写漂亮整洁的Python代码完全是另一回事。作为一个精通分析或数据科学领域(甚至软件开发)的程序员,这很可能会改变你的形象。 那么,我们如何编写这种所谓漂亮的Python代码呢? 欢迎学习Python风格教程 数据科学和分析领域的许多人来自非编程背景。我们先从学习编程的基础知识开始,接着理解机器学习背后的理论,然后开始征服数据集。 在这个过程中,我们经常不练习核心编程,也不注意编程惯例。 这就是本Python风格教程将要解决的问题。我们将回顾PEP-8文档中描述的Python编程约定,你将成为一个更好的程序员! 目录 为什么这个Python风格的教程对数据科学很重要? 什么是PEP8? 了解Python命名约定 Python风格教程的代码布局 熟悉正确的Python注释 Python代码中的空格 Python的一般编程建议 自动格式化Python代码 为什么这个Python风格的教程对数据科学很重要

一篇文章掌握 Python 内置 zip() 的全部内容

给你一囗甜甜゛ 提交于 2020-08-10 07:27:26
zip() 是 Python 中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来。 我之前写迭代器系列的时候,在《 Python进阶:设计模式之迭代器模式 》中简单地介绍过它,前几天翻译了 Python 3.10 采纳的 PEP-618 ,介绍了它将会迎来的变更。 但是,还有不少同学并不知道 zip(),或者不能熟练掌握它的用法,因此本文打算来做一个更为详细的梳理。 内容主要分三部分: 用法部分:介绍它的基础用法、高级用法、骚操作用法 进阶部分:介绍它的实现原理,关注几个实现的细节 发散部分:聚焦它的不足,以及解决方法 1、zip() 的 n 种用法 基本用法:像拉链一样,将多个可迭代对象组合起来,然后可以用 for 循环依次取出,或者一次性将结果存入列表、元组或者字典之类的容器中。 它的结果是一个迭代器,迭代器生成的元素是元组,第 i 个元组的元素分别来自可迭代对象参数的第 i 个元素,如上图所示。 另外,for 循环还可以把元组内的元素依次取出,这样会很方便: 它的参数并不要求是同一类的可迭代对象,因此可以有非常多的组合方式,例如: 但是,如果把字典作为 zip() 的参数,会是什么结果呢?字典是 key-value 键值对形式,跟列表之类的单一元素结构不同。 实验一下,可以看出,zip() 默认只会遍历字典的 key 值