Python介紹以及安裝

                Python介紹以及安裝html

                                           做者:尹正傑java

版權聲明:原創做品,謝絕轉載!不然將追究法律責任。python

 

 

借用個人導師的一句話:當你看到這篇文章的時候,那麼恭喜你,你已是踏入了開發的大門!歡迎加入:高級運維工程師之路 598432640 linux

 

 

 

                      

一.Python語言介紹c++

說到Python語言,就不得不說一下它的創始人Guido van Rossum(1956 -- ?), 他在開發PYTHON語言以前曾使用過幾年的ABC語言,ABC是一門主要用於教學目的語言(教計算機系的學生如何設計一門開發語言),程序員

Guido 在開發PYTHON時借鑑了不少ABC語言的特性,因此後來人們包括Guido本身也認爲,PYTHON語言的前身就是ABC語言。關於創做PYTHON語言的初衷,Guido在1996年寫到:web

 

Over six years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I算法

had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that wouldsql

appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).數據庫

 

翻譯:

在六年前的1989.12月份,我爲了在聖誕假期打發無聊時間找點事幹(估計是寫代碼找不到對象),決定爲我最近一直在構思的一門新的腳本語言寫個解釋器,這門語言的前身ABC(就Guido本人看來,ABC這種語言很是

優美和強大,是專門爲專業的程序設計師使用的。可是ABC語言並無成功,究其緣由,吉多認爲是非開放形成的。吉多決心在Python中避免這一錯誤,並取得了很是好的效果,完美結合了C和其餘一些語言)語言更多

是被UNIX/C黑客使用,我選擇PYTHONP這個名字作爲這個開發項目的名字,起這個名字的一個緣由是由於我是Month Python’s Flying Circus(英國的一個電視喜劇)的超級粉絲。

 

 

就這樣,python在Guido手中誕生了,它的第一個版本實現是在MAC電腦上,一直在90年代,PYTHON的開放性、語法的簡潔性大受不少程序員的喜歡,不少人拿它來快速的開發一些腳本和工具,並不斷的向官方提交新

的代碼和第三方模塊,所以PYTHON能作的事情也愈發多了起來,一些大公司像YAHOO、EBAY也開始在生產環境中使用PYTHON。到了2000年10月16號,PYTHON2.0發佈了,相比以前的1.x版本,實現了完整的垃圾

回收,而且支持UNICODE,同時整個開發過程更加透明,社區對PYTHON的開發進度的影響逐漸增大。從2000年第一個2.0版本發佈到寫本書的2015止,2.X版本最主流使用的工業版本,雖然PYTHON官方於2008年就發

布了Python3.0,但因爲此版本並不徹底兼容以前的普遍使用的2.4版本,這致使不少基於2.4開發軟件跟本沒法在3.0的平臺 上運行,所以3.0的推廣也很是緩慢,爲解決這個問題,python官方很快又推出兼容2.4和3.0兩

個版本的2.6,這個版本兼容了原來的2.4版本,又支持了不少3.0的特性,而且官方還開發了專門的幫助將2.x轉爲3.0版本的轉換工具,所以,python3.0的使用纔開始逐漸多了起來,不過,如今主流的工業版本依然是2.6

和2.7過渡版本,所以本書主要仍是圍繞着2.7的版原本學習,不過同窗們不用擔憂,由於2.7支持了很是多3.x版本的特性,等到幾年後3.0版本普遍使用時,你由2.x轉向3.x會像由 windows xp轉向使用win 7同樣簡單。

 

再說回Guido, 這哥們如今還掌控着python的發展方向,他於2005年加入谷歌工做,所以也推進了python在谷歌內部實現了普遍使用,2012年,他加入世界上最大的雲存儲公司Dropbox,該公司產品幾乎所有基於python

開發,全世界的用戶天天在上面分享和上傳超過10億個文件。

 

 

二.Python 是一門什麼樣的語言?

編程語言主要從如下幾個角度爲進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每一個分類表明什麼意思呢,咱們一塊兒來看一下。

1.編譯型和解釋型
咱們先看看編譯型,其實它和彙編語言是同樣的:也是有一個負責翻譯的程序來對咱們的源代碼進行轉換,生成相對應的可執行代碼。這個過程說得專業一點,就稱爲編譯(Compile),而負責編譯的程序天然就稱爲編譯器

(Compiler)。若是咱們寫的程序代碼都包含在一個源文件中,那麼一般編譯以後就會直接生成一個可執行文件,咱們就能夠直接運行了。但對於一個比較複雜的項目,爲了方便管理,咱們一般把代碼分散在各個源文件中,

