本文来自Python编程时光

第 1 篇可以点击下方链接?跳转:

受用一生的高效PyCharm使用技巧

6. 神一样的调试技巧

假如我们在一个爬虫的项目中,会使用到 正则表达式 来匹配我们想要抓取的内容。正则这种东西,有几个人能够一步到位的呢,通常都需要经过很多次的调试才能按预期匹配。在我们改了一次正则后,运行了下,需要重新向网站抓取请求,才能发现没有匹配上,然后又改了一版,再次运行同样需要发起请求,结果还是发现还是没有匹配上,往往复复,正则不好的同学可能要进行几十次的尝试。

(上面这个例子可能不太贴切,毕竟是有很多种方法实现不用重新发请求,只是列举了一种很笨拙且低效的调试过程,你看看就好了)

而我们在这几十次的调试中,向同一网站发起请求都是没有意义的重复工作。如果在 Pycharm 中可以像  IPython Shell  和 Jupyter Notebook 那样,可以记住运行后所有的变量信息,可以在不需要重新运行项目或脚本,只需稍微调整下我们的代码,直接就可以进行正则调试。

答案当然是有。

假如我在调试如下几行简单的代码。在第 3 行处打了个断点。然后点击图示位置 Show Python Prompt 按钮。


就进入了 Python Shell 的界面,这个Shell 环境和我们当前运行的程序环境是打通的,使用的是同一个 namespace,这下你可以轻松地进行调试了。


上面我们打了个断点,是为了方便说明这个效果。并不是说一定要打断点。如果不打断点,在脚本执行完成后,也仍然可以在这个界面查看并操作所有变量。

现在我们已经可以满足我们的调试的需求,但是每次运行脚本,都要手动点击 Show Python Prompt ,有点麻烦。嗯?其实这个有地方可以设置默认打开的。这个开头还比较隐秘,一般人还真发现不了。

你需要点击图示位置 Edit Configurations 处。


然后在这里打勾选中。


设置上之后,之后你每次运行后脚本后,都会默认为你存储所有变量的值,并为你打开 console 命令行调试界面。

除了上面这种方法,其实还有一种方法可以在调试过程中,执行命令表达式,而这种大家可能比较熟悉了,这边也提一下,就当是汇总一下。但是从功能上来说,是没有上面这种方法来得方便易用的。因为这种方法,必须要求你使用 debug 模式运行项目,并打断点。

使用方法就是,在你打了断点后,在图示位置处,点击右键使用 Evaluate Expression


就弹出了一个 Evaluate Expression 窗口,这里 可以运行命令表达式,直接操作变量。


7. 指定参数执行脚本

你在 Pycharm 运行你的项目,通常是怎么执行的?我的做法是,右键,然后点击 Run,或者使用快捷键 Shift + F10

有时候,在运行/调试脚本的时候,我们需要指定一些参数,这在命令行中,直接指定即可。

假设在命令行中,运行脚本的命令是这样

python main.py init --local

对于刚使用 Pycharm 的同学,可能并不知道 Pycharm 也是可以指定参数的。点击下图位置


进入设置面板,在 Script parameters 中填入参数即可。


同时在上图的底部,你可以看到,这里可以很方便的切换 解释器,比你跑到这边来要容易得多吧


8. 搜索时过滤测试文件

接下来,介绍一个,我看框架源码的时的一个小技巧,可能只适用一小部分人吧。

我平时会看的框架是 OpenStack ,我不知道其他框架是怎样的,但在 OpenStack 里面带有大量(真的很多)的单元测试文件。这给我在使用 Find in Path  时带来了不小的困扰,你可以从下图的搜索结果中感受一下,搜索一个函数,test 文件里的结果比 正常文件要多很多。


这些测试文件的搜索结果,对于我们看源代码不仅没有任何帮助的,更重要的是还干扰视线。于是我就研究了一下,从文件名入手,只要在 File mask 里填写 !test* 可以将这些test文件过滤掉。搜索结果一下子清晰很多。


9. 关闭烦人的灯泡提示

本来没有想写这个的,但是知乎上有一位朋友有这个需求,那我研究了下。

先来说下这个灯泡提示是什么,有什么用?

当我们在代码里面有语法错误,或者代码编写不符合 pep8 代码规范时,鼠标选择有问题的代码,就会自动弹出小灯泡,这个灯泡是有颜色之分的,如果是红灯泡,一般都是语法问题,如果不处理会影响代码运行。而如果是黄灯泡,就只是一个提示,提示你代码不规范等,并不会影响程序的运行。

虽然这个灯泡,是出于善意之举,但我认为它确实有点多余(可能是我个人没有使用它的习惯),要是语法错误会有红色波浪线提示。你可能会说灯泡不仅起到提示的作用,它还可以自动纠正代码,我个人感觉并没有人工校正来得效率,来得精准。

基于有时还会像知乎上这个朋友说的这样,会挡住我们的代码,会经常误点,这确实也是一个烦恼。

我研究了下,Pycharm (2018版本)里是有开关按钮的,将下图中的这个选项(Show intention bulb)取消勾选,就可以关闭这个功能。


10.  关闭碍眼的波浪线

下面我先给出了一小段代码示例,思考一下,为什么name,my_name 不会有波浪线,而 myname 和 wangbm 会有波浪线呢?


Pycharm 本身会实时地对变量名进行检查,如果变量名不是一个已存在的英文单词,就会出现一条波浪线,当一个变量里有多个单词时,Python 推荐的写法是用下划线来分隔(其他语言可能会习惯使用驼峰式命名法 ,但 Python 是使用下划线),所以在 Pycharm 看来  my_name 是规范的,而 myname 会被当成是一个单词对待,由于它在单词库里并没有它,所以 myname 是不规范的。

