您的位置:首頁>正文

神級程式師教你(沒有程式設計經驗)的小白也是能快速進入IT行業的!

此篇是針對沒有電腦基礎和沒有程式設計基礎的小夥伴整理出的資料乾貨!如果你是大牛的話也可以看下, 幫忙指正錯誤哦!小編推薦大家加一下這個群:330637182 這個群裡好幾千人了!大家遇到啥問題都會在裡面交流!而且免費分享零基礎入門資料 web開發 爬蟲資料一整套!是個非常好的學習交流地方!也有程式師大神給大家熱心解答各種問題!很快滿員了。 欲進從速哦!各種PDF等你來下載!全部都是免費的哦!所以小編在群裡等你們過來一起交流學習呢!

Python介紹

安裝

Hello World程式

變數

使用者輸入

模組初識

.pyc是個什麼鬼?

資料類型初識

資料運算

運算式if ...else語句

運算式for 迴圈

break and continue

運算式while 迴圈

由上圖可見, Python整體呈上升趨勢, 反映出Python應用越來越廣泛並且也逐漸得到業內的認可!!!

圖形GUI: PyQT, WxPython,TkInter

Python 是一門什麼樣的語言?

程式設計語言主要從以下幾個角度為進行分類, 編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言, 每個分類代表什麼意思呢, 我們一起來看一下。

編譯型vs解釋型

編譯型

優點:編譯器一般會有預編譯的過程對代碼進行優化。 因為編譯只做一次, 運行時不需要編譯, 所以編譯型語言的程式執行效率高。 可以脫離語言環境獨立運行。

缺點:編譯之後如果需要修改就需要整個模組重新編譯。 編譯的時候根據對應的運行環境生成機器碼,

不同的作業系統之間移植就會有問題, 需要根據運行的作業系統環境編譯不同的可執行檔。

解釋型

優點:有良好的平臺相容性, 在任何環境中都可以運行, 前提是安裝了解譯器(虛擬機器)。 靈活, 修改代碼的時候直接修改就可以, 可以快速部署, 不用停機維護。

缺點:每次運行的時候都要解釋一遍, 性能上不如編譯型語言。

編譯型和解釋型

我們先看看編譯型,其實它和組合語言是一樣的:也是有一個負責翻譯的程式來對我們的原始程式碼進行轉換,生成相對應的可執行代碼。這個過程說得專業一點,就稱為編譯(Compile),而負責編譯的程式自然就稱為編譯器(Compiler)。如果我們寫的程式碼都包含在一個原始檔案中,那麼通常編譯之後就會直接生成一個可執行檔,我們就可以直接運行了。但對於一個比較複雜的專案,為了方便管理,我們通常把代碼分散在各個原始檔案中,作為不同的模組來組織。這時編譯各個檔時就會生成目的檔案(Object file)而不是前面說的可執行檔。一般一個原始檔案的編譯都會對應一個目的檔案。這些目的檔案裡的內容基本上已經是可執行代碼了,但由於只是整個項目的一部分,所以我們還不能直接運行。待所有的原始檔案的編譯都大功告成,我們就可以最後把這些半成品的目的檔案“打包”成一個可執行檔了,這個工作由另一個程式負責完成,由於此過程好像是把包含可執行代碼的目的檔案連接裝配起來,所以又稱為連結(Link),而負責連結的程式就叫……就叫連結程式(Linker)。連結程式除了連結目的檔案外,可能還有各種資源,像圖示檔啊、音效檔啊什麼的,還要負責去除目的檔案之間的冗餘重複代碼,等等,所以……也是挺累的。連結完成之後,一般就可以得到我們想要的可執行檔了。

上面我們大概地介紹了編譯型語言的特點,現在再看看解釋型。噢,從字面上看,“編譯”和“解釋”的確都有“翻譯”的意思,它們的區別則在於翻譯的時機安排不大一樣。打個比方:假如你打算閱讀一本外文書,而你不知道這門外語,那麼你可以找一名翻譯,給他足夠的時間讓他從頭到尾把整本書翻譯好,然後把書的母語版交給你閱讀;或者,你也立刻讓這名翻譯輔助你閱讀,讓他一句一句給你翻譯,如果你想往回看某個章節,他也得重新給你翻譯。

