=======================================================================================================================
一、什麼是 Python?
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/),是一種面向對象、直譯式的計算機程序語言,具備近二十年的發展歷史。它包含了一組功能完備的標準庫,可以輕鬆完成不少常見的任務。它的語法簡單,與其它大多數程序設計語言使用大括號不同,它使用縮進來定義語句塊。
Python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。之因此選中Python做爲程序的名字,是由於他是BBC電視劇——蒙提·派森的飛行馬戲團(Monty Python‘s Flying Circus)的愛好者。ABC是由吉多參加設計的一種教學語言。就吉多本人看來,ABC這種語言很是優美和強大,是專門爲非專業程序員設計的。可是ABC語言並無成功,究其緣由,吉多認爲是非開放形成的。吉多決心在Python中避免這一錯誤,並獲取了很是好的效果,完美結合了C和其餘一些語言
就這樣,Python在吉多手中誕生了。實際上,第一個實現是在Mac機上。能夠說,Python是從ABC發展起來,主要受到了Modula-3(另外一種至關優美且強大的語言,爲小型團體所設計的)的影響。而且結合了Unix shell和C的習慣。目前吉多仍然是Python的主要開發者,決定整個Python語言的發展方向。Python社區常常稱呼他是仁慈的獨裁者。
Python 2.0於2000年10月16日發佈,增長了實現完整的垃圾回收,而且支持Unicode。同時,整個開發過程更加透明,社區對開發進度的影響逐漸擴大。Python 3.0於2008年12月3日發佈,此版不徹底兼容以前的Python源代碼。不過,不少新特性後來也被移植到舊的Python 2.6/2.7版本。
官網: www.etiantian.org
python中文開發者社區: http://bbs.pythontab.com/
python在線中文手冊: http://docs.pythontab.com/
二、Python能幹啥?
Web程序Python常常被用於Web開發。好比,經過mod_wsgi模塊,Apache能夠運行用Python編寫的Web程序。使用Python語言編寫的Gunicorn做爲Web服務器,也可以運行Python語言編寫的Web程序。Python定義了WSGI標準應用接口來協調Http服務器與基於Python的Web程序之間的溝通。一些Web框架,如Django、Pyramid、TurboGears、Tornado、web2py、Zope、Flask等,可讓程序員輕鬆地開發和管理複雜的Web程序。
Python對於各類網絡協議的支持很完善,所以常常被用於編寫服務器軟件、網絡蠕蟲。第三方庫Twisted支持異步在線編寫程序和多數標準的網絡協議(包含客戶端和服務器),而且提供了多種工具,被普遍用於編寫高性能的服務器軟件。另有gevent這個流行的第三方庫,一樣可以支持高性能高併發的網絡開發。
GUI開發Python自己包含的Tkinter庫可以支持簡單的GUI開發。可是愈來愈多的Python程序員選擇wxPython或者PyQt等GUI包來開發跨平臺的桌面軟件。使用它們開發的桌面軟件運行速度快,與用戶的桌面環境相契合。經過PyInstaller還能將程序發佈爲獨立的安裝程序包。
操做系統在不少操做系統裏,Python是標準的系統組件。大多數Linux發佈版以及NetBSD、OpenBSD和Mac OS X都集成了Python,能夠在終端機下直接運行Python。有一些Linux發佈版的安裝器使用Python語言編寫,好比Ubuntu的Ubiquity安裝器、Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage包管理系統。Python標準庫包含了多個調用做業系統功能的庫。經過pywin32這個第三方軟件包,Python可以訪問Windows的COM服務及其它Windows API。使用IronPython,Python程序可以直接調用.Net Framework。
其餘NumPy、SciPy、Matplotlib可讓Python程序員編寫科學計算程序。有些公司會使用Scons代替make構建C++程序。不少遊戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫遊戲的邏輯、服務器。相較於Python,Lua的功能更簡單、體積更小;而Python則支持更多的特性和數據類型。不少遊戲,如EVE Online使用Python來處理遊戲中繁多的邏輯。YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。OLPC的做業系統Sugar項目的大多數軟件都是使用Python編寫
三、Python3解釋器
3.1. 調用 Python 解釋器
Python 解釋器一般被安裝在目標機器的 /usr/local/bin/python3.5 目錄下。將 /usr/local/bin 目錄包含進 Unix shell 的搜索路徑裏,以確保能夠經過輸入:
python3.5
命令來啓動他。[1] 因爲 Python 解釋器的安裝路徑是可選的,這也多是其它路徑,你能夠聯繫安裝 Python 的用戶或系統管理員確認(例如,/usr/local/python 就是一個常見的選擇)。
在 Windows 機器上,Python 一般安裝在 C:\Python35 位置,固然你能夠在運行安裝嚮導時修改此值。要想把此目錄添加到你的 PATH 環境變量中,你能夠在 DOS 窗口中輸入如下命令:
set path=%path%;C:\python35
一般你能夠在主窗口輸入一個文件結束符(Unix 系統是 Control-D,Windows 系統是 Control-Z)讓解釋器以 0 狀態碼退出。若是那沒有做用,你能夠經過輸入 quit() 命令退出解釋器。
Python 解釋器具備簡單的行編輯功能。在 Unix系統上,任何 Python 解釋器均可能已經添加了 GNU readline 庫支持,這樣就具有了精巧的交互編輯和歷史記錄等功能。在 Python 主窗口中輸入 Control-P 多是檢查是否支持命令行編輯的最簡單的方法。若是發出嘟嘟聲(計算機揚聲器),則說明你可使用命令行編輯功能;更多快捷鍵的介紹請參考 交互式輸入行編輯歷史回溯。若是沒有任何聲音,或者顯示 ^P 字符,則說明命令行編輯功能不可用;你只能經過退格鍵從當前行刪除已鍵入的字符並從新輸入。
Python 解釋器有些操做相似 Unix shell:當使用終端設備(tty)做爲標準輸入調用時,它交互的解釋並執行命令;當使用文件名參數或以文件做爲標準輸入調用時,它讀取文件並將文件做爲 腳本 執行。
第二種啓動 Python 解釋器的方法是 python -c command [arg] ...,這種方法能夠在 命令行 執行 Python 語句,相似於 shell 中的 -c 選項。因爲 Python 語句一般會包含空格或其餘特殊 shell 字符,通常建議將 命令 用單引號包裹起來。
有一些 Python 模塊也能夠看成腳本使用。你可使用 python -m module [arg] ... 命令調用它們,這相似在命令行中鍵入完整的路徑名執行 模塊 源文件同樣。
使用腳本文件時,常常會運行腳本而後進入交互模式。這也能夠經過在腳本以前加上 -i 參數來實現。
3.1.1. 參數傳遞
調用解釋器時,腳本名和附加參數傳入一個名爲 sys.argv 的字符串列表。
你可以獲取這個列表經過執行 import sys,列表的長度大於等於1;沒有給定腳本和參數時,它至少也有一個元素:sys.argv[0] 此時爲空字符串。
腳本名指定爲 '-' (表示標準輸入)時, sys.argv[0] 被設定爲 '-',使用 -c 指令 時,sys.argv[0] 被設定爲 '-c'。使用 -m 模塊 參數時,sys.argv[0] 被設定爲指定模塊的全名。
-c 指令 或者 -m 模塊 以後的參數不會被 Python 解釋器的選項處理機制所截獲,而是留在 sys.argv 中,供腳本命令操做。
#!/usr/bin/env python
import sys
print(sys.argv)
演示1以下:
[root@zookeeper-server-01 Node2]# cat test9.py
import sys
print(sys.argv)
[root@zookeeper-server-01 Node2]#
[root@zookeeper-server-01 Node2]# python36 test9.py
['test9.py']
[root@zookeeper-server-01 Node2]# python36 test9.py a
['test9.py', 'a']
[root@zookeeper-server-01 Node2]# python36 test9.py a b
['test9.py', 'a', 'b']
[root@zookeeper-server-01 Node2]# python36 test9.py a b haha
['test9.py', 'a', 'b', 'haha']
以上說明sys.argv是個列表類型,傳入的參數都會存到sys.argv列表裏。
演示2以下:
• python2.x版本:
[root@zookeeper-server-01 Node2]# cat test9.py
#coding=utf-8
import sys
print(sys.argv)
print "第1個參數爲腳本名:",sys.argv[0]
a = sys.argv[1]
b = sys.argv[2]
c = int(sys.argv[1]) + int(sys.argv[2])
print "把第2個參數和第3個參數作運算:%s + %s = %s" %(a,b,c)
[root@zookeeper-server-01 Node2]# python27 test9.py 1 2
['test9.py', '1', '2']
第1個參數爲腳本名: test9.py
把第2個參數和第3個參數作運算:1 + 2 = 3
[root@zookeeper-server-01 Node2]#
• python3.x版本:
[root@zookeeper-server-01 Node2]# cat test9.py
#coding=utf-8
import sys
print(sys.argv)
print("第1個參數爲腳本名:",sys.argv[0])
a = sys.argv[1]
b = sys.argv[2]
c = int(sys.argv[1]) + int(sys.argv[2])
print("把第2個參數和第3個參數作運算:{0} + {1} =".format(a,b) ,c)
[root@zookeeper-server-01 Node2]# python36 test9.py 1 2
['test9.py', '1', '2']
第1個參數爲腳本名: test9.py
把第2個參數和第3個參數作運算:1 + 2 = 3
3.1.2. 交互模式
從 tty 讀取命令時,咱們稱解釋器工做於 交互模式。這種模式下它根據主提示符來執行,主提示符一般標識爲三個大於號(>>>);繼續的部分被稱爲 從屬提示符,由三個點標識(...)。在第一行以前,解釋器打印歡迎信息、版本號和受權提示:
$ python3.5
Python 3.5.2 (default, Mar 16 2014, 09:25:04)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
輸入多行結構時須要從屬提示符了,例如,下面這個 if 語句:
>>> the_world_is_flat = 1
>>> if the_world_is_flat:
... print("Be careful not to fall off!")
...
Be careful not to fall off!
3.2. 解釋器及其環境
3.2.1. 源程序編碼
默認狀況下,Python 源文件是 UTF-8 編碼。在此編碼下,全世界大多數語言的字符能夠同時用在字符串、標識符和註釋中 — 儘管 Python 標準庫僅使用 ASCII 字符作爲標識符,這只是任何可移植代碼應該遵照的約定。
若是要正確的顯示全部的字符,你的編輯器必須能識別出文件是 UTF-8 編碼,而且它使用的字體能支持文件中全部的字符。
你也能夠爲源文件指定不一樣的字符編碼。爲此,在 #! 行(首行)後插入至少一行特殊的註釋行來定義源文件的編碼:
# -*- coding: encoding -*-
經過此聲明,源文件中全部的東西都會被當作用 encoding 指代的 UTF-8 編碼對待。
在 Python 庫參考手冊 codecs 一節中你能夠找到一張可用的編碼列表。
例如,若是你的編輯器不支持 UTF-8 編碼的文件,但支持像 Windows-1252 的其餘一些編碼,你能夠定義:
# -*- coding: cp-1252 -*-
這樣就能夠在源文件中使用 Windows-1252 字符集中的全部字符了。
這個特殊的編碼註釋必須在文件中的 第一或第二 行定義。
在 Unix 系統上,Python 3.X 解釋器默認未被安裝成名爲 python 的命令,因此它不會與同時安裝在系統中的 Python 2.x 命令衝突。
html