做爲不一樣的模塊來組織。這時編譯各個文件時就會生成目標文件(Object   file)而不是前面說的可執行文件。通常一個源文件的編譯都會對應一個目標文件。這些目標文件裏的內容基本上已是可執行代碼了,但因爲只是

整個項目的一部分,因此咱們還不能直接運行。待全部的源文件的編譯都大功告成,咱們就能夠最後把這些半成品的目標文件「打包」成一個可執行文件了,這個工做由另外一個程序負責完成,因爲此過程好像是把包含可執行代碼

的目標文件鏈接裝配起來,因此又稱爲連接(Link),而負責連接的程序就叫……就叫連接程序(Linker)。連接程序除了連接目標文件外,可能還有各類資源,像圖標文件啊、聲音文件啊什麼的,還要負責去除目標文件之間的

冗餘重複代碼,等等,因此……也是挺累的。連接完成以後,通常就能夠獲得咱們想要的可執行文件了。 

 


2.上面咱們大概地介紹了編譯型語言的特色,如今再看看解釋型。噢,從字面上看,「編譯」和「解釋」的確都有「翻譯」的意思,它們的區別則在於翻譯的時機安排不大同樣。打個比方:假如你打算閱讀一本外文書,而你不知道這門外語,

那麼你能夠找一名翻譯,給他足夠的時間讓他從頭至尾把整本書翻譯好,而後把書的母語版交給你閱讀;或者,你也馬上讓這名翻譯輔助你閱讀,讓他一句一句給你翻譯,若是你想往回看某個章節,他也得從新給你翻譯。 兩種方式,

前者就至關於咱們剛纔所說的編譯型:一次把全部的代碼轉換成機器語言,而後寫成可執行文件;然後者就至關於咱們要說的解釋型:在程序運行的前一刻,還只有源程序而沒有可執行程序;而程序每執行到源程序的某一條指令,則

會有一個稱之爲解釋程序的外殼程序將源代碼轉換成二進制代碼以供執行,總言之,就是不斷地解釋、執行、解釋、執行……因此,解釋型程序是離不開解釋程序的。像早期的BASIC就是一門經典的解釋型語言,要執行BASIC程序,

就得進入BASIC環境,而後才能加載程序源文件、運行。解釋型程序中,因爲程序老是以源代碼的形式出現,所以只要有相應的解釋器,移植幾乎不成問題。編譯型程序雖然源代碼也能夠移植,但前提是必須針對不一樣的系統分別進行

編譯,對於複雜的工程來講,的確是一件不小的時間消耗,何況極可能一些細節的地方仍是要修改源代碼。並且,解釋型程序省卻了編譯的步驟,修改調試也很是方便,編輯完畢以後便可當即運行,沒必要像編譯型程序同樣每次進行小

小改動都要耐心等待漫長的Compiling…Linking…這樣的編譯連接過程。不過凡事有利有弊,因爲解釋型程序是將編譯的過程放到執行過程當中,這就決定了解釋型程序註定要比編譯型慢上一大截,像幾百倍的速度差距也是不足爲奇的。 

 

 

3.編譯型與解釋型對比
二者各有利弊。前者因爲程序執行速度快,同等條件下對系統要求較低,所以像開發操做系統、大型應用程序、數據庫系統等時都採用它,像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則是「一次編碼,處處編譯」。呵呵,固然這些都是題外話了。總之,隨着設計技術與硬件的不斷髮展,編譯型與解釋型兩種方式的界限正在不斷變得模糊。

4.動態語言和靜態語言
一般咱們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。

