整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

一探究竟,PyCharm 2019.3 增加了哪些花

一探究竟,PyCharm 2019.3 增加了哪些花里胡哨的新功能

ython的IDE(Integrated Development Environment 集成开发环境)非常多,如:VS Code、Sublime、NotePad、Python自带编辑器IDLE、JuPyter、Eclipse + PyDev等等,但是对于项目开发、管理、部署等稍微大一点的项目,我觉得还是PyCharm最好用!

2019年12月2日,PyCharm迎来了2019.3版本,这也许会是2019年的最后一个大版本,那这个版本增加了哪些新功能呢?我们一起来看看吧!

一、Jupyter

PyCharm 在 2019年里连续发布了2019.1、2019.2、 2019.3三个大版本,对Jupyter进行改进,这让很多使用者感到欣慰,毕竟目前数据分析比较火,使用Jupyter Notebooks的开发者也越来越多。

注意此功能仅专业版才有!

1.交互式控件

为了提供更多的交互性,Jupyter notebooks支持称为“交互式控件”的功能。这些控件支持将静态笔记本转变为交互式的面板,从而使其他用户在查看你的笔记本时,可以自定义视图。

在此次更新中,PyCharm添加了对交互式控件的支持。这意味着窗口小部件将随着输出一起呈现,并且可以像处理本机Jupyter notebooks一样用于操作笔记。

2.运行时代码补全

PyCharm 的优势之一是借助先进的静态代码分析算法,可以实现智能编码提示。但是,对于动态语言(例如Python)而言,静态代码分析还不足够。这就是为什么在此次更新中,我们利用Jupyter本身提供的运行时信息来对其进行扩展。在某些情况下,例如在字典索引或深层嵌套的表达式中,IDE无法使用静态分析来找出其类型,而此次更新将会使代码补全变得更为智能。

3.在输出面板上放大和缩小

此次更新支持将预览的字体大小设置为与编辑器一致,或者在设置中进行自定义。编辑器提供了“使用Ctrl +鼠标滚轮更改字体大小(缩放)“选项。启用该选项后,你可以在按住Ctrl的同时,使用鼠标滚轮来放大或缩小预览。

二、Python

1.文件路径联想

害怕在写文件名时打错字?特别是有较长文件名时,例如open('data/ survey_data_28112019_exported.csv') ?现在,你可以在Python代码编辑器或控制台中获得文件路径建议。我们扩展了上下文感知的代码补全功能,因此上下文中与文件相关的字符串字面量可以为可能的文件路径提供建议。

2.支持相对import

与绝对import相比,你更喜欢相对import吗?PyCharm现在支持在这些风格之间自动地转换。如果你已经使用相对导入方式导入了某个程序包,那么所有新的从该程序包的导入也将自动创建为相对导入。

3.Python 3.8:TypedDicts

PyCharm 通过对TypedDict的支持,避免字典的错误赋值。为你的键值对结构提供更精确的展示,我们的代码编辑器能帮助你找到恰当的使用方法。

4.Python 3.8:字面量类型注解

你是否有采用特定字符串字面量的方法,例如带文件模式“open”方法?你可以使用Python 3.8的Literal类型注解来检查类型,还可以检查特定的值。现在,当你调用的函数出现不支持的值时,PyCharm会出现告警。

5.自动创建pytest测试

我们升级了用于自动创建测试的工具,现在也支持pytest。有了这个,PyCharm允许你通过在方法声明的菜单中,仅仅单击“Go To | Test”选项,就自动创建pytest测试。

6.调试器:集合的大小信息

调试时的跟踪信息应尽可能清晰与详细。这就是我们调整变量视图的原因,现在它可以显示组织得更好且更全面的数据。有了这个,就可以期待新的排序、科学数组的更好的视觉表示、集合长度的显示以及重复细节的去除。

三、性能提升

1.更快的索引

PyCharm 先进的代码内视可以帮助你更快地完成工作。为此,我们需要索引你的代码和所有导入的包。当你使用已编译扩展的软件包时(如许多数据科学软件包),在对其进行索引之前,我们需要生成描述Python接口的Python骨架(存根文件)。我们对此过程进行了改进,预计整个索引过程至少快25%。当然,如果你在多个virtualenv中使用同一程序包,我们将重用已经创建的索引。