兩種方式,前者就相當於我們剛才所說的編譯型:一次把所有的代碼轉換成機器語言,然後寫成可執行檔;而後者就相當於我們要說的解釋型:在程式運行的前一刻,還只有來源程式而沒有可執行程式;而程式每執行到來源程式的某一條指令,則會有一個稱之為解釋程式的外殼程式將原始程式碼轉換成二進位碼以供執行,總言之,就是不斷地解釋、執行、解釋、執行……所以,解釋型程式是離不開解釋程式的。像早期的BASIC就是一門經典的解釋型語言,要執行BASIC程式,就得進入BASIC環境,然後才能載入程式原始檔案、運行。解釋型程式中,由於程式總是以原始程式碼的形式出現,因此只要有相應的解譯器,移植幾乎不成問題。編譯型程式雖然原始程式碼也可以移植,但前提是必須針對不同的系統分別進行編譯,對於複雜的工程來說,的確是一件不小的時間消耗,況且很可能一些細節的地方還是要修改原始程式碼。而且,解釋型程式省卻了編譯的步驟,修改調試也非常方便,編輯完畢之後即可立即運行,不必像編譯型程式一樣每次進行小小改動都要耐心等待漫長的Compiling…Linking…這樣的編譯連結過程。不過凡事有利有弊,由於解釋型程式是將編譯的過程放到執行過程中,這就決定了解釋型程式註定要比編譯型慢上一大截,像幾百倍的速度差距也是不足為奇的。

編譯型與解釋型,兩者各有利弊。前者由於程式執行速度快,同等條件下對系統要求較低,因此像開發作業系統、大型應用程式、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)、VB等基本都可視為編譯語言,而一些網頁腳本、伺服器腳本及輔助開發介面這樣的對速度要求不高、對不同系統平臺間的相容性有一定要求的程式則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python等等。

但既然編譯型與解釋型各有優缺點又相互對立,所以一批新興的語言都有把兩者折衷起來的趨勢,例如Java語言雖然比較接近解釋型語言的特徵,但在執行之前已經預先進行一次預編譯,生成的代碼是介於機器碼和Java原始程式碼之間的仲介代碼,運行的時候則由JVM(Java的虛擬機器平臺,可視為解譯器)解釋執行。它既保留了原始程式碼的高抽象、可移植的特點,又已經完成了對原始程式碼的大部分預編譯工作,所以執行起來比“純解釋型”程式要快許多。而像VB6(或者以前版本)、C#這樣的語言,雖然表面上看生成的是.exe可執行程式檔,但VB6編譯之後實際生成的也是一種仲介碼,只不過編譯器在前面安插了一段自動調用某個外部解譯器的代碼(該解釋程式獨立於使用者編寫的程式,存放於系統的某個DLL檔中,所有以VB6編譯生成的可執行程式都要用到它),以解釋執行實際的程式體。C#(以及其它.net的語言編譯器)則是生成.net目標代碼,實際執行時則由.net解釋系統(就像JVM一樣,也是一個虛擬機器平臺)進行執行。當然.net目標代碼已經相當“低級”,比較接近機器語言了,所以仍將其視為編譯語言,而且其可移植程度也沒有Java號稱的這麼強大,Java號稱是“一次編譯,到處執行”,而.net則是“一次編碼,到處編譯”。呵呵,當然這些都是題外話了。總之,隨著設計技術與硬體的不斷發展,編譯型與解釋型兩種方式的界限正在不斷變得模糊。

動態語言和靜態語言

通常我們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。

