Python這種程式語言
python的創始⼈人為吉多·範羅蘇姆(Guido van Rossum)。1989年年的聖誕節期間,吉多· 範羅蘇姆為了了在阿姆斯特丹丹打發時間,決⼼心開發⼀一個新的指令碼解釋程式,作為ABC語⾔言的⼀一 種繼承。 新的TIOBE排⾏行行榜,Python已經佔據世界第四名的位置, Python崇尚優美、清晰、簡 單,是⼀一個優秀並⼴廣泛使⽤用的語⾔言。
由上圖可⻅見,Python整體呈上升趨勢,反映出Python應⽤用越來越⼴廣泛並且也逐漸得到業內 的認可!!!
Python主要應⽤用領域:
- 雲端計算
- WEB開發
- 科學運算、人工智慧
- 系統運維
- 金融
- 圖形GUI
程式設計語⾔言主要從以下⼏幾個⻆角度為進⾏行行分類,編譯型和解釋型、靜態語⾔言和動態語⾔言、強類 型定義語⾔言和弱型別定義語⾔言,我們先看編譯型語⾔言和解釋型語⾔言. 稍後再說強型別和弱型別
編譯和解釋的區別是什什麼?
編譯器器是把源程式的每⼀一條語句句都編譯成機器語⾔言,並儲存成⼆二進位制⽂檔案,這樣運⾏行行時計算機 可以直接以機器語⾔言來運⾏行行此程式,速度很快; ⽽而直譯器器則是隻在執⾏行行程式時,才⼀一條⼀一條的解釋成機器語⾔言給計算機來執⾏行行,所以運⾏行行速度 是不如編譯後的程式運⾏行行的快的. 這是因為計算機不能直接認識並執⾏行行我們寫的語句句,它只能認識機器語⾔言(是⼆二進位制的形式)
編輯型:C、C++、GO、Swift、Object-C、Pascal
解釋型:javaScript、Python、ruby、php、perl
混合型:Java、C#
編譯型vs解釋型
編譯型
優點:編譯器⼀一般會有預編譯的過程對程式碼進⾏行行優化。因為編譯只做⼀一次,運⾏行行時不需要編 譯,所以編譯型語⾔言的程式執⾏行行效率⾼高。可以脫離語⾔言環境獨立運⾏行行。
缺點:編譯之後如果需要修改就需要整個模組重新編譯。編譯的時候根據對應的運⾏行行環境⽣生 成機器碼,不同的作業系統之間移植就會有問題,需要根據運⾏行行的作業系統環境編譯不同的 可執⾏行行⽂檔案。
解釋型
優點:有良好的平臺相容性,在任何環境中都可以運⾏行行,前提是安裝了了直譯器(虛擬機器)。 靈活,修改程式碼的時候直接修改就可以,可以快速部署,不⽤用停機維護。
缺點:每次運⾏行行的時候都要解釋⼀一遍,效能上不不如編譯型語⾔言。
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程式
python程式有兩種編寫⽅方式:
1. 進入cmd控制檯. 輸入python進入編輯模式. 這時候我們可以直接編寫python程式
2. 也可以在.py⽂檔案中編寫python程式碼. 通過python命令來執⾏行行python程式碼
變數
變數:將運算的中間結果暫存到記憶體,以便便後續程式調⽤用
變數量的命名規則:
- 變數量由字⺟母, 數字,下劃線搭配組合⽽而
- 不不可以⽤用數字開頭,更更不不能是全數字
- 不能是pythond的關鍵字, 這些符號和字⺟母已經被python佔⽤用, 不可以更更改
- 不要⽤用中⽂文
- 名字要有意義
- 不要太⻓長
- 區分⼤大⼩小寫
常量
在python中不存在絕對的常量量. 約定俗成, 所有字⺟母⼤大寫就是常量量
註釋
單⾏行行註釋: # 被註釋的內容 多⾏行行註釋:''' 被註釋的內容 ''', """這個也是多⾏行行註釋"""
python基本資料型別
什什麼是資料型別? 我們⼈人類可以很容易易的分清數字與字元的區別,但是計算機並不不能呀,計算機雖然很強⼤大,但從某種⻆角
度上看⼜又很傻,除⾮非你明確的告訴它,1是數字,“漢”是⽂文字,否則它是分不不清1和‘漢’的區別的,因此,在 每個程式設計語⾔言⾥裡里都會有⼀一個叫資料型別的東東,其實就是對常⽤用的各種資料型別進⾏行行了了明確的劃分,你想 讓計算機進⾏行行數值運算,你就傳數字給它,你想讓他處理理⽂文字,就傳字串串型別給他。Python中常⽤用的數 據型別有多種,今天我們暫只講3種, 數字、字串串、布林型別(命題).
整數(int)
常⻅見的數字都是int型別. ⽤用於計算或者⼤大⼩小的比較
在32位機器上int的範圍是: -2**31~2**31-1,即-2147483648~2147483647
在64位機器上int的範圍是: -2**63~2**63-1,即-9223372036854775808~9223372036854775807 夠你⽤用了了吧. 注意這些是整數.
字串串(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)
布林值(bool), 真或者假, True和False
使用者互動 使⽤用input()函式,可以讓我們和計算機互動起來
語法:
內容 = input(提⽰示資訊)
這⾥裡里可以直接獲取到⽤使用者輸入的內容
十.流程控制if語句
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
可以⽆無限的巢狀. 但是在實際開發中. 儘量量不要超過三層巢狀