Python入門:從環(huán)境搭建到命令行項(xiàng)目實(shí)戰(zhàn))
想學(xué)Python最容易被勸退的地方往往不是語法難而是從頭到尾自己摸索特別容易卡殼要么是Python裝好了卻不知道配置環(huán)境變量要么是代碼寫了但控制臺中文亂碼要么是照著教程敲代碼結(jié)果報(bào)錯(cuò)看不懂。很多人覺得別人能寫爬蟲、做分析、跑模型自己卻連第一個(gè)程序都跑不出來于是把問題歸結(jié)為“我不適合編程”。實(shí)際上Python入門真正的攔路虎只有一個(gè)環(huán)境沒搭明白代碼沒有跑起來的正反饋。這篇文章就是按“零基礎(chǔ)也能直接跟著做”的標(biāo)準(zhǔn)來寫的。你會從Python和IDE的安裝開始一步步把開發(fā)環(huán)境跑通然后學(xué)習(xí)變量、數(shù)據(jù)類型、條件判斷、循環(huán)、函數(shù)、文件讀取這些核心語法最后用一段真實(shí)可運(yùn)行的代碼把前面學(xué)的知識串成一個(gè)完整的命令行小項(xiàng)目。每一步都有代碼、命令和驗(yàn)證方式關(guān)鍵配置會解釋為什么需要它報(bào)錯(cuò)的地方也會單獨(dú)拿出來講。文章面向完全沒寫過代碼的新手也適合學(xué)過但一直沒跑通全流程的讀者。1. Python學(xué)了卻用不起來問題出在哪一環(huán)先給一個(gè)明確判斷絕大多數(shù)Python入門失敗不是學(xué)習(xí)資料太少而是環(huán)境、運(yùn)行和反饋這三件事沒有打通。很多人走進(jìn)了一個(gè)誤區(qū)覺得“Python入門”就是看語法。變量、列表、字典、循環(huán)看視頻時(shí)全看得懂關(guān)掉視頻自己敲第一行代碼就報(bào)錯(cuò)。出現(xiàn)這個(gè)現(xiàn)象的原因很簡單你只看了“代碼長什么樣”沒有真正跑過“代碼為什么這樣跑”。而要讓代碼跑起來前提就是解釋器裝對、開發(fā)環(huán)境能正常執(zhí)行、路徑配置沒有坑。這三件事隨便一件出問題都會讓入門體驗(yàn)變得極其糟糕。另一個(gè)誤區(qū)是下載了Python安裝包但安裝時(shí)沒有勾選關(guān)鍵選項(xiàng)或者安裝完不知道在哪個(gè)窗口里寫代碼。還有常見的Classic問題直接雙擊.py文件屏幕一閃而過在cmd里輸入python提示“不是內(nèi)部或外部命令”用IDE寫代碼啟動(dòng)失敗。這些本質(zhì)上都不是智力問題是環(huán)境問題。所以本文不會先講“變量是什么”這種教科書定義而是先帶你把“從安裝到運(yùn)行一條龍”打通。當(dāng)你能在新電腦上獨(dú)立完成Python安裝、新建項(xiàng)目、寫代碼、運(yùn)行、看到真實(shí)輸出你的學(xué)習(xí)速度會快很多因?yàn)檫@個(gè)時(shí)候你才開始真正“用”Python。2. Python環(huán)境搭建把解釋器裝對比把版本升到最新更重要2.1 官方安裝包下載Python解釋器是所有Python代碼的執(zhí)行基礎(chǔ)。這里的建議是盡量從Python官網(wǎng)下載安裝包不要用來歷不明的“一鍵安裝合集”。搜索“Python官網(wǎng)”時(shí)注意辨認(rèn)網(wǎng)址避免點(diǎn)進(jìn)仿冒下載站獲得帶捆綁軟件的安裝器。進(jìn)入官網(wǎng)后在Downloads頁面找到對應(yīng)操作系統(tǒng)的下載按鈕。對Windows系統(tǒng)下載Windows installer64-bit對macOS下載macOS installerLinux發(fā)行版大多自帶Python 3也可以使用系統(tǒng)包管理器安裝。版本選擇上建議選擇當(dāng)前較新的Python 3.x系列穩(wěn)定版。不需要刻意追求最新小版本也不需要為了兼容老項(xiàng)目特意裝Python 2新項(xiàng)目用Python 3是當(dāng)前絕對主流的選擇。下載完成后先不要急著雙擊Next到底。Windows用戶需要特別注意下面這一點(diǎn)。2.2 Windows安裝勾選Add Python to PATH如果你在Windows安裝時(shí)沒有勾選“Add Python to PATH”這個(gè)選項(xiàng)安裝完成后直接在cmd里輸入python系統(tǒng)會提示“python 不是內(nèi)部或外部命令”。這里解釋一下為什么需要勾選。PATH環(huán)境變量是操作系統(tǒng)查找命令的路徑列表。當(dāng)你輸入python時(shí)系統(tǒng)會沿著PATH列出的目錄去尋找python.exe。如果安裝時(shí)沒有把這個(gè)目錄加入PATH系統(tǒng)就找不到這個(gè)命令。很多新手在第一步就卡在這里然后誤以為是安裝過程壞了其實(shí)只是一個(gè)選項(xiàng)沒勾。最穩(wěn)妥的做法是安裝時(shí)勾選底部的“Add Python to PATH”然后點(diǎn)擊“Install Now”。如果是自定義安裝也建議保留默認(rèn)組件并把“py launcher”選上。安裝完成后最好重啟一次命令行窗口因?yàn)榄h(huán)境變量的修改在已經(jīng)打開的命令行里不會立即生效。2.3 驗(yàn)證安裝是否成功打開Windows的cmd或者macOS/Linux的終端輸入以下兩條命令python --versionpip --version如果能看到類似Python 3.12.0和pip 24.x from ...這樣的輸出說明Python和pip都已經(jīng)安裝成功。pip是Python的包管理工具后面安裝第三方庫都要靠它。如果python命令無法識別但安裝目錄下確實(shí)有python.exe可以先嘗試py命令py --version部分Windows安裝方式下py是官方啟動(dòng)器提供的統(tǒng)一入口。如果py --version能正常輸出說明Python本體沒問題只是PATH沒配好。此時(shí)可以手動(dòng)把Python安裝目錄和它的Scripts子目錄加入環(huán)境變量。進(jìn)入“系統(tǒng)屬性 - 高級 - 環(huán)境變量”在“Path”中添加兩條記錄例如C:\Users\你的用戶名\AppData\Local\Programs\Python\Python312\ C:\Users\你的用戶名\AppData\Local\Programs\Python\Python312\Scripts\這里要提醒一點(diǎn)不同安裝位置的路徑可能不同以上路徑只是示例實(shí)際操作時(shí)以你本機(jī)安裝目錄為準(zhǔn)。3. 開發(fā)環(huán)境選擇VS Code與PyCharm怎么選Python裝好之后下一個(gè)問題是在哪里寫代碼很多新手會用系統(tǒng)自帶的記事本寫這對早期練習(xí)來說可以接受但很快就需要語法高亮、代碼補(bǔ)齊、錯(cuò)誤提示這些功能。這里給出一個(gè)比較實(shí)用的選擇建議如果你是純新手電腦配置一般不想一上來就面對重型IDE優(yōu)先選擇Visual Studio Code簡稱VS Code。它啟動(dòng)快插件體系成熟Python開發(fā)體驗(yàn)足夠好。如果你喜歡開箱即用的完整IDE選PyCharm Community版也可以。它對工程管理更直觀但打開大工程時(shí)內(nèi)存占用更高部分進(jìn)階功能只在付費(fèi)版里提供。3.1 VS Code的Python環(huán)境配置安裝VS Code后首先在擴(kuò)展面板搜索“Python”安裝微軟官方發(fā)布的Python擴(kuò)展。這一步的作用是讓VS Code識別Python代碼并支持運(yùn)行、調(diào)試、語法檢查等功能。然后在VS Code中打開一個(gè)文件夾作為項(xiàng)目目錄新建一個(gè)hello.py文件輸入print(Hello Python)打開終端輸入python hello.py如果能看到輸出Hello Python說明開發(fā)環(huán)境已經(jīng)配置成功。如果提示找不到python命令可以在VS Code里按下CtrlShiftP輸入Python: Select Interpreter手動(dòng)選擇已經(jīng)安裝的Python解釋器。3.2 使用VS Code調(diào)試Python對于新手建議從一開始就學(xué)會使用調(diào)試器而不是遇到問題亂加print。VS Code可以為當(dāng)前Python文件配置調(diào)試任務(wù)。在.vscode/launch.json中寫入以下配置{ version: 0.2.0, configurations: [ { name: Python: 當(dāng)前文件, type: python, request: launch, program: ${file}, console: integratedTerminal } ] }配置完成后在代碼行號左側(cè)點(diǎn)擊可以打上斷點(diǎn)然后按F5啟動(dòng)調(diào)試。程序會在斷點(diǎn)位置暫停此時(shí)可以查看變量當(dāng)前值、單步執(zhí)行、觀察調(diào)用堆棧。這是排查代碼邏輯問題的有效手段比反復(fù)print更接近真實(shí)開發(fā)方式。4. Python基礎(chǔ)語法從變量到條件循環(huán)環(huán)境準(zhǔn)備好后開始接觸真正的Python代碼。這里不追求把所有語法講完而是把最常用的核心語法一次講透并給出對應(yīng)的可運(yùn)行示例。4.1 變量與基本數(shù)據(jù)類型Python是動(dòng)態(tài)類型語言聲明變量時(shí)不需要寫類型。常見類型有整數(shù)、浮點(diǎn)數(shù)、字符串、布爾值、列表、元組、字典、集合??匆粋€(gè)綜合示例name 張三 # 字符串 str age 18 # 整數(shù) int height 1.75 # 浮點(diǎn)數(shù) float is_student True # 布爾值 bool scores [98, 87, 92] # 列表 list person {name: name, age: age} # 字典 dict print(name, age, height, is_student) print(scores) print(person[age])這里不需要死記硬背只要理解兩點(diǎn)Python變量的類型由賦值內(nèi)容決定列表用方括號字典用花括號字典按“鍵”取值。運(yùn)行后你會在終端看到對應(yīng)的值。4.2 字符串操作字符串是Python里最常見的數(shù)據(jù)類型也是新手最容易因編碼問題踩坑的地方。這里給出幾種常用寫法text1 單引號字符串 text2 雙引號字符串 text3 f我的姓名是{name}今年{age}歲 words [Python, 教程, 實(shí)戰(zhàn)] joined -.join(words) print(joined) upper_text text2.upper() print(upper_text)f-string是Python 3.6之后引入的格式化字符串方式在字符串前加f用花括號引用變量非常方便。字符串拼接時(shí)如果要加入分隔符推薦用join而不要用循環(huán)做字符串連接后者在數(shù)據(jù)量大時(shí)性能很差。4.3 條件判斷Python使用縮進(jìn)代替花括號這一點(diǎn)新手經(jīng)常不習(xí)慣。一個(gè)典型的if/elif/else結(jié)構(gòu)如下score 85 if score 90: grade 優(yōu)秀 elif score 80: grade 良好 elif score 60: grade 及格 else: grade 不及格 print(f成績等級{grade})這里的關(guān)鍵是縮進(jìn)必須一致。同一個(gè)代碼塊內(nèi)的縮進(jìn)要完全相同官方推薦使用4個(gè)空格不建議用Tab和空格混用。如果混用了Python會直接拋出IndentationError。4.4 循環(huán)Python有兩類循環(huán)for循環(huán)和while循環(huán)。for循環(huán)適合遍歷序列while循環(huán)適合條件控制的重復(fù)執(zhí)行。print(for循環(huán)遍歷列表) for score in scores: print(score) print(for循環(huán)生成數(shù)字序列) for i in range(1, 6): print(f第{i}次循環(huán)) print(while循環(huán)) count 0 while count 3: print(fcount {count}) count 1range(1, 6)生成從1到5的整數(shù)序列。while循環(huán)中一定要讓條件在某個(gè)時(shí)刻變?yōu)镕alse否則會變成死循環(huán)。count 1就是讓循環(huán)變量累加的關(guān)鍵操作。5. 列表、字典與文件操作寫代碼的核心工具箱5.1 列表的增刪改查列表是Python中最常用的容器。增刪改查的寫法如下tasks [學(xué)Python, 做練習(xí)] tasks.append(寫項(xiàng)目) # 尾部追加 tasks.insert(1, 讀文檔) # 指定位置插入 tasks.remove(做練習(xí)) # 按值刪除 # tasks.pop() # 刪除尾部元素并返回該元素 print(tasks) print(第一個(gè)任務(wù), tasks[0]) print(任務(wù)數(shù)量, len(tasks)) for index, task in enumerate(tasks, start1): print(f{index}. {task})列表結(jié)合循環(huán)可以批量處理數(shù)據(jù)。enumerate可以同時(shí)拿到索引和元素值在需要輸出序號時(shí)很實(shí)用。5.2 字典的常見操作字典適合保存有鍵值對應(yīng)關(guān)系的數(shù)據(jù)。比如統(tǒng)計(jì)單詞時(shí)可以直接用字典記錄次數(shù)counter {} words [apple, banana, apple, orange] for word in words: counter[word] counter.get(word, 0) 1 print(counter)dict.get(key, default)的意思是如果鍵存在返回對應(yīng)的值如果不存在返回默認(rèn)值0。這是寫計(jì)數(shù)邏輯時(shí)非常經(jīng)典的寫法。5.3 文件讀取與寫入文件操作是很多自動(dòng)化任務(wù)的基礎(chǔ)。官方推薦的寫法是使用with open這樣即使處理過程中發(fā)生異常文件也會被正確關(guān)閉。讀取文件with open(data.txt, r, encodingutf-8) as f: content f.read() print(content)寫入文件lines [第一行, 第二行, 第三行] with open(output.txt, w, encodingutf-8) as f: f.write(\n.join(lines))追加寫入with open(output.txt, a, encodingutf-8) as f: f.write(\n追加的新內(nèi)容\n)這里每次打開文件時(shí)都明確寫了encodingutf-8這個(gè)習(xí)慣非常重要。Windows默認(rèn)編碼可能是GBK如果不指定UTF-8編碼讀取帶中文的文本文件時(shí)很容易出現(xiàn)UnicodeDecodeError或亂碼。6. 函數(shù)、模塊與用pip安裝第三方庫6.1 函數(shù)的定義與調(diào)用當(dāng)一段邏輯需要重復(fù)使用時(shí)就應(yīng)該封裝成函數(shù)。定義函數(shù)使用def關(guān)鍵字def calculate_average(numbers): if not numbers: return 0 total sum(numbers) return total / len(numbers) scores [98, 87, 92] avg calculate_average(scores) print(f平均分{avg})函數(shù)定義有三個(gè)要點(diǎn)參數(shù)用于接收外部傳入的數(shù)據(jù)return用于返回計(jì)算結(jié)果如果不寫return函數(shù)默認(rèn)返回None。if not numbers是Python風(fēng)格的判空寫法意思是當(dāng)列表為空時(shí)返回0避免被零除。6.2 模塊導(dǎo)入Python的模塊化設(shè)計(jì)讓代碼可以按邏輯拆分。使用import導(dǎo)入模塊然后通過“模塊名.函數(shù)名”的方式調(diào)用import math import random from collections import Counter print(math.sqrt(16)) print(random.randint(1, 100)) words [a, b, a, c, b, a] counter Counter(words) print(counter.most_common(2))Counter是Python標(biāo)準(zhǔn)庫中非常實(shí)用的計(jì)數(shù)器它接收一個(gè)列表就能統(tǒng)計(jì)每個(gè)元素出現(xiàn)的次數(shù)內(nèi)部返回一個(gè)字典子類。很多場景下不必自己手動(dòng)寫計(jì)數(shù)循環(huán)。6.3 用pip安裝第三方庫Python生態(tài)強(qiáng)大的原因之一是第三方庫豐富。安裝第三方庫的基本命令如下pip install requests pip install beautifulsoup4 pip install pandas安裝前建議確認(rèn)pip能夠正常使用。如果網(wǎng)絡(luò)環(huán)境特殊可以切換清華源、阿里源等鏡像源但不建議直接修改全局配置按項(xiàng)目使用鏡像源更穩(wěn)妥。例如pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple檢查已安裝的包pip list需要說明的是第三方庫版本會持續(xù)更新本文不指定具體版本號以你安裝時(shí)獲取到的最新穩(wěn)定版為準(zhǔn)。如果項(xiàng)目對版本有嚴(yán)格要求建議額外使用虛擬環(huán)境工具避免不同項(xiàng)目之間的依賴互相干擾。7. 項(xiàng)目實(shí)戰(zhàn)從零寫一個(gè)文本詞頻統(tǒng)計(jì)工具前幾節(jié)講的都是單個(gè)知識點(diǎn)。這一節(jié)把它們組合成一個(gè)完整的命令行小項(xiàng)目。這個(gè)項(xiàng)目會讀取一個(gè)文本文件統(tǒng)計(jì)每個(gè)詞出現(xiàn)的次數(shù)最后輸出頻率最高的前N個(gè)詞。它非常適合練習(xí)因?yàn)樗采w了文件讀取、字符串處理、字典/計(jì)數(shù)器、排序、函數(shù)封裝、異常處理這幾個(gè)核心能力。7.1 項(xiàng)目需求程序要滿足以下幾點(diǎn)用戶輸入文件路徑。程序讀取文件內(nèi)容。將文本中的標(biāo)點(diǎn)符號去除并統(tǒng)一轉(zhuǎn)為小寫。統(tǒng)計(jì)單詞出現(xiàn)次數(shù)。輸出頻率最高的前10個(gè)詞。7.2 完整代碼新建word_count.py文件保存以下代碼import re from collections import Counter def read_file(filepath: str) - str: 讀取文本文件內(nèi)容 with open(filepath, r, encodingutf-8) as f: return f.read() def clean_text(text: str) - str: 清洗文本轉(zhuǎn)為小寫去除標(biāo)點(diǎn)符號 text text.lower() cleaned re.sub(r[^\w\u4e00-\u9fff\s], , text) return cleaned def count_words(text: str, top_n: int 10): 統(tǒng)計(jì)詞頻返回出現(xiàn)次數(shù)最多的前 n 個(gè)詞 words text.split() counter Counter(words) return counter.most_common(top_n) def main(): filepath input(請輸入文本文件路徑) try: text read_file(filepath) except FileNotFoundError: print(錯(cuò)誤文件不存在請檢查路徑。) return cleaned clean_text(text) result count_words(cleaned) if not result: print(文件中沒有可統(tǒng)計(jì)的詞匯。) return print(f\n出現(xiàn)頻率最高的 {len(result)} 個(gè)詞) for word, count in result: print(f{word}: {count}) if __name__ __main__: main()7.3 代碼邏輯說明read_file負(fù)責(zé)讀取文件路徑由調(diào)用方傳入。如果文件路徑不存在open會拋出FileNotFoundError調(diào)用方在main中捕獲并提示友好信息這樣程序不會直接崩潰。clean_text使用了正則表達(dá)式re.sub(r[^\w\u4e00-\u9fff\s], , text)。這里簡單解釋一下\w匹配字母、數(shù)字和下劃線\u4e00-\u9fff是中文Unicode范圍\s匹配空白字符。這個(gè)正則表達(dá)式的意思是把不能匹配以上字符的內(nèi)容也就是標(biāo)點(diǎn)符號替換為空字符串。count_words用Counter(text.split())完成統(tǒng)計(jì)。split()默認(rèn)按空白字符切分字符串得到一個(gè)單詞列表。most_common(top_n)返回一個(gè)按次數(shù)降序排列的列表每個(gè)元素是(單詞, 次數(shù))的元組。if __name__ __main__:這一行的作用是只有當(dāng)這個(gè)文件作為主程序直接運(yùn)行時(shí)才執(zhí)行main()。這樣以后在別的文件里 import 這個(gè)模塊時(shí)不會自動(dòng)運(yùn)行測試邏輯。7.4 運(yùn)行并驗(yàn)證隨便新建一個(gè)文本文件sample.txt寫入Python is a powerful language. Python is widely used. Python is easy to learn.然后在終端中運(yùn)行python word_count.py輸入文件路徑sample.txt預(yù)期輸出類似出現(xiàn)頻率最高的 10 個(gè)詞 python: 3 is: 3 a: 1 powerful: 1 language: 1 widely: 1 used: 1 easy: 1 to: 1 learn: 1如果能看到這個(gè)結(jié)果說明整個(gè)流程已經(jīng)跑通。此時(shí)你已經(jīng)具備了使用文件讀寫、正則、容器、函數(shù)、異常處理來寫出一個(gè)真實(shí)小工具的能力。接下來就可以在這個(gè)基礎(chǔ)上加需求比如自定義統(tǒng)計(jì)數(shù)量、支持多個(gè)文件、輸出到CSV甚至接入數(shù)據(jù)可視化。8. 常見報(bào)錯(cuò)與排查方法新手報(bào)錯(cuò)不可怕可怕的是看不懂報(bào)錯(cuò)信息。這里整理幾個(gè)最常見的Python入門問題并給出排查思路。問題現(xiàn)象可能原因排查方式解決方案輸入python提示“不是內(nèi)部或外部命令”安裝時(shí)未勾選Add Python to PATH在命令行輸入py --version驗(yàn)證Python是否已安裝手動(dòng)把Python安裝目錄添加到Path環(huán)境變量運(yùn)行.py文件屏幕一閃而過直接雙擊運(yùn)行程序結(jié)束后窗口關(guān)閉在cmd中手動(dòng)運(yùn)行python 文件名.py不要用雙擊方式運(yùn)行腳本在終端執(zhí)行讀取文本文件時(shí)報(bào)UnicodeDecodeError文件編碼與讀取時(shí)指定的編碼不一致查看文本文件的編碼格式統(tǒng)一使用encodingutf-8或按實(shí)際文件編碼指定提示ModuleNotFoundError: No module named xxx第三方庫尚未安裝執(zhí)行pip show xxx查看是否安裝執(zhí)行pip install xxx安裝對應(yīng)庫代碼報(bào)IndentationError縮進(jìn)不一致Tab與空格混用查看報(bào)錯(cuò)行附近的縮進(jìn)統(tǒng)一為4個(gè)空格縮進(jìn)中文輸出亂碼Windows終端編碼與UTF-8不一致檢查終端代碼頁在代碼文件頭部加# -*- coding: utf-8 -*-或調(diào)整終端編碼調(diào)用函數(shù)時(shí)提示參數(shù)數(shù)量不對定義函數(shù)時(shí)參數(shù)個(gè)數(shù)與調(diào)用時(shí)不匹配檢查函數(shù)簽名和調(diào)用語句按函數(shù)簽名傳入?yún)?shù)或給參數(shù)設(shè)置默認(rèn)值list index out of range訪問了列表中不存在的索引打印列表長度和索引值訪問前檢查索引是否在合法范圍內(nèi)關(guān)于報(bào)錯(cuò)還有兩條實(shí)踐建議。第一遇到報(bào)錯(cuò)優(yōu)先看第一條問題和最后幾行錯(cuò)誤不要從一大堆堆棧中尋找答案。Python的報(bào)錯(cuò)信息里包含了文件名、行號和錯(cuò)誤類型這三樣信息通常足以定位問題。第二不要因?yàn)楹ε聢?bào)錯(cuò)而不敢寫代碼。寫代碼時(shí)被報(bào)錯(cuò)打斷是正?,F(xiàn)象報(bào)錯(cuò)信息本質(zhì)上是在告訴你“程序在這個(gè)地方的理解和你不一樣”??炊e(cuò)誤的含義比背語法更容易成長。9. 最佳實(shí)踐與繼續(xù)提升建議9.1 從一開始就保持代碼可讀代碼是寫給機(jī)器運(yùn)行的但更是寫給未來的自己看的。變量命名要盡量表達(dá)含義。比如task_list好于tlstudent_name好于sn。如果一個(gè)函數(shù)完成了一件事就給它起一個(gè)對應(yīng)動(dòng)作的名字比如read_file、count_words。同時(shí)不要讓代碼持續(xù)堆疊。當(dāng)發(fā)現(xiàn)重復(fù)代碼越來越多時(shí)應(yīng)該把重復(fù)的部分提煉成函數(shù)。函數(shù)職責(zé)單一以后測試和排查都會更容易。這里可以記住一個(gè)簡單的判斷標(biāo)準(zhǔn)如果你需要給一段代碼寫注釋才能明白它在干什么這段代碼很可能應(yīng)該改寫了。9.2 使用虛擬環(huán)境管理項(xiàng)目依賴Python的第三方包更新很快不同項(xiàng)目可能依賴同一個(gè)包的不同版本。如果所有項(xiàng)目都安裝在同一個(gè)全局環(huán)境里時(shí)間長了必然出現(xiàn)依賴沖突。建議從早期就學(xué)會使用虛擬環(huán)境。Python 3.3以后自帶venv模塊創(chuàng)建虛擬環(huán)境只需要python -m venv venv激活虛擬環(huán)境Windowsvenv\Scripts\activatemacOS/Linuxsource venv/bin/activate激活后再用pip安裝的包都只歸屬于這個(gè)項(xiàng)目不會污染全局環(huán)境。項(xiàng)目代碼里也可以生成一個(gè)requirements.txt文件把依賴固定記錄下來pip freeze requirements.txt換一臺電腦部署時(shí)用pip install -r requirements.txt即可一鍵安裝所有依賴。這種做法在團(tuán)隊(duì)合作和部署場景中尤其重要。9.3 學(xué)習(xí)路線不要追求“精通”再動(dòng)手很多人的學(xué)習(xí)規(guī)劃是“看完所有語法再開始做項(xiàng)目”這是低效的。Python語法再多日常高頻使用的也就是變量、容器、條件、循環(huán)、函數(shù)、文件操作、類。先跑的流程在項(xiàng)目里遇到不懂的再查記憶會更深。建議的路線是這樣的跑通本教程的環(huán)境和詞頻統(tǒng)計(jì)小項(xiàng)目。找一個(gè)自己關(guān)心的實(shí)際問題用腳本自動(dòng)化解決。比如批量改文件名稱、批量整理Excel數(shù)據(jù)、定時(shí)抓取公開數(shù)據(jù)并保存。學(xué)習(xí)requests和BeautifulSoup做簡單位置的網(wǎng)頁數(shù)據(jù)抓取時(shí)務(wù)必遵守網(wǎng)站的robots協(xié)議和訪問頻率限制只訪問公開數(shù)據(jù)不要對任何網(wǎng)站發(fā)起高頻率請求。引入pandas做表格數(shù)據(jù)處理把腳本從“處理文本”升級到“處理結(jié)構(gòu)化數(shù)據(jù)”。學(xué)習(xí)基本的類和面向?qū)ο笤O(shè)計(jì)讓代碼更適合多人協(xié)作。9.4 寫代碼之外的工程習(xí)慣寫代碼不等于寫邏輯。建議在第一天就養(yǎng)成幾個(gè)工程習(xí)慣。第一每次運(yùn)行代碼前確認(rèn)自己在哪個(gè)項(xiàng)目目錄。路徑不對是新手常見的低級問題??梢栽谶\(yùn)行前執(zhí)行pwdLinux/macOS或cdWindows查看當(dāng)前目錄避免文件讀取路徑錯(cuò)誤。第二不要用無意義的文件名。test1.py、test2.py很難讓人一眼明白內(nèi)容最好用calculate_salary.py、convert_files.py這樣的命名。第三保留一個(gè)本地代碼倉庫??梢詮腉it開始學(xué)起每次完成一個(gè)小功能就提交一次。它不會立刻見效但當(dāng)你寫了兩個(gè)月代碼后能回滾、能對比、能管理版本這種習(xí)慣的價(jià)值才會真正顯現(xiàn)。9.5 學(xué)習(xí)的終極路徑是持續(xù)輸出對于新手最有價(jià)值的練習(xí)是在跑通示例代碼之后馬上嘗試改動(dòng)它。把詞頻統(tǒng)計(jì)的top 10改成top 20把輸入方式從命令行改成讀取多個(gè)文件把單獨(dú)統(tǒng)計(jì)英文改成支持中文分詞。每一次對已有代碼的修改都是思維上的實(shí)戰(zhàn)。學(xué)習(xí)Python是一件回報(bào)周期非常長、但確定性強(qiáng)的事情。環(huán)境安裝是第一關(guān)語法是第二關(guān)把語法變成解決自己問題的腳本是第三關(guān)。大多數(shù)人真正放棄的節(jié)點(diǎn)不是“太難”而是“沒有可用場景”。所以從第一周開始就應(yīng)該給Python找?guī)讉€(gè)現(xiàn)實(shí)任務(wù)哪怕只是整理桌面文件、重命名照片、批量轉(zhuǎn)換文檔格式。當(dāng)你發(fā)現(xiàn)自己寫的腳本真的幫自己節(jié)省了時(shí)間你就不再需要靠意志力堅(jiān)持了。動(dòng)手打開終端從第一行代碼開始吧。