2.冻结次数减少,并改进了冻结报告

不幸的是,有时候PyCharm的UI会冻结一段时间,然后才让你重新开始处理代码。我们意识到这是非常令人不快的事情,因此我们正在努力消除这些问题。我们已经修复了许多可能导致UI冻结的问题,现在,你可以直接从IDE中上报UI冻结,这使我们有可能调查其冻结的原因,并确保它不再发生。提前感谢你帮助我们摆脱PyCharm中的UI冻结问题!

3.更多的改进

a.今年,我们在所有JetBrains IDE的启动性能方面进行了大量工作。我们的核心平台的启动时间在2019.3版本中得到了进一步改善,我们将继续努力使IDE更快地启动。

b.现在可以在不重启IDE的情况下更改主题。在选择预先安装的主题时或下载新主题后,都可以进行此操作。

c.在PyCharm 2019.3中,各种对于处理事件和忽略文件的改进,使版本控制的状态更新得更快。

d.我们对编辑器的呈现方式进行了一些更改,现在滚动浏览一个长文件变得更加平滑。

四、数据库支持

注意此功能仅专业版才有!

支持MongoDB

你要在MongoDB上构建应用程序吗?那么你将很高兴地得知现在可以在PyCharm中查看MongoDB集合。通过从数据库工具窗口(视图|工具窗口|数据库)添加数据源来连接数据库。PyCharm Professional Edition附带了 JetBrains DataGrip(JetBrains制造的专业SQL IDE)的所有数据库功能。

五、IDE功能

1.参数化运行配置

在创建命令行应用程序时,通常可以方便地快速更改参数。尽管你可以进入“编辑配置”来进行更改,但是现在有一种更好的方法:使用新的运行配置宏(变量),每次启动应用程序时,PyCharm都会提示你输入值。

2.在选定内容中搜索

是否想知道在文件的某部分中,某些文本出现的频率?现在,在你选定的内容中,find动作将自动查找。想要到处搜索?再次按Ctrl-F(在macOS上为Cmd-F),会将搜索范围扩展到文件的其余部分。

3.更多的改进

如果应用程序的一部分是用JavaScript编写的,则很可能你在某处使用了Handlebars模板。如果安装了 Handlebars插件,则现在可以在任何Python字符串中启用Handlebars代码智能。只需在字符串中按Alt-Enter,选择“插入语言或参考”,然后键入“Handlebars”。

六、版本控制

1.与当前分支的改进比较

你拥有的分支越多,就越难追踪它们之间的差异。在新版本的PyCharm中,分支比较功能看起来更好,并且可以使你快速了解哪些提交使两个分支之间产生了差异。

2.改进了克隆代码仓的UI

无论你使用哪种代码仓,当你要拉取新项目时,我们现在都在同一个地方开始。

3.更多的改进

  1. 拉取远程分支时,通常需要创建一个跟踪该远程分支的本地分支。在PyCharm 2019.3中,’checkout’操作只有一个,可以确保你看到远程分支的当前状态,但是没有丢失任何本地提交的风险。
  2. PyCharm始终能够 push 你当前已拉取的分支。有时,你可能要推送另一个分支,从现在开始,不再需要首先将其检出。

七、Web开发

注意此功能仅专业版才有!

1.CDN中的CSS类

你是否要使用CDN中的样式表?现在,我们可以下载该样式表的一个版本,专门用于代码补全。

2.查看调试JavaScript时方法返回的值

就像在Python调试器中一样,JavaScript调试器现在可以向你显示你正在调用的方法的返回值。要查看返回值,请单击调试器上的齿轮图标,然后启用“显示返回值”。

3.更多的改进

  1. 设置CSS样式,以强制使用单引号或双引号。
  2. 无论你在CSS中使用单引号还是双引号,PyCharm现在都可以帮助你使引号保持一致。在 Other 选项卡中的 Settings | Editor | Code Style | Style Sheets | CSS 中进行配置。
  3. 你是否使用未为其定义propTypes的React组件?PyCharm现在能够推断 props,并且将为你提供未定义propTypes的组件的代码补全。

