到目前为止,我用Eclipse已经有一些年头了,大部分的时间都是用来写Python(安装Pydev插件)以及C++(安装CDT插件)。

最近我从一个好友那听说了PyCharm以及它新的免费社区版logr。我这个朋友用Eclipse也很长时间了,对PyCharm也是赞不绝口,所以我决定至少在家办公的时候试着用用PyCharm。目前为止,我已经深深的喜欢上了它,甚至于在日常工作时也用PyCharm(社区版采用Apache2授权)。

以下我将会介绍一些在我在使用PyCharm时感到惊奇的一些事情。

声明

我无意批评Eclipse或者PyDev,我用了它们很多年,它们很棒!请记住,这是我的个人经验,你的或许有所不同。

实时比较

PyCharm 对一个文件里你做的改动保持实时的跟踪,通过在编辑器的左侧栏显示一个蓝色的标记。

这一点非常方便,我之前一直是在Eclipse里面用命令“Compare against HEAD” 来比较一个文件前后的改动。

在PyCharm中,你可以对你的改动一览无余。同时,点击那个标记,会显示出之前的内容以及一个工具栏:

你可以很容易地回滚这些改动,在一个详尽的对话框中查看这些改动或是将之前的文本粘贴到剪切板上。

提交时的比较预览

在Eclipse 中,当你提交改动时,会有一个提交对话框向你展示将要被提交的文件列表。

你可以双击其中任意一项来查看改动的对比:这时候,如果你看到代码里一些想修改的地方(比如一个拼错的单词,一段

遗漏的文档,等等),那可就不爽了:你必须关闭所有的东西(包括带有你精心写好的提交注释的提交框),去找到那处惹人烦的代码,改正,然后从头再来一遍。

PyCharm 有同样的特性,但是你的改动是可编辑的。我简直不能再去强调可以当场修正那些错误有多么棒啦!

在提交过程中,我可以很容易地修复像上面那些类似的拼写错误。

一个额外好处是,无论你因为何种原因关闭了提交对话框,当再次尝试提交时,它会保留你刚才填写的那些提交注释。

提交时检查

在提交过程中,我们还可以在实际提交前执行其他一些选项,像“优化导入(排序并移除未使用过的导入)“,检查变动集合中的待完成项等等。

一个有意思的地方是”执行代码分析“那一项。。。

代码审查

你可以让PyCharm在一个文件,目录或整个项目里执行“代码审查”操作。它会在无需实际执行程序的情况下,

找出存在问题以及相应的改进办法,比如类型检查,可静态的方法,违反代码规范等等问题。

正如在上一节中解释过的,这也可以在提交时在发生改动的文件中自动完成。这是一个文件一次审查之后的结果:

对于其中一些审查结果来说,你还可以应用一个修复建议。例如,对于“Function call can be replaced with set literal()”这一建议,我们可以选择相应的选项来修复。

PyCharm 会将这句:

Python
1
extensions = set(['.avi', '.mp4', '.mpg', '.mkv'])

自动替换为:

1
extensions = {'.avi', '.mp4', '.mpg', '.mkv'}

你可以关闭任何你不希望的审查,包括在项目一级。

重构

我一直在试图重命名一个模块,可在菜单项里一直找不到那一项。。。F2也无济于事。

突然我注意到文件子菜单下面的”重构/重命名“一项,就想。。。会是它吗?果然就是!

在你重命名一个模块时,PyCharm会询问你是否需要自动修改所有与之关联的项目。有福了!

还有很多其他的重构项目,但目前为止我还没有机会一一尝试。

关于过时代码的提示以及改进建议

PyCharm可以告诉你代码里面过时的结构块,并且提出一些改进建议。比如,我有像下面一段这样的代码:

Python
1
2

with nested(open(filename1), open(filename2)) as (f1, f2):
<代码块>

PyCharm会明显的标注出nested:

我用的是Python2.7,事实上你可以使用嵌套上下文管理器,但是,唉,我还得支持python的一些老版本,就保留了nested。

但PyCharm提醒了我,这个事情本身还是很酷的。

任务+特性 分支

如同Eclipse一样(需要Mylin支持),PyCharm也支持基于任务的工作流(包括任务感知的上下文)。

然而PyCharm本身自带了很多直接可用的连接器(GitHub,Mantis,Jira,Bugzilla,等等)。

而且,当你开启一项任务时,它会询问你是否想要创建那个任务的一个特性分支,分支的名字可以配置。


这就避免了必须手动创建一个新的分支,而这个操作确实挺繁琐的(拿到任务的ID,选择名称,等等)。

这个是加分项。

快速

我观察到PyCharm在执行代码的自动完成时扫瞄代码的速度要远快于Eclipse,而且还不打断你当前的工作。

当你想保存一个文件时,Eclipse会阻止你这么做因为它正在后台执行一个任务,这有多惹人烦。。。

快速查看文档

当你把光标挪到一个函数、方法,类或者别的什么上的时候,你会得到一个选项来浏览”快速文档“。看一眼:

正如你看到的,它会用一种赏心悦目的格式展示方法的文档说明,还从代码使用说明中提示了参数的类型。。。即使该函数没有对应的文档说明,你还是会得到像下面这样的一个说明:

很好!

Docutils 支持

PyCharm 还包括了对于doctils的一流支持,这让它很容易从集成开发环境中直接再生成文档。

另一方面,它还包括了一个非常好的富文本(译者注:ReST即reStructuredTexteditor)编辑器(比Eclipse的IMHO好用的多):

完善的插件系统

跟据我的使用经验,在Eclipse里面安装插件是件挺痛苦的事情:

  • 很难找到你想要去的地方(提示: 帮助/安装新软件。。。);
  • 你没有一个单一的索引,所以你得去网上去找那些插件源;
  • 系统有时会因为库的依赖问题而崩溃,结果我就没装上那些我想要的插件(工作中还有其他人也同样遇到这个问题,最后不得不放弃);

