日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python学习教程】Python编程基础

發(fā)布時間:2023/12/20 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python学习教程】Python编程基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 編程語言是什么
  • 編譯型語言和解釋型語言的區(qū)別
    • 編譯型語言
        • 1) 可執(zhí)行程序不能跨平臺
        • 2) 源代碼不能跨平臺
    • 解釋型語言
    • 關(guān)于 Python
    • 總結(jié)
  • Python是什么,Python簡介
  • Python的特點(優(yōu)點和缺點)
    • Python 的優(yōu)點
        • 1) 語法簡單
        • 2) Python 是開源的
        • 3) Python 是免費的
        • 4) Python 是高級語言
        • 5) Python 是解釋型語言,能跨平臺
        • 5) Python 是面向?qū)ο蟮木幊陶Z言
        • 6) Python 功能強大(模塊眾多)
        • 7) Python 可擴展性強
    • Python 的缺點
        • 1) 運行速度慢
        • 2) 代碼加密困難
  • 學(xué)Python,不需要有編程基礎(chǔ)!
  • Python能干什么,Python的應(yīng)用領(lǐng)域
    • Web應(yīng)用開發(fā)
    • 自動化運維
    • 人工智能領(lǐng)域
    • 網(wǎng)路爬蟲
    • 科學(xué)計算
    • 游戲開發(fā)
  • 怎樣學(xué)習(xí)Python才能成為高手?
    • 編程語言都是相通的
    • Python對初學(xué)者很友好
        • 1) 多實踐,積累代碼量
        • 2) 時刻注意代碼規(guī)范
        • 3) 開發(fā)經(jīng)驗是必不可少的
  • Python版本區(qū)別,Python 3和Python 2區(qū)別詳解
    • Python 3.x print函數(shù)代替了print語句
    • Python 3.x 默認使用 UTF-8 編碼
    • Python 3.x 除法運算
        • / 運算符
        • 運算符 //
    • Python 3.x 異常
    • Python 3.x 八進制字面量表示
    • Python 3.x 不等于運算符
    • Python 3.x 數(shù)據(jù)類型
  • Python 2.x和Python 3.x,初學(xué)者應(yīng)如何選擇?
  • Python 2to3:自動將Python 2.x代碼轉(zhuǎn)換成Python3.x代碼
  • Python PEP文檔:及時追蹤Python最新變化
    • Python PEP文檔
  • Python底層是用什么語言實現(xiàn)的?
    • Stackless Python
    • JPython
    • IronPython
    • PyPy
  • 了解Jupyter Notebook,你已然超越了90%的Python程序員
    • 什么是Jupyter Notebook
    • Jupyter Notebook的影響力
    • Jupyter Notebook的優(yōu)勢
        • 1) 整合了所有資源
        • 2) 交互性編程體驗
        • 3) 輕松運行他人編寫的代碼

轉(zhuǎn)載于http://c.biancheng.net/python/

Python 并不是一門新的編程語言,1991 年就發(fā)行了第一個版本,2010 年以后隨著大數(shù)據(jù)和人工智能的興起,Python 又重新煥發(fā)出了耀眼的光芒。在 2019 年 12 月份世界編程語言排行榜中,Python 排名第三,僅次于 Java 和C語言。

Python 是一門開源免費的腳本編程語言,它不僅簡單易用,而且功能強大。

Python 是一門推崇“極簡主義”的編程語言,閱讀優(yōu)秀的 Python 程序就像閱讀一段英文,非專業(yè)人士也可以使用 Python。

本章主要介紹和 Python 編程相關(guān)的基礎(chǔ)知識,并沒有真正涉及 Python 語法,算是一道“開胃菜”。

編程語言是什么

其實,程序指的就是一系列指令,用來告訴計算機做什么,而編寫程序的關(guān)鍵在于,我們需要用計算機可以理解的語言來提供這些指令。

雖然借助 Siri(Apple)、Google Now(Android)、Cortana(Microsoft)等技術(shù),我們可以使用漢語直接告訴計算機做什么,比如“Siri,打開酷狗音樂”,但使用過這些系統(tǒng)的讀者都知道,它尚未完全成熟,再加上我們語言充滿了模糊和不精確因素,使得設(shè)計一個完全理解人類語言的計算機程序,仍然是一個有待解決的問題。

為了有效避開所有影響給計算機傳遞指令的因素,計算機科學(xué)家設(shè)計了一些符號,這些符號各有其含義,且之間無二義性,通常稱它們?yōu)榫幊陶Z言。編程語言中的每個結(jié)構(gòu),都有固定的使用格式(稱為語法)以及精確的含義(稱為語義)。換句話說,編程語言指定了成套的規(guī)則,用來編寫計算機可以理解的指令。習(xí)慣上,我們將這一條條指令稱為計算機代碼,而用編程語言來編寫算法的過程稱為編碼。

本教程要講解的 Python 就是一種編程語言,除此之外,你肯定也聽說過其他一些編程語言,如 C、C++、Java、Ruby 等。至今,計算機科學(xué)家已經(jīng)開發(fā)了成百上千種編程語言,且隨著時間演變,這些編程語言又產(chǎn)生了多個不同的版本。但無論是哪個編程語言,也無論有多少個版本,雖然它們在細節(jié)上可能有所不同,無疑它們都有著固定的、無二義性的語法和語義。

以上提到的編程語言,都是高級計算機語言,設(shè)計它們的目的是為了方便程序員理解和使用。但嚴格來說,計算機硬件只能理解一種非常低級的編程語言,稱為機器語言。