(1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。

(2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。

對於動態語言與靜態語言的區分,套用一句流行的話就是:Static typing when possible, dynamic typing when needed。

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

(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。

(2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。

強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。

 

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

四.Python能作什麼?

Python是一門綜合性的語言,你幾乎能在計算機上經過Python作任何事情,如下是Python應該最普遍的幾個方面

  1. 網絡應用:包括web網站 、服務器後臺服務等,在這方面Python有優秀的web框架如Django\Tornado\Flask等,網絡服務框架有著名的Twisted,異步通訊有牛X的eventlet.
  2. 2.     科學運算:隨着NumPy、SciPy、matplotlib、ETS等衆多程序庫的開發,Python愈來愈適合於作科學計算。與科學計算領域最流行的商業軟件MATLAB相比,Python是一門真正的通用程序設計語言,比MATLAB所採用的腳本語言的應用範圍更普遍,有更多程序庫的支持,適用於Windows和Linux等多種平臺,徹底免費而且開放源碼。雖然MATLAB中的某些高級功能目前還沒法替代,可是對於基礎性、前瞻性的科研工做和應用系統的開發,徹底能夠用Python來完成。
  3. GUI程序:python提供了多個圖形開發界面的庫,包括PyQt,WxPython,自帶的有Tkinter,這些庫容許Python程序員很方便的建立完整的、功能健全的GUI用戶界面。
  4. 系統管理工具:Python能夠是作運維人員最喜歡用的語言了,能夠用它來輕鬆的開發自動化管理工具、監控程序等,事實上如今不少開源軟件也都是用Python開發的,如用於IT配置管理的SaltStack\Ansible, 作虛擬化的OpenStack,作備份用的Bacula等。
  5. 其它程序:你知道嗎?Python 用來寫爬蟲也是很拿手的,還有作遊戲,以前看社區裏有個哥們花了不到300行代碼就實現了《憤怒的小鳥》的遊戲,還能夠用來作嵌入式開發、作驅動程序等,總之,Python能作的事情仍是很是多的,好好學吧,很快你就會fall in love with this great language!

五.Python的優缺點

先看優勢

  1. Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
  2. 開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
  3. 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
  4. 可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工 做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
  5. 可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
  6. 可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。

再看缺點:

  1. 速度慢,Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些,所以這也是不少所謂的大牛不屑於使用Python的主要緣由,但其實這裏所指的運行速度慢在大多數狀況下用戶是沒法直接感知到的,必須藉助測試工具才能體現出來,好比你用C運一個程序花了0.1s,用Python是0.01s,這樣C語言直接比Python快了10s,算是很是誇張了,可是你是沒法直接經過肉眼感知的,由於一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數狀況下Python已經徹底能夠知足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種狀況下,固然仍是建議你用C去實現的。
  2. 代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
  3. 線程不能利用多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會把你拉到跟他同樣的高度,而後用充分的經驗把你打倒。

六.Python的變量及數據類型

1.變量

在計算機中,變量就是用來在程序運行期間存儲各類須要臨時保存能夠不斷改變的數據的標識符,一個變量應該有一個名字,而且在內存中佔據必定的存儲單元,在該存儲單元中存放變量的值。請注意區分變量名和變量值這兩個不一樣的概念

變量命名規則

先介紹標識符的概念。和其餘高級語言同樣,用來標識變量、符號常量、函數、數組、類型等實體名字的有效字符序列稱爲標識符(identifier)。簡單地說,標識符就是一個名字。變量名是標識符的一種,變量的名字必須遵循標識符的命名規則。

Python語言和java,c++等不少語言同樣,規定標識符只能由字母、數字和下劃線3種字符組成,且第一個字符必須爲字母或下劃線。下面列出的是合法的標識符,也是合法的變量名:
sum, average, total, day, month, Student_name, tan, BASIC, li_ling

 

下面是不合法的標識符和變量名:
M.D.John, $442, #4, 3G64, Alex Li, C++, Zhang-ling,姓名, U.S.A.

注意:在Python中,大寫字母和小寫字母被認爲是兩個不一樣的字符。所以,sum和SUM是兩個不一樣的變量名。通常地,變量名用小寫字母表示,與人們平常習慣一致,以增長可讀性。應注意變量名不能與Python的關鍵字、系統函數名和類名相同。

 

變量名命名習慣

當你的代碼越寫越多的時候,你會發現你定義的變量也會愈來愈多,爲了增長代碼的易讀性和方便調試,給變量起名時必定要遵循必定的命名習慣,你起的變量名稱最好能讓人一眼就大概知道這個變量是幹什麼用的,好比,getUserName一看就知道,這個變量應該是要獲取用戶的姓名,check_current_conn_count表明是要檢查如今的鏈接數,只有這樣,別人才能在看你的代碼時知道你的這些變量的做用,而若是你把變量名全起成了var1,var2,var3…..varN,那別人再看你的代碼時會罵死你的。

變量名的定義在能表達清楚它的做用的前提下最越簡潔越好,能用一個單詞表述清楚的儘可能就不要用兩個。變量起名時通常有這麼幾種寫法,你以爲哪一種最簡潔,你就選哪一種吧。

CheckCurrentConnCount

check_current_conn_count

checkCurrentConnCount

 

很差的起名:

CHECKCURRENTCONNCOUNT

Var1 var2 var3 varN

Checkcurrentconncount

 

定義變量

瞭解了變量的概念和用途後,咱們一塊兒來定義幾個簡單的變量看一下

name = ‘Alex Li’  #name 是字符串,字符串要加上引號噢

age = 29  #age 是整數,整數不要加引號,加了引號後就變成字符串了

has_girlfriend = False  #是布爾值,通常用這個作邏輯判斷,如if has_girlfriend:print ‘good for you !’

age = age + 1 #這個結果應該是30,運算流程是先將=號後面的age +1結果算出,而後再把這個結果重賦值給age, 因爲age以前的值是29,從新賦值後,age值變爲30.

最後,理解變量在計算機內存中的表示也很是重要。當咱們寫:

name = 'Alex'

時,Python解釋器幹了兩件事情:

  1. 在內存中建立一個」Alex」的字符串;
  2. 在內存中建立了一個名爲name的變量,並把它指向」Alex」的內存地址。

也能夠變量name賦值給另外一個變量name2,這個操做其實是把變量name2指向的數據,例如:

 

唉?不是已經把name2 等於name變量了嗎?name 值改了之後,name2不跟着改嗎?沒錯,當name 的值由」Alex」改爲」Jack」後,name2仍是指向原來的」Alex」,咱們來一步步分析一下:

1. 定義name=」Alex」,解釋器建立了字符串」Alex」和變量name,並把name指向了」Alex」

2. 執行name2=name,解釋器建立了name2變量,並把name2指向了name變量所指向的字符串

3. 這時經過id內置函數來查看一下這兩個變量分別指向的內存地址,結果都是指向了同一地址。

4.  執行name=」Jack」,解釋器建立一個新的變量」Jack」,並把name的指向改爲了」Jack」

5. 此時再查看兩個變量的內存地址指向就會發現,name的指向已經變成了一個新的地址,也就是」Jack」所在內存地址,可是name2依然仍是指向原來的」Alex」。

Now, 你明白了嗎? 再總結一下,當你把一個變量name賦值給另外一個變量name2時,解釋器只是把name變量所指向的內存地址賦值給了name2,所以name 和 name2並未發生直接的關聯,只不過是他們都同時指向了同一個內存地址而已,這也就是爲何你把name再指向一個新地址後,而name2的值還保持不變的緣由。

 

2.數據類型

一個程序要運行,就要先描述其算法。描述一個算法應先說明算法中要用的數據,數據以變量或常量的形式來描述。每一個變量或常量都有數據類型。Python的基本數據類型有5種: 整型(int), 浮點型(float), 字符型(string), 布爾型(bool),空值(None).

3.整數(int)

Python可處理任意大小的整數,在程序中的表示方法和數學上的寫法徹底同樣。

4.浮點數(浮點數

浮點數也就是小數,之因此稱爲浮點數,是由於按照科學記數法表示時,一個浮點數的小數點位置是可變的,好比,1.23x109和12.3x108是相等的。浮點數能夠用數學寫法,如1.233.14-9.01,等等。可是對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012能夠寫成1.2e-5,等等。

整數和浮點數在計算機內部存儲的方式是不一樣的,整數運算永遠是精確的(除法難道也是精確的?是的!),而浮點數運算則可能會有四捨五入的偏差。

5.字符串

字符串是以''或""括起來的任意文本。好比'abc'"xyz"等等。請注意,''或""自己只是一種表示方式,不是字符串的一部分,所以,字符串'abc'只有abc這3個字符。若是'自己也是一個字符,那就能夠用""括起來,好比"I'm OK"包含的字符是I'm,空格,OK這6個字符。

6.布爾值

布爾值和布爾代數的表示徹底一致,一個布爾值只有TrueFalse兩種值,要麼是True,要麼是False

7.andornot運算

and運算是與運算,只有全部都爲True,and運算結果纔是True;
or運算是或運算,只要其中有一個爲True,or運算結果就是True;
not運算是非運算,它是一個單目運算符,把True變成False,False變成True;

8.空值

空值是Python裏一個特殊的值,用None表示。None不能理解爲0,由於0是有意義的,而None是一個特殊的空值。

9.常量

剛纔說到了變量,還有一律念就是常量,所謂常量就是不能變的變量,好比經常使用的數學常數π就是一個常量。在Python中,一般用所有大寫的變量名錶示常量

PI = 3.14159265359

但事實上PI仍然是一個變量,Python根本沒有任何機制保證PI不會被改變,因此,用所有大寫的變量名錶示常量只是一個習慣上的用法,若是你必定要改變變量PI的值,也沒人能攔住你。

10.數據運算符

和其它語言同樣,python也支持進行各類各樣的數學和邏輯運算,咱們一塊兒來看一些。

python語言支持如下幾種運算

算術運算

比較運算

Assignment Operators

二進制運算

關係運算

驗證運算

 

算術運算

如下例子a = 10 , b= 20

比較運算

如下例子a = 10 , b= 20

賦值運算

按位運算(二進制運算)

咱們都知道,計算機處理數據的時候都會把數據最終變成0和1的二進制來進行運算,也就是說,計算機其實只認識0和1, 那按位運算其實就是把數字轉換成二進制的形式後再進行位運算的,唉呀,說的好迷糊,直接看例子,咱們設定a=60; b=13; 要進行位運算,就得把他們先轉成2進制格式,那0和1是如何表示60和13的呢?學過計算機基礎的人都知道,計算機最小的存儲單位是字節,也就是說一個數字、一個字母最少須要用一個字節來存儲,而後呢,一個字節又由8個2進制位來表示,也就是8bit,因此呢,一個計算機中最小的數據也須要用一個字節來存儲噢。那爲是什麼8位而不是9位、10位、20位呢?這個問題上學的時候應該都講過,不明白的本身網上查下吧再。8個二進制如何表示60這個數字呢?聰明的計算機先人們想到了用佔位的方式來輕鬆的實現了,怎麼佔位呢?以下表所示,咱們把8個二進制位依次排列,每一個二進制位表明一個固定的數字,這個數字是由2的8次方得來的,即每一個二進制位表明的值就是2的第幾回方的值,8個二進制位能表示的最大數是2**8=256, 那把60分解成二進制其實就是以此在這8位上作個比對,只要把其中的幾位相加,若是結果正好等於60,那這個位就找對了,首先看60 確定佔不了128和64那兩位,不佔位就設爲0,後面的32+16+8+4=60,因此這幾位要設置爲1,其它的全設置爲0,13的二進制算法也是同樣的。

好,知道了10進制如何轉2進制了以後,咱們接着來看,若是進行2個10進制數字的位運算

看下面的運算過程:

後面還有

邏輯運算符 and or not

關係運算符 in not in

驗證運算符 is  is not

字符編碼編碼後期我會在博客更新關於它的內容。

 

 

七.在CentOs服務器上源碼安裝python3.5

注意:

     若是服務器是redhat或者是centos發現版本的linux系統,在升級python版本以後,大家yum將沒法使用,不要問我爲何,由於yum是python寫的!升級版本以後可能存在版本的不兼容性致使的!

固然若是你說你安裝服務包歷來就沒有用過Yum安裝,只用rpm或者是源碼安裝的話,那麼您能夠忽略這個注意提示!!! 

1.系統環境介紹

2.安裝依賴包

[root@yinzhengjie packages]# yum -y groupinstall "Development tools"

[root@yinzhengjie packages]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

3.下載python3.5安裝包

[root@yinzhengjie python]# wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz

[root@yinzhengjie python]# tar -xf Python-3.5.0.tgz 

[root@yinzhengjie python]# cd Python-3.5.0

[root@yinzhengjie Python-3.5.0]# ./configure --prefix=/usr/local --enable-shared //指定安裝路徑,並生成動態連接庫

[root@yinzhengjie Python-3.5.0]# make -j 4 && make install

[root@yinzhengjie Python-3.5.0]# ln -s /usr/local/bin/python3 /usr/bin/python3

 4.生成動態庫信息並驗證

[root@yinzhengjie Python-3.5.0]# echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf

[root@yinzhengjie Python-3.5.0]# ldconfig

[root@yinzhengjie Python-3.5.0]# python3 --version
Python 3.5.0
[root@yinzhengjie Python-3.5.0]#

5.定義一個別名,這樣就不用每次tab出來還要選擇 了

[root@yinzhengjie Python-3.5.0]# echo 「#Add python3.5 alias by yinzhengjie」 >> /etc/bashrc

[root@yinzhengjie Python-3.5.0]# echo "alias py=python3」 >> /etc/bashrc    

[root@yinzhengjie Python-3.5.0]# alias py=python3

[root@yinzhengjie Python-3.5.0]# py --version
Python 3.5.0
[root@yinzhengjie Python-3.5.0]#

八.在windows系統下安裝python3.6

1.登錄官網地址:https://www.python.org/,下載安裝包

 2.安裝python

 

 3.選擇安裝參數,

 

 4.等待安裝成功

 

 5.打開cmd窗口

 

6.若是出現以下界面共享你安裝成功

7.退出python解釋器工做環境

 

 

九.mac系統安裝python

 1.登錄官網地址:https://www.python.org/,下載安裝包

2.下載成功後,執行該軟件包

 

3.點擊贊成安裝協議便可

4.點擊繼續

5.安裝python

6.輸入你本身的電腦密碼

7.安裝成功

8.測試安裝的結果

 

 

 

注:本文有引用連接:http://www.cnblogs.com/alex3714/p/4296002.html      

相關文章
相關標籤/搜索