受用一生的高效PyCharm使用技巧(二)
本文转载自公众号Python编程时光(ID: Python-Time)
今天又来给大家推荐一些我自己的用的小技巧,大家择需所取即可。如果你还没看过,可以下面的传送门,直接访达:受用一生的高效 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
级别的即可。同样一段代码,效果如下,干净了很多。

(本文为 AI大本营转载文章,转载请微信联系原作者)
◆
实习生招募
◆
推荐阅读:
Python超越Java,Rust持续称王!Stack Overflow 2019开发者报告
科大讯飞刷新纪录,机器阅读理解如何超越人类平均水平?技术头条
12个案例教你用Python玩转数据可视化
抵制996!Python之父发声背后,这个社区一呼百应!
刘强东割袍弃兄弟,马爸爸醉心 996
996.ICU 下被过度消费的程序员,还配享受生活吗?
漫画:图的 “最短路径” 问题 | 技术头条
4000万假币流入波场, 发生在凌晨的BTT假币攻击事件始末及细节披露
刺激!我31岁敲代码10年,明天退休!
❤点击“阅读原文”,查看更多精彩文章。
相关文章:

【GStreamer】基本概念及安装
一、参考网站 官方主页 https://gstreamer.freedesktop.org/ 官方手册 https://gstreamer.freedesktop.org/data/doc/gstreamer/ 官方教程: https://gstreamer.freedesktop.org/documentation/tutorials/index.html 官方基础教程 https://gstreamer.freedesktop.org/docum…

python学习day3
1丶 用户先进行登陆如果用户名在文件中且用户密码也正确就登陆成功调用购物车函数,如果用户用户名输入正确密码错误,提示用户密码错误且重新输入,如果用户 输入用户名不存在,提示用户是否创建该用户,调用注册函数。 1.…

Visual Studio 2010构建Web浏“.NET研究”览器应用程序
2001年,我使用C#中的WebBrowser ActiveX控件编写了我的第一个应用程序,点此阅读,Kapil Sony写了一篇文章介绍了C# 2.0中上海企业网站制作的WebBrowser控件,每一次.NET新版本发布,控件和功能都会发生一些变化࿰…

如何通过结构化智能体完成物理构造任务?| 技术头条
作者 | Victor Bapst, Alvaro Sanchez-Gonzalez,Carl Doersch, Kimberly L. Stachenfel译者 | Linstancy编辑 | 一一出品 | AI 科技大本营(ID:rgznai100)摘要物理构造 (physical construction) 是根据物理动力学原理构造带有一些功能的物体的能力&#x…

【GStreamer】gstreamer工具详解之:gst-launch-1.0
一、gst-launch-1.0 1、简介: gst-launch-1.0构建和运行基本GStreamer管道的工具 官网:https://gstreamer.freedesktop.org/documentation/tools/gst-inspect.html?gi-language=c 命令格式: gst-launch-1.0 [OPTIONS] PIPELINE-DESCRIPTION2、OPTIONS参数选项: –help…

