news 2026/6/6 20:11:55

(浏览.md版本) Python入门(1):从环境搭建到内置函数核心精讲

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(浏览.md版本) Python入门(1):从环境搭建到内置函数核心精讲

### 第一部分

#### 1. 一句话核心总结
该篇讲解了Python入门核心知识,涵盖环境搭建、内置函数(print/input)、变量与对象的本质、以及三种格式化输出方法(百分号格式化、format()函数、f-string表达式),并重点推荐使用f-string作为格式化输出的首选方法。

#### 2. 核心概念定义

- **Python**:一种适用于人工智能、深度学习、机器学习、爬虫等领域的编程语言。
- **print()输出函数**:Python内置函数,语法结构为 `print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)`。用于将内容输出到控制台或文件。
- **input()输入函数**:Python内置函数,用于从控制台读取用户输入,无论输入什么类型,返回的都是字符串类型(str)。
- **变量(Variable)** :将数据在内存中存储后给定的名称,相当于“门牌号”,用于引用内存中的对象。
- **对象(Object)** :存储在内存中的数据实体,具有三要素:id地址(内存唯一标识)、类型(如int/str)、值(value)。Python中一切皆是对象,变量只是对对象的引用。
- **格式化输出**:给定一个模板,按模板规则输出内容。视频介绍了三种方法:百分号格式化、format()函数、f-string表达式。

#### 3. 分类/类型

视频对**环境搭建**和**print()函数参数**有详细的步骤讲解,以下用有序列表呈现:

**环境搭建步骤**:
1. **安装Anaconda**:用于管理Python环境和配置,支持多环境隔离。从官网下载对应系统版本(Windows/Mac/Linux),安装时注意路径不要有中文字符。安装后通过Anaconda Prompt终端管理环境。
2. **安装编译器**:推荐VS Code或PyCharm。VS Code需安装Python扩展(提供代码高亮、智能提示、调试)和Jupyter扩展(Juypter Notebook支持)。
3. **创建项目文件夹**:如D盘下的Python code,存放所有Python程序。
4. **创建Jupyter Notebook文件**:后缀为`.ipynb`,支持分单元格逐块运行代码(Markdown用于注释说明,Python用于编写代码)。运行前需选择对应Python内核。

**print()函数的核心参数**:
| 参数 | 作用 | 默认值 |
|------|------|--------|
| `sep` | 多个输出对象之间的分隔符 | 空格 `' '` |
| `end` | 输出末尾的结束符 | 换行符 `'\n'` |
| `file` | 输出目标位置(控制台或文件) | `sys.stdout`(屏幕) |
| `flush` | 是否强制刷新输出缓冲区 | `False` |

示例:`print(1, 2, 3, sep='->')` 输出 `1->2->3`;`print('Hello', end='')` 不换行输出。

**三种格式化输出方法对比**:
| 方法 | 语法 | 特点 | 推荐度 |
|------|------|------|--------|
| 百分号格式化 | `"%s %d" % (name, age)` | 需指定类型,易读性较差 | 了解即可 |
| format()函数 | `"{} {}".format(name, age)` | 不指定类型,较灵活 | 了解即可 |
| f-string表达式 | `f"{name} {age}"` | 最直观,性能最好,推荐使用 | ★推荐 |

#### 4. 排序或对比关系

- **print默认vs自定义**:`print(1,2,3)`默认分隔符为空格,`sep='->'`后变为`1->2->3`;`end='\t'`将末尾换行改为制表符,使多个输出在同一行。
- **文件写入模式(A追加 vs W覆盖)** :`mode='a'`将内容追加到文件末尾【视频13:00-13:03】;`mode='w'`覆盖原文件内容【视频13:07-13:09】。

#### 5. 具体建议与注意事项

