装上后这 14 个插件后,PyCharm 真的是无敌的存在

2023-11-09

来源 | Python编程时光

作者 | 写代码的明哥

Key Promoter X

如果让我给新手推荐一个 PyCharm 必装插件,那一定是  Key Promoter X 。

它就相当于一个快捷键管理大师,它时刻地在:

  • 教导你,当下你的这个操作,应该使用哪个快捷操作来提高效率?

  • 提醒你,当下你的这个操作,还没有设置快捷键,赶紧设置一个?

有了  Key Promoter X,你很快就能熟练地掌握快捷键,替代鼠标指日可待。

比如我使用鼠标点开 Find in Path,它就会在右下角弹窗提示你该用哪个快捷键。


Vim in PyCharm

在大多数场景之下,使用鼠标的效率和精准度,是远不如键盘快捷键的(前提是你已经相当熟练的掌握了快捷键),这个你得承认吧。

Vi 可以满足你对文本操作的所有需求,比可视化界面更加效率,更加 geek。如果你和我一样,是忠实的 vim 粉。在安装完 Pycharm 完后,肯定会第一时间将 ideaVim 这个插件也装上,它可以让我们在 Pycharm 中 使用 vim 来编辑代码。

安装方法如下,安装完后需要重启 Pycharm 生效。

Markdown in PyCharm

富文本排版文档是一件非常痛苦的事情 ,对于程序员写文档,最佳的推荐是使用 Markdown ,我所有的博客日记都是使用 Markdown 写出来的。

从 Github下载的代码一般也都会带有README.md文件,该文件是一个Markdown格式的文件。

PyCharm是默认没有安装Markdown插件的,所以不能按照Markdown格式显示文本,显示的是原始文本。

因此,如果要在 PyCharm 中阅读 Markdown 文档,可以装一下 Markdown support 这个插件。

安装的方法有两种:

1、第一种,最方便的,就是你打开一个 MD 的文档,PyCharm 就会提示你安装它。

2、从插件商店中搜索安装。

效果如下

Jupyter Notebook in PyCharm

使用 Jupyter 之前 ,先要安装它

$ pip install jupyter

然后按照下图指示新建一个 Notebook ,就可以开始运作了。

这个界面感觉和 Jupyter 的风格不太符

但是使用上是没有什么区别的,记住三个快捷键就好(下面指的是 Mac 上的,Windows 上的有所不同)

  • Ctrl+Enter:运行该 cell

  • Option + shift + Enter:调试该 cell

  • Shift + Enter:插入一个新的 cell

只要你安装了 Jupyter 后,你使用 Python Console 也会自动变成 Jupyter 的模式

Regex Tester in PyCharm

Regex Tester是PyCharm的第三方插件,可以测试正则表达式。

按照下图入口,安装 Regex Tester 插件:

安装完成后,无需重启 PyCharm ,点击  PyCharm  界面左下方的小矩形按钮,就能找到 Regex Tester 选项。

点击进入后,就出现了如下界面。我随手写了个匹配手机号码的正则(不一定准确),匹配到的字符串背景会被高亮。右上方还有一些选项如大小写敏感,多行模式等,可根据需要进行选择。Regex Tester 还提供了Split,Replace功能等。

使用效果如下:

Use Bash in Windows

在 Windows 上的 cmd 命令和 Linux 命令有不少的差异,比如要列出当前目录下的所有文件,Windows 上是用 dir ,而 Linux 上则是用 ls -l 。

对于像我这样熟悉 Linux 的开发者来说,Windows 的 那些 CMD 命令带来的糟糕体验是无法忍受的。

在弹出的 Bash 窗口,你可以敲入你想使用的 Linux 命令,是不是舒服多了。

Auto PEP8 in PyCharm

pep8 是Python 语言的一个代码编写规范。如若你是新手,目前只想快速掌握基础,而不想过多去注重代码的的编写风格(虽然这很重要),那你可以尝试一下这个工具 - autopep8