比如說,讓計算機對 2 個數(shù)做求和操作,那么 CPU 可能要執(zhí)行以下指令:

  • 將位于內(nèi)存空間位置在 2001 的數(shù)加載到 CPU 中;
  • 再將位于內(nèi)存空間位置在 2002 的數(shù)也加載到 CPU中;
  • 在 CPU中,對這 2 個數(shù)做求和操作;
  • 將結(jié)果存儲在位置為 2003 的內(nèi)存空間。
  • 可以看到,對 2 個數(shù)執(zhí)行求和操作需要做這么多工作,且這還只是籠統(tǒng)地描述,實際會更加復(fù)雜。

    而使用 Python 這樣的高級語言,對 2 個數(shù)求和可以很自然地用 c = a + b 表示,但由此帶來的問題是,我們需要設(shè)計一種方法,將高級語言翻譯成計算機可以執(zhí)行的機器語言,有兩種方法可以實現(xiàn),分別是使用編譯器和解釋器。

    使用編譯器將自身等效轉(zhuǎn)換成機器語言的高級語言,通常稱為編譯型語言;而使用解釋器將自身轉(zhuǎn)換成機器語言的高級語言,稱為解釋型語言,Python 就是解釋型編程語言的一種。

    關(guān)于編譯型語言和解釋型語言的含義和區(qū)別,后續(xù)章節(jié)會進行詳細介紹。

    編譯型語言和解釋型語言的區(qū)別

    我們編寫的源代碼是人類語言,我們自己能夠輕松理解;但是對于計算機硬件(CPU),源代碼就是天書,根本無法執(zhí)行,計算機只能識別某些特定的二進制指令,在程序真正運行之前必須將源代碼轉(zhuǎn)換成二進制指令。

    所謂的二進制指令,也就是機器碼,是 CPU 能夠識別的硬件層面的“代碼”,簡陋的硬件(比如古老的單片機)只能使用幾十個指令,強大的硬件(PC 和智能手機)能使用成百上千個指令。

    然而,究竟在什么時候?qū)⒃创a轉(zhuǎn)換成二進制指令呢?不同的編程語言有不同的規(guī)定:

    • 有的編程語言要求必須提前將所有源代碼一次性轉(zhuǎn)換成二進制指令,也就是生成一個可執(zhí)行程序(Windows 下的 .exe),比如C語言、C++、Golang、Pascal(Delphi)、匯編等,這種編程語言稱為編譯型語言,使用的轉(zhuǎn)換工具稱為編譯器。
    • 有的編程語言可以一邊執(zhí)行一邊轉(zhuǎn)換,需要哪些源代碼就轉(zhuǎn)換哪些源代碼,不會生成可執(zhí)行程序,比如 Python、JavaScript、PHP、Shell、MATLAB 等,這種編程語言稱為解釋型語言,使用的轉(zhuǎn)換工具稱為解釋器。

    簡單理解,編譯器就是一個“翻譯工具”,類似于將中文翻譯成英文、將英文翻譯成俄文。但是,翻譯源代碼是一個復(fù)雜的過程,大致包括詞法分析、語法分析、語義分析、性能優(yōu)化、生成可執(zhí)行文件等五個步驟,期間涉及到復(fù)雜的算法和硬件架構(gòu)。解釋器與此類似,有興趣的讀者請參考《編譯原理》一書,本文不再贅述。

    Java 和 C# 是一種比較奇葩的存在,它們是半編譯半解釋型的語言,源代碼需要先轉(zhuǎn)換成一種中間文件(字節(jié)碼文件),然后再將中間文件拿到虛擬機中執(zhí)行。Java 引領(lǐng)了這種風(fēng)潮,它的初衷是在跨平臺的同時兼顧執(zhí)行效率;C# 是后來的跟隨者,但是 C# 一直止步于 Windows 平臺,在其它平臺鮮有作為。


    圖 1 編譯型語言和解釋型語言的執(zhí)行流程

    那么,編譯型語言和解釋型語言各有什么特點呢?它們之間有什么區(qū)別?

    編譯型語言

    對于編譯型語言,開發(fā)完成以后需要將所有的源代碼都轉(zhuǎn)換成可執(zhí)行程序,比如 Windows 下的.exe文件,可執(zhí)行程序里面包含的就是機器碼。只要我們擁有可執(zhí)行程序,就可以隨時運行,不用再重新編譯了,也就是“一次編譯,無限次運行”。

    在運行的時候,我們只需要編譯生成的可執(zhí)行程序,不再需要源代碼和編譯器了,所以說編譯型語言可以脫離開發(fā)環(huán)境運行。

    編譯型語言一般是不能跨平臺的,也就是不能在不同的操作系統(tǒng)之間隨意切換。

    編譯型語言不能跨平臺表現(xiàn)在兩個方面:

    1) 可執(zhí)行程序不能跨平臺

    可執(zhí)行程序不能跨平臺很容易理解,因為不同操作系統(tǒng)對可執(zhí)行文件的內(nèi)部結(jié)構(gòu)有著截然不同的要求,彼此之間也不能兼容。不能跨平臺是天經(jīng)地義,能跨平臺反而才是奇葩。

    比如,不能將 Windows 下的可執(zhí)行程序拿到 Linux 下使用,也不能將 Linux 下的可執(zhí)行程序拿到 Mac OS 下使用(雖然它們都是類 Unix 系統(tǒng))。

    另外,相同操作系統(tǒng)的不同版本之間也不一定兼容,比如不能將 x64 程序(Windows 64 位程序)拿到 x86 平臺(Windows 32 位平臺)下運行。但是反之一般可行,因為 64 位 Windows 對 32 位程序作了很好的兼容性處理。

    2) 源代碼不能跨平臺

    不同平臺支持的函數(shù)、類型、變量等都可能不同,基于某個平臺編寫的源代碼一般不能拿到另一個平臺下編譯。我們以C語言為例來說明。

    【實例1】在C語言中要想讓程序暫停可以使用“睡眠”函數(shù),在 Windows 平臺下該函數(shù)是 Sleep(),在 Linux 平臺下該函數(shù)是 sleep(),首字母大小寫不同。其次,Sleep() 的參數(shù)是毫秒,sleep() 的參數(shù)是秒,單位也不一樣。

    以上兩個原因?qū)е率褂脮和9δ艿腃語言程序不能跨平臺,除非在代碼層面做出兼容性處理,非常麻煩。

    【實例2】雖然不同平臺的C語言都支持 long 類型,但是不同平臺的 long 的長度卻不同,例如,Windows 64 位平臺下的 long 占用 4 個字節(jié),Linux 64 位平臺下的 long 占用 8 個字節(jié)。

    我們在 Linux 64 位平臺下編寫代碼時,將 0x2f1e4ad23 賦值給 long 類型的變量是完全沒有問題的,但是這樣的賦值在 Windows 平臺下就會導(dǎo)致數(shù)值溢出,讓程序產(chǎn)生錯誤的運行結(jié)果。

    讓人苦惱的,這樣的錯誤一般不容易察覺,因為編譯器不會報錯,我們也記不住不同類型的取值范圍。

    解釋型語言

    對于解釋型語言,每次執(zhí)行程序都需要一邊轉(zhuǎn)換一邊執(zhí)行,用到哪些源代碼就將哪些源代碼轉(zhuǎn)換成機器碼,用不到的不進行任何處理。每次執(zhí)行程序時可能使用不同的功能,這個時候需要轉(zhuǎn)換的源代碼也不一樣。

    因為每次執(zhí)行程序都需要重新轉(zhuǎn)換源代碼,所以解釋型語言的執(zhí)行效率天生就低于編譯型語言,甚至存在數(shù)量級的差距。計算機的一些底層功能,或者關(guān)鍵算法,一般都使用 C/C++ 實現(xiàn),只有在應(yīng)用層面(比如網(wǎng)站開發(fā)、批處理、小工具等)才會使用解釋型語言。

    在運行解釋型語言的時候,我們始終都需要源代碼和解釋器,所以說它無法脫離開發(fā)環(huán)境。

    當我們說“下載一個程序(軟件)”時,不同類型的語言有不同的含義:

    • 對于編譯型語言,我們下載到的是可執(zhí)行文件,源代碼被作者保留,所以編譯型語言的程序一般是閉源的。
    • 對于解釋型語言,我們下載到的是所有的源代碼,因為作者不給源代碼就沒法運行,所以解釋型語言的程序一般是開源的。

    相比于編譯型語言,解釋型語言幾乎都能跨平臺,“一次編寫,到處運行”是真是存在的,而且比比皆是。那么,為什么解釋型語言就能快平臺呢?

    這一切都要歸功于解釋器!

    我們所說的跨平臺,是指源代碼跨平臺,而不是解釋器跨平臺。解釋器用來將源代碼轉(zhuǎn)換成機器碼,它就是一個可執(zhí)行程序,是絕對不能跨平臺的。

    官方需要針對不同的平臺開發(fā)不同的解釋器,這些解釋器必須要能夠遵守同樣的語法,識別同樣的函數(shù),完成同樣的功能,只有這樣,同樣的代碼在不同平臺的執(zhí)行結(jié)果才是相同的。

    你看,解釋型語言之所以能夠跨平臺,是因為有了解釋器這個中間層。在不同的平臺下,解釋器會將相同的源代碼轉(zhuǎn)換成不同的機器碼,解釋器幫助我們屏蔽了不同平臺之間的差異。

    關(guān)于 Python

    Python 屬于典型的解釋型語言,所以運行 Python 程序需要解釋器的支持,只要你在不同的平臺安裝了不同的解釋器,你的代碼就可以隨時運行,不用擔(dān)心任何兼容性問題,真正的“一次編寫,到處運行”。

    Python 幾乎支持所有常見的平臺,比如 Linux、Windows、Mac OS、Android、FreeBSD、Solaris、PocketPC 等,你所寫的 Python 代碼無需修改就能在這些平臺上正確運行。也就是說,Python 的可移植性是很強的。

    總結(jié)

    我們將編譯型語言和解釋型語言的差異總結(jié)為下表:

    類型原理優(yōu)點缺點
    編譯型語言通過專門的編譯器,將所有源代碼一次性轉(zhuǎn)換成特定平臺(Windows、Linux 等)執(zhí)行的機器碼(以可執(zhí)行文件的形式存在)。編譯一次后,脫離了編譯器也可以運行,并且運行效率高。可移植性差,不夠靈活。
    解釋型語言由專門的解釋器,根據(jù)需要將部分源代碼臨時轉(zhuǎn)換成特定平臺的機器碼。跨平臺性好,通過不同的解釋器,將相同的源代碼解釋成不同平臺下的機器碼。一邊執(zhí)行一邊轉(zhuǎn)換,效率很低。

    Python是什么,Python簡介

    編程語言有“高低”之分,而高級語言又有很多種,比如 C++、Java、C#、PHP、JavaScript 等,Python 也是其中之一。從本節(jié)開始,我們將正式開始學(xué)習(xí) Python 這門高級編程語言,但是在此之前,我們有必要先討論一下“Python 是什么”。

    Python 英文原意為“蟒蛇”,直到 1989 年荷蘭人 Guido van Rossum (簡稱 Guido)發(fā)明了一種面向?qū)ο蟮慕忉屝途幊陶Z言,并將其命名為 Python,才賦予了它表示一門編程語言的含義。

    我們將在《編譯型語言和解釋型語言的區(qū)別》一文中講解什么是解釋型語言。


    圖 1 Python 的標志(Logo)

    說道 Python,它的誕生是極具戲曲性的,據(jù) Guido 的自述記載,Python 語言是他在圣誕節(jié)期間為了打發(fā)時間開發(fā)出來的,之所以會選擇 Python 作為該編程語言的名字,是因為他是一個叫 Monty Python 戲劇團體的忠實粉絲。

    Python 語言是在 ABC 教學(xué)語言的基礎(chǔ)上發(fā)展來的;遺憾的是,ABC 語言雖然非常強大,但卻沒有普及應(yīng)用,Guido 認為是它不開放導(dǎo)致的。

    基于這個考慮,Guido 在開發(fā) Python 時,不僅為其添加了很多 ABC 沒有的功能,還為其設(shè)計了各種豐富而強大的庫,利用這些 Python 庫,程序員可以把使用其它語言制作的各種模塊(尤其是C語言和 C++)很輕松地聯(lián)結(jié)在一起,因此 Python 又常被稱為“膠水”語言。

    這里的庫和模塊,簡單理解就是一個個的源文件,每個文件中都包含可實現(xiàn)各種功能的方法(也可稱為函數(shù))。

    從整體上看,Python 語言最大的特點就是簡單,該特點主要體現(xiàn)在以下 2 個方面:

    • Python 語言的語法非常簡潔明了,即便是非軟件專業(yè)的初學(xué)者,也很容易上手。
    • 和其它編程語言相比,實現(xiàn)同一個功能,Python 語言的實現(xiàn)代碼往往是最短的。

    對于 Python,網(wǎng)絡(luò)上流傳著“人生苦短,我用 Python”的說法。

    因此,看似 Python 是“不經(jīng)意間”開發(fā)出來的,但絲毫不比其它編程語言差。事實也是如此,自 1991 年 Python 第一個公開發(fā)行版問世后:

    • 2004 年起 Python 的使用率呈線性增長,不斷受到編程者的歡迎和喜愛;
    • 2010 年,Python 榮膺 TIOBE 2010 年度語言桂冠;
    • 2017 年,IEEE Spectrum 發(fā)布的 2017 年度編程語言排行榜中,Python 位居第 1 位。

    直至現(xiàn)在(2019 年 12 月份),根據(jù) TIOBE 排行榜的顯示,Python 也居于第 3 位,且有繼續(xù)提升的態(tài)勢(如表 2 所示)。

    2019年12月2018年12月編程語言市場份額變化
    11Java17.253% +1.32%
    22C16.086% +1.80%
    33Python10.308% +1.93%
    44C++6.196% -1.37%
    56C#4.801% +1.35%
    65Visual Basic .NET4.743% -2.38%
    77JavaScript2.090% -0.97%
    88PHP2.048% -0.39%
    99SQL1.843% -0.34%
    1014Swift1.490% +0.27%
    1117Ruby1.314% +0.21%
    1211Delphi/Object Pascal1.280% -0.12%
    1310Objective-C1.204% -0.27%
    1412Assembly language1.067% -0.30%
    1515Go0.995% -0.19%
    1616R0.995% -0.12%
    1713MATLAB0.986% -0.30%
    1825D0.930% +0.42%
    1919Visual Basic0.929% -0.05%
    2018Perl0.899% -0.11%

    顯然,Python 已經(jīng)將 C++ 語言甩在了后邊,直逼 C 語言和 Java,而且未來有可能超越它們,成為編程語言排行榜冠軍。

    我們不妨再看一下 Python 歷年來的市場份額變化曲線,Python 的未來大勢可期。


    圖 2 Python 歷年來市場份額變化曲線

    錯過了 C/C++ 的 PC 時代,又錯過了 Java 的互聯(lián)網(wǎng)和智能手機時代,你還想錯過 Python 的人工智能和大數(shù)據(jù)時代嗎?Python 正位于軟件產(chǎn)業(yè)的第四次風(fēng)口之上,把握好風(fēng)口,你就能飛起來。

    Python的特點(優(yōu)點和缺點)

    Python 是一種面向?qū)ο蟮摹⒔忉屝偷摹⑼ㄓ玫摹㈤_源的腳本編程語言,它之所以非常流行,我認為主要有三點原因:

    • Python 簡單易用,學(xué)習(xí)成本低,看起來非常優(yōu)雅干凈;
    • Python 標準庫和第三庫眾多,功能強大,既可以開發(fā)小工具,也可以開發(fā)企業(yè)級應(yīng)用;
    • Python 站在了人工智能和大數(shù)據(jù)的風(fēng)口上,站在風(fēng)口上,豬都能飛起來。

    舉個簡單的例子來說明一下 Python 的簡單。比如要實現(xiàn)某個功能,C語言可能需要 100 行代碼,而 Python 可能只需要幾行代碼,因為C語言什么都要得從頭開始,而 Python 已經(jīng)內(nèi)置了很多常見功能,我們只需要導(dǎo)入包,然后調(diào)用一個函數(shù)即可。

    簡單就是 Python 的巨大魅力之一,是它的殺手锏,用慣了 Python 再用C語言簡直不能忍受。

    本文就來匯總一下 Python 的特性,綜合對比一下它的優(yōu)缺點。

    Python 的優(yōu)點

    1) 語法簡單

    和傳統(tǒng)的 C/C++、Java、C# 等語言相比,Python 對代碼格式的要求沒有那么嚴格,這種寬松使得用戶在編寫代碼時比較舒服,不用在細枝末節(jié)上花費太多精力。我來舉兩個典型的例子:

    • Python 不要求在每個語句的最后寫分號,當然寫上也沒錯;
    • 定義變量時不需要指明類型,甚至可以給同一個變量賦值不同類型的數(shù)據(jù)。

    這兩點也是 PHP、JavaScript、MATLAB 等常見腳本語言都具備的特性。

    Python 是一種代表極簡主義的編程語言,閱讀一段排版優(yōu)美的 Python 代碼,就像在閱讀一個英文段落,非常貼近人類語言,所以人們常說,Python 是一種具有偽代碼特質(zhì)的編程語言。

    偽代碼(Pseudo Code)是一種算法描述語言,它介于自然語言和編程語言之間,使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。

    如果你學(xué)過數(shù)據(jù)結(jié)構(gòu),閱讀過嚴蔚敏的書籍,那你一定知道什么是偽代碼。

    為什么說簡單就是殺手锏?一旦簡單了,一件事情就會變得很純粹;我們在開發(fā) Python 程序時,可以專注于解決問題本身,而不用顧慮語法的細枝末節(jié)。在簡單的環(huán)境中做一件純粹的事情,那簡直是一種享受。

    2) Python 是開源的

    開源,也即開放源代碼,意思是所有用戶都可以看到源代碼。

    Python 的開源體現(xiàn)在兩方面:

    ① 程序員使用 Python 編寫的代碼是開源的。

    比如我們開發(fā)了一個 BBS 系統(tǒng),放在互聯(lián)網(wǎng)上讓用戶下載,那么用戶下載到的就是該系統(tǒng)的所有源代碼,并且可以隨意修改。這也是解釋型語言本身的特性,想要運行程序就必須有源代碼。

    ② Python 解釋器和模塊是開源的。

    官方將 Python 解釋器和模塊的代碼開源,是希望所有 Python 用戶都參與進來,一起改進 Python 的性能,彌補 Python 的漏洞,代碼被研究的越多就越健壯。

    這個世界上總有那么一小撮人,他們或者不慕名利,或者為了達到某種目的,會不斷地加強和改善 Python。千萬不要認為所有人都是只圖眼前利益的,總有一些精英會放長線釣大魚,總有一些極客會做一些炫酷的事情。

    3) Python 是免費的

    開源并不等于免費,開源軟件和免費軟件是兩個概念,只不過大多數(shù)的開源軟件也是免費軟件;Python 就是這樣一種語言,它既開源又免費。

    如果你想?yún)^(qū)分開源和免費的概念,請猛擊:開源就等于免費嗎?用事實來說話

    用戶使用 Python 進行開發(fā)或者發(fā)布自己的程序,不需要支付任何費用,也不用擔(dān)心版權(quán)問題,即使作為商業(yè)用途,Python 也是免費的。

    4) Python 是高級語言

    這里所說的高級,是指 Python 封裝較深,屏蔽了很多底層細節(jié),比如 Python 會自動管理內(nèi)存(需要時自動分配,不需要時自動釋放)。

    高級語言的優(yōu)點是使用方便,不用顧慮細枝末節(jié);缺點是容易讓人淺嘗輒止,知其然不知其所以然。

    5) Python 是解釋型語言,能跨平臺

    解釋型語言一般都是跨平臺的(可移植性好),Python 也不例外,我們已經(jīng)在《編譯型語言和解釋型語言的區(qū)別》中進行了講解,這里不再贅述。

    5) Python 是面向?qū)ο蟮木幊陶Z言

    面向?qū)ο笫乾F(xiàn)代編程語言一般都具備的特性,否則在開發(fā)中大型程序時會捉襟見肘。

    Python 支持面向?qū)ο?#xff0c;但它不強制使用面向?qū)ο蟆ava 是典型的面向?qū)ο蟮木幊陶Z言,但是它強制必須以類和對象的形式來組織代碼。

    6) Python 功能強大(模塊眾多)

    Python 的模塊眾多,基本實現(xiàn)了所有的常見的功能,從簡單的字符串處理,到復(fù)雜的 3D 圖形繪制,借助 Python 模塊都可以輕松完成。

    Python 社區(qū)發(fā)展良好,除了 Python 官方提供的核心模塊,很多第三方機構(gòu)也會參與進來開發(fā)模塊,這其中就有 Google、Facebook、Microsoft 等軟件巨頭。即使是一些小眾的功能,Python 往往也有對應(yīng)的開源模塊,甚至有可能不止一個模塊。

    7) Python 可擴展性強

    Python 的可擴展性體現(xiàn)在它的模塊,Python 具有腳本語言中最豐富和強大的類庫,這些類庫覆蓋了文件 I/O、GUI、網(wǎng)絡(luò)編程、數(shù)據(jù)庫訪問、文本操作等絕大部分應(yīng)用場景。

    這些類庫的底層代碼不一定都是 Python,還有很多 C/C++ 的身影。當需要一段關(guān)鍵代碼運行速度更快時,就可以使用 C/C++ 語言實現(xiàn),然后在 Python 中調(diào)用它們。Python 能把其它語言“粘”在一起,所以被稱為“膠水語言”。

    Python 依靠其良好的擴展性,在一定程度上彌補了運行效率慢的缺點。

    Python 的缺點

    除了上面提到的各種優(yōu)點,Python 也是有缺點的。

    1) 運行速度慢

    運行速度慢是解釋型語言的通病,Python 也不例外。

    Python 速度慢不僅僅是因為一邊運行一邊“翻譯”源代碼,還因為 Python 是高級語言,屏蔽了很多底層細節(jié)。這個代價也是很大的,Python 要多做很多工作,有些工作是很消耗資源的,比如管理內(nèi)存。

    Python 的運行速度幾乎是最慢的,不但遠遠慢于 C/C++,還慢于 Java。

    但是速度慢的缺點往往也不會帶來什么大問題。首先是計算機的硬件速度運來越快,多花錢就可以堆出高性能的硬件,硬件性能的提升可以彌補軟件性能的不足。

    其次是有些應(yīng)用場景可以容忍速度慢,比如網(wǎng)站,用戶打開一個網(wǎng)頁的大部分時間是在等待網(wǎng)絡(luò)請求,而不是等待服務(wù)器執(zhí)行網(wǎng)頁程序。服務(wù)器花 1ms 執(zhí)行程序,和花 20ms 執(zhí)行程序,對用戶來說是毫無感覺的,因為網(wǎng)絡(luò)連接時間往往需要 500ms 甚至 2000ms。

    2) 代碼加密困難

    不像編譯型語言的源代碼會被編譯成可執(zhí)行程序,Python 是直接運行源代碼,因此對源代碼加密比較困難。

    開源是軟件產(chǎn)業(yè)的大趨勢,傳統(tǒng)程序員需要轉(zhuǎn)變觀念。

    學(xué)Python,不需要有編程基礎(chǔ)!

    “編程零基礎(chǔ),可以學(xué)習(xí) Python 嗎”,這是很多初學(xué)者經(jīng)常問我的一個問題。當然,在計算機方面的基礎(chǔ)越好,對學(xué)習(xí)任何一門新的編程語言越有利。但如果你在編程語言的學(xué)習(xí)上屬于零基礎(chǔ),也不用擔(dān)心,因為無論用哪門語言作為學(xué)習(xí)編程的入門語言,總是要有一個開始。

    就我個人的觀點,Python 作為學(xué)習(xí)編程的入門語言是再合適不過的。凡是在大學(xué)計算機專業(yè)學(xué)習(xí)過 C 語言的同學(xué)都感同身受,認為 C 語言不是很好的入門語言,很多曾經(jīng)立志學(xué)習(xí)編程的讀者,在學(xué)習(xí)了 C 語言之后,就決心不再學(xué)習(xí)編程。因此,是否學(xué)會 C 語言,好像成為了進入編程行業(yè)的篩選標準。

    但是,如果將 Python 作為編程入門語言,就不會出現(xiàn)類似 C 語言的那些窘境問題。目前,逐漸有高校開始使用 Python 作為軟件專業(yè)大學(xué)生(甚至也包含非軟件專業(yè))的入門編程語言。

    本教程始終貫徹的思想就是,零基礎(chǔ)也能學(xué) Python,教程的目標就是和初學(xué)者一起,從零基礎(chǔ)開始學(xué)習(xí) Python。因此,編程零基礎(chǔ)的你,無需猶豫,盡管放膽來學(xué)。

    除此之外,很多初學(xué)者還面臨這樣一個問題,那就是教程已經(jīng)學(xué)完啦,教程中的代碼也都已經(jīng)親自編寫并運行通過了,但還是不知道如何開發(fā)一個真正的應(yīng)用程序,面對問題還是不知道如何下手解決。

    如果你深有同感,只能說明你缺乏練習(xí),代碼編輯量太少。從編程零基礎(chǔ)到專業(yè)程序員的過程,除了學(xué)習(xí)更多的基礎(chǔ)知識,更要刻意地去培養(yǎng)自己的編程思維,這沒有捷徑,只有靠不斷積累自己的代碼量。

    當然,增加代碼量并不是要我們?nèi)ッつ康鼐帉懘a,如果找不到增加代碼量的方向,可以從閱讀別人的代碼開始。需要注意的是,在閱讀他人編寫的代碼時,要邊閱讀邊思考,多問幾個為什么,例如代碼為什么要這么寫,有什么意圖,有沒有更簡單的方法可以實現(xiàn)等等,必要情況下還可以給代碼進行必要的注釋。不僅如此,在完全理解他人代碼的前提下,還可以試圖對代碼做修改,實現(xiàn)一些自己的想法。做到這些,才能說明你將別人的代碼消化吸收了。

    初學(xué)者在寫代碼或者調(diào)試代碼的過程中,肯定會遇到很多問題,怎么辦呢?最好的方法就是借助網(wǎng)絡(luò)尋找答案,看看類似的問題別人是如何解決的,千萬不要總是局限在自己的思維范圍中。在這里,給大家推薦一個專門針對編程答疑解惑的網(wǎng)站 Stack OverFlow。

    Python能干什么,Python的應(yīng)用領(lǐng)域

    Python 作為一種功能強大的編程語言,因其簡單易學(xué)而受到很多開發(fā)者的青睞。那么,Python 的應(yīng)用領(lǐng)域有哪些呢?

    Python 的應(yīng)用領(lǐng)域非常廣泛,幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用 Python 完成各種各樣的任務(wù),例如國外的 Google、Youtube、Dropbox,國內(nèi)的百度、新浪、搜狐、騰訊、阿里、網(wǎng)易、淘寶、知乎、豆瓣、汽車之家、美團等等。

    概括起來,Python 的應(yīng)用領(lǐng)域主要有如下幾個。

    Web應(yīng)用開發(fā)

    Python 經(jīng)常被用于 Web 開發(fā),盡管目前 PHP、JS 依然是 Web 開發(fā)的主流語言,但 Python 上升勢頭更猛勁。尤其隨著 Python 的 Web 開發(fā)框架逐漸成熟(比如 Django、flask、TurboGears、web2py 等等),程序員可以更輕松地開發(fā)和管理復(fù)雜的 Web 程序。

    例如,通過 mod_wsgi 模塊,Apache 可以運行用 Python 編寫的 Web 程序。Python 定義了 WSGI 標準應(yīng)用接口來協(xié)調(diào) HTTP 服務(wù)器與基于 Python 的 Web 程序之間的通信。

    舉個最直觀的例子,全球最大的搜索引擎 Google,在其網(wǎng)絡(luò)搜索系統(tǒng)中就廣泛使用 Python 語言。另外,我們經(jīng)常訪問的集電影、讀書、音樂于一體的豆瓣網(wǎng)(如圖 1 所示),也是使用 Python 實現(xiàn)的。


    圖 1 用 Python 實現(xiàn)的豆瓣網(wǎng)

    不僅如此,全球最大的視頻網(wǎng)站 Youtube 以及 Dropbox(一款網(wǎng)絡(luò)文件同步工具)也都是用 Python 開發(fā)的。

    自動化運維

    很多操作系統(tǒng)中,Python 是標準的系統(tǒng)組件,大多數(shù) Linux 發(fā)行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在終端下直接運行 Python。

    有一些 Linux 發(fā)行版的安裝器使用 Python 語言編寫,例如 Ubuntu 的 Ubiquity 安裝器、Red Hat Linux 和 Fedora 的 Anaconda 安裝器等等。

    另外,Python 標準庫中包含了多個可用來調(diào)用操作系統(tǒng)功能的庫。例如,通過 pywin32 這個軟件包,我們能訪問 Windows 的 COM 服務(wù)以及其他 Windows API;使用 IronPython,我們能夠直接調(diào)用 .Net Framework。

    通常情況下,Python 編寫的系統(tǒng)管理腳本,無論是可讀性,還是性能、代碼重用度以及擴展性方面,都優(yōu)于普通的 shell 腳本。

    人工智能領(lǐng)域

    人工智能是項目非常火的一個研究方向,如果要評選當前最熱、工資最高的 IT 職位,那么人工智能領(lǐng)域的工程師最有話語權(quán)。而 Python 在人工智能領(lǐng)域內(nèi)的機器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)等方面,都是主流的編程語言。

    可以這么說,基于大數(shù)據(jù)分析和深度學(xué)習(xí)發(fā)展而來的人工智能,其本質(zhì)上已經(jīng)無法離開 Python 的支持了,原因至少有以下幾點:

  • 目前世界上優(yōu)秀的人工智能學(xué)習(xí)框架,比如 Google 的 TransorFlow(神經(jīng)網(wǎng)絡(luò)框架)、FaceBook 的 PyTorch(神經(jīng)網(wǎng)絡(luò)框架)以及開源社區(qū)的 Karas 神經(jīng)網(wǎng)絡(luò)庫等,都是用 Python 實現(xiàn)的;
  • 微軟的 CNTK(認知工具包)也完全支持 Python,并且該公司開發(fā)的 VS Code,也已經(jīng)把 Python 作為第一級語言進行支持。
  • Python 擅長進行科學(xué)計算和數(shù)據(jù)分析,支持各種數(shù)學(xué)運算,可以繪制出更高質(zhì)量的 2D 和 3D 圖像。
  • VS Code 是微軟推出的一款代碼編輯工具(IDE),有關(guān)它的下載、安裝和使用,后續(xù)章節(jié)會做詳細介紹。

    總之,AI 時代的來臨,使得 Python 從眾多編程語言中脫穎而出,Python 作為 AI 時代頭牌語言的位置,基本無人可撼動!

    網(wǎng)路爬蟲

    Python 語言很早就用來編寫網(wǎng)絡(luò)爬蟲。Google 等搜索引擎公司大量地使用 Python 語言編寫網(wǎng)絡(luò)爬蟲。

    從技術(shù)層面上將,Python 提供有很多服務(wù)于編寫網(wǎng)絡(luò)爬蟲的工具,例如 urllib、Selenium 和 BeautifulSoup 等,還提供了一個網(wǎng)絡(luò)爬蟲框架 Scrapy。

    科學(xué)計算

    自 1997 年,NASA 就大量使用 Python 進行各種復(fù)雜的科學(xué)運算。

    并且,和其它解釋型語言(如 shell、js、PHP)相比,Python 在數(shù)據(jù)分析、可視化方面有相當完善和優(yōu)秀的庫,例如 NumPy、SciPy、Matplotlib、pandas 等,這可以滿足 Python 程序員編寫科學(xué)計算程序。

    游戲開發(fā)

    很多游戲使用 C++ 編寫圖形顯示等高性能模塊,而使用 Python 或 Lua 編寫游戲的邏輯。和 Python 相比,Lua 的功能更簡單,體積更小;而 Python 則支持更多的特性和數(shù)據(jù)類型。

    比如說,國際上指明的游戲 Sid Meier’s Civilization(文明,如圖 2 所示)就是使用 Python 實現(xiàn)的。


    圖 2 Python 開發(fā)的游戲

    除此之外,Python 可以直接調(diào)用 Open GL 實現(xiàn) 3D 繪制,這是高性能游戲引擎的技術(shù)基礎(chǔ)。事實上,有很多 Python 語言實現(xiàn)的游戲引擎,例如 Pygame、Pyglet 以及 Cocos 2d 等。

    以上也僅是介紹了 Python 應(yīng)用領(lǐng)域的“冰山一角”,例如,還可以利用 Pygame 進行游戲編程;用 PIL 和其他的一些工具進行圖像處理;用 PyRo 工具包進行機器人控制編程,等等。有興趣的讀者,可自行搜索資料進行詳細了解。

    怎樣學(xué)習(xí)Python才能成為高手?

    在學(xué)習(xí)過程中,很多小伙伴經(jīng)常抱怨,計算機編程語言種類太多,根本學(xué)不過來,可能用了 Java 很多年,突然最近的項目需要用 Python,就感到不知所措,壓力山大。

    再舉個例子,Facebook 的主流語言是 Hack(PHP 的進化版本),但對于剛剛?cè)肼毜墓こ處煻?#xff0c;100 個里至少有 95 個之前根本沒有用過 Hack 或者 PHP。不過,這些人上手都特別快,基本上只需要 1~2 周,日常編程就變得毫無壓力。

    那么,他們是怎么做到的呢?

    編程語言都是相通的

    首先,如果你具有一定的編程基礎(chǔ),接觸一門新的編程語言時會發(fā)現(xiàn),不同的編程語言之間其實是相通的,因為編程語言本就是人類控制計算機的一系列指令,即便是不同的編程語言,它們在語法規(guī)則方面也大同小異。

    因此,在原有編程基礎(chǔ)上再學(xué)習(xí)一門新的編程語言,并沒有那么難。學(xué)習(xí)過程中,首先要做到的就是明確區(qū)別。例如,學(xué)習(xí) Python 的條件和循環(huán)語句時,可以比對 C 語言或者 C++ 語言的語法是怎樣的;學(xué)習(xí) Python 中的字符串相加時,可以對比 Java 語言中字符串相加的語法。

    除了能夠明確區(qū)分各編程語言的不同點,還要能將它們聯(lián)系起來靈活運用。比如說,Python 語言的優(yōu)勢是擅長數(shù)據(jù)分析,因此它廣泛應(yīng)用于人工智能(AI)、機器學(xué)習(xí)等領(lǐng)域(例如機器學(xué)習(xí)用到的 TensorFlow 框架就是用 Python 寫的),但是涉及到底層的矩陣運算等操作時,就需要依賴 C++ 語言,因為它的速度快,運行效率更高。

    事實上,很多公司都是根據(jù)不同的需求選擇不同的編程語言進行開發(fā)。畢竟,哪怕只是幾十到幾百毫秒的速度差距,對用戶體驗來說都是決定性的。

    Python對初學(xué)者很友好

    如果 Python 是你接觸的第一門編程語言,那也不必擔(dān)心。我們知道,雖然同為人機交互的橋梁,但 Python 比 C++、Java 等,語言更簡潔,也更接近英語,對初學(xué)者很友好,這也是 Python 語言的一個顯著特點。

    對于初學(xué)者來說,要做的就是專注于 Python 這一門語言,明確學(xué)習(xí)的重點,把握好學(xué)習(xí)節(jié)奏,由淺入深循序漸進地學(xué)習(xí)。根據(jù)本人多年的學(xué)習(xí)工作經(jīng)驗,把編程語言的學(xué)習(xí)分為以下 3 步,無論你是否有編程基礎(chǔ),都可以對照著來做。

    1) 多實踐,積累代碼量

    任何一門編程語言,其囊括的知識面都是非常廣泛的,從基本的變量賦值、條件循環(huán)、到文件操作、并發(fā)編程等,千萬不要等到把所有知識點都學(xué)完了才開始練習(xí),因為到那時你會發(fā)現(xiàn),前面好不容易記住的知識都忘記了。

    學(xué)習(xí)編程,是十分講究實戰(zhàn)的,沒有捷徑可走,越早練習(xí),練得越多越勤,學(xué)習(xí)效果就越好。

    2) 時刻注意代碼規(guī)范

    學(xué)習(xí)編程語言,在追求快和高效的同時,每一種編程語言都有必要的編碼規(guī)范,一定不能忽略。

    要想成為一名優(yōu)秀的程序員,從起步階段就要刻意地去培養(yǎng)自己的編程規(guī)范。例如,在剛開始編寫代碼時,不要將原本多行的代碼全部寫到一行,也不要隨便用 a、b、c 等字母作為變量的名稱。

    3) 開發(fā)經(jīng)驗是必不可少的

    要想真正熟練地掌握 Python(或者其它編程語言),擁有大中型產(chǎn)品的開發(fā)經(jīng)驗是必不可少的,它會讓你站得更高,望得更遠。

    例如,我們幾乎每天都會用搜索引擎,但你了解一個搜索引擎的服務(wù)器端實現(xiàn)嗎?這是一個典型的面向?qū)ο笤O(shè)計,需要定義一系列相關(guān)的類和函數(shù),還要從產(chǎn)品需求、代碼復(fù)雜度、效率以及可讀性等多個方面綜合考量,同時在上線后還要進行各種優(yōu)化等。

    本教程中無法讓你完成一個上億用戶級產(chǎn)品的實踐,但設(shè)置有一些小項目,可以幫你掌握必要的開發(fā)知識。最后,這里為你準備了一章 Python 學(xué)習(xí)的知識圖譜,涵蓋了 Python 的核心知識,其中的大部分內(nèi)容本教程都會做詳細講解。


    Python知識體系框架(點擊查看高清大圖)

    Python版本區(qū)別,Python 3和Python 2區(qū)別詳解

    和 Python 2.x 版本相比,Python 3.x 版本在語句輸出、編碼、運算和異常等方面做出了一些調(diào)整,本節(jié)就對這些調(diào)整一一做一下簡單介紹。

    本節(jié)適合有 Python 基礎(chǔ)的學(xué)員閱讀,初學(xué)者可先跳過本節(jié),整體學(xué)完 Python 之后,再回過頭來閱讀。

    Python 3.x print函數(shù)代替了print語句

    在 Python2.x 中,輸出數(shù)據(jù)使用的是 Print 語句,例如:

    >>> print “3,4”
    3,4
    或者
    >>> print(3,4)
    (3,4)

    但是在 Python 3.x 中,print 語句沒有了,取而代之的是 print 函數(shù),例如:

    >>> print(3,4)
    3 4

    如果還像 Python 2.x 中那樣使用 print 語句,Python 編譯器就會報錯,例如:

    >>> print “3,4”
    File “”, line 1
    print “3,4”
    ^
    SyntaxError: Missing parentheses in call to ‘print’

    Python 3.x 默認使用 UTF-8 編碼

    相比 Python 2.x 默認采用的 ASCII 編碼,Python 3.x 默認使用 UTF-8 編碼,可以很好地支持中文或其它非英文字符。

    例如,輸出一句中文,使用 Python 2.x 和 Python 3.x 的區(qū)別如下:

    #Python 2.x
    >>>str =“C語言中文網(wǎng)”
    >>>str
    ‘C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91’

    #Python 3.x
    >>>str =“C語言中文網(wǎng)”
    >>>str
    ‘C語言中文網(wǎng)’

    不僅如此,在 Python 3.x 中,下面的代碼也是合法的:

    >>>中國=“China”
    >>>print(中國)
    China

    Python 3.x 除法運算

    和其他語言相比,Python 的除法運算要高端很多,它的除法運算包含 2 個運算符,分別是 / 和 //,這 2 個運算符在 Python 2.x 和 Python 3.x 的使用方法如下:

    / 運算符

    在 Python 2.x 中,使用運算符 / 進行除法運算的方式和 Java、C 語言類似,整數(shù)相除的結(jié)果仍是一個整數(shù),浮點數(shù)除法會保留小數(shù)點部分,例如:

    >>>1/2
    0
    >>>1.0/2
    0.5

    但是在 Python 3.x 中使用 / 運算符,整數(shù)之間做除法運算,結(jié)果也會是浮點數(shù)。例如:

    >>>1/2
    0.5

    運算符 //

    使用運算符 // 進行的除法運算叫做 floor 除法,也就是輸出不大于結(jié)果值的一個最大的整數(shù)(向下取整)。此運算符的用法在 Python 2.x 和Python 3.x 中是一樣的,舉個例子:

    #Python 2.x
    >>> -1//2
    -1

    #Python 3.x
    >>> -1//2
    -1

    Python 3.x 異常

    在 Python 3.x 版本中,異常處理改變的地方主要在以下幾個方面:

  • 在 Python 2.x 版本中,所有類型的對象都是直接被拋出的,但是在 Python 3.x 版本中,只有繼承 BaseException 的對象才可以被拋出。
  • 在 Python 2.x 版本中,捕獲異常的語法是“except Exception,var:”;但在 Python 3.x 版本中,引入了 as 關(guān)鍵字,捕獲異常的語法變更為 “except Exception as var:”。
  • 在 Python 3.x 版本中,處理異常用 “raise Exception(args)”代替了“raise Exception,args”。
  • Python 3.x 版本中,取消了異常類的序列行為和 .message 屬性。
  • 有關(guān) Python 2.x 版本和 Python 3.x 版本處理異常的示例代碼如下所示:

    #Python 2.x
    >>> try:
    … raise TypeError,“類型錯誤”
    … except TypeError,err:
    … print err.message

    類型錯誤

    #Python 3.x
    >>> try:
    … raise TypeError(“類型錯誤”)
    … except TypeError as err:
    … print(err)

    類型錯誤

    Python 3.x 八進制字面量表示

    在 Python 3.x 中,表示八進制字面量的方式只有一種,并且必須寫成“0o1000”這樣的方式,原來“01000”的方式不能使用了。舉個例子:

    #Python 2.x
    >>> 0o1000
    512
    >>> 01000
    512

    #Python 3.x
    >>> 01000
    File “”, line 1
    01000
    ^
    SyntaxError: invalid token
    >>> 0o1000
    512

    Python 3.x 不等于運算符

    Python 2.x 中的不等于運算符有 2 種寫法,分別為 != 和 <>,但在 Python 3.x 中去掉了 <>,只有 != 這一種寫法,例如:

    #Python 2.x
    >>> 1!=2
    True
    >>> 1<>2
    True

    #Python 3.x
    >>> 1!=2
    True
    >>> 1<>2
    File “”, line 1
    1<>2
    ^
    SyntaxError: invalid syntax

    Python 3.x 數(shù)據(jù)類型

    Python 3.x 中對數(shù)據(jù)類型也做了改動,比如說:

    • Python 3.x 去除了 long 類型,現(xiàn)在只有一種整形 int,但它的行為就像是 Python 2.x 版本中的 long。

    • Python 3.x 新增了 bytes 類型,對應(yīng) Python 2.x 版本的八位串,定義 bytes 字面量的方法如下所示:

      >>>b=b’China’
      >>>type(b)
      <type ‘bytes’>

      字符串對象和 bytes 對象可以使用 .encode() 或者 .decode()方法相互轉(zhuǎn)化,例如:

      >>>s=b.decode()
      >>>s
      ‘China’
      >>>b1=s.encode()
      >>>b1
      b’China’

    • Python 3.x 中,字典的 keys()、items() 和 values() 方法用返回迭代器,且之前的 iterkeys() 等函數(shù)都被廢棄。同時去掉的還有 dict.has_key(),改為用 in 替代。

    本節(jié)所介紹的只是 Python 3.x 的一部分改動,由于篇幅有限,這里不再具體指出,教程中涉及到時再給大家詳細介紹。

    Python 2.x和Python 3.x,初學(xué)者應(yīng)如何選擇?

    Python 自發(fā)布以來,主要有 3 個版本,分別是:

  • 1994 年發(fā)布的 Python 1.0 版本(已過時);
  • 2000 年發(fā)布的 Python 2.0 版本,截止到 2019 年 3 月份,已經(jīng)更新到 2.7.16;
  • 2008 年發(fā)布的 Python 3.0 版本,截止到 2019 年 3 月份,已經(jīng)更新到 3.7.3;
  • 3 個版本中,Python 3.0 是一次重大的升級,為了避免引入歷史包袱,Python 3.0 沒有考慮與 Python 2.x 的兼容,這也就導(dǎo)致很長時間以來,Python 2.x 的用戶不愿意升級到 Python 3.0。

    除此之外,造成目前這種狀況的另一個原因是,將現(xiàn)有應(yīng)用從 Python 2.x 遷移到 Python 3.x 是一項不小的挑戰(zhàn)。雖然有 2to3(后續(xù)會介紹)之類的工具可以進行代碼的自動轉(zhuǎn)換,但無法保證轉(zhuǎn)換后的代碼 100% 正確。而且,如果不做人工修改的話,轉(zhuǎn)換后的代碼性能可能還不如轉(zhuǎn)換前。因此,將現(xiàn)有的復(fù)雜代碼庫遷移到 Python 3.x 上可能需要付出巨大的精力和成本,某些公司無法負擔(dān)這些成本。

    目前,根據(jù)統(tǒng)計顯示,使用 Python 2.x 的開發(fā)者仍占 63.7%,而Python 3.x 的用戶占 36.3%,由此可見,使用 Python 2.x 的用戶還是占多數(shù)。在 2014 年,Python 創(chuàng)始人宣布,將 Python 2.7 支持時間延長到 2020 。

    那么,初學(xué)者應(yīng)該選擇什么版本呢?本教程建議大家選擇 Python 3.x 版本,理由有以下幾點:

    • 使用 Python 3.x 已經(jīng)是大勢所趨

      目前,雖然使用 Python 2.x 的開發(fā)者居多,但使用 Python 3.x 的開發(fā)者正在迅速增加,如圖 1 所示:


      圖 1 Python 3.x 是大勢所趨

      另外,根據(jù) PEP-404 這份文檔,Python 2.x 版本將不會再發(fā)布 2.8 版本,且未來非常重要的項目(如 Django、Flask 和 Numpy)可能都將放棄對 2.x 的支持,僅支持 Python 3.x。因此,從長遠來看,學(xué)習(xí) Python 3.x 只有好處。

      本教程也是以 Python 3.x 來介紹 Python 編程,因此,為了同步,強烈建議初學(xué)者選擇 Python 3.x。

    • Python 3.x在 Python 2.x 的基礎(chǔ)上做了功能升級
      Python 3.x 對 Python 2.x 的標準庫進行了一定程序的重新拆分和整合,比 Python 2.x 更容易理解,特別是在字符編碼方面。Python 2.x 中對于中文字符串的支持性能不夠好,需要編寫單獨的代碼對中文進行處理,否則不能正確顯示中文,而 Python 3.x 已經(jīng)將該問題成功解決了。

    • Python 3.x 和 Python 2.x 思想基本是共通的
      Python 3.x 和 Python 2.x 思想基本上是共通的,只有少量的語法差別,學(xué)會的 Python 3.x,只要稍微花點時間學(xué)習(xí) Python 2.x 的語法,即可靈活運用這兩個不同版本了。

    注意,選擇 Python 3.x 也不是沒有弊端,很多擴展庫的發(fā)行總是會滯后于 Python 的發(fā)行版本,甚至目前還有很多庫不支持 Python 3.x。

    因此,在選擇 Python 時,一定要先考慮清楚自己的學(xué)習(xí)目的,比如說,打算做哪方面的開發(fā),此方向需要用法哪些擴展庫,以及這些擴展庫支持的最高 Python 版本等,明確這些問題后,再選擇適合自己的版本。

    關(guān)于 Python 3.x 和 Python 2.x 具體的區(qū)別,可閱讀《Python 3 和 Python 2 區(qū)別》一節(jié)。

    Python 2to3:自動將Python 2.x代碼轉(zhuǎn)換成Python3.x代碼

    本節(jié)內(nèi)容針對已有 Python 基礎(chǔ)的學(xué)員,初學(xué)者可直接跳過本節(jié)內(nèi)容,繼續(xù)往下學(xué)習(xí)。

    由于 Python 2.x 和 Python 3.x 的差別較大,因此 Python 2.x 的多數(shù)代碼無法直接在 Python 3.x 環(huán)境中運行。而由于兼容性的原因,我們在網(wǎng)絡(luò)上查找的資源多數(shù)是Python 2.x 的代碼,如果想要在 Python 3.x 環(huán)境下運行,就需要修改源代碼。

    針對這一問題,Python 官方提供了一個將 Python 2.x 代碼自動轉(zhuǎn)換為 Python 3.x 代碼的小工具,它就是 2to3.py,通過該工具可以將大部分 Python 2.x 代碼轉(zhuǎn)換為 Python 3.x 代碼。

    接下來,就給大家詳細介紹一下,如何使用 2to3.py 將 Python 2.x 代碼轉(zhuǎn)換成 Python 3.x 代碼。

    假設(shè)我們現(xiàn)在有 Python 2.x 的代碼,要將其轉(zhuǎn)換成 Python 3.x 代碼,需要按照一下幾個步驟進行操作:

  • 找到 2to3.py 文件,該文件保存在 Python 安裝路徑下的 “Tools\scripts” 目錄中。比如說,我們將 Python 安裝在了“G:\Python\Python36”目錄中,那么 2to3.py 文件則保存在 “G:\Python\Python36\Tools\scripts ”目錄中,如圖 1 所示:


    圖 1 Python 2.x 轉(zhuǎn) Python 3.x 的工具

  • 將 2to3.py 文件復(fù)制到要轉(zhuǎn)換代碼所在的目錄中。

  • 打開命令行窗口,并進入要轉(zhuǎn)換代碼文件所在的目錄。例如,該文件保存在“E:\change”目錄下,則在命令行窗口中可輸入如下命令:

    C:\users\Demo>E:
    E:>cd change
    E:\change>

  • 調(diào)用 2to3.py 工具轉(zhuǎn)化代碼。例如,要轉(zhuǎn)化的文件名稱為 demo.py 文件,可以使用下面的代碼:

    Python 2to3.py -w demo.py

    執(zhí)行此行代碼之后,將會在 “E:\change” 目錄下創(chuàng)建一個 demo.py 文件的備份文件,名稱為 demo.py.bak,同時,原 demo.py 文件的內(nèi)容被轉(zhuǎn)換為 Python 3.x 對應(yīng)的代碼。

  • 注意,在使用 2to3.py 轉(zhuǎn)換 python 2.x 代碼前,盡量不要把要轉(zhuǎn)換的代碼保存在 C 盤中,因此如果保存在 C 盤,可能會因權(quán)限問題導(dǎo)致轉(zhuǎn)換不能正常完成。

    Python PEP文檔:及時追蹤Python最新變化

    通過前面章節(jié)對 Python 語言的介紹,到目前為止,Python 已經(jīng)歷經(jīng)了 3 個版本的迭代,讀者不禁要問,Python 為什么要不斷的升級呢?作為程序猿的我們,怎樣才能及時了解 Python 的最新變化呢?

    首先解決第一個問題,Python 不斷升級的原因很簡單,因為用戶有了更高的需求。人們之所以設(shè)計新的編程語言,是因為他們發(fā)現(xiàn)現(xiàn)有的語言已經(jīng)無法以最佳方式來解決問題。此外,Python 的使用范圍越來越廣,人們發(fā)現(xiàn)它有許多可以改進的地方,應(yīng)該做出這樣的改進。

    Python 的很多改進都是有特定應(yīng)用領(lǐng)域的需求驅(qū)動的,其中最重要的領(lǐng)域是 Web 開發(fā),這一領(lǐng)域需要 Python 改進對并發(fā)的處理。

    還有一些是由于 Python 的歷史原因?qū)е碌?#xff0c;隨著使用 Python 的不斷深入,發(fā)現(xiàn)了 Python 的一些不合理之處。比如,有些是標準庫模塊結(jié)構(gòu)混亂或冗余,有些是程序設(shè)計缺陷。

    那么,怎樣才能及時追蹤 Python 的更新動態(tài)呢?這就需要借助 Python PEP 文檔。

    Python PEP文檔

    要知道,雖然各種各樣的 Python 語句修改方案會以郵件列表的形式進行討論,但 Python 社區(qū)有一種應(yīng)對變化的固定方法,即只有發(fā)布了名為 PEP 的新文檔,新的變化才會生效。

    PEP(Python Enhancement Proposal),全稱是 Python 改進方案。它是提交 Python 變化的書面文檔,也是社區(qū)對這一變化進行討論的出發(fā)點。值得一提得是,PEP 文檔的整個目的,格式以及工作流程的標準格式,都包含 PEP 1 文檔中。

    PEP 文檔對 Python 十分重要,它主要有以下 3 個用途:

  • 通知:匯總 Python 核心開發(fā)者重要的信息,并通過 Python 發(fā)布日程;
  • 標準化:提供代碼風(fēng)格、文檔或者其他指導(dǎo)意見;
  • 設(shè)計:對提交的功能進行說明。
  • 所有提交過的 PEP 都被匯總在 PEP 0 文檔中。

    需要注意的是,如果讀者對 Python 語言的未來發(fā)展方向感興趣,但苦于沒有時間追蹤 Python 郵件列表中的討論,那么 PEP 0 是信息來源的不錯選擇,它會告訴你哪些文檔已被接受但尚未實施,哪些文檔仍在審議中。

    不僅如此,PEP 還有其他的用途,比如說,人們常常會問以下類似的問題:

    • A 功能為什么要以這樣的方式運行?
    • Python 為什么沒有 B 功能?

    多數(shù)情況下,關(guān)于該功能的某個 PEP 文檔已經(jīng)給出了上述問題的詳細回答。

    另外,還有關(guān)于 Python 語言功能的 PEP 文檔并沒有通過,這些文檔可作為歷史資料來參考。

    Python底層是用什么語言實現(xiàn)的?

    確切地說,本教程介紹的是用 C 語言編寫實現(xiàn)的 Python,又稱為 CPython。平時我們所討論的 Python,指的其實就是 CPython。

    隨著編程語言的不斷發(fā)展,Python 的實現(xiàn)方式也發(fā)生了變化,除了用 C 語言實現(xiàn)外,Python 還有其他的實現(xiàn)方式。例如,用 Java 語言實現(xiàn)的 Python 稱為 JPython,用 .net 實現(xiàn)的 Python 稱為 IronPython 等等。

    Python 的這些實現(xiàn)方式雖然誕生比 CPython 晚,但一直在努力地跟上主流,并在不同的生產(chǎn)環(huán)境中不斷地使用并推廣 Python。

    Python 的實現(xiàn)方式有很多種,Python 官網(wǎng)上介紹了 20 多種語言變體、方言或 C 語言之外的 Python 解釋器實現(xiàn)。其中一些只是實現(xiàn)了語言核心語法、功能和內(nèi)置擴展的一個子集,但至少有幾個與 CPython 幾乎完全兼容。更重要的是,在這些不同的實現(xiàn)方式中,雖然有些只是玩具項目或?qū)嶒?#xff0c;但大部分都是為了解決某些實際問題而創(chuàng)建的,這些問題要么使用 CPython 無法解決,要么需要開發(fā)人員花費巨大的精力,這里舉幾個例子:

    • 在嵌入式系統(tǒng)中運行 Python 代碼。
    • 與運行框架(如 Java 或 .NET)或其他語言做代碼集成。
    • 在 Web 瀏覽器中運行 Python 代碼。

    由于受到篇幅的限制,本節(jié)僅給大家介紹幾種 Python 開發(fā)人員最常用的幾種 Python 實現(xiàn)方式。

    Stackless Python

    Stackless Python 自稱 Python 增強版。之所以名為 Stackless(無棧),是因為它沒有依賴 C 語言的調(diào)用棧,實際上就是對 CPython 做了一些修改,添加了一些新的功能。

    在新添加的功能中,最重要就是由解釋器管理的微線程,用來替代依賴系統(tǒng)內(nèi)核上下文切換和任務(wù)調(diào)度的普通線程,既輕量化又節(jié)約資源。

    Stackless Python 最新可用的版本是 2.7.9 和 3.3.5,分別實現(xiàn)的是 Python 2.7 和 3.3。在 Stackless Python 中,所有的額外功能都是內(nèi)置 stackless 模塊內(nèi)的框架。

    Stackless Python 并不是最有名的 Python 實現(xiàn),但很值得一提,因為它引入的思想對編程語言社區(qū)有很大的影響。例如,將 Stackless Python 中的內(nèi)核切換功能提取出來并作為一個獨立包發(fā)布,名為 greenlet,是許多有用的庫和框架的基礎(chǔ)。

    此外,Stackless Python 的大部分功能都在 PyPy 中重新實現(xiàn),PyPy 是另一個 Python 實現(xiàn),我們將稍后介紹。

    JPython

    Jython 是 Python 語言的 Java 實現(xiàn)。它將代碼編譯為 Java 字節(jié)代碼,開發(fā)人員在 Python 模塊中可以無縫使用 Java 類。

    Jython 允許人們在復(fù)雜應(yīng)用系統(tǒng)(例如 J2EE)中使用 Python 作為頂層腳本語言,它還將 Java 應(yīng)用引入到 Python 中,一個很好的例子就是,在 Python 程序中可以使用 Apache Jackrabbit(這是一個基于 JCR 的文檔倉庫 API)。

    Jython 最新可用的版本是 Jython 2.7,對應(yīng)的是 Python 2.7 版。它宣稱幾乎實現(xiàn)了 Python 所有的核心標準庫,并使用相同的回歸測試套件。Jython 3.x 版正在開發(fā)中。

    Jython 與 CPython 實現(xiàn)的主要區(qū)別如下所示:

    • 真正的 Java 垃圾回收,而不是引用計數(shù)。
    • 沒有全局解釋器鎖(GlobakInterpreter Lock,GIL),在多線程應(yīng)用中可以充分利用多個內(nèi)核。

    這一語言實現(xiàn)的主要缺點是缺少對 C/Python 擴展 API 的支持,因此用 C 語言編寫的 Python 擴展在 Jython 中無法運行。這種情況未來可能會發(fā)生改變,因為 Jython 3.x 計劃支持 C/Python 擴展 API。

    某些 Python Web 框架(例如 Pylons)被認為是促進 Jython 的開發(fā),使其可用于 Java 世界。

    IronPython

    IronPython 將 Python 引入 .NET 框架中,這個項目受到微軟的支持,因為 IronPython 的主要開發(fā)人員都在微軟工作。可以這么說,IronPython 是推廣語言的一種重要實現(xiàn)。

    除了 Java,.NET社區(qū)是最大的開發(fā)者社區(qū)之一。

    值得一提的是,微軟提供了一套免費開發(fā)工具,名為 PTVS(Python Tools for Visual Studio,用于Visual Studio 的 Python 工具),可以將 Visual Studio 轉(zhuǎn)換為成熟的 Python IDE。這是作為 Visual Studio 的插件發(fā)布的,在 GitHub 可以找到其開源代碼。

    IronPython 最新的穩(wěn)定版本是 2.7.5,與 Python 2.7 兼容。與 Jython 類似,Python 3.x 的實現(xiàn)也在開發(fā)中,但還沒有可用的穩(wěn)定版本。

    雖然 .NET 主要在微軟 Windows 系統(tǒng)上運行,但是 IronPython 也可以在 Mac OS X 和 Linux 系統(tǒng)上運行,這一點要感謝 Mono,一個跨平臺的開源 .NET 實現(xiàn)。

    與 CPython 相比,IronPython 的主要區(qū)別或優(yōu)點如下:

    • 與 Jython 類似,沒有全局解釋器鎖(Global Interpreter Lock,GIL),在多線程應(yīng)用中可以充分利用多個內(nèi)核。
    • 用 C# 和其他 .NET 語言編寫的代碼可以輕松集成到 IronPython 中,反之亦然。
    • 通過 Silverlight,在所有主流 Web 瀏覽器中都可以運行。

    說到弱點,IronPython 也與 Jython 非常類似,因為它也不支持 C/Python 擴展 API。對于想要使用主要基于 C 擴展的 Python 包(例如 NumPy)的開發(fā)人員來說,這一點很重要。

    有一個叫作 ironclad 的項目,其目的是在 IronPython 中無縫使用這些擴展,其最新支持的版本是2.6,開發(fā)已經(jīng)停止。

    PyPy

    PyPy 可能是最令人興奮的 Python 實現(xiàn),因為其目標就是將 Python 重寫為 Python。在 PyPy 中,Python 解釋器本身是用 Python 編寫的。

    在 Python 的 CPython 實現(xiàn)中,有一個 C 代碼層來實現(xiàn)具體細節(jié)。但在 PyPy 實現(xiàn)中,這個 C 代碼層用 Python 完全重寫。這樣,你可以在代碼運行期間改變解釋器的行為,并實現(xiàn) CPython 難以實現(xiàn)的代碼模式。

    目前 PyPy 的目的是與 Python 2.7 完全兼容,而 PyPy3 則與 Python 3.2.5 版兼容。

    以前對 PyPy 感興趣主要是理論上的原因,只有喜歡深入鉆研語言細節(jié)的人才會對它感興趣。PyPy 通常不用于生產(chǎn)環(huán)境,但這些年來這種狀況己經(jīng)發(fā)生改變,PyPy 通常比 CPython 實現(xiàn)要快得多。基于這一特性,使得越來越多的開發(fā)人員決定在生產(chǎn)環(huán)境中切換到 PyPy。

    PyPy 與 CPython 實現(xiàn)的主要區(qū)別在于以下幾個方面:

    • 使用垃圾回收,而不是引用計數(shù)。
    • 集成跟蹤 JIT 編譯器,可以顯著提高性能。
    • 借鑒 Stackless Python 在應(yīng)用層的無棧特性。

    與幾乎所有其他的 Python 實現(xiàn)類似,PyPy 也缺乏對 C/Python 擴展 API 的完全官方支持。但它至少通過 CPyExt 子系統(tǒng)為 C 擴展提供了某種程度的支持,雖然文檔不完整,功能也尚未完善。此外,社區(qū)正在努力將 NumPy 遷移到 PyPy 中,因為這是最需要的功能。

    了解Jupyter Notebook,你已然超越了90%的Python程序員

    在 2019年 8 月份 TOIBE 編程語言社區(qū)公布的編程語言排行榜中,Python 已經(jīng)超過了 C++,穩(wěn)居排行榜第 3 名(如圖 1 所示)。


    圖 1 TOIBE 編程社區(qū)排行榜

    我們應(yīng)該知道,Python 之所有在 14 年后“崛起”,得益于機器學(xué)習(xí)和數(shù)學(xué)統(tǒng)計應(yīng)用的興起。至于 Python 適合數(shù)學(xué)統(tǒng)計和機器學(xué)習(xí)的原因,很多讀者可能并不會想到,Jupyter Notebook 功不可沒。可以好不夸張地說,作為一名 Python 工程師,如果不會使用 Jupyter Notebook,可能會真的太落伍了。

    本節(jié),就帶領(lǐng)大家學(xué)習(xí)一下 Jupyter Notebook。

    什么是Jupyter Notebook

    說了這么多,到底什么是 Jupyter Notebook 呢?按照 Jupyter 創(chuàng)始人的說法,起初他是想做一個綜合 Ju(Julia)、Py(Python)和 R 三種科學(xué)運行語言的計算工具平臺,所以將其命名為 Jupyter。

    Jupyter 發(fā)展到現(xiàn)在,已經(jīng)成為了一個幾乎支持所有語言,能夠把軟件代碼、計算輸出、解釋文檔、多媒體資源整合在一起的多功能科學(xué)運行平臺。Jupyter Notebook 的工作界面如圖 2 所示。


    圖 2 Jupyter Notebook界面(點此查看高清大圖)

    如圖 2 所示,只要直接輸入代碼并運行,它就會直接在代碼下面顯示輸出結(jié)果。那么,Jupyter Notebook 對 Python 的影響真的有那么大嗎?

    Jupyter Notebook的影響力

    衡量一個技術(shù)的影響力,或者說想利用自己的技術(shù)影響世界時,必定繞不開技術(shù)對教育界的影響力。

    以微軟的 Word 文本處理系統(tǒng)為例,從純技術(shù)角度來講,它的單機設(shè)計理念早已過時,但以 Google Doc 為代表的在線文檔系統(tǒng),并沒有想象中實現(xiàn)對 Word 的降維打擊。最直接的原因歸咎于用戶習(xí)慣,多數(shù)用戶已經(jīng)習(xí)慣使用 Word 來編輯、修改文檔啦,之所以會這樣,是因為我們從小學(xué)、中學(xué),一直到大學(xué)期間,都在學(xué)習(xí)使用 Word。而且到了工作中,老員工還會帶著新員工繼續(xù)使用 Word。

    從 2017 年開始,已經(jīng)有大量的北美頂尖計算機課程開始使用 Jupyter Notebook 作為教學(xué)工具,而在這之前,一直使用的都是 Python 命令行的形式。不僅如此,Jupyter Notebook 在工業(yè)界的影響力更大。

    例如,在 Facebook 中,幾乎所有的中小型程序(比如內(nèi)部的線下分析軟件,機器學(xué)習(xí)模塊的訓(xùn)練等)都是借助與Jupyter Notebook完成。同時,在硅谷其他的一線大廠中,也全部使用 Jupyter Notebook(他們用的是改進定制型的Jupyter Notebook,名稱 Google Colab)。

    了解了以上這些,相信你已經(jīng)認可了 Jupyter Notebook 的江湖地位。

    但需要注意的是,不是說那個技術(shù)流行,就盲目跟從。對于技術(shù)的選擇,要學(xué)習(xí)獨立的思考,切勿人云亦云。以 Facebook 為例,之所以它選擇 Jupyter Notebook 等技術(shù),很大程序上因為它有幾百個產(chǎn)品線,幾萬個工程師,而如果是幾個人的團隊,使用同樣的技術(shù)反倒成了拖累。

    Jupyter Notebook的優(yōu)勢

    這里給大家總結(jié)了幾點 Jupyter Notebook 的優(yōu)勢:

    1) 整合了所有資源

    在軟件開發(fā)過程中,頻繁地進行上下文切換,會影響生產(chǎn)效率。舉個例子,假設(shè)你需要切換窗口去看一些文檔,再切換窗口去用另一個工具畫圖,不斷地切換窗口就會成為影響效率的因素。

    而 Jupyter Notebook 則不同,它會將所有和軟件編寫的資源全部放在一個地方,無需切換窗口就可以輕松找到。

    2) 交互性編程體驗

    在機器學(xué)習(xí)和數(shù)據(jù)統(tǒng)計領(lǐng)域,Python 編程的實驗性特別強,比如為了測試 100 種不同的方法,有時就需要將一小塊代碼重寫 100 遍,在這種情況下,如果使用傳統(tǒng)的 Python 開發(fā)流程,每一次測試都要將所有代碼重新跑一遍,會花費開發(fā)者很多時間。

    Jupyter Notebook 引進了 Cell 的概念。每次測試可以只跑一小塊的代碼,并且在代碼下方立刻就能看到運行結(jié)果。

    如此強的交互性,滿足了 Python 程序員可以專注于問題本身,不會被頻繁的工具鏈拖累,也不用在命令行之間來回切換,所有工作都能在 Jupyter Notebook 上完成。

    3) 輕松運行他人編寫的代碼

    同樣是在機器學(xué)習(xí)和數(shù)學(xué)統(tǒng)計領(lǐng)域,我們可能會借鑒他人分享的代碼,但當我們拷貝過來想要運行時,卻需要使用 pip 安裝一大堆依賴的庫,足以讓人抓狂。而 Jupyter Notebook 就可以解決這個問題。

    例如,Jupyter 官方的 Binder 平臺以及 Google 提供的 Google Colab 環(huán)境,它們可以讓 Jupyter Notebook 變得和 Google Doc 在線文檔一樣。比如用 Binder 打開一份 GitHub 上的 Jupyter Notebook 時,就不需要安裝任何 Python 庫,直接在打開代碼就能運行。

    本節(jié),僅是為了讓初學(xué)者對 Jupyter Notebook 有一個初步的了解,具體 Jupyter Notebook 的安裝和使用,網(wǎng)絡(luò)上有很多詳細的教程,這里不再做過多描述。

    注意,本教程仍舊使用 Python 內(nèi)置的 IDLE 作為教學(xué)工具。

    總結(jié)

    以上是生活随笔為你收集整理的【Python学习教程】Python编程基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。