官术网_书友最值得收藏!

1.1 認識Python

當讀到這本書時,想必你已經對編程有所了解,同時已經選擇了Python作為你此時的學習語言。在本節,我們將重新認識編程,了解Python語言的產生,還將探討Python有什么特點、我們為什么選擇學習Python,以及如何學好Python。了解這些內容對你以后的學習是至關重要的。

1.1.1 什么是編程

計算機是20世紀最偉大的發明之一,它對人類的生產和生活產生了極其重大的影響。計算機程序通過調度復雜的指令,來完成人們預期要執行的工作內容。計算機并不“聰明”,但它“勤奮”,它可以不間斷地重復執行我們想要的操作。

計算機集成了一系列指令,能夠讓人們通過發出指令來完成相應的操作,這些指令就是所謂的機器語言。為了使程序員更加簡單、準確地發出指令,人們開發了一系列從不同層面對計算機進行操作的編程語言。這些語言會讓代碼更加符合人類的表達習慣,能夠清晰地表達功能意圖、操作邏輯和控制流程,這樣程序員就不用在理解和修改代碼上花費大量的時間,編程的門檻大大降低了。

基于以上目標,編程語言朝著更加符合自然語言、代碼更加短小、邏輯封裝更好、命名規范更有約束力等方向發展。同時,傾向于用一種語言解決更多的問題,而不是只解決特定的問題,這也是C、Java、Python、JavaScript等語言在近些年大行其道的原因。

更嚴格地講編程應該稱為程序設計,它是人類進行的創造活動,人們設計出精妙的邏輯來解決現實中復雜的問題。我們再來討論一下程序到底做了什么。

程序會根據我們編寫的源代碼順序執行,在執行過程中會自己產生或者從外部讀取數據,這些數據遵循程序語言規定的數據結構要求,在你設計的需要判斷的地方做出條件判斷,通過判斷跳轉到指定的地方繼續執行,如此反復循環運行。一個程序在相同的環境下,能夠以相同的方法執行,得到相同的結果,從而達到穩定輸出的目的。

程序解決的是現實生活中的問題,它對現實中的問題進行抽象,建立一個解決問題的模型。不同的語言在抽象問題、解決問題時的思路是不一樣的。有的語言把解決問題的方法抽象為一個工具,你只要給這個工具輸入相應的數據和命令就能得到解決后的結果;有的語言把問題抽象為一個對象或者物體,為它賦予生命,使它有相關的屬性和功能,解決問題時執行這個對象相應的功能即可。

1.1.2 Python的誕生

1989年的圣誕節期間,在荷蘭數學和計算機科學研究學會工作的吉多·范羅蘇姆(Guido van Rossum)為了打發百無聊賴的時光,尋找一個“課余”的編程項目。

吉多1956年生于荷蘭,他熱愛數學與編程。1974年,他在國際數學奧林匹克競賽中獲得銅牌。他于1982年從阿姆斯特丹大學獲得數學和計算機科學碩士學位后,一直在研究機構工作。

在那個年代,IBM和蘋果推出了個人計算機,掀起了個人計算機的浪潮。但當時的計算機配置非常低,為了讓程序正確、流暢地運行,程序員需要像計算機一樣思考,盡可能讓代碼與硬件底層交流,使計算機少花時間和資源理解代碼。雖然許多研究機構開發出了眾多性能非常出色的編程語言,但其學習和理解難度讓個人計算機用戶望而卻步。

吉多也為上述問題苦惱,于是在ABC語言的啟發下,他打算開發一門新的編程語言。ABC語言是當時吉多供職的機構研發的,他也曾參與開發。ABC語言的設計目標是教學和創建程序原型,它有良好的可讀性。當然,ABC語言存在著擴展性差、功能殘缺、設計激進、安裝困難等問題。

隨著技術的不斷迭代,更好的中央處理器、更加直觀的視窗操作系統得到普及,程序員們開始關注編程語言的易用性。

在吉多的設想中,新的語言應該像C語言一樣功能全面,同時像ABC等指令式語言一樣易讀易寫,從而能夠激發人們學習編程的興趣。

他將這門新語言命名為Python,這個名字取自他喜歡的《蒙提·派森的飛行馬戲團》(Monty Python’s Flying Circus),這是英國BBC播出的電視系列喜劇。雖然后來Python的官方標識采用的元素是單詞python的原意“蟒蛇”,但它不是Python名稱的起源。

經過一年多的開發,1991年2月吉多發布了版本號為0.9.0的初版代碼,直到1994年1月他才發布1.0版本。2.0版本于2000年10月16日發布,之后Python由個人開發轉向社區開發,依靠社區力量發展壯大。