首先在全局环境中(不要在虚拟环境中安装),安装一下这个工具。

$ sudo pip install autopep8

然后在 PyCharm 导入这个工具,具体设置如下图

Name: AutoPep8Description: autopep8 your codeProgram: autopep8Arguments: --in-place --aggressive --aggressive $FilePath$Working directory: $ProjectFileDir$Output filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

我随意写了一段不符合 pep8 规范的代码。

点击右键,选择 External Tools -> AutoPep8

看一下效果,还是挺明显的。

你可能会说,Pycharm 本身就自带这个功能,快捷键 Command+Option+L ,就可以实现一键pep8了。你可以对比一下,Pycharm 自带的代码 pep8 化功能 并没有像这个autopep8 来得彻底。我相信你最终的选择肯定是后者。

Test RESTful Web Service

PyCharm 的 Test RESTful Web Service工具提供了RESTful接口测试界面,如下图所示,提供了get、post,put等http方法,其中的Request子界面headers,Parameters,Body等功能,Response子界面用于显示返回值,Response Headers用于显示返回的消息头。

为了演示,我先使用 Flask 写一个 HTTP 接口

from flask import Flask, request


app = Flask(__name__)




@app.route('/hello')
def index():
    name = request.args.get('name')
    return '你好,' + name


if __name__ == '__main__':
    app.run()

并运行它开启服务。

访问地址是:http://127.0.0.1:5000/

通过下图方式打开 Test RESTful Web Service

会出现如下界面,在红框处填写如下信息

然后点击最左边的运行按钮,即可向服务器发送 http 请求。

Execute Selection in Console

当你想写一段简单的测试代码时,或许你会这样子

  1. 使用 Python Shell 直接写。缺点是没有自动补全。

  2. 在 PyCharm 中新开一个文件。缺点是要新创建一个文件,完了后还要删除。

今天再给大家介绍一种新的方法,可以完全避开上面两种方式的缺点。

那就是 Execute Selection in Console,可以说是 Run in Anywhere.

只要在当前文件中,写好代码,然后光标选择后,右键点击 Execute Selection in Python Console或者 使用快捷键 option + shift + E (windows 上是 alt + shift + E)。

接着 PyCharm 就会弹出一个 Python Console 窗口,然后运行你所选择的代码。

可以发现其中的一个亮点,就是使用这种方法,PyCharm 会自动帮我们处理好缩进(我们选择时,前面有缩进,可是在执行时,会自动去掉前面多余的缩进)

CodeGlance

如果你曾使用过 Sublime Text,切换到其他代码编辑器,或多或少会有些不习惯,因为很少有编辑器会像 Sublime 那样自带一个预览功能的滚动条。

在 PyCharm 中,就没有解决不了的问题,如果有,那么就装个插件。

要想在 PyCharm 中使用这个预览滚动条,只要装上 CodeGlance 这个插件。使用效果如下

Chinese Plugin

经常听到很多初学者抱怨说,PyCharm 怎么是全英文的?学起来好难啊。

在以前,我会跟他们说,学习编程语言,英文是一项非常重要的能力,千万不能惧怕它,逃避它,而要是去学习它,适应它,如果连个 IDE 都适应不了,那就别学编程了。

而现在,JetBrains 官方自己出了汉化插件,名字就叫:chinese,在插件市场里一搜,排名第一便是它,下载量已经 40 万,对比排名第二的民间汉化插件,简直不是量级的。

点击  INSTALL 安装后,会提示你进行重启,才能生效。

重启完成后,展现在我们面前的是一个既熟悉又陌生的界面,所有的菜单栏全部变成了中文。

点进设置一看,可以说基本实现了汉化,只剩下一小撮的英文(难道是因为这些词保留英文会比翻译后更容易理解吗?就像 socket 和套接字一样。),不过个人感觉完全不影响使用了。