源 | PyCharm官网 整理 | 猪哥 校正 | 豌豆花下猫

Python的IDE(Integrated Development Environment 集成开发环境)非常多,如:VS Code、Sublime、NotePad、Python自带编辑器IDLE、JuPyter、Eclipse + PyDev等等,但是对于项目开发、管理、部署等稍微大一点的项目,猪哥觉得还是PyCharm最好用!

2019年12月2日,PyCharm迎来了2019.3版本,这也许会是2019年的最后一个大版本,那这个版本增加了哪些新功能呢?我们一起来看看吧!

一、Jupyter

PyCharm 在 2019年里连续发布了 2019.12019.22019.3三个大版本,对Jupyter进行改进,这让很多使用者感到欣慰,毕竟目前数据分析比较火,使用Jupyter Notebooks的开发者也越来越多。

注意此功能仅专业版才有!

1.交互式控件

为了提供更多的交互性,Jupyter notebooks支持称为“交互式控件”的功能。这些控件支持将静态笔记本转变为交互式的面板,从而使其他用户在查看你的笔记本时,可以自定义视图。

在此次更新中,PyCharm添加了对交互式控件的支持。这意味着窗口小部件将随着输出一起呈现,并且可以像处理本机Jupyter notebooks一样用于操作笔记。

2.运行时代码补全

PyCharm 的优势之一是借助先进的静态代码分析算法,可以实现智能编码提示。但是,对于动态语言(例如Python)而言,静态代码分析还不足够。这就是为什么在此次更新中,我们利用Jupyter本身提供的运行时信息来对其进行扩展。在某些情况下,例如在字典索引或深层嵌套的表达式中,IDE无法使用静态分析来找出其类型,而此次更新将会使代码补全变得更为智能。

3.在输出面板上放大和缩小

此次更新支持将预览的字体大小设置为与编辑器一致,或者在设置中进行自定义。编辑器提供了“使用Ctrl +鼠标滚轮更改字体大小(缩放)“选项。启用该选项后,你可以在按住Ctrl的同时,使用鼠标滚轮来放大或缩小预览。

二、Python

1.文件路径联想

害怕在写文件名时打错字?特别是有较长文件名时,例如 open('data/ survey_data_28112019_exported.csv')?现在,你可以在Python代码编辑器或控制台中获得文件路径建议。我们扩展了上下文感知的代码补全功能,因此上下文中与文件相关的字符串字面量可以为可能的文件路径提供建议

2.支持相对import

与绝对import相比,你更喜欢相对import吗?PyCharm现在支持在这些风格之间自动地转换。如果你已经使用相对导入方式导入了某个程序包,那么所有新的从该程序包的导入也将自动创建为相对导入。

3.Python 3.8:TypedDicts

PyCharm 通过对TypedDict的支持,避免字典的错误赋值。为你的键值对结构提供更精确的展示,我们的代码编辑器能帮助你找到恰当的使用方法。

4.Python 3.8:字面量类型注解

你是否有采用特定字符串字面量的方法,例如带文件模式“open”方法?你可以使用Python 3.8的 Literal类型注解来检查类型,还可以检查特定的值。现在,当你调用的函数出现不支持的值时,PyCharm会出现告警。

5.自动创建pytest测试

我们升级了用于自动创建测试的工具,现在也支持pytest。有了这个,PyCharm允许你通过在方法声明的菜单中,仅仅单击“Go To | Test”选项,就自动创建pytest测试。

6.调试器:集合的大小信息

调试时的跟踪信息应尽可能清晰与详细。这就是我们调整变量视图的原因,现在它可以显示组织得更好且更全面的数据。有了这个,就可以期待新的排序、科学数组的更好的视觉表示、集合长度的显示以及重复细节的去除。

三、性能提升

1.更快的索引

