PyCharm新手入门
前言
在之前《Python集成开发工具的选择》一文中介绍了python初学者可以使用Jupyter Notebook,Jupyter Notebook简单易用,可以用来练习代码编写,但是实际生产开发环境使用这个工具是远远不够用的,因为实际软件开发中需要软件调试、版本管理、单元测试、软件发布,这些功能Jupyter Notebook所不具备的。今天就介绍一下python开发中最常用的IDE:PyCharm 。它由 JetBrains 开发,功能强大,广泛用于 Python 开发。
一、Pycharm简介
PyCharm 有两个版本一个是免费的社区版,一个是收费的免费企业版,
下图是pycharm社区版和企业收费版的功能的对比。
功能 | 社区版 (Community Edition) | 专业版 (Professional Edition) |
---|---|---|
基本编辑和开发功能 | ✅ | ✅ |
代码补全 | ✅ | ✅ |
调试器和测试运行器 | ✅ | ✅ |
VCS(版本控制)集成 | ✅ | ✅ |
局部历史记录 | ✅ | ✅ |
Python 重构 | ✅ | ✅ |
代码检查和快速修复 | ✅ | ✅ |
Python 控制台 | ✅ | ✅ |
集成终端 | ✅ | ✅ |
Python 解释器配置 | ✅ | ✅ |
Django 支持 | ❌ | ✅ |
Flask 支持 | ❌ | ✅ |
其他 Web 框架支持(如 Pyramid、Web2py) | ❌ | ✅ |
HTML, CSS 和 JavaScript 编辑器 | ❌ | ✅ |
JavaScript 调试器 | ❌ | ✅ |
Live Edit | ❌ | ✅ |
Docker 集成 | ❌ | ✅ |
数据库和 SQL 支持 | ❌ | ✅ |
IPython Notebook 支持 | ❌ | ✅ |
远程开发支持(SSH, Vagrant, WSL) | ❌ | ✅ |
科学工具(如交互式 Python 控制台、科学模式) | ❌ | ✅ |
多框架单元测试支持(pytest, unittest 等) | ✅ | ✅ |
JavaScript、TypeScript 支持 | ❌ | ✅ |
Python Web 框架模板语言支持(如 Jinja2) | ❌ | ✅ |
专业 IDE 功能(如 UML 视图、数据库工具) | ❌ | ✅ |
Anaconda 支持 | ❌ | ✅ |
多语言支持(如 PHP, Ruby, Go, 等) | ❌ | ✅ |
高级调试功能(如 Attach to Process, 多个调试器配置) | ❌ | ✅ |
性能分析(Profiling) | ❌ | ✅ |
对于个人开发者和中小团队,免费的社区版已经够用了。当然你享受更多尊贵的服务而选择付费,也是没人拦着你的。接下来从软件安装、汉化、基础配置、软件调试、git版本管理、单元测试、打包发布等几个方面详细阐述PyCharm 的常用功能。
二、PyCharm安装和汉化
2.1下载PyCharm
官方下载地址:https://www.jetbrains.com/zh-cn/pycharm/download/other.html
我的电脑是windows,就选择下载了windows社区版。
2.2安装PyCharm
2.3软件汉化:
安装后选择路径:File->Settings->Plugins,在以下页面搜索:中文语言包,如下图搜索到的第一个就是汉化包,点击右下【OK】安装即可。
安装完成后,弹出页面点击【Restart】按钮重启即可。
三、基础功能
3.1 编程页面的设置
1. 字体设置
在路径【文件】/【设置】/【编辑器】/【字体】打开设置字体页面。
2. 页面配色
在路径【文件】/【设置】/【编辑器】/【配色方案】打开设置配置颜色方案页面。
3. 文件编码设置
在路径【文件】/【设置】/【编辑器】/【文件编码】打开设置文件编码页面。
建议文件编码统一设置UTF8
3.2 虚拟环境设置
在创建一个新的Python项目时可以根据需要设置虚拟环境,这个虚拟环境即可以选择virtualenv创建的虚拟环境也可以选择conda创建的虚拟环境。当然也可以选择不用虚拟环境,直接用本地python解释器,但是不建议这样做,这样做会给你带来很多麻烦。具体如何创建和使用虚拟环境请参考之前两篇文章《Anaconda的安装和使用》和
《virtualenv和virtualenvwrapper的使用》
以下是用conda创建虚拟项目步骤:
- 创建新的conda环境pycharm,安装3.10版本的python
conda create --name pycharmpython=3.10
- 创建项目
打开【文件】/【创建项目】,配置解释器为刚才创建的名为pycharm的conda环境。
3.3 程序调试
在实际开发过程中,我们会遇到程序有错误(bug)的情况,这个时候我们就需要通过调试找出问题,因为在在调试过程中可以观察程序每个变量在执行过程中的数值变化,通过观察这些数据变化我们就能发现并解决问题。当我们创建完项目后,我们编写一段程序,并用这个程序演示代码的调试过程。这个程序主要功能是在命令行,用户输入一个人的出生日期,程序计算出这个日期出生的人已经活了多少天,还有多少天退休。
代码如下:
from datetime import datetime
def calculate_days_of_life(birth_date, retirement_age=60):"""计算从出生日期到今天活了多少天,以及距离退休还有多少天。:param birth_date: 出生日期,格式为 'YYYY-MM-DD':param retirement_age: 退休年龄,默认为60岁:return: 一个元组,第一个元素是活了多少天,第二个元素是距离退休还有多少天"""# 将字符串日期转换为datetime对象birth_date_obj = datetime.strptime(birth_date, '%Y-%m-%d')# 获取当前日期today = datetime.today()# 计算活了多少天days_lived = (today - birth_date_obj).days# 计算退休日期retirement_date = birth_date_obj.replace(year=birth_date_obj.year + retirement_age)# 如果退休日期小于今天,则认为已经退休if retirement_date < today:days_until_retirement = 0else:# 计算距离退休还有多少天days_until_retirement = (retirement_date - today).daysreturn days_lived, days_until_retirementdef main():# 用户输入出生日期user_birth_date = input("请输入您的出生日期 (格式 YYYY-MM-DD): ")try:# 调用函数并接收结果days_lived, days_until_retirement = calculate_days_of_life(user_birth_date)# 打印结果print(f"您已经出生了 {days_lived} 天。")if days_until_retirement > 0:print(f"您距离退休还有 {days_until_retirement} 天。")else:print("您已经退休了。")except ValueError:print("输入的日期格式不正确,请确保使用 YYYY-MM-DD 格式。")if __name__ == "__main__":main()
这里对新手来讲介绍一下调试的基础操作:
- 调试: 快捷键 Shift+F9
- 断点: 首先介绍调试中断点的概念,断点就是在调试程序时,程序执行会停的点。在程序想要增加断点的地方双击即可,断点可以设置多个。
- 单步执行: 调试时程序按照一行一行执行,单步进入函数内部执行。快捷键是F8
- 断点执行: 调试时程序只在断点的地方停留。快捷键是F9
- 步入: 调试时,如果执行的这行代码有引用其他模块的函数,会进入进入其他模块调试。快捷键是F7
- 步出: 跳出其他模块,重新回到原来的程序执行。快捷键是Shift+F8
3.4 常用快捷键
1. 通用操作
- 打开设置:Ctrl+Alt+S (Windows/Linux),Cmd+ ,(Mac)
- 打开项目:Ctrl+Shift+O(Windows/Linux),Cmd+Shift+O(Mac)
- 切换全屏模式:Ctrl+Shift+F11(Windows/Linux),Cmd+Shift+F11(Mac)
- 最近文件:Ctrl+E(Windows/Linux),Cmd+E(Mac)
2. 编辑操作
- 复制行/选中块:Ctrl+D(Windows/Linux),Cmd+D(Mac)
- 删除行:Ctrl+Y(Windows/Linux),Cmd+Backspace(Mac)
- 移动行/选中块:Shift+Alt+Up/Down(Windows/Linux),Alt+Shift+Up/Down(Mac)
- 展开/折叠代码块:Ctrl+Shift+Plus/Minus(Windows/Linux),Cmd+Plus/Minus(Mac)
3.导航和搜索
- 查找文件:Ctrl+Shift+N (Windows/Linux),Cmd+Shift+O(Mac)
- 查找类:Ctrl+N (Windows/Linux),Cmd+O(Mac)
- 查找方法/函数:Ctrl+Shift+Alt+N (Windows/Linux),Cmd+Shift+Alt+O(Mac)
- 跳转到定义:Ctrl+B 或 Ctrl+Click(Windows/Linux),Cmd+B 或 Cmd+Click(Mac)
- 查找和替换:Ctrl+F(查找),Ctrl+R(替换)(Windows/Linux),Cmd+F(查找),Cmd+R(替换)(Mac)
4.代码辅助
- 代码补全:Ctrl+Space(Windows/Linux),Ctrl+Space(Mac)
- 智能补全:Ctrl+Shift+Space(Windows/Linux),Ctrl+Shift+Space(Mac)
- 快速修复:Alt+Enter(Windows/Linux),Option+Enter(Mac)
- 生成代码(如构造函数、Getter/Setter):Alt+Insert(Windows),Cmd+N(Mac)
5.重构
- 重命名:Shift+F6(Windows/Linux),Shift+F6(Mac)
- 提取变量:Ctrl+Alt+V(Windows/Linux),Cmd+Option+V(Mac)
- 提取方法:Ctrl+Alt+M(Windows/Linux),Cmd+Option+M(Mac)
四、进阶功能
4.1 git版本管理
pycharm已经集成git的版本管理功能,我们可以在pycharm中建立git本地仓库,并将代码托管到github上。
下面介绍pycharm中git的基本使用
1. 添加github账号
打开路径【文件】/【设置】/【版本控制】/【Github】,点击"+"添加github账号。
2. git创建本地仓库
打开路径【版本控制】/【创建Git仓库】
3 git提交代码
4. git推送代码到github
- 命令行添加远程仓库
git remote add origin https://github.com/luohanxi0421/HermeticCode.git
- 推送代码到远程仓库
4.2 实时模版(Live Templates)
实时模板允许你定义和插入可重用的代码片段,通过简单的快捷方式触发。这些代码片段可以包含变量占位符,自动替换为你在插入时指定的值。
1.使用实时模板
- 快捷方式:在编辑器中输入模板的缩写(abbreviation)并按 Tab 键,模板会自动展开为完整的代码片段。
- 例:输入 main 并按 Tab 键,插入一个 Python 的主函数模板:
if __name__ == '__main__':main()
2.实时模板的常用缩写
- main:插入一个 Python 主函数结构。
- def:插入一个函数定义。
- for:插入一个 for 循环。
- if:插入一个 if 语句。
3.创建和管理实时模板
打开实时模板设置:【文件】/【设置】/【编辑器】/【实时模版】
创建新模板:
在 Python 模板组下,点击 +,选择 实时模板。
配置模板:
Abbreviation:abc
Description:创建类的代码
Template Text:
class $NAME$:def __init__(self, $PARAM$):self.$PARAM$ = $PARAM$ def $METHOD$(self):pass
模版文本中像这种 P A R A M PARAM PARAM用两个$符包裹的就是变量,可以在编辑变量中设置他的值。
这里表达式可以动态给变量复制,比如表达式选择date(),$NAME$会替换为添加时的日期,默认值是静态赋值,这两个有一个赋值即可,两者都空着,生成代码时,变量占据的位置也同样空着。
相关文章:

