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、接收信…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...