Python前世今生
python的創始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節期間,吉多·范羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。??
最新的TIOBE排行榜,Python趕超PHP占據第五!!!
由上圖可見,Python整體呈上升趨勢,反映出Python應用越來越廣泛并且也逐漸得到業內的認可!!!
Python可以應用于眾多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。互聯網公司廣泛使用Python來做的事一般有:自動化運維、自動化測試、大數據分析、爬蟲、Web 等。
注視:上述重點字體表示該公司主要使用Python語言開發
為什么是Python而不是其他語言?
C 和 Python、Java、C#等
? ? C語言: 代碼編譯得到 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工作
其他語言: 代碼編譯得到 字節碼 ,虛擬機執行字節碼并轉換成機器碼再后在處理器上執行
Python 和 C ?Python這門語言是由C開發而來
對于使用:Python的類庫齊全并且使用簡潔,如果要實現同樣的功能,Python 10行代碼可以解決,C可能就需要100行甚至更多.
對于速度:Python的運行速度相較與C,絕逼是慢了
Python 和 Java、C#等
對于使用:Linux原裝Python,其他語言沒有;以上幾門語言都有非常豐富的類庫支持
對于速度:Python在速度上可能稍顯遜色
所以,Python和其他語言沒有什么本質區別,其他區別在于:擅長某領域、人才豐富、先入為主。
?
Python的種類
- Cpython
? ? Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),然后運行在Python虛擬機上。 - Jyhton
? ? Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,然后在JVM上運行。 - IronPython
? ? Python的C#實現,IronPython將Python代碼編譯成C#字節碼,然后在CLR上運行。(與Jython類似) - PyPy(特殊)
? ? Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。 - RubyPython、Brython ...
以上除PyPy之外,其他的Python的對應關系和執行流程如下:
?
PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提升執行速度!
Python環境?
安裝Python
windows:
| 1 2 3 4 5 6 7 | 1 、下載安裝包 ???? https: / / www.python.org / downloads / 2 、安裝 ???? 默認安裝路徑:C:\python27 3 、配置環境變量 ???? 【右鍵計算機】 - - 》【屬性】 - - 》【高級系統設置】 - - 》【高級】 - - 》【環境變量】 - - 》【在第二個內容框中找到 變量名為Path 的一行,雙擊】? - - > 【Python安裝目錄追加到變值值中,用 ; 分割】 ???? 如:原來的值;C:\python27,切記前面有分號 |
linux:
| 1 2 3 | 無需安裝,原裝Python環境 ps:如果自帶 2.6 ,請更新至 2.7 |
更新Python
windows:
| 1 | 卸載重裝即可 |
linux:
Linux的yum依賴自帶Python,為防止錯誤,此處更新其實就是再安裝一個Python
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 查看默認Python版本 python? - V 1 、安裝gcc,用于編譯Python源碼 ???? yum install gcc 2 、下載源碼包,https: / / www.python.org / ftp / python / 3 、解壓并進入源碼文件 4 、編譯安裝 ???? . / configure ???? make? all ???? make install 5 、查看版本 ???? / usr / local / bin / python2. 7? - V 6 、修改默認Python版本 ???? mv? / usr / bin / python? / usr / bin / python2. 6 ???? ln? - s? / usr / local / bin / python2. 7? / usr / bin / python 7 、防止yum執行異常,修改yum使用的Python版本 ???? vi? / usr / bin / yum ???? 將頭部? #!/usr/bin/python 修改為 #!/usr/bin/python2.6 |
Python 入門
一、第一句Python代碼
在 /home/dev/ 目錄下創建 hello.py 文件,內容如下:
| 1 | print? "hello,world" |
執行 hello.py 文件,即:?python /home/dev/hello.py
python內部執行過程如下:
二、解釋器
上一步中執行 python /home/dev/hello.py?時,明確的指出 hello.py 腳本由 python 解釋器來執行。
如果想要類似于執行shell腳本一樣執行python腳本,例:?./hello.py?,那么就需要在 hello.py 文件的頭部指定解釋器,如下:
| 1 2 3 | #!/usr/bin/env python print? "hello,world" |
如此一來,執行:?./hello.py?即可。
ps:執行前需給予 hello.py 執行權限,chmod 755 hello.py
三、內容編碼
python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個字節),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個符號。
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字符和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 =?65536,
注:此處說的的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
所以,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),如果是如下代碼的話:
報錯:ascii碼無法表示中文
| 1 2 3 | #!/usr/bin/env python print? "你好,世界"? |
改正:應該顯示的告訴python解釋器,用什么編碼來執行源代碼,即:
| 1 2 3 4 | #!/usr/bin/env python # -*- coding: utf-8 -*- print? "你好,世界" |
四、注釋
當行注視:# 被注釋內容
多行注釋:""" 被注釋內容 """
五、執行腳本傳入參數
Python有大量的模塊,從而使得開發Python程序非常簡潔。類庫有包括三中:
- Python內部提供的模塊
- 業內開源的模塊
- 程序員自己開發的模塊
Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行執行python腳本時傳入的參數
| 1 2 3 4 5 6 | #!/usr/bin/env python # -*- coding: utf-8 -*- import? sys print? sys.argv? |
六、 pyc 文件
執行Python代碼時,如果導入了其他的 .py 文件,那么,執行過程中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯之后產生的字節碼。
ps:代碼經過編譯可以產生字節碼;字節碼通過反編譯也可以得到代碼。
七、變量
1、聲明變量
| 1 2 3 4 | #!/usr/bin/env python # -*- coding: utf-8 -*- name? =? "wupeiqi" |
上述代碼聲明了一個變量,變量名為: name,變量name的值為:"wupeiqi"
變量的作用:昵稱,其代指內存里某個地址中保存的內容
變量定義的規則:
- 變量名只能是 字母、數字或下劃線的任意組合
- 變量名的第一個字符不能是數字
- 以下關鍵字不能聲明為變量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
2、變量的賦值
#!/usr/bin/env python # -*- coding: utf-8 -*-name1 = "wupeiqi" name2 = "alex"#!/usr/bin/env python # -*- coding: utf-8 -*-name1 = "wupeiqi" name2 = name1
八、輸入
| 1 2 3 4 5 6 7 8 | #!/usr/bin/env python # -*- coding: utf-8 -*- # 將用戶輸入的內容賦值給 name 變量 name? =? raw_input ( "請輸入用戶名:" ) # 打印輸入的內容 print? name |
輸入密碼時,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:
| 1 2 3 4 5 6 7 8 9 10 | #!/usr/bin/env python # -*- coding: utf-8 -*- import? getpass # 將用戶輸入的內容賦值給 name 變量 pwd? =? getpass.getpass( "請輸入密碼:" ) # 打印輸入的內容 print? pwd |
九、流程控制和縮進
需求一、用戶登陸驗證
| 1 2 3 4 5 | # 提示輸入用戶名和密碼 # 驗證用戶名和密碼 #???? 如果錯誤,則輸出用戶名或密碼錯誤 #???? 如果成功,則輸出 歡迎,XXX! |
需求二、根據用戶輸入內容輸出其權限
| 1 2 3 4 5 6 | # 根據用戶輸入內容打印其權限 # alex --> 超級管理員 # eric --> 普通管理員 # tony --> 業務主管 # 其他 --> 普通用戶 |
2 是一個整數的例子。
長整數 不過是大一些的整數。
3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是復數的例子。
int(整型)
在32位機器上,整數的位數為32位,取值范圍為-2**31~2**31-1,即-2147483648~2147483647在64位系統上,整數的位數為64位,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807 long(長整型)
跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由于機器內存有限,我們使用的長整數數值不可能無限大。
注意,自從Python2.2起,如果整數發生溢出,Python會自動將整數數據轉換為長整數,所以如今在長整數數據后面不加字母L也不會導致嚴重后果了。
float(浮點型)
浮點數用來處理實數,即帶有小數的數字。類似于C語言中的double類型,占8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
complex(復數)
復數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是復數的實數部分,y是復數的虛數部分,這里的x和y都是實數。 注:Python中存在小數字池:-5 ~ 257 2、布爾值 真或假 1 或 0 3、字符串 "hello world" 萬惡的字符串拼接: python中的字符串在C語言中體現為是一個字符數組,每次創建字符串時候需要在內存中開辟一塊連續的空,并且一旦需要修改字符串的話,就需要再次開辟空間,萬惡的+號每出現一次就會在內從中重新開辟一塊空間。 字符串格式化
| 1 2 3 4 | name? =? "alex" print? "i am %s "? %? name #輸出: i am alex |
PS: 字符串是 %s;整數 %d;浮點數%f
字符串常用功能:- 移除空白
- 分割
- 長度
- 索引
- 切片
| 1 2 3 | name_list? =? [ 'alex' ,? 'seven' ,? 'eric' ] 或 name_list =? list ([ 'alex' ,? 'seven' ,? 'eric' ]) |
基本操作:
- 索引
- 切片
- 追加
- 刪除
- 長度
- 切片
- 循環
- 包含
| 1 2 3 | ages? =? ( 11 ,? 22 ,? 33 ,? 44 ,? 55 ) 或 ages? =? tuple (( 11 ,? 22 ,? 33 ,? 44 ,? 55 )) |
- 索引
- 切片
- 循環
- 長度
- 包含
| 1 2 3 | person? =? { "name" :? "mr.wu" ,? 'age' :? 18 } 或 person? =? dict ({ "name" :? "mr.wu" ,? 'age' :? 18 }) |
常用操作:
- 索引
- 新增
- 刪除
- 鍵、值、鍵值對
- 循環
- 長度
比較運算:
賦值運算:
邏輯運算:
成員運算:
身份運算:
位運算:
+ View Code運算符優先級:
更多內容:猛擊這里
十二、初識文本的基本操作 打開文件: file_obj = file("文件路徑","模式") 打開文件的模式有:- r,以只讀方式打開文件
- w,打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
- a,打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
- w+,打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
讀取文件的內容:
| 1 2 3 4 5 6 7 8 9 | # 一次性加載所有內容到內存 obj.read() # 一次性加載所有內容到內存,并根據行分割成字符串 obj.readlines() # 每次僅讀取一行數據 for? line? in? obj: print? line |
寫文件的內容:
| 1 | obj.write( '內容' ) |
關閉文件句柄:
| 1 | obj.close( |
轉載于:https://www.cnblogs.com/91python/p/5162919.html
總結
以上是生活随笔為你收集整理的Python前世今生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Titanic第二章:第一节数据清洗及特
- 下一篇: python/appium实现华为应用商