PyCharm新手入门
前言 在之前《Python集成开发工具的选择》一文中介绍了python初学者可以使用Jupyter Notebook,Jupyter Notebook简单易用,可以用来练习代码编写,但是实际生产开发环境使用这个工具是远远不够用的,因为实际软件开发中需要软件调试…...

[Linux] 系统管理
全局配置文件 用户个性化配置 配置文件的种类 alias命令和unalias命令 进程管理 进程表...

Xcode无法使用设备:Failed to prepare the device for development
问题: Xcode无法使用设备开发,失败报错如下: Failed to prepare the device for development. This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need…...
AWS无服务器 应用程序开发—第十二章 AWS Step Functions
AWS Step Functions 是一种服务,用于协调和管理分布式应用程序中的多个 AWS 服务和 Lambda 函数。它通过创建有状态的工作流来简化和自动化应用程序的各种工作流程,使得复杂的业务逻辑可以以可管理和可调试的方式实现。 主要功能和特点: 状态机定义: 使用 JSON 或 Amazo…...
Linux tcpdump详解
目录 前言:BPF伯克利包过滤器介绍1.BPF语法(tcpdump语法)2.逻辑运算符3.常用的原子条件1. 协议相关的原子条件2. 地址相关的原子条件3. 端口相关的原子条件4. 网络层和链路层(mac地址)原子条件5. 广播和多播6. VLAN 相关的原子条件…...