PyCharm的插件体验则要流畅地多。

首先,它位于一个你认为它有可能会存在的地方:就在”设置”下面的一项:


你可以很容易地浏览插件:


我快速安装了一个标记编辑器(和ReST一样),一个临时存放代码片段的插件,可以让我直接从选择的文本中快速地剪贴,并且预览代码,和SublimeText类似,还用一个漂亮的代码外观。

结语

目前为止就这些了。我会向我的朋友尽力展示一切我认为“看这有多酷”的事情。我使用PyCharm的时间很短,如果我发现还有更多有趣的事情值得再写一篇发表的话,我会继续写。

本文由 伯乐在线 - 高磊 翻译

英文出处:Bruno Oliveira

from: http://blog.jobbole.com/51498/

Python IDE:PyCharm中的那些实用功能相关推荐

  1. 【python】pycharm 中导入本地下载好的库

    Pycharm中导入库基本上都是使用在Interpreter中连网在线下载添加.(下图中的加号) 但是,有的时候不知为什么,总会出现导库失败.然后就想着直接下载库,之后导入环境中.下面来介绍一下简单的 ...

  2. 使用python在pycharm中制作二维码

    1.需要安装MyQR包 在cmd中,安装命令为pip install myqr 在pycharm中,在file-setting-project-project interpreter中添加MyQR M ...

  3. 解决python在pycharm中可以import本地文件,但命令行运行时报错:no model named xxxx本地文件

    解决方法 在文件最开头,添加代码: import sys[sys.path.append(i) for i in ['.', '..']] 如果是在pycharm中手动右击Mark目录为根目录Root ...

  4. 【Python】PyCharm中Matplotlib绘图不能显示UI效果的问题解决

    问题描述 我们利用了Matplotlib的类Cursor,向图形添加一组纵横交叉的直线,从而实现图形界面中任何位置的数值定位的可视化效果. 但使用PyCharm,绘图结果在右侧的部分: 这固然是需要绘 ...

  5. 【Python】Pycharm中plot绘图不能显示

    <利用Python进行数据分析>书中例子都是用IPython作为开发环境,问我一直在用Pycharm,这导致了plot还不能显示绘图.出错的代码如下: import json import ...

  6. Python:pycharm中 虚拟环境 venv简介及实践

    文章目录 一.虚拟环境的必要性 二.虚拟环境实践 1. 通过命令行构建 2. 通过pycharm构建 小结 一.虚拟环境的必要性 不进行虚拟化会产生的问题 在平时使用 python 时,有可能会遇到这 ...

  7. python ide: pycharm

    1, 设置python路径 2,运行py文件 https://www.jetbrains.com/help/pycharm/2016.1/creating-and-running-your-first ...

  8. PyCharm 中出现TextMate bundle load error: Bundle kotlin can‘t be registered

    Python之PyCharm 中出现TextMate bundle load error: Bundle kotlin can't be registered的问题 解决方法: 解决方法: 进入PyC ...

  9. python的自带的ide运行_为什么同样的语句在python自带的ide和pycharm中运行的结果不一样?...

    好久没玩python了 首先 没记错的话应该是python在解释器中为了一些效率 将一些比较小的可能常用到数字已经在内存中分配好了 比如我的IDLE的范围是-5到256 这样, 每次有变量引用这些值的 ...

最新文章

  1. python 把集合转成字典的方法
  2. spark sql 上个月_SPARK-SQL内置函数之时间日期类
  3. 深度学习-Tensorflow2.2-tf.data输入模块{2}-tf.data输入实例-10
  4. vmware安装ubuntu13版本的vm tools时遇到的错误解决
  5. 自动以及手动清除手机垃圾文件
  6. 小程序 input自动换行_直播 | 最实用的微信小程序自动化测试技术独家揭秘
  7. python中反斜杠_Python中的正斜杠/与反斜杠\
  8. mfc绘制bezier b样条三种曲线_生存曲线(二):SPSS和Origin绘图教程及相关问题
  9. 全排列及相关扩展算法(五)——递增(递减)进位制数求原排列算法
  10. 五子棋项目结束总结_五子棋编程思想小结
  11. css模拟select设置高度在ie67下有效(也可作为去除边框)
  12. Web Services创建、部署、发布
  13. 聊聊职场中的学历问题
  14. Scratch(三十五):FlyBird
  15. 伯克利摘得最佳论文 | ACL2022奖项公布
  16. 39.JavaScript中Promise的基本概念、使用方法,回调地狱规避、链式编程
  17. 什么是EMC?什么是EMI?什么是EMS?电磁兼容详解(一)
  18. 微信浏览器唤起微信登录
  19. Rust语言——Package、Crate、Module
  20. matlab中ode指令,在Matlab中使用ODE选择步长

热门文章

  1. 数模学习笔记——粒子群
  2. 机器学习算法基础(基础机器学习课程)——第一天
  3. 中国程序员如何升职加薪,也许我们该学学印度人
  4. 亚马逊外包平台的50万劳工:人工智能的背后,无尽数据集的建造
  5. 盘点VS2015 预览版的5个新特性
  6. Android华容道之一步一步实现-3 -手指触摸处理
  7. wchar.h not found
  8. 高并发编程-线程通信_使用wait和notify进行线程间的通信2_多生产者多消费者导致程序假死原因分析
  9. 白话Elasticsearch42-深入聚合数据分析之案例实战__bucket filter:统计牌品最近一个月的平均价格(Filter Aggregation)
  10. 并发编程-16AQS同步组件之CountDownLatch 闭锁