每个人的变量命名习惯不一样,如何你在项目里大量使用了 myname 这种风格的变量命名方法,像下面这样(随便找了一段 cloudinit 的代码),是让人挺不舒服的,总有一种代码有 bug 的错觉。


那么如何关闭这个非语法级别的波浪线呢?很简单,它的开关就在你的右下角那个像 人头像 一样的按钮


然后选择 Syntax 级别的即可。同样一段代码,效果如下,干净了很多。


好了,本周的 PyCharm 使用技巧,就是这五个了,你学会了吗?

-END-

推荐阅读:(点击下方标题即可跳转)

为什么要考985?

受用一生的高效PyCharm使用技巧

没看完这11 条,别说你精通 Python 装饰器

受用一生的高效 PyCharm 使用技巧(二)相关推荐

  1. pycharm 最上面的快速定位标签_受用一生的高效 PyCharm 使用技巧(四)

    原标题:受用一生的高效 PyCharm 使用技巧(四) 大家好,距离最近一篇 PyCharm 使用技巧的文章已经过去一月有余,最近虽然也比较忙,但是一直没忘记录下一些我觉得值得分享的小tip.这个系列 ...

  2. 受用一生的高效 PyCharm 使用技巧(二)pycharm 指定参数运行文件

    https://mp.weixin.qq.com/s/Ii0-qHUXayTPb-K-17hmQQ 在介绍技巧之前,有些话想声明一下,这个系列的一些小技巧,对于一些重试用户来说可能是小 case,如果 ...

  3. 受用一生的高效PyCharm使用技巧(二)

    本文转载自公众号Python编程时光(ID: Python-Time) 今天又来给大家推荐一些我自己的用的小技巧,大家择需所取即可.如果你还没看过,可以下面的传送门,直接访达:受用一生的高效 PyCh ...

  4. 受用一生的高效 PyCharm 使用技巧(六)

    http://www.sohu.com/a/329854019_654419 大家好,今天我又来给大家更新 PyCharm 的使用技巧. 从第一篇开始,一直到本篇,一共更新了6篇文章,每篇 5 个小技 ...

  5. 受用一生的高效 PyCharm 使用技巧(四)

    https://blog.csdn.net/pdcfighting/article/details/93269028 大家好,距离最近一篇 PyCharm 使用技巧的文章已经过去一月有余,最近虽然也比 ...

  6. 受用一生的高效 PyCharm 使用技巧(五)

    大家好,这个系列到今天已经是第五篇了,按照惯例,本次还是分享 5 个. 如果你还未看过前四篇,可以点此进行查看. 受用一生的高效PyCharm使用技巧受用一生的高效PyCharm使用技巧(二)受用一生 ...

  7. 受用一生的高效 PyCharm 使用技巧 !

    大家好,今天我又来给大家更新 PyCharm 的使用技巧. 本系列一共更新了6篇文章,每篇 5 个小技巧,总计 30 个. 这30个使用技巧,全部是我自己在使用 PyCharm 中认为比较有用的,抽取 ...

  8. 受用一生的高效PyCharm使用技巧(三)

    来源 | Python编程时光(ID:Python-Time) 大家好,这是本系列 PyCharm 的高效使用技巧的第三篇.按照惯例,本次还是分享 5 个. 从前两篇的阅读量.赞赏数和在看数来看,大家 ...

  9. 分享受用一生的高效 PyCharm 使用技巧。

    PyCharm 使用技巧 1 受用一生的高效PyCharm使用技巧(一)2 受用一生的高效PyCharm使用技巧(二)3 受用一生的高效PyCharm使用技巧(三) 16. 快速定位到错误行 前几天打 ...

最新文章

  1. laravel 是怎么做到运行 composer dump-autoload 不清空 classmap 映射关系的呢?
  2. 程序员大牛必备的装逼神器
  3. cli3 px转rem适配移动端_Vue:将px转化为rem,适配移动端
  4. farbox editor是个好东西
  5. ubuntu 14.04安装chrome浏览器
  6. eclipse安装lombok插件 ,但是:lombok注解不起作用(亲测有效!)
  7. bzoj4788: [CERC2016]Bipartite Blanket
  8. bzoj 2631: tree
  9. 详解协方差与协方差矩阵计算
  10. GeoQuiz初体验
  11. 修改mongodb oplog size
  12. postman本地测试post接口
  13. 用php怎样将图片gif转化为jpg
  14. Base64 编码的特征
  15. 信息系统项目管理师考试是自学好还是找培训好?
  16. 计算机吉祥如意制作贺卡作业,贺卡制作教案
  17. MSP430C语言编程技巧,如何提高MSP430 C语言编程效率
  18. 电商网站的大数据分析统计平台
  19. html设置flash自适应,SWF自适应布局技巧 (Rapid Flash Development)快速Flash开发
  20. ffmpeg调整视频时长

热门文章

  1. 聊一聊双十一背后的技术 - 不一样的秒杀技术, 裸秒
  2. elasticsearch按照配置时遇到的一些坑 [Failed to load settings from [elasticsearch.yml]]
  3. 一个关于php使用pdo方式进行数据库连接和处理的类
  4. 如何在Linux上安装Composer
  5. Git强制覆盖还原本地救火命令
  6. php round函数输出不对_PHP常量
  7. 微信小程序开发打开另一个小程序的实现方法
  8. win上mysql忘记root密码_MySQL数据库之windows下mysql忘记root密码的解决方法
  9. 2012服务器文件加密,Windows Server 2012安全方面的改变_服务器评测与技术-中关村在线...
  10. linux如何编译php扩展,linux环境下编译php扩展