Python編程入門:基礎(chǔ)知識路線圖與避坑指南)
有人問我最多的問題不是“Python怎么寫循環(huán)”而是“我到底能不能學(xué)會”。這其實(shí)是個(gè)好問題。Python編程基礎(chǔ)知識這一塊說難不難說簡單也不簡單關(guān)鍵看你有沒有找對一條能走通的路。這篇是系列的前言我不打算上來就灌概念而是先告訴你Python能干什么、學(xué)之前要準(zhǔn)備什么、基礎(chǔ)階段要碰哪些東西、什么地方最容易卡住。零基礎(chǔ)的人可以把它當(dāng)成路線圖寫過一點(diǎn)代碼但基礎(chǔ)不牢的人也可以借它把地基重新夯實(shí)。1. 寫在開始之前為什么這么多人選擇Python1.1 每一種學(xué)習(xí)動機(jī)都對應(yīng)一個(gè)真實(shí)場景從大家關(guān)心的問題里能看出學(xué)Python的人背景差異極大。最多的是辦公族他們在搜“python批量處理”“python入門”實(shí)際上是想把Excel整理、文件重命名、報(bào)表匯總這類重復(fù)勞動交給腳本去處理。Python寫一個(gè)幾十行的工具就能搞定這在以前可能需要求IT部門幫忙。第二類是學(xué)生和準(zhǔn)備轉(zhuǎn)行的人Python現(xiàn)在是很多高校非計(jì)算機(jī)專業(yè)的公共課語法相對友好拿它作為編程啟蒙語言心理壓力小。第三類是已經(jīng)在開發(fā)崗位上的人為了數(shù)據(jù)分析、自動化測試、后端開發(fā)而補(bǔ)Python技能。不管屬于哪一類你都會發(fā)現(xiàn)一件事Python不是“玩具語言”它已經(jīng)滲透進(jìn)日常辦公、數(shù)據(jù)分析、人工智能、運(yùn)維自動化、Web開發(fā)等各個(gè)角落。學(xué)它的人多找資料也容易踩過的坑前人基本都寫過這是很大的優(yōu)勢。1.2 語法簡單不等于“沒深度”常有人說“Python簡單到不像編程語言”這種看法有點(diǎn)片面。Python的簡單體現(xiàn)在入門階段不需要定義變量類型用縮進(jìn)代替大括號語法接近自然語言。但越往后學(xué)你會發(fā)現(xiàn)它也有復(fù)雜的一面列表推導(dǎo)式、裝飾器、生成器、異步編程每一個(gè)都夠?qū)懞脦灼L文?;A(chǔ)階段你要做的事情不是去追這些“高大上”的名詞而是把語言的地基打牢——變量、類型、流程控制、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、文件操作。地基穩(wěn)了后面接觸庫和框架就不會慌。我見過不少人一上來就研究“異步編程”“量化交易策略代碼”結(jié)果連遍歷列表都寫不明白最后挫敗感特別強(qiáng)。別急著跑先學(xué)會走。1.3 一個(gè)簡單的Python程序長什么樣在正式開始之前先用一個(gè)最直觀的例子告訴你Python寫起來是什么感覺。你可以新建一個(gè)文本文件敲下面的代碼用Python運(yùn)行它print(Hello, Python!) # 再算一個(gè)簡單的計(jì)算 price 25 count 3 total price * count print(總價(jià)是, total)你會發(fā)現(xiàn)代碼讀起來和英文句子很像不要求分號結(jié)尾不要求變量聲明類型。這種“低門檻”讓初學(xué)者能把精力集中在邏輯本身而不是被語言的細(xì)節(jié)絆倒。等到后面你的程序越來越復(fù)雜才會體會到簡潔語法帶來的長期價(jià)值。2. 動手前先搭好環(huán)境安裝Python與第一個(gè)程序2.1 版本怎么選官網(wǎng)下載的注意事項(xiàng)很多人一上來就在搜索引擎里搜“python安裝教程”結(jié)果下載到奇奇怪怪的安裝包裝完才發(fā)現(xiàn)路徑里根本沒有python命令。這里強(qiáng)調(diào)一下請?jiān)L問Python的官方網(wǎng)站python.org下載區(qū)里選擇穩(wěn)定版本就行。不要追最新的大版本建議選擇目前被廣泛使用的穩(wěn)定版比如3.12或3.13系列中的某個(gè)版本。Windows用戶安裝時(shí)有一個(gè)非常重要的細(xì)節(jié)安裝向?qū)У谝黄恋撞坑袀€(gè)“Add Python to PATH”的復(fù)選框務(wù)必勾選。勾選之后系統(tǒng)才能在任何目錄下直接用“python”命令啟動解釋器。如果漏掉這一步你在命令行里敲“python”會提示找不到命令這是新手最常見的第一道坎。macOS用戶要注意系統(tǒng)可能自帶Python 3但版本往往較舊。直接去官網(wǎng)下載安裝包是省心方式裝完在終端里輸入“python3”即可驗(yàn)證。Linux用戶更簡單用系統(tǒng)包管理器安裝就行不同發(fā)行版命令略有區(qū)別Arch用pacmanDebian系用apt。2.2 編輯器選擇IDLE、VS Code、PyCharm怎么取舍環(huán)境裝好之后緊接著的問題就是“拿什么寫代碼”。我的建議分三檔工具適合人群優(yōu)點(diǎn)缺點(diǎn)IDLE完全零基礎(chǔ)的第一周安裝自帶零配置調(diào)試功能弱寫大項(xiàng)目不方便VS Code大多數(shù)長期學(xué)習(xí)者免費(fèi)插件豐富界面現(xiàn)代需要花半小時(shí)配置Python插件PyCharm以開發(fā)為目標(biāo)的人功能全面集成度高啟動慢專業(yè)版收費(fèi)我自己更推薦VS Code。原因很實(shí)在它不只是能寫Python以后寫JavaScript、做Markdown筆記、編輯配置文件都用得上。裝好后在擴(kuò)展市場搜“Python”安裝官方插件就能獲得代碼提示、運(yùn)行按鈕、錯(cuò)誤提示。第一周用IDLE也不是不行但我建議盡快切到VS Code因?yàn)檎鎸?shí)項(xiàng)目不可能在IDLE里完成。2.3 你的第一行代碼三種運(yùn)行方式都試一遍你至少要掌握三種運(yùn)行Python代碼的方式第一種是命令行交互模式。在終端或命令提示符里輸入“python”回車進(jìn)入交互式環(huán)境直接輸入代碼回車就能看到結(jié)果。適合臨時(shí)算點(diǎn)東西。第二種是腳本文件模式。用編輯器寫一個(gè)以“.py”結(jié)尾的文件然后在命令行執(zhí)行“python 文件名字.py”程序會從頭到尾運(yùn)行一遍。這是以后最常用的方式。第三種是在IDE里直接點(diǎn)擊運(yùn)行按鈕。VS Code右上角或PyCharm里的綠色三角按鈕本質(zhì)上也是調(diào)用命令行工具只是把過程隱藏了?,F(xiàn)在寫第一個(gè)正兒八經(jīng)的腳本。新建一個(gè)文件命名隨意但后綴必須是.py。敲入下面的內(nèi)容# 第一個(gè)Python腳本 print(Hello, Python!) # 變量演示 name 程序員 age 18 print(f你好{name}你已經(jīng){age}歲了) # 簡單的輸入輸出 your_name input(請輸入你的名字) print(歡迎你, your_name)這里出現(xiàn)的print是輸出函數(shù)input是輸入函數(shù)變量name存放字符串a(chǎn)ge存放整數(shù)。你不用死記概念先把運(yùn)行流程跑通知道“寫代碼、運(yùn)行、看結(jié)果”這個(gè)循環(huán)是怎么回事就已經(jīng)邁出最重要的一步。2.4 關(guān)于中文亂碼字符編碼的那點(diǎn)事新手在Windows上寫代碼很容易遇到print中文報(bào)錯(cuò)或者顯示亂碼的情況。常見原因是文件編碼和終端編碼不一致。Python 3默認(rèn)源碼文件是UTF-8編碼但Windows的命令行默認(rèn)可能用GBK兩邊對不上就會亂碼。解決辦法也簡單在VS Code右下角把文件編碼改成UTF-8如果命令行還是亂碼可以在腳本最頂部加一行“# -- coding: utf-8 --”聲明編碼雖然現(xiàn)代Python不是必須但對老環(huán)境友好。更省心的方法是直接把腳本在IDE里運(yùn)行IDE通常能處理好編碼。這個(gè)問題不值得深究知道原因和解決方向就夠了。3. 基礎(chǔ)知識點(diǎn)地圖前言階段要認(rèn)識的幾個(gè)關(guān)鍵概念3.1 變量與數(shù)據(jù)類型先學(xué)會“裝東西”編程說白了就是讓計(jì)算機(jī)按照你的邏輯處理數(shù)據(jù)。數(shù)據(jù)總得有個(gè)地方放這個(gè)“地方”就是變量。Python的變量很有意思它不需要聲明類型直接賦值就是創(chuàng)建變量name 小明 # 字符串 age 18 # 整數(shù) height 1.75 # 浮點(diǎn)數(shù) is_student True # 布爾值字符串要用引號包起來整數(shù)和浮點(diǎn)數(shù)不用布爾值只有True和False兩種狀態(tài)。你可以用type()函數(shù)查看一個(gè)變量的類型比如“print(type(age))”會輸出“class int”說明age是整數(shù)類型?;A(chǔ)階段你要能分清這幾種類型并知道不同類型之間不能亂運(yùn)算。比如“18 歲”會報(bào)錯(cuò)因?yàn)檎麛?shù)和字符串不能直接相加。想輸出混合內(nèi)容可以像我之前那樣用f-string就是把變量嵌進(jìn)大括號f我{age}歲。這些細(xì)節(jié)積累起來你的代碼會越寫越順手。3.2 流程控制讓程序?qū)W會判斷和循環(huán)如果一個(gè)程序只是從上到下按順序執(zhí)行它能做的事很有限。流程控制就是讓程序“長腦子”根據(jù)條件決定走哪條路或者重復(fù)做某事。條件判斷用if語句基本結(jié)構(gòu)如下score 85 if score 90: print(優(yōu)秀) elif score 60: print(及格) else: print(需要努力)注意這里的冒號和縮進(jìn)。Python用縮進(jìn)表示代碼塊的范圍同一層級的縮進(jìn)必須一致。這一點(diǎn)和大多數(shù)語言用大括號不太一樣也是新手最容易犯錯(cuò)的地方。我常跟人說把“縮進(jìn)”當(dāng)成語法來對待忘記它就會報(bào)“IndentationError”。循環(huán)有兩種for循環(huán)適合“把容器里的東西一個(gè)個(gè)拿出來”while循環(huán)適合“只要條件成立就繼續(xù)做”??磧蓚€(gè)例子# for循環(huán) for i in range(5): print(第, i, 次循環(huán)) # while循環(huán) count 0 while count 3: print(count , count) count count 1range(5)會生成0到4這五個(gè)數(shù)字。while循環(huán)里那行“count count 1”千萬別漏漏了就會變成死循環(huán)程序永遠(yuǎn)停不下來。寫循環(huán)的時(shí)候先在腦子里模擬一遍過程或者加上print看看每一步發(fā)生了什么這是排查問題最有效的笨辦法。3.3 函數(shù)給代碼塊起個(gè)名字隨時(shí)調(diào)用函數(shù)是基礎(chǔ)階段第二個(gè)分水嶺。你寫了一段代碼發(fā)現(xiàn)別處也要用同樣的邏輯復(fù)制粘貼當(dāng)然可以但代碼一多就亂成一團(tuán)。函數(shù)就是把這些邏輯封裝起來起個(gè)名字想用就調(diào)用。下面這個(gè)例子正好是網(wǎng)上經(jīng)常搜到的“求長方體體積”用法def calc_volume(length, width, height): 計(jì)算長方體體積 return length * width * height # 調(diào)用函數(shù) volume calc_volume(10, 5, 2) print(體積是, volume) # 也可以加默認(rèn)參數(shù) def greet(name朋友): print(你好, name) greet() # 輸出你好 朋友 greet(小紅) # 輸出你好 小紅函數(shù)讓你不用關(guān)心內(nèi)部實(shí)現(xiàn)只需要知道“傳什么參數(shù)、拿什么結(jié)果”。把問題拆成一個(gè)一個(gè)的小函數(shù)再組合起來這是所有編程語言解決復(fù)雜問題的共同思路。剛開始不用追求函數(shù)寫得多么優(yōu)雅能拆就拆寫著寫著你就會體會到好處了。3.4 四種常用數(shù)據(jù)結(jié)構(gòu)列表、元組、字典、集合數(shù)據(jù)多了就得有容器來裝。Python最常用的四種內(nèi)置容器基礎(chǔ)階段必須都認(rèn)識# 列表有序可修改 students [張三, 李四, 王五] students.append(趙六) print(students[0]) # 輸出張三 # 元組有序不可修改 point (10, 20) # point[0] 99 這行會報(bào)錯(cuò)元組不能改 # 字典鍵值對像查字典 person {name: 小明, age: 18} print(person[name]) person[city] 上海 # 增加鍵值對 # 集合元素不重復(fù) tags {python, 編程, python} print(tags) # 輸出只有兩個(gè)元素重復(fù)的自動去掉列表是你在編程里遇見最多的結(jié)構(gòu)任何“一串東西”都可以用列表存。字典適合表示有屬性的事物比如一個(gè)人有幾個(gè)屬性一個(gè)商品有價(jià)格庫存。元組的不可修改特性有時(shí)代表“不該被改動的數(shù)據(jù)”。集合最常用于去重比如統(tǒng)計(jì)一篇文章里出現(xiàn)了哪些不同的詞。不用一次性記全所有方法只需要知道“有這些容器類型它們各自適合什么場景”。真到用的時(shí)候打開搜索引擎查“python list 方法”或“python 字典 操作”照著示例寫再結(jié)合打印輸出理解比死記硬背有效得多。3.5 文件讀寫與異常處理程序要能處理外部世界程序不可能永遠(yuǎn)只在內(nèi)存里操作數(shù)據(jù)。讀寫文件是每個(gè)實(shí)用腳本的必經(jīng)之路。Python里讀一個(gè)文本文件非常簡單# 寫文件 with open(note.txt, w, encodingutf-8) as f: f.write(這是第一行內(nèi)容\n) f.write(這是第二行內(nèi)容\n) # 讀文件 with open(note.txt, r, encodingutf-8) as f: content f.read() print(content)“with open”語句塊會在用完后自動關(guān)閉文件這個(gè)“自動管理”的習(xí)慣一定要從第一天養(yǎng)成。文件打開會涉及編碼問題寫代碼時(shí)最好顯式指定“encodingutf-8”避免在不同系統(tǒng)上出現(xiàn)亂碼。至于異常處理核心是讓程序在出錯(cuò)時(shí)不至于崩潰而是給出友好提示。比如用戶輸入了一個(gè)沒法轉(zhuǎn)成數(shù)字的內(nèi)容try: num int(input(請輸入一個(gè)整數(shù))) print(你輸入的是, num) except ValueError: print(這不是一個(gè)有效的整數(shù)請重新運(yùn)行程序)不必把異常處理理解得多高深它就是給程序穿上一層防彈衣。很多教程把異常放在很后面講我反而覺得應(yīng)該早點(diǎn)會——因?yàn)閷懘a的過程中一定會犯錯(cuò)學(xué)會“抓住錯(cuò)誤并給個(gè)提示”你的腳本就不會那么脆弱。3.6 模塊和包開始“站在別人的肩膀上”Python生態(tài)強(qiáng)大主要體現(xiàn)在有數(shù)以萬計(jì)的第三方庫可以裝。安裝工具叫pip在命令行里執(zhí)行“pip install 庫名”就能下載安裝。熱詞里經(jīng)常被搜到的“python安裝numpy庫的方法”就是這么解決的pip install numpy裝好之后在代碼里用“import”導(dǎo)入就能使用import numpy as np arr np.array([1, 2, 3]) print(arr * 2) # 輸出 [2 4 6]numpy支持?jǐn)?shù)組批量運(yùn)算導(dǎo)入語句放在文件開頭是慣例。你還可以導(dǎo)入自己寫的模塊比如把上一節(jié)那個(gè)計(jì)算體積的函數(shù)保存成“mycalc.py”在另一個(gè)程序里寫“import mycalc”就能復(fù)用。這個(gè)階段不用研究多么復(fù)雜的包管理只需要理解別人寫的代碼打包成庫你用一條import語句就可以拿過來用這就是工程效率的基礎(chǔ)。4. 新手避坑指南教科書不寫但你一定會遇到的細(xì)節(jié)4.1 縮進(jìn)和Tab、空格混用最隱蔽的報(bào)錯(cuò)源Python對縮進(jìn)極度敏感。同一個(gè)代碼塊內(nèi)縮進(jìn)必須一致要么全是空格要么全是Tab混著用就會報(bào)“TabError”或者“IndentationError”。這類錯(cuò)誤最氣人的地方在于你肉眼根本看不出區(qū)別只看到一堆空白。我的習(xí)慣是編輯器右下角把縮進(jìn)方式設(shè)為“4個(gè)空格”并且打開“顯示空白字符”功能。這樣Tab和空格就以不同方式呈現(xiàn)問題一眼就能看出來?,F(xiàn)代編輯器如VS Code基本能自動轉(zhuǎn)換但你要理解其背后的原因而不是只記住“好像會報(bào)錯(cuò)”。4.2 不要背函數(shù)要背“場景”新手的一大誤區(qū)是試圖背下所有函數(shù)和方法的用法。今天背了list.append、sort、pop明天學(xué)了字符串.split、join、strip后天就全混了。我見過太多人抱著一本厚書從第一頁開始背背到一半崩潰。正確的打開方式是先知道我大概有哪些工具用的時(shí)候再查。我的工作流是“問題驅(qū)動”想實(shí)現(xiàn)“把列表里的數(shù)字求和”就去搜“python 列表 求和”看到sum()的用法想處理字符串分隔就搜“python 字符串 split”。看不懂的再看官方文檔或例程。被背不下來困擾的新手核心問題不是記憶力而是把編程當(dāng)成了文科背誦。4.3 報(bào)錯(cuò)信息是給你的提示不是懲罰新手一看到紅色報(bào)錯(cuò)就慌這是完全沒有必要的。報(bào)錯(cuò)信息恰恰是程序在告訴你哪里有問題、在哪一行、什么原因。最常見的幾類報(bào)錯(cuò)你提前認(rèn)識它們以后見到就不會慌了報(bào)錯(cuò)信息含義常見原因SyntaxError: invalid syntax語法錯(cuò)誤漏了括號、引號沒閉合、縮進(jìn)出問題NameError: name x is not defined變量未定義變量名拼錯(cuò)或在使用前沒賦值TypeError: unsupported operand type(s)類型不支持把字符串和數(shù)字做運(yùn)算IndexError: list index out of range下標(biāo)越界列表只有3個(gè)元素卻取第3個(gè)索引第四個(gè)元素FileNotFoundError文件找不到文件路徑不對或文件確實(shí)不存在其實(shí)只要嘗試去讀最后一行“錯(cuò)誤類型”和“報(bào)錯(cuò)行號”90%的問題都能定位。把報(bào)錯(cuò)信息復(fù)制到搜索引擎里搜也是從業(yè)者的日常操作。會查錯(cuò)本身就是一項(xiàng)要刻意練習(xí)的編程技能。4.4 學(xué)習(xí)節(jié)奏每天寫一點(diǎn)比周末猛學(xué)一天強(qiáng)編程和游泳很像光看視頻不下水是永遠(yuǎn)學(xué)不會的。我建議你養(yǎng)成“每天二十分鐘”的節(jié)奏而不是周末一口氣學(xué)六個(gè)小時(shí)。代碼需要的是手感和條件反射每天練一點(diǎn)大腦會幫助你在睡眠里消化概念。另一個(gè)反直覺的經(jīng)驗(yàn)是卡住了不是壞事。你在某個(gè)知識點(diǎn)上卡了一周恰恰說明這一關(guān)過了之后會有一個(gè)飛躍。遇到“完全看不懂代碼”的時(shí)候允許自己先照著敲一遍敲的過程里那些陌生的結(jié)構(gòu)和函數(shù)會慢慢變得熟悉即使不理解整個(gè)程序的全貌至少知道了每一行在做什么。5. 常見問題速答給想入門的你一些定心丸5.1 零基礎(chǔ)最常問的六個(gè)問題這里把新手問得最多的問題一次性說透Q1學(xué)Python要多久才能入門如果你定義的“入門”是能獨(dú)立寫一個(gè)小腳本比如整理文件、批量重命名快的人兩周慢的人一個(gè)月。如果是能開發(fā)一個(gè)完整網(wǎng)站或數(shù)據(jù)分析項(xiàng)目那需要三到六個(gè)月。別拿“三個(gè)月精通Python”的雞湯來要求自己那是販賣焦慮的標(biāo)題黨。Q2要不要先學(xué)C語言打底不用。直接學(xué)Python完全沒問題。編程邏輯不分語言Python是友好的入門載體后續(xù)真要學(xué)C或JavaPython經(jīng)驗(yàn)也能遷移。Q3Python和Java選哪個(gè)看目標(biāo)。做數(shù)據(jù)分析、人工智能、自動化腳本選Python做大型企業(yè)級后端、Android開發(fā)選Java。對純零基礎(chǔ)且以辦公自動化、數(shù)據(jù)分析為目標(biāo)的人Python優(yōu)勢明顯。Q4代碼寫不出來怎么辦先抄代碼抄完再改改成自己的。改的時(shí)候不要怕犯錯(cuò)改錯(cuò)了又會在報(bào)錯(cuò)中學(xué)到新東西?!皩懖怀鰜怼钡母词禽斎肓坎粔蚨嘧x、多敲、多查跨過這關(guān)就好了。Q5需要做筆記嗎需要但別記“知識點(diǎn)總結(jié)”那種課堂筆記。我建議記錄兩樣?xùn)|西一是自己踩過的坑和對應(yīng)解決方式二是常用的代碼片段比如怎么讀文件、怎么遍歷字典。這些筆記以后是最值錢的私人文檔。Q6數(shù)學(xué)不好能學(xué)Python嗎基礎(chǔ)階段完全不影響。你需要的數(shù)學(xué)水平是小學(xué)程度的加減乘除。之后如果走數(shù)據(jù)分析或人工智能方向數(shù)學(xué)會重要起來但那是后面的事別拿來嚇自己。5.2 三個(gè)月的基礎(chǔ)學(xué)習(xí)路線建議大概列一個(gè)可執(zhí)行的路線圖第1周裝好環(huán)境掌握變量、類型、print和input每天寫三個(gè)簡單小程序。第2周學(xué)會if、for、while能寫“猜數(shù)字”這類帶邏輯的小游戲。第3周掌握函數(shù)把之前的代碼重構(gòu)一遍用函數(shù)封裝重復(fù)邏輯。第4周學(xué)列表、字典、元組完成一次成績統(tǒng)計(jì)或購物車模擬。第5周文件讀寫和異常處理把“自動整理文件夾”的小工具寫出來。第6周開始接觸第三方庫比如用os、pathlib處理路徑嘗試往數(shù)據(jù)處理方向靠。六個(gè)月后你可以根據(jù)興趣選方向數(shù)據(jù)分析學(xué)Pandas和MatplotlibWeb開發(fā)學(xué)Flask或FastAPI自動化測試學(xué)Selenium。到那個(gè)階段你看問題的視角就從“語法”轉(zhuǎn)向“工程”了。5.3 一個(gè)能整合基礎(chǔ)知識的小練習(xí)自動整理文件前面講了很多概念這里給一個(gè)能把你所學(xué)的變量、循環(huán)、條件判斷、文件操作和模塊導(dǎo)入全部串起來的練習(xí)。假設(shè)你的“下載”文件夾越來越亂我們寫一個(gè)腳本把文件按照擴(kuò)展名分類到不同子文件夾。import os import shutil # 目標(biāo)文件夾路徑改成你自己的目錄 source_dir C:/Users/你的用戶名/Downloads # 建立文件夾名到擴(kuò)展名列表的映射 rules { 圖片: [.jpg, .png, .gif], 文檔: [.pdf, .docx, .txt], 表格: [.xlsx, .csv], 壓縮包: [.zip, .rar], } for filename in os.listdir(source_dir): file_path os.path.join(source_dir, filename) # 只處理文件跳過文件夾 if os.path.isfile(file_path): # 獲取擴(kuò)展名并轉(zhuǎn)小寫 ext os.path.splitext(filename)[1].lower() moved False for folder, exts in rules.items(): if ext in exts: target_dir os.path.join(source_dir, folder) # 目標(biāo)文件夾不存在就創(chuàng)建 os.makedirs(target_dir, exist_okTrue) shutil.move(file_path, os.path.join(target_dir, filename)) print(f移動 {filename} 到 {folder}) moved True break if not moved: print(f跳過 {filename}沒有匹配的分類規(guī)則)這個(gè)腳本用到了os模塊操作文件和目錄、循環(huán)和條件判斷、字典映射。你把第一遍代碼跑通之后自然就理解了“模塊”和“封裝”的意義。驗(yàn)證的時(shí)候先找一個(gè)小文件夾測試別真拿重要的下載目錄開刀防止誤移動文件。想恢復(fù)的話手動再改一遍路徑把文件搬回來就行寫程序的第一原則是安全第一。5.4 學(xué)習(xí)資源怎么挑而不亂網(wǎng)上的Python教程用海量來形容不過分選擇困難是正常的。我的建議是選定一套主課程作為主線比如一本結(jié)構(gòu)清晰的入門書或者一套系列視頻跟著走完。中途看到別人推薦另一套別急著換主線的連貫性比信息量更重要?;A(chǔ)階段最忌收藏幾十個(gè)教程每個(gè)看兩集然后放下最后停留在“熟悉開頭”的狀態(tài)。官方文檔docs.python.org是終極大殺器雖然一開始閱讀體驗(yàn)可能不太友好但它最準(zhǔn)確、最全面。遇到某個(gè)函數(shù)不明確查官方文檔的“標(biāo)準(zhǔn)庫參考”往往能得到權(quán)威答案。初學(xué)者可以先收藏等有了幾個(gè)月經(jīng)驗(yàn)后再常去翻。踩過不少坑之后我個(gè)人的體會是學(xué)Python這件事拉開差距的不是智商而是“動手的頻率”和“面對報(bào)錯(cuò)的心態(tài)”。你把這篇文章當(dāng)一張地圖先把環(huán)境跑通把變量、循環(huán)、函數(shù)、數(shù)據(jù)結(jié)構(gòu)這些主干認(rèn)全再帶著問題去查細(xì)節(jié)。別等自己“覺得準(zhǔn)備好了”再開始寫代碼——真正動手的人永遠(yuǎn)比還在找方法的人快一步。紙上得來終覺淺絕知此事要躬行這句話放在編程學(xué)習(xí)上比任何學(xué)習(xí)理論都管用。