- **关于格式化输出**:视频强烈推荐使用f-string表达式,因其直观性好(可直接在大括号中嵌入变量名)、维护性佳(修改时只需改一处变量值)、且性能更高。
- **关于变量命名**:遵守三条硬性规则:只能由字母、数字和下划线组成;不能以数字开头;不能是Python关键字(如`if`、`for`、`False`等)。建议遵循PEP 8规范:使用小写字母与下划线组合(如`user_age`)、保持语义清晰、避免拼音或单字母命名(循环变量i/j/x/y除外)。
- **关于类型转换**:`input()`返回字符串,需要用`int()`或`float()`进行强制类型转换后才能用于算术运算。如`age = int(input("请输入年龄:"))`。
- **关于文件操作**:操作完成后需关闭文件句柄(`f.close()`),更推荐使用`with`语句自动管理资源。
- **变量与对象的内存关系**:变量是对象的引用,赋值操作(`A = 1`)创建变量并使其指向内存中已有的对象(如123、12),改变变量值会使变量指向新的对象。
- **环境搭建避坑指南**:安装路径不要包含中文;安装时勾选“Add to PATH”以便在终端直接调用Python;区分32位和64位版本。

#### 6. 补充说明

- Python是**动态类型解释语言**,变量类型在运行时自动决定,无需提前声明。类型只存在于对象中,变量只是对象的引用。
- Python的`=`是赋值运算符,而非数学等号。
- 视频整体内容为Python入门第一节课,后续计划讲解六大数据类型(字符串/列表/字典等)的增删改查、程序结构(顺序分支循环)、函数定义与调用、递归、面向对象编程(封装继承多态),以及数据分析三剑客(Numpy、Pandas、Matplotlib)和深度学习库PyTorch。

---

### 常见知识点与需了解的概念

**对于以上未提及的常见知识点。**

#### 一、基础概念类

1. **PEP 8编码规范**:Python官方代码风格指南,包含缩进(使用4个空格)、行宽(最多79字符)、空行规范、导入语句顺序等。遵循PEP 8使代码更专业、更易读。

2. **pass语句(空操作)** :语法上需要语句但逻辑上什么都不做时使用,常用于占位,保证代码结构完整。

3. **Python的缩进规则**:与C/C++使用花括号不同,Python使用缩进来表示代码块层级,缩进量必须一致(通常4个空格)。不正确的缩进会导致`IndentationError`。

4. **Python版本差异**:Python 2.x(已于2020年停止维护)与Python 3.x(当前主流)在print语句(Python 2为`print "xxx"`,Python 3为`print("xxx")`)、除法(`/`在2中为整数除法)、Unicode支持等方面存在不兼容变更。f-string是Python 3.6引入的特性。

5. **查看Python帮助文档**:使用`help(print)`可查看函数详细文档,`dir(str)`查看字符串所有方法。

6. **IDE/编辑器选型指南**:视频提及VS Code和PyCharm,补充说明:PyCharm功能最强大,适合专业开发者;VS Code轻便、插件丰富,全球最流行;IDLE为Python自带,适合极简验证。

7. **虚拟环境**:Anaconda支持`conda create -n env_name python=3.9`创建隔离环境,避免不同项目间的依赖冲突。

8. **转义字符**:`\n`(换行)、`\t`(制表符)、`\\`(反斜杠本身)、`\"`(双引号)、`\'`(单引号)。在字符串前加`r`(如`r"C:\Users"`)可输出原始字符串,防止转义。

9. **多行字符串**:使用三个双引号或三个单引号(`"""..."""`或`'''...'''`)定义多行字符串,保留换行和缩进格式。

10. **字符串索引与切片**:字符串支持`[start:end:step]`索引访问,但字符串是不可变序列,不能直接修改单个字符。

#### 二、风险类

1. **字符串与数字混用导致的`TypeError`**:`input()`接收的所有输入默认都是字符串,若直接进行加法运算(如`"10" + 5`)会抛出类型错误,必须用`int()`或`float()`转换。

2. **赋值时的常见错误**:混淆`=`(赋值)与`==`(比较);链式赋值(`a = b = 1`)虽合法但可能引起混淆。

3. **变量覆盖内置函数名**:使用`print = 10`后`print()`函数失效,需重启解释器恢复。应避免使用内置函数名(`print`、`input`、`len`、`str`、`int`、`list`、`dict`等)作为变量名。

4. **文件操作未关闭导致资源泄露**:使用`open()`后忘记`close()`可能导致文件句柄耗尽。优先使用`with open() as f:`上下文管理器自动关闭【第一部分已提到,但需强调其重要性】。