(1)動態類型語言:動態類型語言是指在運行期間才去做資料類型檢查的語言,也就是說,在用動態類型的語言程式設計時,永遠也不用給任何變數指定資料類型,該語言會在你第一次賦值給變數時,在內部將資料類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其他的各種指令碼語言如VBScript也多少屬於動態類型語言。

(2)靜態類型語言:靜態類型語言與動態類型語言剛好相反,它的資料類型是在編譯其間檢查的,也就是說在寫程式時要聲明所有變數的資料類型,C/C++是靜態類型語言的典型代表,其他的靜態類型語言還有C#、JAVA等。

強類型定義語言和弱類型定義語言

(1)強類型定義語言:強制資料類型定義的語言。也就是說,一旦一個變數被指定了某個資料類型,如果不經過強制轉換,那麼它就永遠是這個資料類型了。舉個例子:如果你定義了一個整型變數a,那麼程式根本不可能將a當作字串類型處理。強類型定義語言是類型安全的語言。

(2)弱類型定義語言:資料類型可以被忽略的語言。它與強類型定義語言相反, 一個變數可以賦不同資料類型的值。

強類型定義語言在速度上可能略遜色于弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,“這門語言是不是動態語言”與“這門語言是否類型安全”之間是完全沒有聯繫的!

例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。

通過上面這些介紹,我們可以得出,python是一門動態解釋性的強類型定義語言。那這些基因使成就了Python的哪些優缺點呢?我們繼續往下看。

再看缺點:

速度慢,Python 的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑於使用Python的主要原因,但其實這裡所指的運行速度慢在大多數情況下使用者是無法直接感知到的,必須借助測試工具才能體現出來,比如你用C運一個程式花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非常誇張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數情況下Python已經完全可以滿足你對程式速度的要求,除非你要寫對速度要求極高的搜尋引擎等,這種情況下,當然還是建議你用C去實現的。

代碼不能加密,因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的專案要求原始程式碼必須是加密的,那你一開始就不應該用Python來去實現。

執行緒不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全域解譯器鎖(Global Interpreter Lock),是電腦程式設計語言解譯器用於同步執行緒的工具,使得任何時刻僅有一個執行緒在執行,Python的執行緒是作業系統的原生執行緒。在Linux上為pthread,在Windows上為Win thread,完全由作業系統調度執行緒的執行。一個python解譯器進程內有一條主執行緒,以及多條使用者程式的執行執行緒。即使在多核CPU平臺上,由於GIL的存在,所以禁止多執行緒的並存執行。關於這個問題的折衷解決方法,我們在以後執行緒和進程章節裡再進行詳細探討。

當然,Python還有一些其它的小缺點,在這就不一一列舉了,我想說的是,任何一門語言都不是完美的,都有擅長和不擅長做的事情,建議各位不要拿一個語言的劣勢去跟另一個語言的優勢來去比較,語言只是一個工具,是實現程式設計師思想的工具,就像我們之前中學學幾何時,有的時候需要要圓規,有的時候需要用三角尺一樣,拿相應的工具去做它最擅長的事才是正確的選擇。之前很多人問我Shell和Python到底哪個好?我回答說Shell是個指令碼語言,但Python不只是個指令碼語言,能做的事情更多,然後又有鑽牛角尖的人說完全沒必要學Python, Python能做的事情Shell都可以做,只要你足夠牛B,然後又舉了用Shell可以寫俄羅斯方塊這樣的遊戲,對此我能說表達只能是,不要跟SB理論,SB會把你拉到跟他一樣的高度,然後用充分的經驗把你打倒。

Jython

Jython是運行在Java平臺上的Python解譯器,可以直接把Python代碼編譯成Java位元組碼執行。

IronPython

IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解譯器,可以直接把Python代碼編譯成.Net的位元組碼。

小結

Python的解譯器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是通過網路調用來交互,確保各程式之間的獨立性。

指定解譯器

上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解譯器來執行。

如果想要類似於執行shell腳本一樣執行python腳本,例: ./hello.py ,那麼就需要在 hello.py 文件的頭部指定解譯器,如下:

