Python入门核心笔记
第1章 计算机与Python概述
1.1 计算机基础组成
1.1.1 计算机硬件五大部件
计算机硬件由物理器件组成,分为5个逻辑部分:
- 运算器(ALU):完成加减乘除、与或非、移位等算术/逻辑运算
- 控制器:统一调度所有硬件有序工作
- CPU = 运算器 + 控制器,电脑核心处理单元
- 存储器:存放程序、原始数据、运算结果(内存、硬盘都属于存储器)
- 输入设备:向计算机传递信息:键盘、鼠标、扫描仪
- 输出设备:输出处理结果:显示器、打印机、音响
补充整理:上面列的 6 点是按"功能"拆的,但教材里常说的计算机五大部件是:运算器、控制器、存储器、输入设备、输出设备。 区别在于 CPU = 运算器 + 控制器,所以 CPU 不算独立的一大类。 记忆时把"运算器+控制器"合并成 CPU 理解就行,考试/面试答"五大部件"别把 CPU 再单列一项。
1.1.2 软件分类
软件是一组有序指令集合,分为两类:
- 系统软件
- 操作系统:Windows、Linux、MacOS、Android、iOS
- 配套:硬件驱动、系统补丁
- 应用软件 日常工具软件:微信、QQ、Excel、爬虫程序、数据分析工具
1.1.3 代码两种翻译方式
计算机只能识别二进制0和1,高级代码需要翻译,分为编译、解释:
| 类型 | 翻译机制 | 优缺点 | 代表语言 |
|---|---|---|---|
| 编译型 | 一次性全部翻译为二进制exe文件,运行前完成翻译 | 运行速度快,分发不暴露源码 | C、C++ |
| 解释型 | 运行时逐行翻译、逐行执行,无独立exe | 开发调试便捷,分发必须附带源码 | Python、JS、PHP |
1.2 编程语言三代发展
- 第一代 机器语言 纯二进制数字,直接操作硬件,可读性极差、无法跨设备移植。
- 第二代 汇编语言 使用LOAD、MOVE等英文助记符替代二进制,依旧绑定特定硬件,移植困难。
- 第三代 高级语言 语法贴近自然语言、数学公式,脱离硬件限制,跨平台通用,Python属于高级语言。
1.3 Python语言详解
1.3.1 起源与设计思想
- 作者:荷兰人 Guido van Rossum(吉多·范罗苏姆)
- 诞生:1989圣诞编写编译器,1991年发布第一个公开版本
- 命名来源:喜剧《蒙提·派森飞行马戏团》
- 核心哲学:优雅、明确、简单;一件事最好只有一种清晰写法
1.3.2 Python主流应用场景
- 网络爬虫:批量抓取网页图文、数据,用于舆情、数据采集
- 数据分析/科学计算:Numpy、Scipy、Pandas
- AI、机器学习、深度学习:TensorFlow、PyTorch
- Web网站开发:Django、Flask轻量框架
- 运维自动化:批量服务器脚本、监控工具
- 办公自动化:批量处理Excel、Word、图片
- 桌面GUI、小型2D游戏开发(Pygame)
1.3.3 Python优缺点
优点
- 语法极简,新手学习门槛低
- 内置庞大标准库,第三方开源库海量,不用重复造轮子
- 完全开源免费,跨Windows/macOS/Linux全平台
- 支持交互式运行,单行代码即时测试
- 可嵌入C/C++代码提升核心运行速度
缺点
- 解释执行,运行速度远慢于编译型C/C++
- 无法编译加密,发布程序必须提供源码
- GIL全局锁限制多线程并发性能
1.3.4 Python版本区分
- Python2:2020年1月1日官方停止所有维护,与Python3不兼容,新项目禁用
- Python3:当前唯一主流版本
- 2008发布3.0,不向下兼容旧版本
- 课程使用稳定版:Python3.12.8
1.3.5 主流Python解释器
- CPython:C语言编写官方原版,全网通用,本教程全部基于此
- IPython:增强交互式外壳,底层依旧依赖CPython
- PyPy:搭载JIT即时编译,大幅提升运行速度,少量语法存在差异
- Jython:运行在Java虚拟机,可和Java代码交互
- IronPython:运行在.Net平台,对接C#程序
第2章 Python快速入门(环境安装+运行方式)
2.1 Windows系统安装Python
- 官方下载地址:https://www.python.org/
- 安装包选型
- Windows installer 64-bit:完整版开发包,新手学习首选
- embeddable 精简包:仅用于嵌入第三方软件,不推荐初学者使用
- 安装关键步骤
- 打开安装程序,必须勾选 Add python.exe to PATH,自动配置系统环境变量,不勾选则cmd无法识别python命令
- 选择 Custom installation 自定义安装路径,避免使用C盘默认目录
- Optional Features 页面保持全部默认勾选,直接点击 Next
- 在 Advanced Options 中修改安装路径为纯英文、无空格的文件夹
- 安装完成后点击 Disable path length limit,解除Windows系统260字符的路径长度限制
- 安装验证 按下 Win+R 输入 cmd 打开命令提示符,执行以下命令:bash正常输出版本号即代表安装成功
python --version
2.2 PyCharm IDE 安装与基础配置
2.2.1 版本区别
- 社区版(Community):永久免费,基础Python开发功能齐全
- 专业版(Professional):30天免费试用,支持Web开发、数据库、数据分析等扩展插件
2.2.2 新建项目解释器选项
- Project venv(推荐默认):项目独立虚拟环境,每个项目的第三方包完全隔离,不会出现版本冲突
- Base Conda:Anaconda 数据科学专用环境,需提前安装 Anaconda 软件
- Custom environment:自定义选择本地已安装的Python解释器
2.2.3 高频开发快捷键
| 快捷键 | 功能说明 |
|---|---|
| Ctrl + / | 单行/多行批量注释、取消注释 |
| Ctrl + D | 复制当前整行代码 |
| Ctrl + Alt + L | 一键格式化代码,自动符合PEP8规范 |
| Shift + Enter | 光标不在行尾也可直接换行 |
| Ctrl + F / Ctrl + R | 全局查找 / 全局替换 |
2.3 三种Python代码运行方式
2.3.1 交互式命令行模式
- 打开cmd输入
python回车进入交互环境,提示符为>>> - 输入一行代码立即执行,无需保存文件
- 适用场景:临时测试小段代码、简单数值计算
- 示例:python
print("hello")
2.3.2 脚本文件模式
- 创建后缀为
.py的文本文件,写入完整代码后保存 - 在cmd中切换到文件所在目录,执行命令运行:bash
python hello.py - 适用场景:完整可复用程序,代码可长期保存
2.3.3 PyCharm IDE运行模式(日常开发主流)
- 在项目目录右键 → New → Python File,创建代码文件
- 在代码编辑区空白处右键,选择「Run 文件名」运行脚本
- 内置控制台、断点调试工具,一站式完成代码编写、运行与排错
2.3.4 入门示例:HelloWorld
# 第一个Python程序
print("hello world")第3章 Python基础语法
3.1 注释
3.1.1 单行注释
使用#开头,#之后本行所有内容都会被解释器忽略,不执行 编码规范:代码与#之间空两格,#后空一格再写注释内容
print(123) # 打印数字1233.1.2 多行注释
使用三对单引号'''或三对双引号"""包裹,本质是多行字符串,仅用作代码说明,三引号不可嵌套
"""
多行注释区域
可换行编写代码功能说明
"""
print("测试文本")3.1.3 注释的作用
- 解释复杂业务逻辑,提升代码可读性
- 临时屏蔽暂不需要执行的代码,无需删除
- 用于函数、类的文档说明,可配合
help()查看
3.2 变量与标识符命名
3.2.1 变量定义规则
Python无需提前声明变量类型,变量名 = 值的赋值操作会自动创建变量
# 单个变量赋值
age = 18
# 多变量同步赋值
num1, num2, num3 = 10, 20, 30
# 一行代码快速交换两个变量的值
a, b = 5, 8
a, b = b, a
print(a, b) # 输出 8 53.2.2 标识符命名规则(变量、函数、类通用)
- 只能由字母、数字、下划线组成,不能以数字开头
- 严格区分大小写:
Name和name是两个完全独立的变量 - 禁止使用Python内置关键字,如
if、for、while、def、class等
3.2.3 行业通用命名规范
- 普通变量、函数:蛇形命名法(snake_case),示例:
user_name、student_age - 常量(人为约定):全部大写,示例:
PI = 3.14159 - 类名:大驼峰命名法(UpperCamelCase),示例:
UserInfo
3.2.4 常量说明
Python语法层面没有真正不可修改的常量,全大写只是编码约定,代码中仍可修改变量的值
3.3 进制表示与进制转换
3.3.1 四种进制字面量写法
- 二进制:前缀
0b,示例:0b1010 - 八进制:前缀
0o,示例:0o12 - 十进制:普通数字,无前缀标识
- 十六进制:前缀
0x,用a-f代表10~15,大小写均可,示例:0xa
3.3.2 进制转换内置函数
接收十进制数字,返回对应进制的字符串
num = 10
bin(num) # 转为二进制字符串 '0b1010'
oct(num) # 转为八进制字符串 '0o12'
hex(num) # 转为十六进制字符串 '0xa'3.4 基础数据类型
3.4.1 数值类型(不可变类型)
- int 整型
- 支持无限大的数字,不存在数值溢出问题
- 可用下划线分隔提升可读性:
1_000_000等价于1000000 - 小整数池:
[-5, 256]区间的整数全局复用同一内存地址,减少性能开销
- float 浮点型
- 带小数的数字,存在精度丢失问题:
0.1 + 0.2 = 0.30000000000000004 - 高精度小数运算需导入
decimal模块的Decimal类
- 带小数的数字,存在精度丢失问题:
- bool 布尔型
- 仅有两个取值:
True、False - bool是int的子类:
True == 1、False == 0结果为真,但True is 1结果为假(内存地址不同)
- 仅有两个取值:
- complex 复数:仅用于科学计算场景,日常开发极少使用
3.4.2 字符串 str(不可变类型)
- 三种定义方式:单引号
'内容'、双引号"内容"、三引号"""多行文本""" - 原始字符串
r"":关闭转义字符,常用于文件路径、正则表达式pythonprint(r"D:\new\test.txt") # \n不会被识别为换行符 - 编码与解码
encode("utf-8"):字符串 → bytes字节(用于网络传输、文件存储)decode("utf-8"):bytes字节 → 字符串,编码格式必须一致,否则会出现乱码
3.4.3 空值 None
独立的特殊数据类型,代表“空、无数据”,与0、空字符串完全不相等
3.4.4 可变类型与不可变类型
- 不可变类型(修改值会开辟新内存空间):int、float、bool、str、tuple
- 可变类型(可原地修改内存中的数据):list、set、dict
3.4.5 逻辑假值
在条件判断中会自动判定为False的值: None、0、0.0、False、空字符串""、空列表[]、空元组()、空集合set()、空字典{}
3.5 数据类型转换
3.5.1 隐式自动转换
不同数值类型运算时,范围小的类型会自动转为范围更大的类型
# int + float 结果自动变为浮点型
print(2 + 3.5) # 输出 5.5
# / 除法无论是否整除,结果永远是float
print(10 / 2) # 输出 5.03.5.2 强制显式转换
通过内置函数手动转换数据类型
int("666") # 字符串转整数
float(8) # 整数转浮点数
str(3.14) # 数字转字符串3.6 输入与输出
3.6.1 input() 键盘输入
input()接收的所有用户输入,默认数据类型都是字符串,用于数值计算时必须手动转换
age = int(input("请输入你的年龄:"))
print(age + 1)3.6.2 print() 输出与格式化
- 基础输出:用逗号分隔多个内容,自动添加空格python
print("姓名:", "张三", "年龄:", 18) - 控制末尾字符:
print默认end="\n"自动换行,可自定义pythonprint("不换行输出", end="") - 三种常用字符串格式化写法python
name = "李四" age = 20 # 1. % 老式占位符 print("姓名:%s,年龄:%d" % (name, age)) # 2. format 格式化 print("姓名:{},年龄:{}".format(name, age)) # 3. f-string(Python3.6+ 推荐,最简写法) print(f"姓名:{name},年龄:{age}")
3.7 运算符全分类
3.7.1 算术运算符
+、-、*、/、//(向下取整整除)、%(取余数)、**(幂运算)
3.7.2 赋值运算符
基础赋值:=、+=、-=、*=、/=、//=、%=、**= 特殊:海象运算符:=,可在判断表达式内部完成变量赋值
3.7.3 比较运算符
==、!=、>、<、>=、<= 注意:不同基础数据类型之间不能进行大小比较
3.7.4 逻辑运算符
and、or、not 短路特性:and左侧为假则直接终止判断;or左侧为真则直接终止判断
3.7.5 身份运算符
is、is not
==:仅对比两个变量存储的值是否相等is:对比两个变量是否指向同一个内存地址(是否为同一个对象)
3.7.6 成员运算符
in、not in 判断元素是否存在于字符串、列表、元组、集合等序列中
3.7.7 位运算符
&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移) 基于二进制补码运算,多用于底层性能优化场景
3.7.8 运算符优先级(从高到低)
幂运算 > 正负号 > 乘除取模 > 加减 > 移位运算 > 位运算 > 比较运算符 > 逻辑运算符
3.8 PEP8 Python官方编码规范
- 缩进统一使用4个空格,禁止Tab制表符与空格混用
- 单行代码字符不超过80个,单行注释不超过72个字符
- 使用空行分割不同功能代码块,禁止大量连续空行
- 行末尾禁止保留多余空白空格
- 不推荐使用分号分隔,在一行内写多条代码
- 所有.py源文件统一使用 UTF-8 编码