5. **浮点数精度问题**:`0.1 + 0.2`的结果并非精确的`0.3`,而是近似值`0.30000000000000004`。比较浮点数时使用`abs(a-b) < 1e-9`而非`a == b`。

6. **Jupyter Notebook中混淆状态**:按顺序执行单元格时,变量会持久存在。若删除中间变量但未重启内核,可能产生难调试的幻觉状态。应定期重启内核并从头运行。

#### 三、实操类

1. **Jupyter Notebook的常用快捷键**:`Shift+Enter`运行并移动至下一单元格、`Ctrl+Enter`运行不移动、`Esc`进入命令模式、`A`(上方)和`B`(下方)插入新单元格、`D`+`D`删除当前单元格、`M`切换Markdown模式、`Y`切换Code模式。

2. **VS Code调试功能**:可设置断点、单步执行、监视变量值等,是分析复杂逻辑问题和理解代码执行流程的强大工具。

3. **查看变量类型**:`type(variable)`返回变量类型。

4. **查看变量内存地址**:`id(variable)`返回内存唯一标识符。

5. **命令行运行Python脚本**:在终端中输入`python script.py`执行脚本,或输入`python`进入交互模式(>>>提示符下逐行输入执行)。

6. **管理Python包**:使用`conda install package`(Anaconda环境)或`pip install package`安装第三方库;`pip freeze`查看已安装包列表;`pip install package==1.2.0`指定版本。

7. **单行注释与多行注释**:`#`为单行注释;多行注释可使用连续`#`或三引号字符串(不赋值时被视为注释)。

8. **代码运行效率对比**:`print()`频繁调用会影响性能(涉及I/O操作),批量构建字符串后一次`print`效率更高。

9. **Jupyter Notebook和普通Python文件的区别**:Jupyter以.ipynb格式按单元格保存执行状态,适合数据分析和教学演示;普通.py文件按脚本顺序执行,适合部署和模块化开发。

10. **遇到问题的解决路径**:阅读错误信息(Python的错误堆栈很清晰)、将错误信息复制到搜索引擎、使用`print(type(variable))`和`print(dir(variable))`调试、查阅官方文档。

#### 四、对比类

| 对比项 | Python | C/C++ | Java |
|--------|--------|-------|------|
| 代码块标识 | 缩进 | 花括号`{}` | 花括号`{}` |
| 语句结束符 | 换行 | 分号`;` | 分号`;` |
| 变量声明 | 无需声明类型,动态类型 | 必须声明类型(如`int a`) | 必须声明类型 |
| 编译/解释 | 解释型 | 编译型 | 编译解释混合 |
| 内存管理 | 自动垃圾回收 | 手动管理 | 自动垃圾回收 |

| 对比项 | 百分号格式化 | f-string |
|--------|-------------|----------|
| 引入版本 | Python 1.x | Python 3.6+ |
| 是否需要类型指定符 | 是(%s、%d等) | 否,直接使用`{variable}` |
| 运行时性能 | 较慢 | 更快 |
| 可读性 | 一般 | 优秀 |
| 支持表达式 | 有限支持 | 完整支持 |

| 对比项 | `mode='a'`追加 | `mode='w'`覆盖 |
|--------|---------------|----------------|
| 作用 | 在文件末尾添加内容 | 清空原文件并写入新内容 |
| 文件不存在时 | 自动创建 | 自动创建 |
| 保留原内容 | 是 | 否 |

| 对比项 | Jupyter Notebook | 普通Python文件(.py) |
|--------|-----------------|----------------------|
| 执行方式 | 按单元格顺序执行 | 按脚本顺序执行 |
| 适用场景 | 数据分析、教学演示、探索性开发 | 部署、自动化脚本、模块化开发 |
| 状态持久性 | 变量跨单元格持久存在 | 每次运行重新开始 |
| 可视化输出 | 支持图表直接嵌入 | 需额外配置 |

#### 五、常见误区

