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()函数参数有详细的步骤讲解,可移步拥有此类搭建视频的站点观看,以下用有序列表呈现:
环境搭建步骤:
- 安装Anaconda:用于管理Python环境和配置,支持多环境隔离。从官网下载对应系统版本(Windows/Mac/Linux),安装时注意路径不要有中文字符。安装后通过Anaconda Prompt终端管理环境。
- 安装编译器:推荐VS Code或PyCharm。VS Code需安装Python扩展(提供代码高亮、智能提示、调试)和Jupyter扩展(Juypter Notebook支持)。
- 创建项目文件夹:如D盘下的Python code,存放所有Python程序。
- 创建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'将内容追加到文件末尾;mode='w'覆盖原文件内容。
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。
第二部分:第一部分常见知识点延展与展示需了解的概念
一、基础概念类
PEP 8编码规范:Python官方代码风格指南,包含缩进(使用4个空格)、行宽(最多79字符)、空行规范、导入语句顺序等。遵循PEP 8使代码更专业、更易读。
pass语句(空操作):语法上需要语句但逻辑上什么都不做时使用,常用于占位,保证代码结构完整。
Python的缩进规则:与C/C++使用花括号不同,Python使用缩进来表示代码块层级,缩进量必须一致(通常4个空格)。不正确的缩进会导致
IndentationError。Python版本差异:Python 2.x(已于2020年停止维护)与Python 3.x(当前主流)在print语句(Python 2为
print "xxx",Python 3为print("xxx"))、除法(/在2中为整数除法)、Unicode支持等方面存在不兼容变更。f-string是Python 3.6引入的特性。查看Python帮助文档:使用
help(print)可查看函数详细文档,dir(str)查看字符串所有方法。IDE/编辑器选型指南:第一部分提及VS Code和PyCharm,补充说明:PyCharm功能最强大,适合专业开发者;VS Code轻便、插件丰富,全球最流行;IDLE为Python自带,适合极简验证。
虚拟环境:Anaconda支持
conda create -n env_name python=3.9创建隔离环境,避免不同项目间的依赖冲突。转义字符:
\n(换行)、\t(制表符)、\\(反斜杠本身)、\"(双引号)、\'(单引号)。在字符串前加r(如r"C:\Users")可输出原始字符串,防止转义。多行字符串:使用三个双引号或三个单引号(
"""..."""或'''...''')定义多行字符串,保留换行和缩进格式。字符串索引与切片:字符串支持
[start:end:step]索引访问,但字符串是不可变序列,不能直接修改单个字符。
二、风险类
字符串与数字混用导致的
TypeError:input()接收的所有输入默认都是字符串,若直接进行加法运算(如"10" + 5)会抛出类型错误,必须用int()或float()转换。赋值时的常见错误:混淆
=(赋值)与==(比较);链式赋值(a = b = 1)虽合法但可能引起混淆。变量覆盖内置函数名:使用
print = 10后print()函数失效,需重启解释器恢复。应避免使用内置函数名(print、input、len、str、int、list、dict等)作为变量名。文件操作未关闭导致资源泄露:使用
open()后忘记close()可能导致文件句柄耗尽。优先使用with open() as f:上下文管理器自动关闭【第一部分已提到,但需强调其重要性】。浮点数精度问题:
0.1 + 0.2的结果并非精确的0.3,而是近似值0.30000000000000004。比较浮点数时使用abs(a-b) < 1e-9而非a == b。Jupyter Notebook中混淆状态:按顺序执行单元格时,变量会持久存在。若删除中间变量但未重启内核,可能产生难调试的幻觉状态。应定期重启内核并从头运行。
三、实操类
Jupyter Notebook的常用快捷键:
Shift+Enter运行并移动至下一单元格、Ctrl+Enter运行不移动、Esc进入命令模式、A(上方)和B(下方)插入新单元格、D+D删除当前单元格、M切换Markdown模式、Y切换Code模式。VS Code调试功能:可设置断点、单步执行、监视变量值等,是分析复杂逻辑问题和理解代码执行流程的强大工具。
查看变量类型:
type(variable)返回变量类型。查看变量内存地址:
id(variable)返回内存唯一标识符。命令行运行Python脚本:在终端中输入
python script.py执行脚本,或输入python进入交互模式(>>>提示符下逐行输入执行)。管理Python包:使用
conda install package(Anaconda环境)或pip install package安装第三方库;pip freeze查看已安装包列表;pip install package==1.2.0指定版本。单行注释与多行注释:
#为单行注释;多行注释可使用连续#或三引号字符串(不赋值时被视为注释)。代码运行效率对比:
print()频繁调用会影响性能(涉及I/O操作),批量构建字符串后一次print效率更高。Jupyter Notebook和普通Python文件的区别:Jupyter以.ipynb格式按单元格保存执行状态,适合数据分析和教学演示;普通.py文件按脚本顺序执行,适合部署和模块化开发。
遇到问题的解决路径:阅读错误信息(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进行比较 |
六、进阶知识点
可变对象 vs 不可变对象:不可变对象(int、str、tuple、bool等)创建后内容不可修改;可变对象(list、dict、set等)可修改内部内容但id地址不变。
- 字符串不可变:
s[0] = 'a'会报错,正确操作是创建新字符串 - 列表可变:
lst[0] = 99原地修改,所有指向该列表的变量都会受影响
- 字符串不可变:
字符串驻留机制:Python对小整数(通常-5到256)和某些短字符串会缓存,多个变量可能指向同一对象(例:
a=256; b=256,a is b为True)。isvs==:==比较值是否相等;is比较id地址(是否是同一个对象)。浅拷贝 vs 深拷贝:
copy.copy()(浅拷贝)仅拷贝外层对象,嵌套对象共享引用;copy.deepcopy()(深拷贝)递归拷贝所有层级,完全独立。Cython加速:Python在数学计算场景慢,可学习用Cython将Python代码编译为C扩展模块,加速深度学习等科学计算。
类型注解:从Python 3.5+开始支持函数注解(如
def greet(name: str) -> str:),提高代码可读性,辅助静态类型检查(工具如mypy),但解释器运行时不会强制执行。None值的特殊性:None表示空值,既不是0也不是空字符串,在条件判断中相当于False。短路求值:
and和or具有短路行为——and左边为False时不执行右边;or左边为True时不执行右边。文档字符串(docstring):函数/类/模块开头的三引号字符串,可用
help()或.__doc__查看,是代码文档化的标准方式。PyPy等Python实现:除标准CPython外,还存在PyPy(JIT编译提升速度)、Jython(运行在Java平台)、IronPython(运行在.NET平台)等实现,各有适用场景。
列表推导式:一种简洁构建列表的方式,如
[i**2 for i in range(10) if i % 2 == 0],文章虽未讲,但在实际Python开发中极为常用。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()上下文管理器安全操作文件,区分追加和覆盖两种写入模式 - 为后续学习打好基础:理解变量与对象的内存模型,为后续学习列表、字典、函数、类、装饰器等进阶知识奠定基石