Profile in PyCharm

在 Python 中有许多模块可以帮助你分析并找出你的项目中哪里出现了性能问题。

比如,常用的模块有 cProfile,在某些框架中,也内置了中间件帮助你进行性能分析,比如 Django ,WSGI。

做为Python 的第一 IDE, PyCharm 本身就支持了这项功能。而且使用非常方便,小白。

假设现在要分析如下这段代码的性能损耗情况,找出到底哪个函数耗时最多

import time


def fun1():
    time.sleep(1)


def fun2():
    time.sleep(1)


def fun3():
    time.sleep(2)


def fun4():
    time.sleep(1)


def fun5():
    time.sleep(1)
    fun4()


fun1()
fun2()
fun3()
fun5()

点击 Run -> Profile '程序' ,即可进行性能分析。

运行完毕后,会自动跳出一个性能统计界面。

性能统计界面由Name、Call Count、Time(ms)、Own Time(ms) ,4列组成一个表格,见下图。

  1. 表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)。

  2. 点击表头上的小三角可以升序或降序排列表格。

  3. 在Name这一个列中双击某一行可以跳转到对应的代码。

  4. 以fun4这一行举例:fun4被调用了一次,运行时间为1000ms,占整个运行时间的16.7%

点击 Call Graph(调用关系图)界面直观展示了各函数直接的调用关系、运行时间和时间百分比,见下图。

右上角的4个按钮表示放大、缩小、真实大小、合适大小;

  1. 箭头表示调用关系,由调用者指向被调用者;

  2. 矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数;

  3. 矩形中间显示运行时间和时间百分比;

  4. 矩形的颜色表示运行时间或者时间百分比大小的趋势:红色 > 黄绿色 > 绿色,由图可以看出fun3的矩形为黄绿色,fun1为绿色,所有fun3运行时间比fun1长。

  5. 从图中可以看出Test.py直接调用了fun3、fun1、fun2和fun5函数;fun5函数直接调用了fun4函数;fun1、fun2、fun3、fun4和fun5都直接调用了print以及sleep函数;整个测试代码运行的总时间为6006ms,其中fun3的运行时间为1999ms,所占的时间百分比为33.3%,也就是 1999ms /  6006ms = 33.3%。

Json Parse in PyCharm

在开发过程中,经常会把校验一串 JSON 字符串是否合法,在以前我的做法都是打开 https://tool.lu/json/ 这个在线网站,直接美化来校验,只有 JSON 格式都正确无误合法的,才能够美化。

img

直到后来发现在 PyCharm 有一个插件专门来做这个事,那就是 JSON Parser,在插件市场安装后,重启 PyCharm ,就能在右侧边栏中看到它

img

Inspect Code in PyCharm

对于编译型的语言,如 Java,需要将代码编译成机器可识别的语言才可运行,在编译过程中,就可以通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷。这个过程叫做静态代码分析检查。

那对于 Python 这种解释型的语言来说,代码是边运行边翻译的,不需要经过编译这个过程。很多肉眼无法一下子看出的错误,通常都是跑一下(反正跑一下这么方便)才能发现。

由于Python 运行是如此的方便,以至于我们都不太需要关注静态分析工具。

但也不是说,静态分析工具完全没有用武之地,我认为还是有。

如果你的编码能力还没有很成熟,代码中可以有许许多多的隐藏bug,由于 Python 是运行到的时候才解释,导致一次运行只能发现一个错误,要发现100个bug,要运行100次,数字有点夸大,其实就是想说,如果这么多的错误都能通过一次静态检查发现就立马修改,开发调试的效率就可以有所提升。当然啦,并不是说所有的错误静态分析都能提前发现,这点希望你不要误解。

做为 Python 最强 IDE,PyCharm本身内置了这个功能,不需要你安装任何插件。

你只需要像下面这样点击项目文件夹,然后右键,选择 Inspect Code,就可以开启静态检查。