WPF查找子控件和父控件方法
原文:WPF查找子控件和父控件方法public List<T> GetChildObjects<T>(DependencyObject obj, string name) where T : FrameworkElement{DependencyObject child null;List<T> childList new List<T>();for (int i 0; i < VisualTreeHelper.GetCh…

ARP(Accounting Resource Planning)项目感想
ARP是Accounting Resource Planning(会计资源计划)的简称。转载于:https://blog.51cto.com/lya041/690079

【GStreamer】gstreamer工具详解之:gst-inspect-1.0
二、gst-inspect-1.0 1、简介 gst-inspect-1.0 打印插件列表、指定插件或指定元素的信息 2、命令格式: gst-inspect-1.0 [OPTION...] [PLUGIN|ELEMENT]3、OPTION参数选项: --help --gst-info-mask=FLAGS 设置GStreamer信息标志?? -a, --print-all 打印所有插件和元…

心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!
众所周知,黑洞照片已经朋友圈刷屏了,可你也许不知道这张照片背后的一个故事。 译者 | Linstancy、Major 编辑 | 琥珀 出品 | AI科技大本营(公众号ID:rgznai100) 近日,由天文学家公布的人类首张黑洞照片引…

Redis和Memcache的区别是什么
Redis和Memcache都是内存数据库,但它们之间还是有区别的,跟着ytkah看看Redis和Memcache的区别吧 Redis 支持多种数据结构,如string,list,dict,set,zset,hyperloglog 单线程请求,所有命令串行执行,并发情况下不需要考虑…

windows加载符号小计
1、如果当前并没有设置符号路径和符号服务器,且当前正在调试, 则需要设置符号服务器和路径后,重新调试生效 2、如果当前有些pdb没有加载,因为这些pdb放在其他路径了,未加载,当把pdb拷到程序启动目录时&…

谈谈Python那些不为人知的冷知识(一)
本文转载自公众号Python编程时光(ID:Python-Time)小明在日常Code中遇到一些好玩,冷门的事情,通常都会记录下来。现在已经积攒了一些了,最近打算整理一波,发出来给大家补补。一篇只分享五个,有时…

【GStreamer】gstreamer工具详解之:ges-launch-1.0
三、ges-launch-1.0 1、简介 ges-launch-1.0:视频裁剪编辑,GStreamer编辑服务原型工具 详见官网:https://gstreamer.freedesktop.org/documentation/tools/ges-launch.html?gi-language=c#mandatory-arguments1 ges-launch-1.0 创建多媒体时间线并将其回放,或将其呈现为…

三大软件公司争霸赛区块链
导语:\\区块链技术发展到今天,区块链的扩容、吞吐量、运维弹性(Operational Resilience)、安全性、企业支持和Token管理等挑战,已成为区块链进一步发展绕不开的技术问题。\\突破这些现实技术挑战,不仅构能建…

【系列索引】结合项目实例 回顾传统设计模式 打造属于自己的模式类系列
网上设计模式的文章很多 虫子就不再和大家扯一些没有营养的理论 开此系列博文 一方面因为自己颓废了大半年 趁此机会回顾一下 另一方面希望能够帮助新人走出设计模式的误区, 如何做好设计模式 1.在发掘新的模式之前,必须熟悉理解现有的模式。许多模式看起来像是全新…

【GStreamer】gstreamer工具详解之:gst-discoverer-1.0
四、gst-discoverer-1.0 1、简介 gst-discoverer-1.0用于显示文件元数据和流信息,它可以运行在单独的文件或整个目录(递归到子目录中)。 2、命令格式: gst-discoverer-1.0 FILE|DIRECTORY|URI [FILE2|DIRECTORY2|URI2]选项详解 帮助选项 -h, --help Show help options…

一道简约而不简单的算法题——数据流的中位数 | 附动画解析
作者 | 程序员小吴转载自微信公众号(ID:CXYxiaowu)题目来源于 LeetCode 上第 295 号问题:数据流的中位数。难度级别为 Hard,目前通过率为 33.5% 。题目描述中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中…

HBase安装与命令行操作
2019独角兽企业重金招聘Python工程师标准>>> HBase简介 基于Hadoop的NoSql数据库,适合存储半结构化、非结构化的稀疏数据,提供增删改查能力。因为其底层是hdfs,所以具有存储海量数据,高容错,高可用等特点&a…

zip/unzip 命令
zip 命令 功能说明:压缩文件。语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]补充说明…

《App架构师实践指南》:移动开发的进阶指南
文章主要内容:什么是 app 架构师这本书主要内容读完感受什么是 App 架构师成为“架构师”是许多程序员的梦想,当然也包括我,在工作的几年里,我见过很多架构师,他们在设计某个大型系统时具备很大的话语权,可…

FoveaBox:目标检测新纪元,无Anchor时代来临 | 技术头条
作者 | CV君转载自我爱计算机视觉(ID:aicvml)目标检测的任务是“分类”并从图像中“定位”出物体,但长久以来,该领域的工作大多是这样:生成可能包含目标的区域,然后在该区域提取特征并分类。显然࿰…

【Ubuntu】安装中文输入法、终端不支持中文的解决方法
一、中文输入法安装 1、安装汉语语言包 sudo apt install fcitx sudo apt install language-pack-zh-hans2、安装google拼音输入法 sudo apt install fcitx-googlepinyin安装完毕后,重启或者退出登陆 3、安装sun-pinyin输入法 sudo apt install fcitx-sunpinyi…

CCNA 第一章 网际互联
第一章 网际互联 路由器知识点: 1、默认时,路由器不转发任何广播包和组播包。 2、路由器使用逻辑地址,逻辑地址在网络层的包头中,用来决定将包转发到的下一跳路由器。 3、路由器可以使用管理员创建的访问表来控制被允许进入或流出…

【Cmake】执行cmake命令时报错:No XSLT processor found
一、问题描述 在ubuntu中,在生成Doc(文档)中,执行cmake命令时报错:No XSLT processor found 二、原因查找 google该错误信息,原因是确实ubuntu中没有安装 xsltproc 三、解决方法 安装 xsltproc sudo apt install xsltproc四…

一张“黑洞”需要拍两年?有了它或许就不会让大家等那么久了
只闻其名,不见其形,从小听到大的”黑洞“,终于让我们在有生之年见到了它的真容,只能说幽暗的宇宙美丽也调皮,长久以来人类关于黑洞的探索,在这一刻终于得到影像印证。相信很多人心中都有一个疑惑࿰…

如何在一场面试中展现你对Python的coding能力?| 技术头条
点击上方↑↑↑蓝字关注我们~作者 | wLsq 来源 | Python数据科学(ID:PyDataScience)如果你已经通过了招聘人员的电话面试,那么下面正是该展现你代码能力的时候了。无论是练习,作业,还是现场白板面试,这都是…

Django web : CSRF verification failed. Request aborted.
错误标题:CSRF verification failed. Request aborted. 错误描述: HelpReason given for failure:CSRF cookie not set.In general, this can occur when there is a genuine Cross Site Request Forgery, or when Djangos CSRF mechanism has not been …

分享一个PC端六格密码输入框写法
如图。我们一般做商城类的项目不免会用到支付密码输入框,我研究了下并决定发上来,也当作是自己成长路上的一点小小的记录。本次介绍的是基于vue的项目 html: <template><div classam_payPwd :id"ids_${id}"><input …

【数据库】sqlite中PRAGMA命令说明
关于sqlite中PRAGMA的说明网上已经有很多了,这里不再复制粘贴,只把内容最全的网址连接记录一下: 官网说明(英文):https://sqlite.org/pragma.html 中文翻译,参见博客:https://www.i…

思科交换机各类型中字母的意思?
24TC-L中各字母的意思分别指? 24TT-L中第二个T的意思? 2960和2960G的区别?基中G是什麽意思? F0/1和G0/1区别? 24代表是24个网络接口 第一个T表示TX,也就是所谓RJ-45的类型(指这个24个接口都是RJ-45,若是P的话&#…