ps:雖然現在Python3.0 過後已經支持中文,但防止亂碼,規範自己的編碼,還是推薦大家帶上。

注釋

當行注視:# 被注釋內容

多行注釋:""" 被注釋內容 """

七、模組初識

Python的強大之處在於他有非常豐富和強大的標準庫和協力廠商庫,幾乎你想實現的任何功能都有相應的Python庫支持,以後的課程中會深入講解常用到的各種庫,現在,我們先來象徵性的學2個簡單的。

八、.pyc是個什麼鬼?

1. Python是一門解釋型語言?

我初學Python時,聽到的關於Python的第一句話就是,Python是一門解釋性語言,我就這樣一直相信下去,直到發現了*.pyc文件的存在。如果是解釋型語言,那麼生成的*.pyc檔是什麼呢?c應該是compiled的縮寫才對啊!

為了防止其他學習Python的人也被這句話誤解,那麼我們就在文中來澄清下這個問題,並且把一些基礎概念給理清。

3. Python到底是什麼

其實Python和Java/C#一樣,也是一門基於虛擬機器的語言,我們先來從表面上簡單地瞭解一下Python程式的運行過程吧。

當我們在命令列中輸入python hello.py時,其實是啟動了Python的“解譯器”,告訴“解譯器”:你要開始工作了。可是在“解釋”之前,其實執行的第一項工作和Java一樣,是編譯。

熟悉Java的同學可以想一下我們在命令列中如何執行一個Java的程式:

javac hello.java

java hello

只是我們在用Eclipse之類的IDE時,將這兩部給融合成了一部而已。其實Python也一樣,當我們執行python hello.py時,他也一樣執行了這麼一個過程,所以我們應該這樣來描述Python,Python是一門先編譯後解釋的語言。

浮點數用來處理實數,即帶有小數的數位。類似於C語言中的double類型,占8個位元組(64位元),其中52位表示底,11位表示指數,剩下的一位元表示符號。

complex(複數)

複數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裡的x和y都是實數。

注:Python中存在小數字池:-5 ~ 257

字串常用功能:

移除空白

分割

長度

索引

切片

十、資料運算

算數運算:

比較運算:

賦值運算:

邏輯運算:

成員運算:

身份運算:

位運算:

運算子優先順序:

場景二、猜年齡遊戲

在程式裡設定好你的年齡,然後啟動程式讓使用者猜測,使用者輸入後,根據他的輸入提示使用者輸入的是否正確,如果錯誤,提示是猜大了還是小了

外層變數,可以被內層代碼使用

內層變數,不應被外層代碼使用

回到上面for 迴圈的例子,如何實現讓用戶不斷的猜年齡,但只給最多3次機會,再猜不對就退出程式。

四、 一切皆物件

對於Python,一切事物都是物件,物件基於類創建

所以,以下這些值都是物件: "wupeiqi"、38、['北京', '上海', '深圳'],並且是根據不同的類生成的物件。

是不是簡單易懂,如果你是完全零基礎的,你可以從這篇入手!

如有侵權請聯繫小編刪除!

編譯型和解釋型

我們先看看編譯型,其實它和組合語言是一樣的:也是有一個負責翻譯的程式來對我們的原始程式碼進行轉換,生成相對應的可執行代碼。這個過程說得專業一點,就稱為編譯(Compile),而負責編譯的程式自然就稱為編譯器(Compiler)。如果我們寫的程式碼都包含在一個原始檔案中,那麼通常編譯之後就會直接生成一個可執行檔,我們就可以直接運行了。但對於一個比較複雜的專案,為了方便管理,我們通常把代碼分散在各個原始檔案中,作為不同的模組來組織。這時編譯各個檔時就會生成目的檔案(Object file)而不是前面說的可執行檔。一般一個原始檔案的編譯都會對應一個目的檔案。這些目的檔案裡的內容基本上已經是可執行代碼了,但由於只是整個項目的一部分,所以我們還不能直接運行。待所有的原始檔案的編譯都大功告成,我們就可以最後把這些半成品的目的檔案“打包”成一個可執行檔了,這個工作由另一個程式負責完成,由於此過程好像是把包含可執行代碼的目的檔案連接裝配起來,所以又稱為連結(Link),而負責連結的程式就叫……就叫連結程式(Linker)。連結程式除了連結目的檔案外,可能還有各種資源,像圖示檔啊、音效檔啊什麼的,還要負責去除目的檔案之間的冗餘重複代碼,等等,所以……也是挺累的。連結完成之後,一般就可以得到我們想要的可執行檔了。