Python 3.0于2008年12月3日發布,這個版本進行了大刀闊斧的改進,不再兼容2.0版本的代碼,同時提供了一系列代碼轉換兼容方案。對Python 2.7的支持于2020年1月1日結束,2.7開發分支的代碼也隨之凍結。2.0的最后版本2.7.18于2020年4月20日發布,包括對關鍵Bug和阻塞問題的修復,這標志著Python 2的生命終結。2022年3月14日發布的相關版本中已徹底移除Python 2。

2021年10月4日Python 3.10版本發布,2022年10月Python 3.11版本發布。未來,Python將每年發布一個包含新特性的版本,Python依然在發展進化。

1.1.3 Python的特點

Python在創立之初,就確定了“優雅、明確、簡單”的設計哲學。Python的語法簡潔,代碼像純英文一樣讓人容易理解,代碼邏輯層次沒有采用傳統的括號組織,而是選用了縮進,顯著提高了代碼的可讀性。它學習借鑒了眾多優秀的語言,對于一些新的編程思想和理念、新的特性則與時俱進地接受和采納,同時給出自己更優的解決方案。Python甚至把這些哲學寫到了代碼里,讓無論是語言的開發者還是使用者都能遵守這些規范,這就是Python社區大名鼎鼎的“Python之禪”,在Python解釋器中運行import this便可以看到。在“Python之禪”中我們可以看到這樣的表述:

優美優于丑陋,明了優于隱晦。

簡單優于復雜,復雜優于凌亂。

扁平優于嵌套,稀疏優于稠密。

可讀性很重要。

Python倡導做一件事只有一種最合適的方法,這顯然與其他語言不同。如果你在編寫代碼時有很多方法,那么你應該選擇明確而沒有歧義的方法。每件事Python都給出了最佳的實現方案。即使Python自身沒有給出,人們可以對它進行擴展,以第三方庫的形式為Python增加能力,所以我們看到,各個領域均有Python第三方庫成為解決某類問題的事實標準。

Python是開放的,作為一個開源項目,Python語言本身由社區共同開發,它網羅了異常優秀的人才,他們在各自領域都是佼佼者,同時也是一線的Python使用者。Python有成百上千個內置的類和函數,這足以滿足我們大部分的日常需求。

在不同的應用領域,比如網站開發、數據分析、人工智能、語音識別、游戲開發等領域,均有人在Python的基礎上開發第三方代碼庫,Python的第三方代碼庫網站https://pypi.org上的項目已經有38萬之多,每天仍然有大量新的解決方案產生。Python使用者能輕松地安裝這些第三方代碼庫來解決自己同樣類型的問題,而不用自己重復寫代碼,甚至你可以根據需要修改這些代碼。而這些,連同Python本身都是免費的。

Python是跨平臺的,它幾乎可以在任何操作系統上運行,比如流行的Windows、macOS和Linux/UNIX,因此我們編寫代碼時不用把很多的精力放在不同平臺的兼容支持上。

其他Python的特點,我們將在學習中慢慢體會。

1.1.4 為什么選擇Python

TIOBE是一家專門評估和跟蹤軟件質量的公司,它每月會更新所有編程語言的排名,以展示不同編程語言的受歡迎程度。這份榜單非常有影響力,堪稱編程語言界的“奧斯卡”。2022年5月開始Python取代擂主C語言成為排名第一的編程語言。在TIOBE每年公布的年度語言中,Python更是分別在2007、2010、2018、2020、2021等多個年份摘得此殊榮。

Python已經成為許多領域事實上的標準編程語言,在Web開發、大數據、數據分析、人工智能、運維、軟件測試、爬蟲、量化交易、嵌入式、辦公自動化、少兒編程、桌面GUI、游戲開發等各個領域都可以看到Python的身影,近些年Python更是在數據科學、Web開發、自動化測試、辦公自動化等領域獨占鰲頭。

當然,當前Python也有一些短板,主要在需要高性能的場景和前端領域。高性能瓶頸正在由多個項目進行攻關,比如由微軟贊助的Faster-Cpython項目的首要任務是提升語言的執行效率,這個項目將分階段地把Python的性能提升5倍。在前端方面,現在PyScript項目正在讓Python代碼可以在HTML中執行,將Python的程序運行在瀏覽器中。未來,Python將是前后端大一統語言的最有力競爭者。

2017年,山東省在小學信息技術教材中加入了Python編程的內容,將Python納入信息技術教育體系。同年,浙江省新高中信息技術教材改革時,將編程語言換為Python。隨后多個省份印發通知,建議在中小學開設相關課程,培養編程思維。2018年3月起,Python被列入了全國計算機二級等級考試。

