萬惡之源

⼀.python介紹

python的創始⼈爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·
範羅蘇姆爲了在阿姆斯特丹打發時間,決⼼開發⼀個新的腳本解釋程序,做爲ABC語⾔的⼀
種繼承。
最新的TIOBE排⾏榜,Python已經佔據世界第四名的位置, Python崇尚優美、清晰、簡
單,是⼀個優秀並⼴泛使⽤的語⾔。
由上圖可⻅,Python總體呈上升趨勢,反映出Python應⽤愈來愈⼴泛而且也逐漸獲得業內
的承認!!!
Python能夠應⽤於衆多領域,如:數據分析、組件集成、⽹絡服務、圖像處理、數值計算
和科學計算等衆多領域。⽬前業內⼏乎全部⼤中型互聯⽹企業都在使⽤Python,如:
Youtube、Dropbox、BT、Quora(中國知乎)、⾖瓣、知乎、Google、Yahoo!、
Facebook、NASA、百度、騰訊、汽⻋之家、美團等。
⽬前Python主要應⽤領域:
雲計算: 雲計算最⽕的語⾔, 典型應⽤OpenStack
WEB開發: 衆多優秀的WEB框架,衆多⼤型⽹站均爲Python開發,Youtube,
Dropbox, ⾖瓣。。。, 典型WEB框架有Django
科學運算、⼈⼯智能: 典型庫NumPy, SciPy, Matplotlib, Enthought
librarys,pandas
系統運維: 運維⼈員必備語⾔
⾦融:量化交易,⾦融分析,在⾦融⼯程領域,Python不但在⽤,且⽤的最多,⽽
且重要性逐年提⾼。緣由:做爲動態語⾔的Python,語⾔結構清晰簡單,庫豐富,
成熟穩定,科學計算和統計分析都很⽜逼,⽣產效率遠遠⾼於c,c++,java,尤爲擅⻓
策略回測
圖形GUI: PyQT, WxPython,TkInter
Python在⼀些公司的應⽤:
⾕歌:Google App Engine 、code.google.com 、Google earth 、⾕歌爬⾍、
Google⼴告等項⽬都在⼤量使⽤Python開發
CIA: 美國中情局⽹站就是⽤Python開發的
NASA: 美國航天局(NASA)⼤量使⽤Python進⾏數據分析和運算
YouTube:世界上最⼤的視頻⽹站YouTube就是⽤Python開發的
Dropbox:美國最⼤的在線雲存儲⽹站,所有⽤Python實現,天天⽹站處理10億個
⽂件的上傳和下載
Instagram:美國最⼤的圖⽚分享社交⽹站,天天超過3千萬張照⽚被分享,所有⽤
python開發
Facebook:⼤量的基礎庫均經過Python實現的
Redhat: 世界上最流⾏的Linux發⾏版本中的yum包管理⼯具就是⽤python開發的
⾖瓣: 公司⼏乎全部的業務均是經過Python開發的
知乎: 國內最⼤的問答社區,經過Python開發(國外Quora)
春⾬醫⽣:國內知名的在線醫療⽹站是⽤Python開發的
除上⾯以外,還有搜狐、⾦⼭、騰訊、盛⼤、⽹易、百度、阿⾥、淘寶 、⼟⾖、新
浪、果殼等公司都在使⽤Python完成各類各樣的任務。
1.1.python是⼀⻔什麼樣的語⾔
編程語⾔主要從如下⼏個⻆度爲進⾏分類,編譯型和解釋型、靜態語⾔和動態語⾔、強類
型定義語⾔和弱類型定義語⾔,咱們先看編譯型語⾔和解釋型語⾔. 稍後再說強類型和弱類