上面我們大概地介紹了編譯型語言的特點,現在再看看解釋型。噢,從字面上看,“編譯”和“解釋”的確都有“翻譯”的意思,它們的區別則在於翻譯的時機安排不大一樣。打個比方:假如你打算閱讀一本外文書,而你不知道這門外語,那麼你可以找一名翻譯,給他足夠的時間讓他從頭到尾把整本書翻譯好,然後把書的母語版交給你閱讀;或者,你也立刻讓這名翻譯輔助你閱讀,讓他一句一句給你翻譯,如果你想往回看某個章節,他也得重新給你翻譯。

兩種方式,前者就相當於我們剛才所說的編譯型:一次把所有的代碼轉換成機器語言,然後寫成可執行檔;而後者就相當於我們要說的解釋型:在程式運行的前一刻,還只有來源程式而沒有可執行程式;而程式每執行到來源程式的某一條指令,則會有一個稱之為解釋程式的外殼程式將原始程式碼轉換成二進位碼以供執行,總言之,就是不斷地解釋、執行、解釋、執行……所以,解釋型程式是離不開解釋程式的。像早期的BASIC就是一門經典的解釋型語言,要執行BASIC程式,就得進入BASIC環境,然後才能載入程式原始檔案、運行。解釋型程式中,由於程式總是以原始程式碼的形式出現,因此只要有相應的解譯器,移植幾乎不成問題。編譯型程式雖然原始程式碼也可以移植,但前提是必須針對不同的系統分別進行編譯,對於複雜的工程來說,的確是一件不小的時間消耗,況且很可能一些細節的地方還是要修改原始程式碼。而且,解釋型程式省卻了編譯的步驟,修改調試也非常方便,編輯完畢之後即可立即運行,不必像編譯型程式一樣每次進行小小改動都要耐心等待漫長的Compiling…Linking…這樣的編譯連結過程。不過凡事有利有弊,由於解釋型程式是將編譯的過程放到執行過程中,這就決定了解釋型程式註定要比編譯型慢上一大截,像幾百倍的速度差距也是不足為奇的。

編譯型與解釋型,兩者各有利弊。前者由於程式執行速度快,同等條件下對系統要求較低,因此像開發作業系統、大型應用程式、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)、VB等基本都可視為編譯語言,而一些網頁腳本、伺服器腳本及輔助開發介面這樣的對速度要求不高、對不同系統平臺間的相容性有一定要求的程式則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python等等。

但既然編譯型與解釋型各有優缺點又相互對立,所以一批新興的語言都有把兩者折衷起來的趨勢,例如Java語言雖然比較接近解釋型語言的特徵,但在執行之前已經預先進行一次預編譯,生成的代碼是介於機器碼和Java原始程式碼之間的仲介代碼,運行的時候則由JVM(Java的虛擬機器平臺,可視為解譯器)解釋執行。它既保留了原始程式碼的高抽象、可移植的特點,又已經完成了對原始程式碼的大部分預編譯工作,所以執行起來比“純解釋型”程式要快許多。而像VB6(或者以前版本)、C#這樣的語言,雖然表面上看生成的是.exe可執行程式檔,但VB6編譯之後實際生成的也是一種仲介碼,只不過編譯器在前面安插了一段自動調用某個外部解譯器的代碼(該解釋程式獨立於使用者編寫的程式,存放於系統的某個DLL檔中,所有以VB6編譯生成的可執行程式都要用到它),以解釋執行實際的程式體。C#(以及其它.net的語言編譯器)則是生成.net目標代碼,實際執行時則由.net解釋系統(就像JVM一樣,也是一個虛擬機器平臺)進行執行。當然.net目標代碼已經相當“低級”,比較接近機器語言了,所以仍將其視為編譯語言,而且其可移植程度也沒有Java號稱的這麼強大,Java號稱是“一次編譯,到處執行”,而.net則是“一次編碼,到處編譯”。呵呵,當然這些都是題外話了。總之,隨著設計技術與硬體的不斷發展,編譯型與解釋型兩種方式的界限正在不斷變得模糊。

