ARTICLE DETAIL

资讯详情

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

Python新手避坑指南:从REPL、类型转换到pip与数据分析实战

Python新手避坑指南:从REPL、类型转换到pip与数据分析实战 1. 装好之后先别急着写代码把交互式环境和脚本文件这两个概念掰扯清楚1.1 命令行里的 才是你最好的练功房安装完 Python 之后很多新手做的第一件事就是打开记事本开始敲代码这恰恰是最容易劝退的做法。因为你还没学会怎么跑代码就开始写代码中间隔着一个巨大的信息断层。我建议你先在命令行里敲一个python回车看到提示符后把这里当成一个计算器来玩。 2 3 * 4 14 hello * 3 hellohellohello [1, 2, 3] [4, 5] [1, 2, 3, 4, 5]这个环境叫交互式解释器也就是常说的 REPL。在这里每敲一行、回车解释器立刻执行并返回结果。它的价值不在于算算术而在于让你用最低成本去验证Python 到底是怎么理解我这句话的。想试什么就试什么不用建文件、不用保存、不会留下一堆垃圾脚本。我带过不少零基础的朋友都要求他们先在这个环境里玩够一周再碰编辑器事实证明这条路是最稳的。还有一个很多人不知道的 REPL 小技巧单独敲一个_能拿到上一次运行的结果。比如你刚算了2 3现在敲_ * 4得到的就是 20。做草稿式计算的时候特别好用。1.2 从交互式到脚本文件什么时候该换姿势玩熟了 REPL 之后你自然会碰到一个场景某段逻辑你反复敲了好几遍烦了。这时候就该把代码写进.py文件用python 文件名.py去运行。脚本的好处是可以反复改、反复跑以后还能用版本管理工具做记录。但新手要注意脚本运行出错和 REPL 里不太一样。REPL 里错了马上能看到红字脚本里错了只会打印一段 Traceback很多人没养成看控制台输出的习惯拖了很久才发现代码根本没跑起来。所以从第一天起就要养成一个习惯运行完脚本先看一眼终端最下面几行有没有报错。这里顺带解决一个热搜里高频出现的问题——python was not found; run without arguments to install from the microsoft store。这个报错的意思是你在命令行输入 python但系统压根没找到 Python 的可执行文件。常见原因有三个我直接做成表格现象原因处理方法刚装完就报错安装时没勾选 Add Python to PATH重新运行安装包勾选后修复安装重装之后还是报错系统 PATH 里有多个残留 Python 路径打开系统环境变量清理掉失效的那条装完突然又报错旧终端窗口没有刷新环境变量重开一个命令行窗口千万别用旧窗口这里强调一个容易忽略的细节PATH 是终端启动时读取的。你修改完环境变量后已经打开着的那些终端窗口不会自动感知必须完全关闭再重开。这个坑我至少劝过十个人。1.3 编辑器选择vscode 配置 python 环境的正确姿势现在很多人推荐 VSCode我也觉得它是当下对新手上限最高的编辑器。但安装 VSCode和配置好 Python 环境是两件事很多教程把这两件事混在一起讲新手照做却跑不起来问题大多出在少了一两个关键步骤。装完 VSCode 后要做三件事第一安装微软官方的 Python 扩展第二按CtrlShiftP打开命令面板搜索 Python: Select Interpreter选中你真正安装的那个解释器第三新建一个.py文件点右上角的运行三角形试试。如果选了解释器还是报错99% 的原因是VSCode 内部终端里跑的 Python和你选的解释器不是同一个这个坑在下面讲库的时候专门展开。Pycharm 也是很好的选择它对项目的理解更自动化适合喜欢什么都帮我弄好的类型但启动慢、首次索引也慢老机器会比较难受。选哪个核心在于你得真正理解解释器这个概念——它是真正执行你代码的那个程序编辑器只是负责帮你写字的工具。很多新手把编辑器当成了 Python 本身一换电脑、一换软件就彻底懵掉根源就是对这层关系没有概念。2. 语法地基变量、类型转换和数组切片这关必须迈过去2.1 动态类型Python 的变量和 C/Java 里的变量不是一回事很多学过其他语言的人学 Python 时总有一种别扭感根源在于 Python 的变量并不是一个装数据的盒子更准确地说它是一个贴在对象上的标签。标签可以随时撕下来贴到另一个对象上。age 18 name 小龙 age name # 完全合法但不建议这么写 print(age) # 小龙同样的变量名前一秒还是整数后一秒就变成了字符串这在 C 和 Java 里是不可思议的但在 Python 里完全允许。这种动态类型给了新手极大的方便不用声明类型但也带来一个隐患你永远不知道一个变量里装的到底是什么类型到了后期排错就会很头疼。所以我的建议是享受动态类型但保持自律——变量名起得有语义一个变量尽量只存一种类型的数据。想确认一个变量到底是什么类型用内置函数type()想看它在内存里的唯一身份用id()。这两个函数在你怀疑变量是不是被改了的时候特别有用。2.2 类型转换为什么 str 和 int 不能直接拼在一起新手第一个 TypeError 几乎都长这样age 25 print(我今年 age 岁) # TypeError: can only concatenate str (not int) to str字符串只能和字符串拼接整数不能直接拼进去。这个设计看起来不近人情但细想是有道理的如果 Python 替你悄悄把 25 转成 25那 1.5 怎么处理是转成 1.5 还是 2与其猜测不如让你显式写出意图。print(我今年 str(age) 岁) # 正确 print(f我今年{age}岁) # 更推荐f-string 写法顺带说几个转换的坑int(42)可以成功int(3.5)会报错因为字符串里的小数点没法直接转整数int(3.9)得到 3它做的是向零截断不是四舍五入float(3.5)没问题但float(abc)会抛 ValueError。每次报错时先看一下报错信息里的类型名再想想要不要做转换这是最快的成长路径。2.3 切片a[start:stop:step] 这套规则是列表和字符串的万能钥匙热搜词里python数组切片出现频率相当高说明这确实是新人绕不过去的坎。切片的核心语法就一个式子序列[start:stop:step]左闭右开start 包含stop 不包含。nums [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] nums[2:5] # [2, 3, 4]注意 5 不包含 nums[:4] # [0, 1, 2, 3]start 省略表示从头 nums[::2] # [0, 2, 4, 6, 8]每隔一个取一个 nums[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]负数 step 表示倒着走左闭右开是初学者最容易踩的点nums[2:5]明明写的是 2 到 5怎么出来的是 2、3、4记住一个直观解释——stop 表示切到第几个下标就收手5 的下标对应的元素是 5切到它之前就不切了。字符串也一样python[::-1] 就是 nohtyp反转字符串连函数都不用一个切片搞定。还有两个高频用法nums[-1]取最后一个元素nums[-3:]取最后三个。理解了负索引你在处理数据尾巴的时候会顺畅很多。切片返回的是新对象——列表切片会生成一个新列表但字符串切片生成的也是新字符串这一点在多级切片时要心里有数别以为是在原数据上操作。2.4 定义函数def 之后的世界python 定义函数这个热搜词说明大家已经开始尝试模块化思考了。函数定义的骨架很简单def add(a, b): 返回两个数的和 return a bdef 后面跟函数名、括号、参数冒号下面缩进的代码块都是函数体return 表示返回值。三个容易忽略的细节第一函数体如果不写 return默认返回 None第二参数可以给默认值比如def greet(name朋友)调用时不传参也能跑第三函数名一旦定义就是个变量你可以把函数赋值给另一个变量来加个别名。每定义一个函数都建议写一行 docstring——就是函数名下面那句加了三引号的注释。写它不是为了仪式感而是几个月后你回头读自己的代码时能一眼想起这函数到底是要干嘛的这个习惯能帮你省掉大量返工时间。如果基础语法练得差不多了可以玩一个经典的逻辑小题李白打酒。题目是壶中初始有 2 斗酒每次遇店酒量翻倍乘 2每次见花喝一斗减 1已知一共遇店 3 次、见花 5 次最后壶中酒正好喝完问有多少种遇店和见花的顺序。这个题看着像脑筋急转弯用递归或循环写出来其实非常练条件判断和状态转移的思维我建议认真做一遍。3. 装库这件小事pip、虚拟环境、还有那些装不上库的糟心事3.1 库到底装到了哪里搞清楚 site-packages 这个问题很多新手问python 的库在哪个目录下这个问题背后其实是一个更大的困惑我明明 pip install 了为什么运行时报 ModuleNotFoundError要解释清楚必须先知道库装到哪了。最简单的方法是直接在 Python 里问import numpy print(numpy.__file__)它会打印出一个绝对路径比如 Windows 下是C:\Python311\Lib\site-packages\numpy\__init__.py。site-packages 就是第三方库的大本营pip 默认会把库装到当前解释器对应的这个目录里。在 Linux 下一般是/usr/local/lib/python3.x/dist-packages或者虚拟环境内部的lib/python3.x/site-packages。理解了这一点你就明白了为什么说同一个库可能装了两份因为你可能装了一个全局 Python又建了一个虚拟环境两边各有一份 site-packages。如果你在 VSCode 里选的是解释器 A而在终端里 pip 装到了解释器 B那 A 那边永远看不到包。排查的第一反应应该是确认当前代码跑的是哪个解释器。3.2 pip 安装慢怎么办换镜像源别干等安装库的命令很简单python -m pip install xxx。注意我特意写了python -m pip这是为了确保 pip 和当前 python 是同一个环境的。如果你的电脑上同时存在 Python 3.8、3.11 甚至多个虚拟环境只用pip install很可能装到别的环境去了。默认源在国外对于国内网络来说经常慢到让人怀疑人生。解决方案是使用国内镜像源比如清华 PyPI 镜像一条命令临时指定python -m pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple如果不想每次敲参数可以配置成默认。在用户目录下新建pip.iniWindows或pip.confLinux/macOS写入[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple配置完再执行python -m pip config list确认生效。注意一点镜像源和网络代理没有任何关系它只是把包下载源头换成了国内同步服务器正规且安全可以放心用。3.3 装库失败的三种典型姿势与排查顺序我把新手安装 numpy、sklearn、cv2 这些库时最常见的失败情况归纳成三类按排查顺序排好了第一能找到 pip但下载卡住或超时。典型表现是进度条半天不动或者报ReadTimeoutError。处理办法换镜像源必要时加上--timeout 60延长超时时间。第二报错信息里出现一堆 Microsoft Visual C 或者 gcc 字样。这说明你要装的库需要编译本地代码比如某些科学计算库的旧版本在 Windows 上经常需要编译器。处理办法很简单优先安装官方提供的预编译版本或者调整成较新的库版本这些版本通常自带编译好的二进制文件不需要你本机装编译器。第三安装成功但一运行就报 ModuleNotFoundError。这种情况几乎都是环境错位按顺序检查代码是在哪个解释器下跑的、pip 装到哪个解释器了、虚拟环境是否激活。用python -m pip list看看当前环境里到底有哪些包再做判断。如果你的项目里要一起装多个库推荐一次装全python -m pip install numpy pandas scikit-learn opencv-python注意 cv2 在 pip 里的正式包名叫opencv-python如果你搜 cv2 是装不上的。sklearn 的正式包名是scikit-learn装的时候也别写错。4. 第一个能拿出手的小项目从一堆杂乱数据到一张 Excel 报表4.1 读数据先用 pandas 把数据接进来语法学了一大堆不出一个完整项目就是纸上谈兵。我最推荐的新手第一个项目是把一份 Excel 或多行 CSV 数据读进 Python做一点简单统计再输出成一份新报表。这个项目覆盖了读文件、数据类型、函数、第三方库四大基本功做完特别有成就感。首先安装 pandas 和 openpyxl然后读取文件import pandas as pd df pd.read_excel(sales.xlsx) # 读取 Excel # 或者读取 CSVdf pd.read_csv(sales.csv, encodingutf-8) print(df.head()) # 前 5 行 print(df.info()) # 每一列的类型和缺失值情况 print(df.columns) # 列名很多新手一上来就想着处理几千行数据但其实 pandas 的head()和info()才是你最常用的侦查工具。拿到任何数据文件第一件事永远是看看长什么样、有没有空值、类型对不对。4.2 算数据numpy 的向量化思维别用循环硬算接下来要对数据做计算。比如把销售额统一打 95 折。新手通常第一反应是写 for 循环for i in range(len(df)): df.loc[i, new_price] df.loc[i, price] * 0.95这写法没错但我劝你从第一天就养成向量化思维。pandas 和 numpy 都支持整列操作后面的代码等价于上面整个循环df[new_price] df[price] * 0.95一行搞定。为什么 numpy 能这么快因为它在底层用的是 C 语言数组整批数据一次性计算而 Python 的循环每走一步都要做一堆类型检查、边界判断。这就是为什么做大点儿的计算时用 numpy 和用循环的时间差距能达到几十倍。理解这个比你背十个 API 都重要——你今后遇到慢代码的第一反应就会是我是不是绕过了向量化。4.3 出报表python 写入 Excel 的几种方案算完数据要落地。最简单的方案是把 DataFrame 直接写回 Exceldf.to_excel(sales_result.xlsx, indexFalse)如果你需要更精细的控制比如自己创建一个工作簿、逐行写入、加标题格式那就用 openpyxlfrom openpyxl import Workbook wb Workbook() ws wb.active ws.append([月份, 销售额, 折扣后]) for index, row in df.iterrows(): ws.append([row[month], row[price], row[new_price]]) wb.save(sales_result_openpyxl.xlsx)这里注意indexFalse这个参数初学最容易漏。漏掉它输出的 Excel 第一列会多出一串数字索引看着特别业余。另外如果文件已打开的情况下再保存会报 PermissionError记得先关掉 Excel。4.4 画图踩坑横坐标太密集怎么处理数据报表里加一张趋势图项目效果立刻上一个档次。用 matplotlib 画线图很简单import matplotlib.pyplot as plt x range(1, 101) y [i ** 2 for i in x] plt.plot(x, y) plt.xticks(rotation45) plt.tight_layout() plt.show()python 画图横坐标太密集是个高频热搜经典场景是横轴有 100 个刻度挤成一团像黑色烧焦的锅底。处理思路有三个一是旋转刻度像上面代码里加rotation45二是减少刻度数量只显示一部分三是调大画布尺寸。推荐组合方式当数据量在 20 个以内旋转刻度就够超过 50 个直接用plt.xticks(range(1, 101, 10))每隔 10 个显示一个如果数据点上千就别用折线图了直接拿 pandas 的df.plot()配合 resample 聚合把数据先降采样再画。记住一点图表的第一读者是你自己画出来自己都看不清这图就没意义。5. 报错是给你的说明书拆解新手最常见的四类报错5.1 Traceback 从下往上读新手看到一长段报错就发怵其实报错是 Python 给你的说明书里面每一行都有信息量。拿一个经典报错举例Traceback (most recent call last): File demo.py, line 5, in module print(10 / x) ZeroDivisionError: division by zero正确读法是从下往上最后一行告诉你错误类型和一句话原因它是结论上面几行是过程告诉你错在哪个文件、哪一行、执行了什么代码。我见过太多人看到一长串就往下拉找最后一行这习惯其实对了一半——结论要看最后一行但定位问题往往需要往上看调用链。尤其是函数套函数的场景报错发生在内层函数但真正是你调用方式的问题所以上面几行同样要读。5.2 四类高频报错的速查思路我把新手期内遇到最多的四类报错做成了一张速查表按出现频率排序报错类型一句话含义最常见的个人原因处理思路SyntaxError代码不符合语法规则中文引号和英文引号混用、少括号看报错指向的位置多半在那一行附近NameError名字没定义变量名拼写错误、用了还没赋值的变量检查是不是写错字母或者变量作用域不对TypeError类型不匹配字符串和数字拼接、函数参数类型错误用 type() 看实际类型做类型转换IndexError下标越界访问列表里不存在的下标先 len() 看长度再确认下标范围多说一句ModuleNotFoundError不算语法问题它属于环境问题本质上是你当前这个解释器里没有这个模块回第三部分去看环境排查。我建议大家遇到报错时不要直接复制粘贴丢到搜索引擎先自己读一遍报错说出这三件事错在哪个文件、哪一行、什么类型。哪怕你说错了这个思考过程也会让你在 30 分钟内掌握别人 3 个月才练出来的排错直觉。这就像学做菜被油烫一次就会记得该用锅盖挡一下编程也一样。6. 下一步往哪走爬虫、量化还是数据分析先别急着全都要6.1 三条经典路线的真实差异有了语法基础、装得会库、会跑简单项目接下来就该选方向了。Python 的方向多得很但新手最常听到的就三条爬虫、数据分析与可视化、量化交易。数据分析与可视化是上手最快、正反馈最强的路线。你只需要 pandas、numpy、matplotlib 三个库就能把一堆数据变成报表和图表。它对你的要求是细心数据清洗、缺失值处理、字段对齐每一步都需要严谨。适合喜欢刨根问底、耐心足的人。爬虫实际上是网页请求 数据解析 反反爬的组合入门时用 requests 拿网页、用 BeautifulSoup 解析 HTML很快就能写出抓取天气或新闻标题的小工具。但这行水比较深目标网站的稳定性、数据使用的合规性都要考虑不适合一上来就追求自动采集一切。请记住技术用来学习和处理个人数据没问题越界采集是会惹麻烦的。量化交易策略代码这个热搜词背后是个危险幻觉。很多人以为学一个月 Python 就能写个自动赚钱的策略这基本是白日梦。量化真正的门槛不是 Python而是金融逻辑、回测框架、风险控制。Python 只是最后实现策略的工具。我建议别把量化当作起点把它当成数据分析路线的高级应用等你把 pandas 用熟了、理解了时序数据处理再回头看量化策略代码很多地方自然就通了。6.2 给零基础的学习顺序建议我的建议是先做数据分析再做自动化脚本最后根据兴趣决定要不要碰爬虫和量化。原因很简单数据分析能让你在最短时间内看到输入和输出的直接关联建立信心。自动化脚本帮你解决实际问题比如批量改文件名、定时发邮件这类成就感特别实在。在练习节奏上我给三句建议第一每学一个概念就写一个 20 行以内的小脚本去验证它别光学不练第二找几个趣味项目调剂情绪比如用 turtle 画个爱心图、写一段中秋祝福生成脚本这些项目技术含量不高但把代码发给朋友看的时候那种正反馈比任何教材都激励人第三别碰协程这类并发概念你在脚本里遇到瓶颈之前asyncio 只会让你头大。等哪天你发现自己写的脚本慢到不能忍再学它正好匹配当前认知水平。路线可以画成这样基础语法 → pandas 数据处理 → 一个小报表项目 → 自动化办公脚本 → 数据分析可视化 → 感兴趣再深入爬虫或时序计算。每个阶段都留下一个作品哪怕很小也比刷一百个教程有用。方向选好了剩下就是每天写一点。Python 这门的最大优点从来不是简单而是你每往前走一小步都能造出一个能跑的东西——这本身就是最好的老师。
返回列表