| 误区 | 正确理解 |
|------|----------|
| 变量名可以以数字开头 | 错误,变量名只能以字母或下划线开头 |
| 关键字可以用作变量名 | 错误,Python关键字(如`if`、`for`、`False`)不能作为变量名 |
| 变量名不区分大小写 | 错误,Python严格区分大小写,`Name`和`name`是两个不同变量 |
| `input()`可以直接获得数字 | 错误,`input()`始终返回字符串,需用`int()`或`float()`转换 |
| `=`表示“等于” | 错误,`=`是赋值运算符,`==`才是比较运算符 |
| Python变量需要声明类型 | 错误,Python是动态类型语言,类型由赋值时的对象决定 |
| 变量直接存储数据 | 部分正确,变量存储的是对内存中对象的引用,而非数据本身 |
| 修改一个变量不影响另一个 | 对于不可变类型(int/str)安全;对于可变类型(list/dict),两个变量可能指向同一对象,相互影响 |
| print总是输出到屏幕 | 错误,`print()`的`file`参数可指定输出到文件 |
| 数值0.1 + 0.2精确等于0.3 | 错误,浮点数存在精度问题,应使用`abs(0.1+0.2-0.3) < 1e-9`进行比较 |

#### 六、进阶知识点

1. **可变对象 vs 不可变对象**:不可变对象(int、str、tuple、bool等)创建后内容不可修改;可变对象(list、dict、set等)可修改内部内容但id地址不变。
- **字符串不可变**:`s[0] = 'a'`会报错,正确操作是创建新字符串
- **列表可变**:`lst[0] = 99`原地修改,所有指向该列表的变量都会受影响

2. **字符串驻留机制**:Python对小整数(通常-5到256)和某些短字符串会缓存,多个变量可能指向同一对象(例:`a=256; b=256`,`a is b`为True)。

3. **`is` vs `==`**:`==`比较值是否相等;`is`比较id地址(是否是同一个对象)。

4. **浅拷贝 vs 深拷贝**:`copy.copy()`(浅拷贝)仅拷贝外层对象,嵌套对象共享引用;`copy.deepcopy()`(深拷贝)递归拷贝所有层级,完全独立。

5. **Cython加速**:Python在数学计算场景慢,可学习用Cython将Python代码编译为C扩展模块,加速深度学习等科学计算。

6. **类型注解**:从Python 3.5+开始支持函数注解(如`def greet(name: str) -> str:`),提高代码可读性,辅助静态类型检查(工具如mypy),但解释器运行时不会强制执行。

7. **`None`值的特殊性**:`None`表示空值,既不是0也不是空字符串,在条件判断中相当于`False`。

8. **短路求值**:`and`和`or`具有短路行为——`and`左边为False时不执行右边;`or`左边为True时不执行右边。

9. **文档字符串(docstring)** :函数/类/模块开头的三引号字符串,可用`help()`或`.__doc__`查看,是代码文档化的标准方式。

10. **PyPy等Python实现**:除标准CPython外,还存在PyPy(JIT编译提升速度)、Jython(运行在Java平台)、IronPython(运行在.NET平台)等实现,各有适用场景。

11. **列表推导式**:一种简洁构建列表的方式,如`[i**2 for i in range(10) if i % 2 == 0]`,视频虽未讲,但在实际Python开发中极为常用。

12. **`if __name__ == "__main__":`的作用**:当.py文件作为主程序运行时执行,作为模块被导入时不执行,是模块化编程的常用模式。

---

### 第三部分:全面总结(合并第一、二部分内容)

#### 1. 主题概述

本文章以Python零基础入门为目标,完整涵盖从环境搭建到核心语法的基础知识体系,尤其适合有志于AI、深度学习、机器学习领域的初学者。

**Python的定义与特点**:Python是一种广泛适用于人工智能、深度学习、爬虫、Web开发等领域的解释型编程语言。核心特点包括:动态类型(无需声明变量类型)、简洁语法(使用缩进表示代码块)、强大的标准库和丰富的第三方生态。

**环境搭建**:推荐使用Anaconda(管理Python环境和虚拟环境)配合VS Code或PyCharm(编写和调试代码)。Jupyter Notebook(.ipynb格式)支持分单元格运行,特别适合数据分析和教学演示。安装时注意避免中文路径,VS Code需安装Python扩展和Jupyter扩展。