動態語言和靜態語言

通常我們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。

(1)動態類型語言:動態類型語言是指在運行期間才去做資料類型檢查的語言,也就是說,在用動態類型的語言程式設計時,永遠也不用給任何變數指定資料類型,該語言會在你第一次賦值給變數時,在內部將資料類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其他的各種指令碼語言如VBScript也多少屬於動態類型語言。

(2)靜態類型語言:靜態類型語言與動態類型語言剛好相反,它的資料類型是在編譯其間檢查的,也就是說在寫程式時要聲明所有變數的資料類型,C/C++是靜態類型語言的典型代表,其他的靜態類型語言還有C#、JAVA等。

強類型定義語言和弱類型定義語言

(1)強類型定義語言:強制資料類型定義的語言。也就是說,一旦一個變數被指定了某個資料類型,如果不經過強制轉換,那麼它就永遠是這個資料類型了。舉個例子:如果你定義了一個整型變數a,那麼程式根本不可能將a當作字串類型處理。強類型定義語言是類型安全的語言。

(2)弱類型定義語言:資料類型可以被忽略的語言。它與強類型定義語言相反, 一個變數可以賦不同資料類型的值。

強類型定義語言在速度上可能略遜色于弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,“這門語言是不是動態語言”與“這門語言是否類型安全”之間是完全沒有聯繫的!

例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。

通過上面這些介紹,我們可以得出,python是一門動態解釋性的強類型定義語言。那這些基因使成就了Python的哪些優缺點呢?我們繼續往下看。

再看缺點:

速度慢,Python 的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑於使用Python的主要原因,但其實這裡所指的運行速度慢在大多數情況下使用者是無法直接感知到的,必須借助測試工具才能體現出來,比如你用C運一個程式花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非常誇張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數情況下Python已經完全可以滿足你對程式速度的要求,除非你要寫對速度要求極高的搜尋引擎等,這種情況下,當然還是建議你用C去實現的。

代碼不能加密,因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的專案要求原始程式碼必須是加密的,那你一開始就不應該用Python來去實現。

執行緒不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全域解譯器鎖(Global Interpreter Lock),是電腦程式設計語言解譯器用於同步執行緒的工具,使得任何時刻僅有一個執行緒在執行,Python的執行緒是作業系統的原生執行緒。在Linux上為pthread,在Windows上為Win thread,完全由作業系統調度執行緒的執行。一個python解譯器進程內有一條主執行緒,以及多條使用者程式的執行執行緒。即使在多核CPU平臺上,由於GIL的存在,所以禁止多執行緒的並存執行。關於這個問題的折衷解決方法,我們在以後執行緒和進程章節裡再進行詳細探討。

當然,Python還有一些其它的小缺點,在這就不一一列舉了,我想說的是,任何一門語言都不是完美的,都有擅長和不擅長做的事情,建議各位不要拿一個語言的劣勢去跟另一個語言的優勢來去比較,語言只是一個工具,是實現程式設計師思想的工具,就像我們之前中學學幾何時,有的時候需要要圓規,有的時候需要用三角尺一樣,拿相應的工具去做它最擅長的事才是正確的選擇。之前很多人問我Shell和Python到底哪個好?我回答說Shell是個指令碼語言,但Python不只是個指令碼語言,能做的事情更多,然後又有鑽牛角尖的人說完全沒必要學Python, Python能做的事情Shell都可以做,只要你足夠牛B,然後又舉了用Shell可以寫俄羅斯方塊這樣的遊戲,對此我能說表達只能是,不要跟SB理論,SB會把你拉到跟他一樣的高度,然後用充分的經驗把你打倒。