我对开源组件 nova 的静态检查发现,其有不规范的地方有数千处。


更多精彩推荐
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

装上后这 14 个插件后,PyCharm 真的是无敌的存在 的相关文章

  • Scrapy 在抓取一长串 url 时陷入困境

    我正在抓取一个大的 url 列表 1000 左右 并且在设定的时间后 爬虫程序会以 0 页 分钟的速度爬行 爬行时问题总是出现在同一个位置 url 列表是从 MySQL 数据库检索的 我对 python 和 scrapy 相当陌生 所以我不
  • 如何在 Python 中使用 .format() 打印“for”循环中的列表?

    我是 Python 新手 我正在编写一段非常简单的代码 使用 for 循环打印列表的内容 format 我想要如下的输出 但我收到此错误 names David Peter Michael John Bob for i in names p
  • Python - 定义常量列表或字典的最佳/最简洁的方法

    第一次使用堆栈溢出 我很高兴来到这里 简介 我最近开始了 Python 编程世界的神奇冒险 我喜欢它 现在 在我从 C 语言的尴尬过渡中 一切都进展顺利 但我在创建与标头文件 h 同义的内容时遇到了麻烦 问题 我有中等大小的字典和列表 大约
  • 代码 zip( *sorted( zip(units, error) ) ) 的作用是什么?

    对于我的申请units and errors始终是数值列表 我尝试用谷歌搜索每个部分的作用 并找出了 zip 的第一部分 它似乎 ziped list zip units errors 只需将单位和误差配对即可生成一个列表 如下所示 uni
  • 尽管 ioff() 和 matplotlib.use('Agg'),Pyplot“无法连接到 X 服务器 localhost:10.0”

    我有一段代码 它被不同的函数调用 为我执行一些计算 然后将输出绘制到文件中 鉴于整个脚本可能需要一段时间才能运行更大的数据集 并且由于我可能想在给定时间分析多个数据集 所以我开始它screen然后断开连接并关闭我的腻子会话 并在第二天再检查
  • 预处理 csv 文件以与 tflearn 一起使用

    我的问题是关于在将 csv 文件输入神经网络之前对其进行预处理 我想使用 python 3 中的 tflearn 为著名的 iris 数据集构建一个深度神经网络 数据集 http archive ics uci edu ml machine
  • 熊猫 style.background_gradient 忽略 NaN

    我有以下代码来转储数据帧results到 HTML 表格中 这样的列TIME FRAMES根据seaborn 的颜色图进行着色 import seaborn as sns TIME FRAMES 24h 7d 30d 1y Set CSS
  • 如何在 sqlalchemy 中创建基于文字的查询?

    我创建了一个函数来创建表达式 def test operator1 operation operator2 return literal column operator1 op operation operator2 现在当我用 test
  • Tensorflow 到 ONNX 的转换

    我目前正在尝试转换我使用本教程创建的已保存 且正在工作 的 pb 文件 https github com thtrieu darkflow https github com thtrieu darkflow 到 onnx 文件中 我目前正在
  • 如何使用lxml和python更新xml文件?

  • 替换 pandas 数据框中的点

    我有一个如图所示的数据框 数字实际上是对象 正在做df treasury rate pd to numeric df treasury rate 可预见的炸弹 然而 做df replace np nan 似乎没有摆脱这个点 所以我很困惑 有
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • 如何在 scikit-learn 的 SVM 中使用非整数字符串标签? Python

    Scikit learn 具有相当用户友好的用于机器学习的 python 模块 我正在尝试训练用于自然语言处理 NLP 的 SVM 标记器 其中我的标签和输入数据是单词和注释 例如 词性标记 而不是使用双精度 整数数据作为输入元组 1 2
  • Celery 设计帮助:如何防止并发执行任务

    我对 Celery AMQP 相当陌生 正在尝试提出一个任务 队列 工作人员设计来满足以下要求 我有多种类型的 每用户 任务 例如 TaskA TaskB TaskC 这些 每用户 任务中的每一个都为系统中的一个特定用户读取 写入数据 因此
  • 安装python启动文件

    我如何安装pythonstartup文件 以便它在命令上运行 例如python myfile py 我尝试将其安装到我的 home myuserUbuntu的目录 但它说我没有足够的权限 此外 不同的地方交替说它应该全部大写或全部小写 前面
  • 在 Django 中翻译文件时的 Git 命令

    我在 Django 中有一个现有的应用程序 我想在页面上添加翻译 在页面上我有 trans Projects 在 po 文件中我添加了 templates staff site html 200 msgid Projects msgid P
  • 使用多行选项和编码选项读取 CSV

    在 azure Databricks 中 当我使用以下命令读取 CSV 文件时multiline true and encoding SJIS 似乎编码选项被忽略了 如果我使用multiline选项 Spark 使用默认值encoding那
  • 在 Mac (Catalina) 上安装 PyGame 时出错 [重复]

    这个问题在这里已经有答案了 我一直在尝试将 PyGame 安装到 Catalina 上的 Mac 上 但不知道如何安装 我收到的错误消息是 SystemExit error command gcc failed with exit stat
  • 有效积累稀疏 scipy 矩阵的集合

    我有一个 O N NxN 的集合scipy sparse csr matrix 每个稀疏矩阵都有 N 个元素集 我想将所有这些矩阵加在一起以获得一个常规的 NxN numpy 数组 N 约为 1000 矩阵内非零元素的排列使得所得总和肯定不
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参