vue2实现打印功能(vue-print-nb的实现)
实现效果: 引入插件 npm install vue-print-nb --save import Print from vue-print-nb Vue.use(Print) <div ref"printTest" id"printTest"><div style"text-align: center; page-break-after: always"><div style…...

某全国增值税发票查验平台 接口JS逆向
注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 本文的验证码网址如下,使用base64解码获得 aHR0cHM6Ly9pbnYtdmVyaS5jaGluYXRheC5nb3YuY24v 这个平台功能没什么好说的,就是发票查验&am…...

前端练习小项目——视觉冲击卡片
前言: 前言:在学习完HTML和CSS之后,我们就可以开始做一些小项目了,本篇文章所讲的小项目为——视觉冲击卡片 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 先让我们看一下效果&a…...

从0到1:手动测试迈向自动化——手机web应用的自动化测试工具
引言: 在当今移动互联网时代,手机web应用已经成为人们生活中不可或缺的一部分。为了保证手机web应用的质量和稳定性,自动化测试工具变得十分重要。本文将介绍手机web应用自动化测试工具的选择和使用,提供一份超详细且规范的指南&a…...

磁盘未格式化:深度解析、恢复策略与预防措施
一、磁盘未格式化的定义与现象 在计算机存储领域,磁盘未格式化通常指的是磁盘分区或整个磁盘的文件系统信息出现丢失或损坏的情况,导致操作系统无法正确读取和识别磁盘上的数据。当尝试访问这样的磁盘时,系统往往会弹出一个警告框࿰…...

