Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。java
目前Python主要應用領域python
Python在一些公司的應用c++
python發展史web
python是什麼編程語言算法
編程語言主要從如下幾個角度爲進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每一個分類表明什麼意思呢,咱們一塊兒來看一下。shell
編譯型與解釋型編程
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;安全
而 解釋器 則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的.網絡
這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)多線程
編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。
解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
動態語言和靜態語言
一般咱們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。
(1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,
在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。
(2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,
其餘的靜態類型語言還有C#、JAVA等。
強類型定義語言和弱類型定義語言
(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。
舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。
(2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。
強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。
經過上面這些介紹,咱們能夠得出, python是一門動態解釋性的弱類型定義語言。
python的優缺點
先看優勢
再看缺點
當咱們編寫Python代碼時,咱們獲得的是一個包含Python代碼的以 .py 爲擴展名的文本文件。要運行代碼,就須要Python解釋器去執行 .py 文件。
因爲整個Python語言從規範到解釋器都是開源的,因此理論上,只要水平夠高,任何人均可以編寫Python解釋器來執行Python代碼(固然難度很大)。事實上,確實存在多種Python解釋器。
python的種類
Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
Python 的環境
Windows:
下載地址:https://www.python.org/downloads/
首先區分你當前的操做系統,而後選擇相對應的內容進行點擊,我當前操做系統是Windows我選擇的是普通電腦系統.下一步以下圖:
而後選擇和你電腦相對應的點擊,而後就自動下載了
安裝詳解
Linux:
自帶python環境
[meet@r usr]$ python37 -V Python 3.7.0 [meet@r usr]$ python3 -V Python 3.4.9 [meet@r usr]$ python2 -V Python 2.7.5
更新python環境
一、安裝gcc,用於編譯Python源碼 yum install gcc 二、下載源碼包,https://www.python.org/ftp/python/ 三、解壓並進入源碼文件 四、編譯安裝 ./configure make all make install 五、查看版本 /usr/local/bin/python2.7 -V 六、修改默認Python版本 mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python2.7 /usr/bin/python 七、防止yum執行異常,修改yum使用的Python版本 vi /usr/bin/yum 將頭部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6
Python 入門
1、'Hello World!'
python2寫法: print 'hello world' python3寫法: print('hello world')
2、執行(解釋器)
明確的指出 hello.py 腳本由 python 解釋器來執行。
[meet@r usr]$ cat hello.py #!/usr/bin/env python print("Hello World!") [meet@r usr]$ sudo chmod +x hello.py [meet@r usr]$./hello.py Hello World!
執行Python代碼時,若是導入了其餘的 .py 文件,那麼,執行過程當中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯以後產生的字節碼。
[meet@r usr]$ ls a.py* a.py a.pyc [meet@r usr]$
3、變量
一、聲明變量
name = 'Meet' # 這樣的形式就是在定義一個變量 name 是一個變量名 = 是一個賦值操做 'Meet' 是一個值
變量的做用:暱稱其代指內存裏某個地址中保存的內容
變量定義的規則:
二、變量的賦值
name1 = 'Meet' name2 = 'Guo'
name1 = 'Meet' name2 = name1
變量的小高級
常量:
常量就是將變量名大寫,儘可能保持不更改的一種量
4、註釋
單行註釋:#Meet
多行註釋:'''Meet'''
單行註釋(當行註釋) # Meet 多行註釋 ''' M e e t '''
5、基礎數據類型(int,str,bool)
int是整型;也就是咱們從小就接觸的數學中的整數,整型在計算機中運於計算和比較
定義一個int類型
num1 = 2 num2 = 3 print(num1 + num2) 結果: 5 # 整型就和咱們學的數學同樣能夠進行加減乘除
str是字符串;也就是咱們從小就接觸的中文,若是咱們在程序中直接把中文寫入,程序是不能分辨這是個什麼鬼東西.因此咱們要遵循一種規則
讓計算機可以識別,這個規則就是隻要是用引號引發來就是字符串
定義一個str類型
s1 = '我是中文' s2 = '我是英文' print(s1 + s2) 結果: 我是中文我是英文 # 字符串相加就實現一個拼接的效果,字符串只能和字符串相加 # 字符串也能夠作乘法,可是乘法的時候只能和數字相乘
bool是布爾值;其實這個東西也是咱們很小就接觸的東西,俗話說人要<明辨是非>.其實這個bool值就是咱們所說的是非,布爾值中一共分爲倆個狀態
True 就對應咱們話中的是,白話來講就是真
False 就對應咱們話中的非,白話來講就是假
例如咱們想讓計算機幫咱們作一下倆個的大小比較
print(3>7) 結果: False print(7>3) 結果: True
6、程序交互(用戶交互)
輸入用戶名
#!/usr/bin/env python #-*- coding:utf-8 -*- #將用戶輸入的內容賦值給name變量 name = raw_input("請輸入用戶名:") print name #python3的寫法 name = input("請輸入用戶名:") print(name)
輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:
#!/usr/bin/env python #-*- coding:utf-8 -*- import getpass pwd = getpass.getpass("請輸入密碼:") print(pwd)
須要注意的是input程序交互獲取到的內容是字符串,咱們看下面的簡單示例:
num = input('請輸入數字:') print(num + 5) 結果: 請輸入數字:6 Traceback (most recent call last): File "D:/python_object/test.py", line 350, in <module> print(num + 5) TypeError: must be str, not int # 報錯了,提示咱們類型錯誤,數字和字符串是不能相加的.但是咱們輸入的明明是數字啊.其實咱們看着輸入的是 # 數字可是input獲取到的都是字符串
7、流程控制與縮進
二選一遊戲(二者活一者)
num = input('請輸入要比較的數字:') if int(num) > 5: print('您輸入的數字大於5') else: print('您輸入的數字小於5')
以上這種寫法是讓用戶輸入內容,而後進行比較,若是一個條件成立那就執行print,而後程序就退出了.下邊的else就不會在執行了
多個選項進行單選(選擇題)
num = input('請輸入要比較的數字:') if int(num) > 5: print('您輸入的數字大於5') elif int(num) == 5: print('請輸入的數字就是5') elif int(num) < 5: print('您輸入的數字小於5')
以上寫法就是咱們作的單選題同樣,三個分支判斷中只要有個成立,其他都不在執行
嵌套if
name = input('請輸入名字:') if name == 'meet': age = input('請輸入年齡:') if int(age) == 18: print('輸入所有正確') else: print('年齡輸入錯誤!') else: print('名字輸入錯誤!')
這樣寫法很經常使用,這樣咱們就能夠明確的知道用戶輸入的名字和年齡那個是錯誤的,而且還作一個判斷若是名字正確後在進行判斷密碼
8、while循環
一、基本循環
while 條件: # 循環體 # 若是條件爲真,那麼循環則執行 # 若是條件爲假,那麼循環不執行
二、break
break 用於退出當層循環
#!/usr/bin/env python #-*- coding:utf-8 -*- num = 1 while num <6: print(num) num+=1 break print("end")
三、continue
continue 用於退出當前循環,繼續下一次循環
#!/usr/bin/env python #-*- coding:utf-8 -*- num = 1 while num <6: print(num) num+=1 continue print("end")