PyCharm 先进的代码内视可以帮助你更快地完成工作。为此,我们需要索引你的代码和所有导入的包。当你使用已编译扩展的软件包时(如许多数据科学软件包),在对其进行索引之前,我们需要生成描述Python接口的Python骨架(存根文件)。我们对此过程进行了改进,预计整个索引过程至少快25%。当然,如果你在多个virtualenv中使用同一程序包,我们将重用已经创建的索引。

2.冻结次数减少,并改进了冻结报告

不幸的是,有时候PyCharm的UI会冻结一段时间,然后才让你重新开始处理代码。我们意识到这是非常令人不快的事情,因此我们正在努力消除这些问题。我们已经修复了许多可能导致UI冻结的问题,现在,你可以直接从IDE中上报UI冻结,这使我们有可能调查其冻结的原因,并确保它不再发生。提前感谢你帮助我们摆脱PyCharm中的UI冻结问题!

3.更多的改进

今年,我们在所有JetBrains IDE的启动性能方面进行了大量工作。

我们的核心平台的启动时间在2019.3版本中得到了进一步改善,我们将继续努力使IDE更快地启动。

现在可以在不重启IDE的情况下更改主题。在选择预先安装的主题时或下载新主题后,都可以进行此操作。

在PyCharm 2019.3中,各种对于处理事件和忽略文件的改进,使版本控制的状态更新得更快。

我们对编辑器的呈现方式进行了一些更改,现在滚动浏览一个长文件变得更加平滑。

四、数据库支持

注意此功能仅专业版才有!

1.支持MongoDB

你要在MongoDB上构建应用程序吗?那么你将很高兴地得知现在可以在PyCharm中查看MongoDB集合。通过从数据库工具窗口(视图|工具窗口|数据库)添加数据源来连接数据库。PyCharm Professional Edition附带了 JetBrains DataGrip(JetBrains制造的专业SQL IDE)的所有数据库功能。

五、IDE功能

1.参数化运行配置

在创建命令行应用程序时,通常可以方便地快速更改参数。尽管你可以进入“编辑配置”来进行更改,但是现在有一种更好的方法:使用新的运行配置宏(变量),每次启动应用程序时,PyCharm都会提示你输入值。

2.在选定内容中搜索

是否想知道在文件的某部分中,某些文本出现的频率?现在,在你选定的内容中,find动作将自动查找。想要到处搜索?再次按Ctrl-F(在macOS上为Cmd-F),会将搜索范围扩展到文件的其余部分。

3.更多的改进

如果应用程序的一部分是用JavaScript编写的,则很可能你在某处使用了Handlebars模板。如果安装了 Handlebars插件,则现在可以在任何Python字符串中启用Handlebars代码智能。只需在字符串中按Alt-Enter,选择“插入语言或参考”,然后键入“Handlebars”。

六、版本控制

1.与当前分支的改进比较

你拥有的分支越多,就越难追踪它们之间的差异。在新版本的PyCharm中,分支比较功能看起来更好,并且可以使你快速了解哪些提交使两个分支之间产生了差异。

2.改进了克隆代码仓的UI

无论你使用哪种代码仓,当你要拉取新项目时,我们现在都在同一个地方开始。

3.更多的改进

拉取远程分支时,通常需要创建一个跟踪该远程分支的本地分支。

在PyCharm 2019.3中,’checkout’操作只有一个,可以确保你看到远程分支的当前状态,但是没有丢失任何本地提交的风险。

PyCharm始终能够 push 你当前已拉取的分支。

有时,你可能要推送另一个分支,从现在开始,不再需要首先将其检出。

七、Web开发

注意此功能仅专业版才有!

1.CDN中的CSS类

你是否要使用CDN中的样式表?现在,我们可以下载该样式表的一个版本,专门用于代码补全。

2.查看调试JavaScript时方法返回的值

就像在Python调试器中一样,JavaScript调试器现在可以向你显示你正在调用的方法的返回值。要查看返回值,请单击调试器上的齿轮图标,然后启用“显示返回值”。

3.更多的改进

- 设置CSS样式,以强制使用单引号或双引号。