編譯和解釋的區別是什麼?
編譯器是把源程序的每⼀條語句都編譯成機器語⾔,並保存成⼆進制⽂件,這樣運⾏時計算機
能夠直接以機器語⾔來運⾏此程序,速度很快;
⽽解釋器則是隻在執⾏程序時,才⼀條⼀條的解釋成機器語⾔給計算機來執⾏,因此運⾏速度
是不如編譯後的程序運⾏的快的.
這是由於計算機不能直接認識並執⾏咱們寫的語句,它只能認識機器語⾔(是⼆進制的形式)
編譯型vs解釋型
編譯型
優勢:編譯器⼀般會有預編譯的過程對代碼進⾏優化。由於編譯只作⼀次,運⾏時不須要編
譯,因此編譯型語⾔的程序執⾏效率⾼。能夠脫離語⾔環境獨立運⾏。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運⾏環境⽣
成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運⾏的操做系統環境編譯不一樣的
可執⾏⽂件。
解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運⾏,前提是安裝瞭解釋器(虛擬機)。
靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不⽤停機維護。
缺點:每次運⾏的時候都要解釋⼀遍,性能上不如編譯型語⾔。
1.2.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.01s,⽤Python是0.1s,這樣C語⾔直接⽐Python快了10倍,
算是⾮常誇張了,可是你是⽆法直接經過⾁眼感知的,由於⼀個正常⼈所能感知的時
間最⼩單位是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會把你拉到跟
他⼀樣的⾼度,而後⽤充分的經驗把你打倒。
1.3.python解釋器
當咱們編寫Python代碼時,咱們獲得的是⼀個包含Python代碼的以.py爲擴展名的⽂本
⽂件。要運⾏代碼,就須要Python解釋器去執⾏.py⽂件。
因爲整個Python語⾔從規範到解釋器都是開源的,因此理論上,只要⽔平夠⾼,任何⼈都
能夠編寫Python解釋器來執⾏Python代碼(固然難度很⼤)。事實上,確實存在多種
Python解釋器。
CPython
當咱們從Python官⽅⽹站下載並安裝好Python 2.7後,咱們就直接得到了⼀個官⽅版
本的解釋器:CPython。這個解釋器是⽤C語⾔開發的,因此叫CPython。在命令⾏下運
⾏python就是啓動CPython解釋器。
CPython是使⽤最⼴的Python解釋器。教程的全部代碼也都在CPython下執⾏。
IPython
IPython是基於CPython之上的⼀個交互式解釋器,也就是說,IPython只是在交互⽅
式上有所加強,可是執⾏Python代碼的功能和CPython是徹底⼀樣的。好⽐不少國產瀏覽
器雖然外觀不一樣,但內核其實都是調⽤了IE。
CPython⽤>>>做爲提示符,⽽IPython⽤In [序號]:做爲提示符。
PyPy
PyPy是另⼀個Python解釋器,它的⽬標是執⾏速度。PyPy採⽤JIT技術,對Python代
碼進⾏動態編譯(注意不是解釋),因此能夠顯著提⾼Python代碼的執⾏速度。
絕⼤部分Python代碼均可以在PyPy下運⾏,可是PyPy和CPython有⼀些是不一樣的,這就
致使相同的Python代碼在兩種解釋器下執⾏可能會有不一樣的結果。若是你的代碼要放到
PyPy下執⾏,就須要瞭解PyPy和CPython的不一樣點。
Jython
Jython是運⾏在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節
碼執⾏。
IronPython
IronPython和Jython相似,只不過IronPython是運⾏在微軟.Net平臺上的Python解
釋器,能夠直接把Python代碼編譯成.Net的字節碼。
⼆.python發展史
1989年,爲了打發聖誕節假期,Guido(⻳叔)開始寫Python語⾔的編譯器。
Python這個名字,來⾃Guido所摯愛的電視劇Monty Python’s Flying Circus。他
但願這個新的叫作Python的語⾔,能符合他的理想:創造⼀種C和shell之間,功能
全⾯,易學易⽤,可拓展的語⾔。
1991年,第⼀個Python編譯器誕⽣。它是⽤C語⾔實現的,並可以調⽤C語⾔的庫
⽂件。從⼀出⽣,Python已經具備了:類,函數,異常處理,包含表和詞典在內的
核⼼數據類型,以及模塊爲基礎的拓展系統。
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增長了 lambda, map, filter and reduce.
Python 2.0 - October 16, 2000,加⼊了內存回收機制,構成了如今Python語⾔
框架的基礎
Python 2.4 - November 30, 2004, 同年⽬前最流⾏的WEB框架Django 誕⽣
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
In November 2014, it was announced that Python 2.7 would be
supported until 2020, and reaffirmed that there would be no 2.8 release
as users were expected to move to Python 3.4+ as soon as possible
Python 3.0 - December 3, 2008
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
三.python的安裝
⼀路肯定便可. 記得path下打鉤.
四. 第⼀個python程序
python程序有兩種編寫⽅式:
1. 進入cmd控制檯. 輸入python進入編輯模式. 這時候咱們能夠直接編寫python程序
2. 也能夠在.py⽂件中編寫python代碼. 經過python命令來執⾏python代碼
注意: python2中的中⽂編碼會有問題. Python2使⽤的是ASCII碼編碼. 處理不了中⽂. 我
們須要替換成utf-8編碼.
# -*- encoding:utf-8 -*-
五. 變量
變量:將運算的中間結果暫存到內存,以便後續程序調⽤.
變量的命名規則:
1, 變量由字⺟, 數字,下劃線搭配組合⽽成
2, 不能夠⽤數字開頭,更不能是全數字
3,不能是pythond的關鍵字, 這些符號和字⺟已經被python佔⽤, 不能夠更改
4,不要⽤中⽂
5,名字要有意義
6,不要太⻓
7, 區分⼤⼩寫
推薦⼤家使⽤駝峯體或者下劃線命名
駝峯體: 除⾸字⺟外的其餘每一個單詞⾸字⺟⼤寫
下劃線: 每一個單詞之間⽤下劃線分開
六.常量
在python中不存在絕對的常量. 約定俗成, 全部字⺟⼤寫就是常量
例如: PI = 3.141592653
BIRTH_OF_SYLAR = 1990
七.註釋
有時候咱們寫的東⻄不⼀定都是給⽤戶看的. 或者不但願解釋器執⾏. 那咱們可使⽤#來
註釋掉代碼. 被註釋的內容是不會執⾏的.能夠⽅便後⾯的程序員來拜讀你的代碼
單⾏註釋: # 被註釋的內容
多⾏註釋:''' 被註釋的內容 ''', """這個也是多⾏註釋"""
八.python的基本數據類型
什麼是數據類型?
咱們⼈類能夠很容易的分清數字與字符的區別,可是計算機並不能呀,計算機雖然很強⼤,但從某種⻆
度上看⼜很傻,除⾮你明確的告訴它,1是數字,「漢」是⽂字,不然它是分不清1和‘漢’的區別的,所以,在
每一個編程語⾔⾥都會有⼀個叫數據類型的東東,其實就是對常⽤的各類數據類型進⾏了明確的劃分,你想
讓計算機進⾏數值運算,你就傳數字給它,你想讓他處理⽂字,就傳字符串類型給他。Python中常⽤的數
據類型有多種,今天咱們暫只講3種, 數字、字符串、布爾類型(命題).
8.1 整數(int)
常⻅的數字都是int類型. ⽤於計算或者⼤⼩的比較
在32位機器上int的範圍是: -2**31~2**31-1,即-2147483648~2147483647
在64位機器上int的範圍是: -2**63~2**63-1,即-9223372036854775808~9223372036854775807
夠你⽤了吧. 注意這些是整數.
8.2 字符串(str)
在Python中,凡是⽤引號引發來的,全是字符串.
字符串能夠⽤單引號,雙引號,或者三引號引發來,沒有什麼區別,只是⼀些特殊的格式須要不⽤的引號
⽐如:
msg = "My name is Alex , I'm 22 years old!" 這個就須要單雙引號配合。
msg = """
今天我想寫⾸⼩詩,
歌頌個人同桌,
你看他那烏⿊的短髮,
好像⼀只炸⽑雞。
"""
想多⾏賦值⼀個字符串,就須要三引號。
數字類型有 +-*/ 字符串有麼?
字符串只有 + *。
#字符串的拼接
s1 = 'a '
s2 = 'bc'
#print(s1 + s2)
#相乘 str*int
name = '堅強'
#print(name*8)
8.3 布爾值(bool), 真或者假, True和False
九.⽤戶交互
使⽤input()函數,可讓咱們和計算機互動起來
語法:
內容 = input(提⽰信息)
這⾥能夠直接獲取到⽤戶輸入的內容
⼗.流程控制if語句
你在⽣活中是否是常常遇到各類選擇,⽐如玩⾊⼦,猜⼤⼩,⽐如選擇⾛那條路回家?Python程序中也會
遇到這種狀況,這就⽤到了if語句。
第⼀種語法:
if 條件: #引號是將條件與結果分開。
結果1。 # 四個空格,或者⼀個tab鍵,這個是告訴程序滿⾜這個條件的
結果2。
若是條件是真(True) 執⾏結果1, 而後結果2, 若是條件假(False) 直接結果2
第⼆種語法:
If 條件:
結果1
else:
結果2
代碼3
第三種語法:
If 條件1:
結果1
elif 條件2:
結果2
..
else:
結果n
第四種語法(嵌套):
If 條件1:
結果1
If 條件2:
結果2
else:
結果3
else:
結果4

能夠⽆限的嵌套. 可是在實際開發中. 儘可能不要超過三層嵌套
⼗⼀. 流程控制-while循環
在⽣活中,咱們遇到過循環的事情吧?⽐如循環聽歌。在程序中,也是存才的,這就是流程空語句
while。
模擬⼀下循環聽歌:
while True:
print('咱們不⼀樣')
print('咱們都⼀樣')
print('有啥不⼀樣')
語法:
while 條件:
結果
若是條件是真, 則直接執⾏結果. 而後再次判斷條件. 直到條件是假. 停⽌循環
那咱們怎麼終⽌循環呢?
結束循環:
1,改變條件.
2,break
⼗⼆. 流程控制-break和continuejava

相關文章
相關標籤/搜索