**变量与对象的本质**:变量是内存中对象的引用(相当于“门牌号”),赋值操作不存储数据,而是让变量指向内存中的对象。对象有三要素:id地址(内存唯一标识)、类型(如int/str)、值(具体数据)。Python中一切皆是对象,变量类型在运行时由赋值的对象决定。

**变量命名规则**:硬性规则包括只能由字母、数字、下划线组成,不能以数字开头,不能是Python关键字(共35个)。最佳实践遵循PEP 8规范:使用蛇形命名法(如`user_age`),避免单字母名称(循环变量i/j除外),保持语义清晰(`max_connections=100`而非`a=123`)。

#### 2. 分类与对比

**print()函数参数详解**:
| 参数 | 作用 | 默认值 |
|------|------|--------|
| `objects` | 要输出的对象(可变参数) | 必需 |
| `sep` | 对象间的分隔符 | 空格 `' '` |
| `end` | 输出末尾的结束符 | 换行符 `'\n'` |
| `file` | 输出目标(控制台或文件) | `sys.stdout` |
| `flush` | 是否强制刷新缓冲区 | `False` |

**Python代码块vs其他语言**:Python用缩进表示代码块(统一4个空格),C/C++和Java用花括号`{}`,且Python语句无需分号结尾。这些特点使Python代码更简洁,但对缩进格式要求更严格。

#### 3. 风险与注意事项

**环境相关**:
- 安装路径避免中文,区分32位和64位版本,安装时勾选“Add to PATH”
- 虚拟环境(`conda create -n env_name python=3.9`)隔离项目依赖,避免包版本冲突

**输入输出相关**:
- `input()`始终返回字符串类型,若需数值计算必须用`int()`或`float()`转换
- 非数字字符串无法转换为int,会引发`ValueError`

**变量相关**:
- 变量名不能与内置函数名(print、input、len等)冲突,否则覆盖函数功能
- 混淆`=`(赋值)与`==`(比较)是常见错误
- 变量名大小写敏感(`Name`与`name`不同)
- 可变对象(如列表)的赋值会创建引用而非副本,多个变量可能指向同一对象,修改会相互影响

**浮点数**:
- 浮点数运算存在精度问题,比较时使用`abs(a - b) < 1e-9`而非`==`

**文件操作**:
- 必须关闭文件句柄避免资源泄露,优先使用`with open() as f:`上下文管理器自动管理
- 区分`mode='a'`(追加)和`mode='w'`(覆盖写入)的行为差异

**变量与对象的内存模型**:
- 变量是对象的引用,赋值操作创建指向内存中对象的引用
- Python通过引用计数管理内存,当引用计数为0时对象被自动回收
- 小整数(-5到256)和某些短字符串会被缓存,多个变量可能指向同一对象

#### 4. 实操建议

**代码编写与调试**:
- 频繁调用`print()`影响性能(I/O操作耗时),建议批量构建字符串后一次性输出
- Jupyter Notebook中可用`Shift+Enter`执行单元格、`M`切换Markdown模式、`Y`切换Code模式
- VS Code支持断点调试,是分析复杂逻辑问题的强大工具
- 遇到错误时,阅读错误堆栈信息、使用`print(type(variable))`和`dir(variable)`辅助调试

**格式化输出**:
- 强烈推荐使用f-string(`f"我的名字是{name},年龄{age}岁"`),因其直观性好、维护性佳、性能更高
- f-string支持在花括号内嵌表达式和函数调用

**文件操作**:
- 常规写入用`with open('file.txt', 'w') as f:`,确保自动关闭
- 需要保留原内容时使用`mode='a'`追加模式

**包管理与版本控制**:
- 日常开发用`conda`或`pip`安装第三方库,`pip freeze`可导出依赖清单
- 深度学习场景优先用`conda install pytorch`(由社区维护的预编译包更稳定)
- `pip install package==1.2.0`可指定版本号