Qwen2在Java项目中如何实现优雅的Function_Call工具调用
在当今AI技术飞速发展的背景下,大语言模型如Qwen2和GLM-4凭借其强大的语言处理能力,在诸多领域展现出了巨大的潜力。然而,大模型并非全知全能,它们在处理特定任务时,尤其是在需要与外部系统交互或执行具体功能时&#…...

【SPIE独立出版 | 往届均已完成EI检索】2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024)
2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024) 2024 International conference on Cloud Computing, Performance Computing and Deep Learning *CCPCDL往届均已完成EI检索,最快会后4个半月完成! 一、重要信息 大会官网:www…...

MYSQL 四、mysql进阶 4(索引的数据结构)
一、为什么使用索引 以及 索引的优缺点 1.为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。Mysql中也是一样的道理,进行数…...

360vr党建线上主题展立体化呈现企业的文化理念和品牌形象
在现代科技的引领下,艺术与VR虚拟现实技术相融合必将成为趋势,深圳VR公司华锐视点荣幸地推出VR艺术品虚拟展厅,为您带来前所未有的艺术观赏体验。体验者足不出户即可置身于一个充满创意与灵感的虚拟艺术空间。 我们深入了解每一位客户的需求与…...

docker通过容器id查看运行命令;Portainer监控管理docker容器
1、docker通过容器id查看运行命令 参考:https://blog.csdn.net/a772304419/article/details/138732138 docker inspect 运行镜像id“Cmd”: [ “–model”, “/qwen-7b”, “–port”, “10860”, “–max-model-len”, “4096”, “–trust-remote-code”, “–t…...

XMind 2024软件最新版下载及详细安装教程
人所共知的是XMind 在公司和教育领域都有很广泛的应用,在公司中它能够用来进行会议管理、项目管理、信息管理、计划和XMind 被认为是一种新一代演示软件的模式。也就是说XMind不仅能够绘制思维导图,还能够绘制鱼骨图、二维图、树形图、逻辑图、组织结构…...
代码随想录算法训练营第四十四天 | 322. 零钱兑换、279.完全平方数、139.单词拆分、多重背包理论基础、背包问题总结
322. 零钱兑换 题目链接:https://leetcode.cn/problems/coin-change/ 文档讲解:https://programmercarl.com/0322.%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.html 视频讲解:https://www.bilibili.com/video/BV14K411R7yv/ 思路 确定dp数组以及下…...

开源AGV调度系统OpenTCS中的路由器(router)详解
OpenTCS中的任务分派器router详解 1. 引言2. 路由器(router)2.1 代价计算函数(Cost functions)2.2 2.1 Routing groups2.1 默认的停车位置选择2.2 可选停车位置属性2.3 默认的充电位置选择2.4 即时运输订单分配 3. 默认任务分派器的配置项4. 参考资料与源…...
关于下载 IDEA、WebStorm 的一些心得感想
背景 实习第一天的时候,睿哥便吩咐我下载一些软件,这些软件以后在写项目的时候会用到,他叫我先装IDEA,WebStorm,微信开发者工具,git,还有Navicat。 这些软件能够被我们正常使用,无非就通过三步…...

C#使用Scoket实现服务器和客户端互发信息
20240616 By wdhuag 目录 前言: 参考: 一、服务器端: 1、服务器端口绑定: 2、服务器关闭: 二、客户端: 1、客户端连接: 2、客户端断开: 三、通讯: 1、接收信…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...