- 无论你在CSS中使用单引号还是双引号,PyCharm现在都可以帮助你使引号保持一致。在 Other 选项卡中的 Settings | Editor | Code Style | Style Sheets | CSS 中进行配置。

- 你是否使用未为其定义propTypes的React组件?PyCharm现在能够推断 props,并且将为你提供未定义propTypes的组件的代码补全。

签到送书计划

自律改变自我!第①期打卡送书活动启动!

源 | 数据分析与统计学之美

本文介绍

这是一个很好的Python自动化的案例。对于小公司,采用手动方式一个个发送邮件还是可以的。如果一个上百号,上千号,或者更大规模的公司,我们再一个个发送工资条邮件,就太浪费时间了。鉴于此,我写了一个这样的程序,实现Python自动化群发工资条的功能。

原始数据源如下:

最终效果如下:

看到这里,你肯定也觉得很好玩儿吧?那么这样一个自动化程序,应该怎么做呢?接着往下看。

流程分析

其实这样一个代码,总结下来,就只有如下5步:

① 导入相关模块;

② 读取Excel表格;

③ 登录邮箱;

④ 准备要发送的邮件正文;

⑤ 发送邮件;

1)导入相关模块

from openpyxl import load_workbook # 用于操作Excel的模块import yagmail # 用于存储邮箱地址和密码的模块import keyring # 用于记录你邮箱地址和密码的模块from datetime import * # 用于获取当前系统时间的模块

2)读取Excel表格

# 加载Excel文件wb=load_workbook("群发工资条.xlsx",data_only=True)sheet=wb.activeprint(sheet)-------------------------------------------------------for row in sheet: row_text="" for cell in row: if cell.column=="B": continue row_text +=f"{cell.value}," print(row_text)------------------------------------------------------print("年:", date.today.year)print("月:", date.today.month)print(f"{date.today.year}-{date.today.month}月")

结果如下:

3)登录邮箱

yagmail.register("1127421544@qq.com","flmyucvntuvbjbcb")pwd=keyring.get_password("yagmail","1127421544@qq.com")yag=yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com",password=pwd)

需要注意的是:第一行代码是用于存储你的邮件地址和密码。第二行代码使用keyring是为了记录你的邮件地址和密码。第三行代码直接登录邮箱。

关于Python怎么发送邮件,我之前写了一篇文章,进行了详细的介绍,下方是这篇文章的链接,大家可以参考。

Python发邮件:http://suo.im/60ylZ1

4)准备要发送的正文

由于发送的正文里面,需要我们发送一个带表格的邮件,这就有必要我们了解一点前端知识。因此,我在最后面花一个章节为大家讲解。

5)发送邮件

yag.send(f"{email}",f"数据分析与统计学之美有限公司{date.today.year}-{date.today.month}月工资情况",contents)
上述代码共有3个参数:第一个参数是收件人的邮箱;第二个参数是邮件的标题;第三个参数是发送的内容。

关于html代码的特别说明

会用Python发送邮件的人都知道,邮件正文内容可以写html代码。你可能觉得自己啥也不会,但是不用担心,我们不需要学习太高深的前端代码,做过爬虫的人耳濡目染,都能够看懂一些。

1)自己写一个简单的前端代码

我们可以直接用Pycharm创建一个新的html文件,里面会显示初始的前端代码,我们进行简单的添加,就可以获得一个表格啦!

最终在浏览器中显示效果如下:

从上图中根本看不出这是一个表格,那是因为我们没有为它设置一个样式,下面要做的就是为表格设置样式。

最终在浏览器中显示效果如下:

2)在Python中怎么写前端代码

从上图可以看出,整个前端代码就是用一些列的标签组成,同时标签都是成对出现的。因此,在Python中写前端代码时,只需要在对应位置添加对应的标签即可。

for row in sheet: row_text="<tr>" for cell in row: if cell.column=="B": continue row_text +=f"<td>{cell.value}</td>" row_text +="</tr>" print("\n") print(row_text)

结果如下:

完整代码

为了文章的完整性,我在文章最后放上我的代码。但是限于文章篇幅,最后我只粘贴一张图片,详细代码,大家可以去文末获取。