**进阶效率技巧**:
- 学习列表推导式等语法糖,提高代码简洁性和可读性
- 养成写docstring的习惯,用`help(func)`随时查阅函数说明
- 使用`if __name__ == "__main__":`组织模块代码,支持模块化导入

#### 5. 常见误区辨析

| 常见误区 | 正确理解 |
|----------|----------|
| 变量名可以以数字开头 | 只能以字母或下划线开头 |
| Python关键字可用作变量名 | 35个关键字(if、for、False等)不能用作变量名 |
| 变量名不区分大小写 | Python严格区分大小写 |
| `input()`可直接获得数字 | 始终返回字符串,需`int()`转换 |
| `=`表示“等于” | `=`是赋值,`==`才是比较 |
| 变量需要声明类型 | Python是动态类型,类型由赋值决定 |
| 变量直接存储数据 | 存储的是对内存对象的引用 |
| 修改变量A不影响变量B(当B=A时) | 对于可变对象(list/dict),两个变量指向同一对象,相互影响 |
| print总是输出到屏幕 | `file`参数可指定输出到文件 |
| 字符串可以直接原地修改 | 字符串是不可变类型,修改需创建新字符串 |
| `0.1 + 0.2`精确等于`0.3` | 存在浮点精度误差,需容差比较 |

---

### 通过本篇内容,你将掌握:

- **搭建Python开发环境**:学会安装Anaconda、配置VS Code或PyCharm、创建Jupyter Notebook,为后续开发做好准备
- **理解Python的核心概念**:掌握变量与对象的内存关系、动态类型机制、三种格式化输出方法的区别与适用场景
- **熟练使用print()和input()内置函数**:掌握sep、end、file参数的实际用途,灵活控制输出格式
- **掌握变量命名规范**:理解硬性规则与PEP 8最佳实践,避免使用Python关键字和内置函数名作为变量名
- **识别常见编程错误和误区**:了解`TypeError`、`ValueError`等常见错误的成因,学会通过阅读错误信息定位问题
- **掌握文件操作的正确方法**:使用`with open()`上下文管理器安全操作文件,区分追加和覆盖两种写入模式
- **为后续学习打好基础**:理解变量与对象的内存模型,为后续学习列表、字典、函数、类、装饰器等进阶知识奠定基石

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 20:11:54

杨雨潼111212

动物实验设备费用击败法军则是部分金额是

作者头像 李华
网站建设 2026/6/6 20:09:39

linux内核源码中module_init()定义的函数指针变量解引用

最近&#xff0c;我在看linux内核源码&#xff0c;读到了模块tty_io.c文件&#xff0c;其中有一个函数console_init()用于遍历访问加解引用访问了module_init()含参宏定义的函数指针变量。具体过程在这里捋一下。 首先&#xff0c;module_init()含参宏 module_init(x)-->_…

作者头像 李华
网站建设 2026/6/6 20:08:31

芜湖Geo优化亲测品牌分享

行业痛点分析在当前的数字营销领域&#xff0c;Geo优化正逐渐成为企业竞争力的关键。然而&#xff0c;这一领域面临着诸多技术挑战。首先&#xff0c;AI搜索的算法不断更新&#xff0c;企业难以及时调整优化策略。其次&#xff0c;跨平台的矩阵化内容建设需要大量的资源和专业知…

作者头像 李华
网站建设 2026/6/6 20:04:01

5分钟搞定ESP32蓝牙音频库:打造你的专属蓝牙音箱

5分钟搞定ESP32蓝牙音频库&#xff1a;打造你的专属蓝牙音箱 【免费下载链接】ESP32-A2DP A Simple ESP32 Bluetooth A2DP Library (to implement a Music Receiver or Sender) that supports Arduino, PlatformIO and Espressif IDF 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华
网站建设 2026/6/6 19:56:39

img2img

智慧衣橱虚拟试穿实践&#xff1a;从占位 UI到 Sophnet 双图图生图的落地思考一、写在前面&#xff1a;做智慧衣橱时&#xff0c;产品页面上最早写的是AI 试穿 / 图生图 接入中。很长一段时间里&#xff0c;我把试穿和小衣对话助手混在一起想——以为在聊天框里发一张衣服图&a…

作者头像 李华