ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python基础学习总结:从环境配置到常用库实战指南

Python基础学习总结:从环境配置到常用库实战指南 从零开始学Python说“笨鸟先飞”真不是谦虚。我一直觉得自己写代码的悟性不算高别人一遍能懂的东西我常常要反复确认好几遍才敢动手。但走到今天回头看真正让我跑起来的不是天赋而是愿意把基础阶段磨扎实。这篇内容就是一份完整的python基础总结我把环境安装、变量类型、函数、常用库、报错排查这些事全部摊开讲一遍尽量用大白话和真实案例让你照着做就能顺利入门。这份总结适合谁呢零基础想自学Python的人、刚看完教材但不知道怎么落地的新手还有那些装环境装到怀疑人生的朋友。内容不绕弯子也没有高深理论就是把我踩过坑、绕过的弯、验证过好用的方法完整交代出来。读完你会发现Python基础并没有想象中那么吓人难的是在犯迷糊的时候有人帮你把路指清楚。1. 环境准备先把Python装好别让安装劝退你很多人的Python学习之旅在第一关就被环境安装劝退了。我当初也是这样明明装好了运行却提示“python 不是内部或外部命令”换了一台电脑又出现版本对不上后来碰见0x80070643这种安装报错更是整得一头雾水。环境问题虽然不算高深但如果不把原理搞明白后面会反复吃亏。1.1 官网下载、安装教程里最容易忽略的选项先从下载说起。去python官网下载安装包时选文件其实就有讲究。Windows用户优先选64位版本不要一看到“Windows installer (64-bit)”就跳过这个就是最常见的安装包。下载的时候注意看好Python版本目前稳定版本的3.x系列是主流千万不要去碰2.x的老版本很多库和语法都不兼容初学者没必要给自己制造额外障碍。双击安装包以后有几个选项很容易被忽略但它们偏偏是决定后续是否顺利的关键。第一个是“Add Python to PATH”有些中文环境下显示的是“将Python添加到PATH”。这一项一定要勾上它会在安装过程中自动把Python写入系统环境变量。第二个是“Install Now”和“Customize installation”的选择新手直接选Install Now省事但如果你之后想改安装路径就选自定义。我个人建议把Python装到一个不含中文和空格的路径下比如D:\Python312这样能避免后期一些库因为路径问题而报错。这里我要提醒一个特别常见的问题安装时因为旧版本残留或者安装包不完整Windows会弹窗提示安装失败错误代码往往是0x80070643。遇到这种情况不要慌先把已经存在的Python版本从“控制面板—程序”里卸载干净再去下载安装包重装。如果还不行清理一下系统临时文件、临时关掉杀毒软件再试绝大多数都能解决。1.2 环境变量配置不搞懂它后面寸步难行如果你安装时忘了勾选“Add Python to PATH”或者使用的只是绿色版、解压版的Python那就得手动配置环境变量。很多人一听“环境变量”就发怵其实它就是一个告诉系统“程序放在哪”的地址列表。简单类比一下你喊一声“老王”系统得知道老王家在哪条街才能顺利找到他。PATH环境变量就是那一份地址簿它记录了Python解释器python.exe所在的位置。手动配置的步骤不复杂右键“此电脑”选“属性”进去以后点“高级系统设置”再点“环境变量”在最下面的“系统变量”里找到“Path”这一项点击编辑新增两条路径——一条是Python安装目录本身另一条是该目录下的Scripts文件夹。Scripts目录尤其重要因为很多你之后用pip安装的命令行工具比如Jupyter、PyInstaller都会被放到这个文件夹里不配好它这些工具就无法直接被调用。配置完成后怎么验证打开命令行工具输入python --version能正常输出版本号就说明PATH配置成功了。如果提示“Python 未找到”先别急着重装回头检查一下路径是不是真的写对了、有没有手滑写错字母。说到底环境变量配置这件事第一次会觉得很麻烦但只要亲手配过一遍之后在Linux或macOS上配置也就触类旁通了。1.3 工具选型VS Code、conda与代码运行环境的取舍装好Python以后还要解决“在哪里写代码”的问题。很多教程会建议从IDLE开始IDLE是Python自带的简易编辑器确实不用额外安装但界面简陋调试体验也很一般。我的建议是直接上VS Code免费、跨平台、插件生态成熟对新手极其友好。VS Code配Python开发环境的核心步骤就三步。第一步从官网下载安装VS Code第二步在扩展商店里搜索Python插件安装微软官方发布的那个第三步打开一个.py文件按下快捷键CtrlShiftP输入“Python: Select Interpreter”选择你刚安装好的Python解释器。这样提示、代码补全、运行调试就都有了。再说到conda它是我后来做项目才接触的但很后悔没有早一点学会。conda不只管Python版本还能为不同项目创建互相隔离的运行环境。举个例子你同时需要Python 3.10的项目和Python 3.12的项目如果只装一个版本来回切换容易把环境搞乱。用conda就可以轻松创建独立环境运行conda create -n py312 python3.12然后conda activate py312这个环境里的库和另一个环境完全隔离互不干扰。新手早期可能用不上conda但只要你打算认真做几个项目我建议趁早熟悉它。2. 核心语法基础变量、类型、函数逐个拆解环境搞定以后就到了最核心的语法学习阶段。这一部分看起来像是在背概念但实际上每一块都对应着写代码时的真实需要。我见过太多人跳着学语法结果写出来的代码不是报错就是逻辑混乱最后又把锅甩给“基础不牢”。基础这东西真没法偷懒。2.1 变量与数据类型理解“盒子”与“标签”Python里的变量和别的语言不太一样不需要声明类型直接赋值就行比如name 张三、age 18。有人觉得这很方便但也带来一个误区——以为Python变量没有类型。其实变量本身只是“标签”真正有类型的是它指向的那个数据对象。你可以把数据对象想象成一个盒子变量就是贴在盒子上的标签标签可以撕掉换到另一个盒子上这不难理解吧。常用类型里有几个必须烂熟于心整数int、浮点数float、字符串str、布尔值bool、列表list、元组tuple、字典dict、集合set还有一个单独的NoneType。看到任何一个数据第一反应要能说出它属于哪种类型这是我给自己定的一条训练标准。写代码的时候随时可以用type()函数验证比如print(type(age))输出class int一目了然。这里要特别强调“可变”和“不可变”的区别。列表list是可变的你可以往里面加元素元组tuple是不可变的定义完了就不能改。字典的键必须是不可变类型所以你可以用元组做键但千万不能用列表做键——我在这个坑上栽过跑起来直接报TypeError: unhashable type: list。初学阶段不要怕犯错把每个报错当成一次涨知识的机会这些细节会慢慢变成你的肌肉记忆。2.2 类型转换与类型判断日常写代码的最高频操作写一段真实业务代码时类型转换几乎无处不在。最常见的就是把用户输入转成数字input()函数返回的一律是字符串你想拿它做加减乘除必须先用int()或float()转一下。我见过多少新手在电脑前对着“TypeError: can only concatenate str (not int) to str”发呆多半就是忘了转换。搞清楚转换规则很重要。int(12)、float(3.14)、str(100)都很直观。但有些转换是失败的比如int(12.3)会直接抛异常因为整数转换不接受带小数点的字符串。想让字符串“12.3”变成数字应该用float(12.3)。另外bool()也有自己的规则空字符串、0、空列表都会被转成False其他大部分值都是True这个细节在判断条件时能救你一命。类型判断则有两条路子type(x) int和isinstance(x, int)。我推荐用后者因为它更灵活还支持传入一个类型元组比如isinstance(x, (int, float))可以同时判断多种数值类型。写一个健壮的小工具函数时先用isinstance做保护再执行转换逻辑能省掉你很多调试时间。看变量类型练多了以后你会养成一个习惯读代码的时候下意识就在心里标注每个变量的类型这对后面看复杂项目帮助特别大。2.3 函数从def开始把重复劳动交出去函数是Python里最值得花时间练的核心语法。它的作用一句话就能说明白把一段反复使用的逻辑封装起来以后用一行代码调用。别小看这句话很多人写代码从一个脚本复制到另一个脚本越复制越乱就是没建立“封装”意识。定义函数很简单至少要先写对结构def add(a, b): 返回两个数的和 return a bdef是关键字add是函数名括号里是参数函数体缩进四个空格return返回值。没有return时函数默认返回None这点要注意。写函数时要习惯加一点简短的说明字符串也就是文档字符串这既是给自己看的也是给以后接手代码的人看的。再往后要理解参数的各种玩法默认参数、关键字参数、不定长参数。默认参数写起来像这样def greet(name, message你好)调用时greet(张三)和greet(张三, 早上好)都合法。不定长参数有*args和**kwargs两种一个接收多余的位置参数一个接收多余的关键字参数很多框架和库都大量使用它们。但有一个经典陷阱必须牢记默认参数不要用可变对象比如写成def func(lst[])这个空列表会在函数定义时创建一次多次调用会共享同一个列表数据就会互相污染。正确做法是写成def func(lstNone)函数内部再if lst is None: lst []。这个问题面试经常问实际代码里也是老坑。2.4 数组切片与数据处理批量操作的钥匙提到切这片就得先聊聊Python里几个能“切”的对象列表、字符串、元组都支持切片语法。格式是序列[start:stop:step]左闭右开start含、stop不含。比如nums [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(nums[2:6]) # [2, 3, 4, 5] print(nums[:5]) # [0, 1, 2, 3, 4] print(nums[::2]) # [0, 2, 4, 6, 8]初学者常常对负索引犯迷糊。其实负索引就是从右往左数nums[-1]是最后一个元素nums[-3:]是取最后三个元素这样切片在处理不知道长度的列表时特别有用。数据处理时切片用得非常频繁。比如你有一个每日数据列表要取最近一周的数据直接data[-7:]就完成了不用去计算长度再写循环。再比如把列表倒序一行nums[::-1]搞定。掌握切片不只是为了省代码更是为了培养一种思维Python里很多批量操作有内置的高效方式能不用循环就尽量不用循环。这种对数据操作的敏感度是从“会写Python”走向“写得像Python”的关键差距。3. 常用库与三个高频实战场景基础语法学完以后很多人会陷入一个尴尬期语法都懂一动手就蒙不知道该拿Python干什么。这个阶段的破局之道是赶紧接触几个常用库用真实的任务驱动自己。下面挑三个高频场景每一个都是我实际写过、踩过坑的细节都会交代清楚。3.1 安装numpy库的方法与结构化数据初步NumPy是Python做数值计算的基石库后面所有数据分析、科学计算都会用到它。安装方法非常简单打开命令行输一行命令就行pip install numpy如果你用的是conda环境也可以conda install numpy。这里有个国内用户特别实用的经验直接pip下载可能会很慢甚至超时可以加-i参数换镜像源比如pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple速度会快很多。装完之后你就会接触到“结构化数据”这个概念。最直白的理解就是带表头、带行和列的表格型数据。NumPy的多维数组ndarray是结构化数据的基础容器但它偏底层更常用的是基于NumPy包装出来的pandas库安装方式同理pip install pandas。用pandas读取一个CSV文件通常只需要一行df pd.read_csv(data.csv)。拿到df以后看前几行用df.head()看整体信息用df.info()做描述性统计用df.describe()效率极高。我记得自己第一次读CSV时看到这些输出心里是有种“原来数据这么直观”的感叹的。结构化数据处理的本质就是让你从手动逐行操作中解放出来用一行命令完成筛选、分组、统计。对初学者来说不需要急着啃全部API先把读取、查看、筛选、保存这四步弄明白就已经能解决很多实际问题了。3.2 用Python构建邻接矩阵一个容易上手的算法基础题每次被问到图论题或者推荐算法相关基础时我都建议新手亲手写一遍邻接矩阵的构建。邻接矩阵听起来很高大上其实就是用一个二维数组记录节点之间的连接关系。比如一共有n个节点就建一个n行n列的矩阵第i行第j列的值表示节点i到节点j是否有边或者边的权重。一个最朴素的做法是用列表写n 4 adj [[0] * n for _ in range(n)] edges [(0, 1), (1, 2), (2, 3), (3, 0)] for u, v in edges: adj[u][v] 1这样构建出来的矩阵不管之后做图的遍历还是最短路径都能作为数据基础。用NumPy更省事可以用np.zeros((n, n), dtypeint)先初始化再把对应位置赋值。很多实际的推荐系统、社交网络分析底层都会用到类似结构。练这个题目最大的好处是它逼着你同时动手理解三个东西二维数组是怎么索引的、循环和赋值怎么写、抽象模型和数据如何对应。很多人觉得“算法”离自己很远其实邻接矩阵这样的小例子就是你在基础阶段能亲手触摸到的最小整合项目。3.3 画图横坐标太密集一个谁都躲不过的小问题数据可视化是Python进阶的基础领域一般从matplotlib开始。安装很简单pip install matplotlib。然后按常规思路画图import matplotlib.pyplot as plt x range(50) y [i**2 for i in x] plt.plot(x, y) plt.show()图能出来但问题也很快出现横坐标从0到49刻度一个不落全都显示挤成一团根本看不清数字。这个问题几乎所有画时间序列或者大范围数据的人都会碰到我当年就在这个看似“小问题”上卡了挺久。解决办法其实好几种。最简单的是把横坐标标签旋转一下让文字斜着排列plt.xticks(rotation45)但旋转只是治标如果数据点实在太多应该让刻度每隔几个显示一次。比如数据有100个点每隔20个显示一个刻度可以这样import numpy as np ticks np.arange(0, 100, 20) plt.xticks(ticks)如果是日期型数据fig.autofmt_xdate()也能自动调整格式在Excel风格的数据序列里特别好用。画完图以后我还习惯加一句plt.tight_layout()让标签和标题不会被裁剪掉。这些都是没人手把手教就很难注意到的细节但它们决定了你的图是“能用”还是“能看”。3.4 图片处理与cv2从读取到保存的完整流程OpenCV是图像处理领域绕不开的库在Python里通常安装的是opencv-python这个包装包pip install opencv-python导入的时候注意包名是cv2不是opencv。一个入门级的完整流程就是读取、变换、保存。读取用cv2.imread(cat.jpg)得到的是一组多层数组每个像素的颜色由蓝绿红三通道组成。这里必须记住一个和日常直觉相反的坑OpenCV默认读进来的是BGR顺序不是RGB。如果你不做任何处理就直接用matplotlib显示会发现图片颜色整体偏蓝像是加了奇怪的滤镜。想正常显示要么用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)转换要么就用OpenCV自己的cv2.imshow()显示。保存图片更简单cv2.imwrite(output.jpg, img)一行完成支持常见的jpg、png等格式。新手最容易忽略的是读取失败的情况文件路径写错、文件名带中文都可能让imread返回None。所以读取之后养成一个习惯先判断if img is None再往下处理不然一调用形状属性就直接报AttributeError。图像基础处理学会以后人脸检测、目标识别这些炫酷功能其实都是基于这些原语一步步搭起来的。4. 进阶基础协程、虚拟环境与连接外部系统把常用库和实战场景摸完一轮基本就算是一只脚踩进Python世界了。但想走得更远有些基础概念得提前铺垫不需要精通但必须知道它们解决什么问题。这一节我把协程、conda环境和外部系统连接讲一遍都是进阶路上的必经节点。4.1 协程理解async/await的入门视角协程是Python一个一直被新手误以为“高级暂时不用学”的话题但它其实解决的是一个很朴素的问题在等待网络、文件读写这类操作时CPU大部分时间是空闲的为什么不能趁这个空档去做别的事协程就是干这个的。它和线程不一样线程由操作系统调度协程是代码自己控制切换点。Python协程的骨架长这样import asyncio async def task(name): print(f{name} 开始) await asyncio.sleep(1) print(f{name} 结束) async def main(): await asyncio.gather(task(A), task(B)) asyncio.run(main())async def定义的是一个协程函数await表示“在这里等同时去干别的”。asyncio.gather可以让多个协程并行调度总体耗时比串行短。爬虫场景就特别典型同时去请求十几个网页不需要等一个返回以后再请求下一个。初学协程有三件事要注意。第一协程函数调用后不会立刻执行返回的是一个协程对象需要放进事件循环或者被await才会真正跑。第二不要在网络请求这种阻塞操作里直接time.sleep()它会把整个事件循环卡住正确做法是用asyncio.sleep或异步请求库。第三协程适合IO密集型不适合计算密集型计算密集任务应该用多进程或者专业计算库处理方向用错了反而更慢。4.2 用conda创建隔离环境的正确姿势再说说你迟早会用到的conda环境管理。我在前面提到过创建环境的命令这里把完整流程串一遍。假设你现在要新建一个Python 3.12的环境来做某个项目conda create -n myproject python3.12 conda activate myproject激活以后命令行前面会多出一个小括号里面写着环境名例如(myproject)代表你现在已经在独立环境里了。接下来安装任何库都只装在这个环境内部不影响系统里其他Python环境。这就避免了“今天在项目A装了pandas 2.0明天项目B跑起来报错”这种库版本冲突的经典问题。环境导出和重建也值得学。在环境里运行conda env export environment.yml这个文件记录了你环境里所有包的信息。换一台电脑时运行conda env create -f environment.yml就能一键复现同样环境这对团队协作、换电脑写代码的人来说是救命级的功能。有一点需要特别提醒conda环境和pip安装的库并不完全互通。先别管复杂的原理记住一条准则——能用conda安装的库优先用condaconda里没有的再用pip。混装太多时出现依赖错乱新手排查起来会非常痛苦。4.3 连接数据库与公司系统自动拉表的基本思路工作中“连接数据库查询数据”“自动拉表”是Python自动化办公的高频需求。这里的核心技术点不算难但概念要理清。以连接Oracle数据库为例市面上常用的库是cx_Oracle新版也常直接用oracledb。连接需要几个参数数据库地址、端口、服务名、用户名和密码。基本流程是三步建立连接、创建游标cursor、执行SQL。拿到查询结果后通常再用pandas包装成结构化表格import oracledb import pandas as pd conn oracledb.connect(userscott, passwordtiger, dsnhost:1521/orcl) cursor conn.cursor() cursor.execute(SELECT * FROM sales_table) rows cursor.fetchall() df pd.DataFrame(rows)很多公司系统“自动拉表”的本质也是类似的要么给你开放了数据库只读账号要么提供了HTTP接口。无论是哪种方式最后都是通过代码自动执行——定时任务、脚本调度——把原本每天手动下载报表的动作变成一个每天自动运行的程序。做这件事的前提是必须遵循公司权限规范别为了“方便”去触碰不该访问的数据。如果你还没接触过数据库也不用急着学太深。先理解一个核心逻辑数据库连接的本质就是“用账号密码建立会话用SQL问数据然后用Python处理结果”。这种抽象层面的认知会帮你后面学任何数据库操作时都更快上手。5. 问题排查与学习路线建议最后这部分其实是这次python基础总结里最实用的部分。语法忘了可以再翻书但遇到报错不知道从哪里下手才是新手最绝望的时刻。我把常见问题整理成一张速查表再讲一讲我自己验证过的学习路径让你少走弯路。5.1 新手最常见的错误合集与解决办法下面这些错误几乎每个学Python的人都会遇到。别怕一个一个对照排查就行。python不是内部或外部命令说明环境变量没配好或安装时没勾选“Add Python to PATH”。回到系统环境变量里检查。pip不是内部或外部命令同样是PATH配置问题Python的Scripts目录没有加入Path。ModuleNotFoundError: No module named numpy库没有安装或者装到了别的环境。用pip list查看当前环境已装的包确认是不是跑错了环境。TypeError: int object is not iterable你试图把一个整数当可迭代对象使用比如for x in 12检查类型。AttributeError: NoneType object has no attribute ...一个函数返回了None你却继续调用它的方法。典型场景就是cv2.imread读取失败返回了None。SyntaxError且提示位置在中文符号旁边多半是把中文逗号、括号敲进了代码Python不能识别全角符号。UnicodeEncodeErrorWindows控制台打印中文偶尔会出现编码问题可以用python -X utf8 test.py或设置PYTHONIOENCODING。Windows安装Python报0x80070643旧版本有残留或者安装包损坏先彻底卸载、清理临时文件再重装。Fatal Python error或环境跑起来极慢检查电脑里是否装了好几个版本可能会互相干扰。用where python看当前实际用的是哪个。conda环境切换后pip安装的东西找不到注意activate当前环境后再pip install不然可能装到了base环境。踩过几轮错误之后你会慢慢发现一个规律绝大多数报错信息里都藏着关键线索哪怕是英文也不要怕。先读最后一行看异常类型和提示再用搜索引擎把报错原文贴进去解决问题的时间会大大缩短。5.2 踩过坑之后我才明白的学习顺序在没摸清门道之前我浪费过很多时间在“学完再动手”上结果是越学越慌语法书翻到一半就放弃了。后来我调整了学习顺序效率明显提高核心思路是“先建立循环再补细节”。第一轮快速过一遍基础语法变量、类型、判断、循环、函数、列表和字典。这个阶段不追求理解每一个细枝末节目标是能读懂代码、能改代码。第二轮找一个小项目或练习题实践哪怕只是写一个变量类型练习题、一个文本计数脚本也要逼自己从零写完整段代码。第三轮回到语法书里查漏补缺这时候再看切片、协程、异常处理因为有了实际体验理解成本会大幅下降。实际练习的过程中像“李白打酒”这种经典数学趣题就很适合拿来练循环和递归逻辑。题目本身不复杂但你需要亲手建模、写条件判断、调通运行做完以后对“如何把一个问题翻译成代码”这件事会特别有感觉。还有一类练习是“变量类型的专项训练”把同一个数据转成各种类型再转回来看着简单但坚持练上十来组对类型的掌握会扎实很多。5.3 入门之后还可以这样扩展基础打牢后前方不是没有方向而是方向太多容易挑花眼。我帮你梳理几条最常见的技术路线按兴趣选一条继续用小项目推进。想做数据分析就沿着pandas、matplotlib、seaborn这条线往下走找一个公开数据集做完整分析报告。想做爬虫就学requests、BeautifulSoup先从抓取静态页面开始再去了解异步爬虫和反爬机制。想做自动化办公就从“把多个Excel文件汇总成一个表”这种具体任务出发Excel最基础的读写用pywin32或openpyxl都可以。想做量化交易第一步永远是先用pandas处理行情数据比如写一个简单的双均线策略并回测收益注意这个阶段的核心其实是数据处理别一上来就幻想稳定盈利。软件测试方向的朋友也别粗心大意Python在接口测试、自动化测试里使用率极高面试常考题往往就是“写一段代码去重列表”“统计字符串里字符出现次数”这些全是基础语法加一点数据结构的综合运用。总而言之基础是你唯一能长期依赖的东西越往后走越会觉得这句话有多重要。最后再分享一个小技巧我给自己的电脑配了一本“排错日志”每次遇到一个有意思的报错就把原因和解法记下来格式无所谓重点是自己能看懂。坚持记了几个月以后你会发现大部分错误其实都是重复出现的翻翻日志就能秒定位。学Python这件事说到底靠的不是聪明而是把每一次踩坑都变成自己的经验资产。“笨鸟先飞”不是自嘲是我这几年最值得的坚持。
返回列表