一、扯淡html
二、Python歷史前端
三、Python簡介java
四、Python應用python
五、爲何是python而不是其餘語言?linux
六、Python的種類ios
七、Python的特色git
八、Python設計哲學程序員
九、Python版本github
十、Python環境(安裝、解釋器、編碼、註釋、傳參、變量、流程控制、數據類型、運算、文本操做)算法
接觸Python的一個契機是在作Nagios監控的時候,發現了Python語言的強大,也能夠實現高度的自動化,因此纔開始慢慢的觸及它,最近看到學好Python還能夠成爲全棧工程師,全棧是什麼,就是什麼都能作,能寫後端、前端、GUI、數值計算、科學運算、網絡編程、大數據開發、組件集成、網絡服務、圖像處理等等
小提示:
Python語法簡潔清晰,特點之一是強制用空白符做爲語句縮進。
說了那麼多,如今客觀的說些重點簡介:
Python 的設計具備很強的可讀性,相比其餘語言常用英文關鍵字,其餘語言的一些標點符號,它具備比其餘語言更有特點語法結構。
Python 是一種解釋型語言: 這意味着開發過程當中沒有了編譯這個環節。相似於PHP和Perl語言。
Python 是交互式語言: 這意味着,您能夠在一個Python提示符,直接互動執行寫你的程序。
Python 是面嚮對象語言: 這意味着Python支持面向對象的風格或代碼封裝在對象的編程技術。
Python 是初學者的語言:Python 對初級程序員而言,是一種偉大的語言,它支持普遍的應用程序開發,從簡單的文字處理到 WWW 瀏覽器再到遊戲。
應用場景:
因爲Python有太多知名公司在用了,以下數據可作參考:
谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、廣告等項目都在大量使用Python開發
CIA: 美國中情局網站就是用Python開發的
NASA: 美國航天局(NASA)大量使用Python進行數據分析和運算
YouTube:世界上最大的視頻網站YouTube就是用Python開發的
Dropbox:美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
Instagram:美國最大的圖片分享社交網站,天天超過3千萬張照片被分享,所有用python開發
Facebook:大量的基礎庫均經過Python實現的
Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼、豆瓣、知乎、春雨醫生等公司都在使用Python完成各類各樣的任務。
最新編程語言排名可見TIBOE編程語言社區
C 和 Python、Java、C#等
C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做
其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行
Python這門語言是由C開發而來,對於使用:
因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。
以上除PyPy以外,其餘的Python的對應關係和執行流程以下:
PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提高執行速度!
1.易於學習:Python有相對較少的關鍵字,結構簡單,和一個明肯定義的語法,學習起來更加簡單。
2.易於閱讀:Python代碼定義的更清晰。
3.易於維護:Python的成功在於它的源代碼是至關容易維護的。
4.一個普遍的標準庫:Python的最大的優點之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh兼容很好。
5.互動模式:互動模式的支持,您能夠從終端輸入執行代碼並得到結果的語言,互動的測試和調試代碼片段。
6.可移植:基於其開放源代碼的特性,Python已經被移植(也就是使其工做)到許多平臺。
7.可擴展:若是你須要一段運行很快的關鍵代碼,或者是想要編寫一些不肯開放的算法,你可使用C或C++完成那部分程序,而後從你的Python程序中調用。
8.數據庫:Python提供全部主要的商業數據庫的接口。
9.GUI編程:Python支持GUI能夠建立和移植到許多系統調用。
10.可嵌入: 你能夠將Python嵌入到C/C++程序,讓你的程序的用戶得到"腳本化"的能力。
1. 默認支持中文
2. 不兼容2.x
3. 核心語法調整,更易學
4. 新特性默認只在3.x上有
python 3.X不兼容 2.X版本,爲何要開發 3.X版本呢?由於 python發展了20多年,裏面有不少重複的功能和模塊,不少代碼也變得不那麼簡潔,因此Guido決定進行一次完全的升級,原則是去繁從簡,從而有了後續的 Python 3.X版本。
2.7版本 print "yard" or print ("yard") 3.x版本 print ("yard")
python 3.X 源碼文件默認使用utf-8編碼
兩個版本模塊名區別:
注:twisted模塊還未徹底支持python3.X
語法區別:
windows:
12345671
、下載安裝包
https:
/
/
www.python.org
/
downloads
/
2
、安裝
默認安裝路徑:C:\python27
3
、配置環境變量
【右鍵計算機】
-
-
》【屬性】
-
-
》【高級系統設置】
-
-
》【高級】
-
-
》【環境變量】
-
-
》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】
-
-
> 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python27,切記前面有分號
linux:
123無需安裝,原裝Python環境
ps:若是自帶
2.6
,請更新至
2.7
linux上安裝python3.6.5
一、準備編譯環境(環境若是不對的話,可能遇到各類問題,好比wget沒法下載https連接的文件) yum groupinstall 'Development Tools' yum install zlib-devel bzip2-devel openssl-devel ncurses-devel 二、下載 Python3.6.5代碼包 wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz 在安裝包中有一個README的文件,裏面有寫如何安裝 三、解壓 tar Jxvf Python-3.6.5.tar.xz 四、編譯安裝 cd Python-3.6.5 ./configure --prefix=/usr/local/python3 make && make install 五、作軟鏈 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 六、升級pip到最新版本: pip install --upgrade pip 七、測試 python3 八、如何設置默認Python3.6.5 若是咱們須要設置默認python直接運行默認的Python3.6.5版本,那須要簡單調整軟連接。 備份默認文件 cd /usr/local/ mv python python.bak mv pip pip.bak 從新建立軟鏈接,其實這個時候咱們就能夠默認看到Python就是3.6.5版本 ln -s /usr/local/python3/bin/python3 /usr/bin/python ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
更新Python
windows:
1卸載重裝便可
linux:
Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python
12345678910111213141516171819查看默認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
1、第一句Python代碼
在 /home/dev/ 目錄下建立 hello.py 文件,內容以下:
1
|
print
"hello,world"
|
執行 hello.py 文件,即: python /home/dev/hello.py
python內部執行過程以下:
2、解釋器
上一步中執行 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
3、內容編碼
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
"你好,世界"
|
4、註釋
當行注視:# 被註釋內容
多行註釋:""" 被註釋內容 """
5、執行腳本傳入參數
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
|
6、 pyc 文件
執行Python代碼時,若是導入了其餘的 .py 文件,那麼,執行過程當中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯以後產生的字節碼。
ps:代碼通過編譯能夠產生字節碼;字節碼經過反編譯也能夠獲得代碼。
7、變量
一、聲明變量
1
2
3
4
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name
=
"wupeiqi"
|
上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"wupeiqi"
變量的做用:暱稱,其代指內存裏某個地址中保存的內容
變量定義的規則:
二、變量的賦值
#!/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
|
9、流程控制和縮進
需求1、用戶登錄驗證
1
2
3
4
5
|
# 提示輸入用戶名和密碼
# 驗證用戶名和密碼
# 若是錯誤,則輸出用戶名或密碼錯誤
# 若是成功,則輸出 歡迎,XXX!
|
需求2、根據用戶輸入內容輸出其權限
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(整型)
"hello world"
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
})
|
經常使用操做:
讀取文件的內容:
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()
|