Jython

Jython是運行在Java平臺上的Python解譯器,可以直接把Python代碼編譯成Java位元組碼執行。

IronPython

IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解譯器,可以直接把Python代碼編譯成.Net的位元組碼。

小結

Python的解譯器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是通過網路調用來交互,確保各程式之間的獨立性。

指定解譯器

上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解譯器來執行。

如果想要類似於執行shell腳本一樣執行python腳本,例: ./hello.py ,那麼就需要在 hello.py 文件的頭部指定解譯器,如下:

ps:雖然現在Python3.0 過後已經支持中文,但防止亂碼,規範自己的編碼,還是推薦大家帶上。

注釋

當行注視:# 被注釋內容

多行注釋:""" 被注釋內容 """

七、模組初識

Python的強大之處在於他有非常豐富和強大的標準庫和協力廠商庫,幾乎你想實現的任何功能都有相應的Python庫支持,以後的課程中會深入講解常用到的各種庫,現在,我們先來象徵性的學2個簡單的。

八、.pyc是個什麼鬼?

1. Python是一門解釋型語言?

我初學Python時,聽到的關於Python的第一句話就是,Python是一門解釋性語言,我就這樣一直相信下去,直到發現了*.pyc文件的存在。如果是解釋型語言,那麼生成的*.pyc檔是什麼呢?c應該是compiled的縮寫才對啊!

為了防止其他學習Python的人也被這句話誤解,那麼我們就在文中來澄清下這個問題,並且把一些基礎概念給理清。

3. Python到底是什麼

其實Python和Java/C#一樣,也是一門基於虛擬機器的語言,我們先來從表面上簡單地瞭解一下Python程式的運行過程吧。

當我們在命令列中輸入python hello.py時,其實是啟動了Python的“解譯器”,告訴“解譯器”:你要開始工作了。可是在“解釋”之前,其實執行的第一項工作和Java一樣,是編譯。

熟悉Java的同學可以想一下我們在命令列中如何執行一個Java的程式:

javac hello.java

java hello

只是我們在用Eclipse之類的IDE時,將這兩部給融合成了一部而已。其實Python也一樣,當我們執行python hello.py時,他也一樣執行了這麼一個過程,所以我們應該這樣來描述Python,Python是一門先編譯後解釋的語言。

浮點數用來處理實數,即帶有小數的數位。類似於C語言中的double類型,占8個位元組(64位元),其中52位表示底,11位表示指數,剩下的一位元表示符號。

complex(複數)

複數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裡的x和y都是實數。

注:Python中存在小數字池:-5 ~ 257

字串常用功能:

移除空白

分割

長度

索引

切片

十、資料運算

算數運算:

比較運算:

賦值運算:

邏輯運算:

成員運算:

身份運算:

位運算:

運算子優先順序:

場景二、猜年齡遊戲

在程式裡設定好你的年齡,然後啟動程式讓使用者猜測,使用者輸入後,根據他的輸入提示使用者輸入的是否正確,如果錯誤,提示是猜大了還是小了

外層變數,可以被內層代碼使用

內層變數,不應被外層代碼使用

回到上面for 迴圈的例子,如何實現讓用戶不斷的猜年齡,但只給最多3次機會,再猜不對就退出程式。

四、 一切皆物件

對於Python,一切事物都是物件,物件基於類創建

所以,以下這些值都是物件: "wupeiqi"、38、['北京', '上海', '深圳'],並且是根據不同的類生成的物件。

是不是簡單易懂,如果你是完全零基礎的,你可以從這篇入手!

如有侵權請聯繫小編刪除!

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示