你打開終端,敲下第一行代碼:
current_status = "Learning"
沒寫類型聲明,回車后解釋器安靜通過。補一行 print(type(current_status)),屏幕飄出 。這一刻的反直覺感,就像把一本書扔進郵筒,三天后郵遞員告訴你:“您寄的是一本小說。”這里的變量壓根不是固定形狀的盒子——它是會變形的標簽。
第一天接觸這門語言,第一課就讓“變量必須聲明類型”的肌肉記憶瞬間失效。這不是偷懶,而是刻在骨子里的三種設(shè)計選擇,它們會變成讓你少敲鍵盤的默契。
第一重反直覺:高級語言替你管內(nèi)存。你不用手動分配空間,不必理會 CPU 寄存器,更不用操心垃圾回收何時啟動。就像開車無需自己擰火花塞,它把硬件細節(jié)都封裝在底層,你面對的是接近自然語言的表達。有人把它叫做“可執(zhí)行的偽代碼”,真不是夸張——把需求描述改一下縮進,常常直接就能運行。
第二重反直覺:解釋執(zhí)行,改完就能跑。C 要編譯成 .exe,Java 要先編譯成字節(jié)碼再交給 JVM,而這門語言是逐行讀取、逐行執(zhí)行,沒有單獨的編譯環(huán)節(jié)。改一行代碼,立刻就能看結(jié)果,試錯成本低到讓人上癮。這種即時反饋,就像跟電腦實時聊天,你問一句它回一句,沒有漫長的編譯等待。
第三重反直覺:動態(tài)類型令標簽隨意變形。同一個變量名 current_status,上一秒還是字符串,下一秒寫成 current_status = 100 就變成整數(shù),再下一秒可以指向一個列表。變量名本質(zhì)上是貼在對象身上的便簽,而不是刻在木頭里的抽屜。這種靈活讓快速原型開發(fā)爽到飛起,但也意味著你得多留個心眼:別貼錯標簽,否則運行時才會翻車。
正是因為這種自由度,社區(qū)搞出了一套命名家規(guī),叫 PEP 8。它不是語法鐵律,不遵守代碼照樣能跑,但全世界的開發(fā)者都默契地用它讓代碼“看起來像自己人寫的”。
變量、函數(shù)用 snake_case,全小寫單詞間加下劃線,比如 user_growth_rate = 12.5,def calculate_roi():。
類名用 PascalCase,每個單詞首字母大寫,如 UserProfile。常量全部大寫,MAX_TIMEOUT_SECONDS = 30。千萬不要用駝峰命名 userGrowthRate,也別讓數(shù)字打頭——3_strikes_rule = "Out" 會直接給一個 SyntaxError,連跑起來的機會都沒有。而且變量名嚴格區(qū)分大小寫,age 和 Age 是兩個完全不同的標簽。
搞清變量怎么貼標簽,下一步自然要問:標簽?zāi)苜N到什么對象上?內(nèi)建的數(shù)據(jù)類型可分兩大陣營:標量(單值)和集合(多值容器)。
標量三兄弟你肯定熟:int 整數(shù),28;float 浮點數(shù),49.99;bool 布爾值,True / False。算術(shù)運算、條件判斷都靠他們。
集合型就熱鬧了。列表 list,用方括號,tags = ["python", "coding"],里面的東西可以隨時增刪改,是日常碼字中最兜底的數(shù)據(jù)結(jié)構(gòu)。
元組 tuple,用圓括號,dimensions = (1920, 1080),一旦創(chuàng)建就不能修改,特別適合放坐標、配置項這類不希望被無意識改動的數(shù)據(jù)——相當于一份加蓋封印的信。
字典 dict,花括號里冒號分割鍵值對,user_profile = {"id": 101},根據(jù)鍵名直接取用,在映射關(guān)系中堪稱殺手锏。最后還有集合 set,用花括號但無鍵值對,visited_ips = {"192.168.1.1", "10.0.0.2"},天生自帶去重和數(shù)學集合運算,用于成員檢查極快。第一天先混個臉熟,往后你會邊寫邊感嘆:原來標簽貼在不同的容器上,能玩出這么多花樣。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.