“人生苦短,快用Python”是在程序員中流傳甚廣的一句話,它也說明了Python的地位。Python的高效優雅得到了商業公司的追捧,YouTube、Google、Facebook、NASA在大量地使用Python構建應用程序。國內的知乎、豆瓣、騰訊、百度、新浪等公司均用Python開發相關服務,幾乎所有的互聯網頭部公司都在用Python實現算法模型,使業務得到長足發展。在財務、金融、辦公等領域,用Python做業務分析、量化交易、自動化辦公已經成為常態。

越來越多的人都在學習Python這門語言,除了帶來實用的價值外,在學習過程中建立的編程思維更像一個火種,給了人們無形的思考力量。學習編程會讓你的思維方式產生微妙的變化,激發無限的想象力,這種想象力和那種天馬行空的想象不同,它建立在嚴密的邏輯推理之下,如稍加積極地行動,更容易成為現實。

1.1.5 如何學習Python

在思考如何學習Python之前,我們先要克服心理障礙。編程是對現有問題的抽象,和我們的生活息息相關,并不是什么不可觸及的事物。在Python的產生過程中我們可以看到,無數社區開發者在努力讓編程這件事變得更加簡單,Python的目標用戶就是像你我這樣千千萬萬沒有任何編程基礎的人。那么,如何學習Python呢?

第一,學習Python,不應該從“基礎”開始。這里說的基礎是計算機原理、編程語言設計、程序設計思想等內容,這些內容對于非專業的人群來說過于艱深晦澀。計算機經過漫長的發展,從硬件、軟件到理論體系,其復雜性遠超人們的想象,除非從事相關研究,或者編程水平達到一定層次,大多數人甚至專業的程序員可能永遠不會接觸到這些內容,更何況不懂這些內容并不會影響你寫出好的代碼。

第二,學習編程一開始就要動手寫。編程是一個技能,判斷你會不會編程的唯一標準是你能不能寫出代碼來,如果一直在不停地看書、刷視頻教程,而從不上手編寫,那都是徒勞的。剛開始時,可以照著學習材料的代碼抄寫,試著執行得到同樣的結果,然后對他人的代碼稍加改動,執行得到不同的結果,并思考這是為什么。遇到不理解的地方再去看書,看視頻,請教別人。隨著學習的深入你可以試著用Python解決你自己的問題了,接著你可以幫助解決別人的問題,也可以嘗試教身邊的人學習Python,這樣逐漸積累的成就感,便會推動著你進步。

第三,要確立學習目標,將學習聚焦到自己要解決的問題上來。比如你要用Python做一個網站,那么就要規劃好學習路線,比如要學習哪些前置知識、哪些第三方庫等,將這些內容一一攻克。這里初學者常犯的一個錯誤是花費大量的時間學習Python基礎內容、高級內容,而沒有快速切換到特定的領域。對于自己當前用不著的內容,可以先擱置,等到有需要的時候再系統學習。

第四,注重培養自己解決問題的能力。如同從母體出生成為嬰兒一樣,我們總要獨立前行,人生遇到的問題千千萬萬,無法枚舉,但其中解決問題的能力我們是可以建立的。Python代碼執行錯誤會有報錯,在搜索引擎中查詢報錯信息會得到很多答案,找到能夠解決自己問題的答案,慢慢地就會對此非常敏感。還可以建立自己的代碼庫,以便在解決相同的問題時復用之前的代碼邏輯。

第五,如果有條件,可以找一個身邊的老師。他可以隨時解答你的疑問,幫你排查問題,用生活化的語言為你講解原理,這是學習Python最為高效的辦法。

1.1.6 小結

目前,我們還沒有開始編程。本節的內容試圖告訴你編程的意義,如何看待編程這件事,選擇Python是選擇了什么,我們該如何學習Python。“凡事預則立,不預則廢。”我們要做好心理建設,打有準備的仗。試想,擁有編程技能,是不是一件很酷的事呢?

那么,我們馬上開始!

主站蜘蛛池模板: 乌兰浩特市| 湟中县| 平舆县| 原阳县| 化州市| 海丰县| 湖北省| 青岛市| 奉贤区| 康保县| 革吉县| 青铜峡市| 道孚县| 万盛区| 延寿县| 衡水市| 礼泉县| 聊城市| 扎鲁特旗| 花莲市| 乐平市| 博野县| 宜州市| 萝北县| 忻城县| 尖扎县| 叙永县| 于田县| 凌源市| 庄河市| 黄石市| 囊谦县| 连山| 大洼县| 闽清县| 陆河县| 榕江县| 赤水市| 聂荣县| 华阴市| 普格县|