随机推荐

  • linux 全局查找文件命令

    find name xxx aaa
  • android bitmap面试题,Android面试Android进阶(十四)-Bitmap相关问题

    问 drawable和mipmap的区别是什么 答 根据官方说明 应用图标的图片资源存放在mipmap系列文件夹中 而其余图片存放在drawable系列文件夹中 1 mipmap纹理映射技术会将资源缩放到设备分辨率大小 drawable会将
  • Struts2框架xml验证

    struts2框架验证 xml方式 首先要从页面中获取对应的标签name属性的值 在动作类action中声明同名的属性 提供get和set方法 创建一个xml格式验证文件 命名方式 ActionClassName validation xm
  • vue2 + antd1.7.8 和 vue3 + antd2.2.8表单动态添加删除表单项

    1 vue2 antd 1
  • 英文投稿的一点经验【转载】

    英文投稿的一点经验 转载 1 首先一定要注意杂志的发表范围 超出范围的千万别投 要不就是浪费时间 另外 每个杂志都有他们的具体格式要求 一定要按照他们的要求把论文写好 免得浪费时间 前些时候 我的一个同事向一个著名的英文杂志投稿 由于格式问
  • 【Android App】实战项目之仿微信的私信和群聊App(附源码和演示视频 超详细必看)

    需要全部代码请点赞关注收藏后评论区留言私信 手机最开始用于通话 后来增加了短信功能 初步满足了人与人之间的沟通需求 然而短信只能发文字 于是出现了能够发图片的彩信 但不管短信还是彩信 资费都太贵了 令人惜墨如金 后来移动公司推出飞信 它支持
  • 不同设备屏幕尺寸和DPR适配

    为什么需要适配 目前市面上设备屏幕属性十分多样化 宽度和DPR并不一致 而作为设计和前端开发 无法为每个尺寸的设备单独设计一套UI并将其转为前端代码 这不现实 所以我们需要一套方案来将一套设计稿完美呈现在不同尺寸的设备上 设备的多样性不止体
  • Vue的双向绑定

    看过无数遍 还是说不清楚 来个说人话的加深印象 首先再vue初始化的时候 就对data数据进行了劫持监听 其中就是监听器 Observe 用来监听所有属性 若有属性发生变化就需要告诉订阅者Watcher看是否需要更新 因为订阅者Watche
  • [Matlab科学计算] 欧拉角和坐标变换个人总结

    问题由来 在计算铁磁材料多晶体的有效模量时 需要考虑晶粒在多晶体中的方向分布 一般用三个欧拉角来表示晶粒在多晶体中的方向 用方向分布函数来表示某个方向的分布密度 基于此 迫使我要掌握欧拉角 但是在阅读众多教材和博客文章中发现 大家对欧拉角的
  • JAVA对象在内存中运行机制

    在方法中创建一个对象时 在方法栈中只存有对象在堆中的地址 对象本身存放在堆内存中 类中的非static成员属于对象在堆中被创建 类中的static成员属于类并在运行类时存放在永生代中
  • PV、EV、AC、BAC、EAC、ETC等的含义及计算公式

    PV EV AC BAC EAC ETC等计算公式含义 PV Planned Value 计划值 应该完成多少工作 按照计划截止目前应该花费的预算 AC Actual Cost 实际成本 完成工作的实际成本是多少 截止目前实际的花费 EV
  • multiple definition of(变量或者函数)

    今天在公司写项目的时候 遇到如下错误 半个小时了 没看出来问题出在哪里 我看了好几遍代码 确认没有重定义 后来问旁边的大牛 才发现自己手误 错吧 include area h 写成 include area c 千万得小心啊 有时候心里想的
  • Qt + C++编程问题系列1:解决因this指针被析构导致的崩溃问题<初识enable_shared_from_this类及使用智能指针的好处>

    这里是目录 前言 原因 解决办法 boost和C 11 结尾 前言 在基于Qt和C 开发的程序运行的时候 程序突然发生崩溃 在查找原因的时候花费的时间比较多 情形一般情况遇不到 因此写篇博客记录一下 原因 在Qt编程中 很多时候为了不让数据
  • Hive 安装与配置步骤

    Hive 安装与配置步骤 一 下载版本 1 1下载hive 1 2 直接用 wget 下载 1 3 解压 二 配置文件 2 1 修改hive env sh 2 2 修改hive log4j properties 2 3 配置MySQL作为M
  • C++库std::flush介绍

    std flush 介绍 使用场景 示例 调试场景 实时进度指示场景 保证日志完整性场景 介绍 std flush 是C 标准库 中的一个操作符 用于刷新输出流 刷新输出流表示将缓冲区中的数据立即发送到关联的输出设备 例如屏幕或文件 在某些
  • R语言金融分析作业(一)

    1 从WDI分别下载所有国家2016年和2017年GDP数据 1 计算经济增长 2 变成宽数据 library WDI library reshape 在线获取数据 DF lt WDI country all indicator NY GD
  • python导出时序数据精度缺失解决办法(对时序数据重采样)

    源码 import pandas as pd 导入数据 parse dates True 将时间转换成时间类型的索引 df pd read excel D 机器人采集数据样本 xlsx index col 时间 parse dates Tr
  • 七天玩转Redis

    目录 1 搭建环境 2 测试Redis 3 StringRedisTemplate 3 1 介绍 3 2 StringRedisTemplate常用操作 3 3 StringRedisTemplate的使用 4 RedisTemplate
  • Swing开发之JComboBox篇

    JList和ComboBox很相似 因为这两个组件都显示一个项列表 因此 它们都有扩展ListModel接口的模型 而且 这两个组件都有绘制器 这些绘制器通过实现ListCellBenderer接口来绘制列表单元 但是 列表和组合框在施工方
  • 装上后这 14 个插件后,PyCharm 真的是无敌的存在

    来源 Python编程时光 作者 写代码的明哥 Key Promoter X 如果让我给新手推荐一个 PyCharm 必装插件 那一定是 Key Promoter X 它就相当于一个快捷键管理大师 它时刻地在 教导你 当下你的这个操作 应该