Python初識與簡介【開篇】

目錄

一、扯淡html

二、Python歷史前端

三、Python簡介java

四、Python應用python

五、爲何是python而不是其餘語言?linux

六、Python的種類ios

七、Python的特色git

八、Python設計哲學程序員

九、Python版本github

十、Python環境(安裝、解釋器、編碼、註釋、傳參、變量、流程控制、數據類型、運算、文本操做)算法

 

一、扯淡

接觸Python的一個契機是在作Nagios監控的時候,發現了Python語言的強大,也能夠實現高度的自動化,因此纔開始慢慢的觸及它,最近看到學好Python還能夠成爲全棧工程師,全棧是什麼,就是什麼都能作,能寫後端、前端、GUI、數值計算、科學運算、網絡編程、大數據開發、組件集成、網絡服務、圖像處理等等

小提示:

二、Python歷史

Guido爲了打發聖誕節的無趣,於1989年發明在荷蘭設計出來,第一個公開發行版發行於1991年。

Python語法簡潔清晰,特點之一是強制用空白符做爲語句縮進。

歷史詳見維基百科百度百科介紹

三、Python簡介

說了那麼多,如今客觀的說些重點簡介:

Python 的設計具備很強的可讀性,相比其餘語言常用英文關鍵字,其餘語言的一些標點符號,它具備比其餘語言更有特點語法結構。

  • Python 是一種解釋型語言: 這意味着開發過程當中沒有了編譯這個環節。相似於PHP和Perl語言。

  • Python 是交互式語言: 這意味着,您能夠在一個Python提示符,直接互動執行寫你的程序。

  • Python 是面嚮對象語言: 這意味着Python支持面向對象的風格或代碼封裝在對象的編程技術。

  • Python 是初學者的語言:Python 對初級程序員而言,是一種偉大的語言,它支持普遍的應用程序開發,從簡單的文字處理到 WWW 瀏覽器再到遊戲。

四、Python應用

應用場景

  • Web編程
  • 系統管理任務
  • 數學處理(數據分析、機器學習
  • 文本處理(爬蟲)
  • 雲計算
  • 運維開發
  • 自動化測試
  • 圖形處理、多媒體應用
  • 網絡編程
  • 遊戲開發
  • 黑客({}POC腳本、木馬)
  • ...

因爲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編程語言社區

 
 由上圖可見,總體反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!
 互聯網公司普遍使用Python來作的事通常有: 自動化運維、自動化測試、大數據分析、爬蟲、Web 等。
 

五、爲何是Python而不是其餘語言?

C 和 Python、Java、C#等

    C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做

其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行

Python這門語言是由C開發而來,對於使用:

  •   Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
  •   Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持

因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。

六、Python的種類

  • Cpython    程序----(c解釋器)----(字節碼)----(機器碼)-----cpu
        Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
  • Jyhton    程序----(java解釋器)----(字節碼)----(機器碼)-----cpu
        Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
  • IronPython    程序----(c#解釋器)----(字節碼)----(機器碼)-----cpu
        Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
  • PyPy(特殊)    程序----(c#解釋器)----(字節碼)----(機器碼)-----cpu
        Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
  • RubyPython、Brython ...

以上除PyPy以外,其餘的Python的對應關係和執行流程以下:

 

PyPy,在Python的基礎上對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++程序,讓你的程序的用戶得到"腳本化"的能力。

八、Python設計哲學

Python的設計哲學是「優雅」、「明確」、「簡單」。Python開發者的哲學是「用一種方法,最好是隻有一種方法來作一件事」。

九、Python版本

python 2 vs 3:

    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編碼

  • 2.x = 默認編碼 =ASSIC =不支持
  • 3.x = 默認編碼 =UNICODE =默認支持中文

兩個版本模塊名區別

注:twisted模塊還未徹底支持python3.X

語法區別

1)去除了<>,所有改用!= 
2)去除``,所有改用repr() 
3)關鍵詞加入as 和with,還有True,False,None 
4)整型除法返回浮點數,要獲得整型結果,請使用// 
5)加入nonlocal語句。使用noclocal x能夠直接指派外圍(非全局)變量 
6)去除print語句,加入print()函數實現相同的功能。一樣的還有 exec語句,已經改成exec()函數
7)改變了順序操做符的行爲,例如x<y,當x和y類型不匹配時拋出TypeError而不是返回隨即的 bool值  
8)輸入函數改變了,刪除了raw_input,用input代替: 
9)去除元組參數解包。不能def(a, (b, c)):pass這樣定義函數了 
10) 新式的8進制字變量,相應地修改了oct()函數。 
11) class Foo:這種寫法不能用了,改爲class Foo(object)
 
總結: python2.x 是遺產, python3.x是如今和將來的語言

十、Python環境 

安裝Python

windows:

1
2
3
4
5
6
7
1 、下載安裝包
     https: / / www.python.org / downloads /
2 、安裝
     默認安裝路徑:C:\python27
3 、配置環境變量
     【右鍵計算機】 - - 》【屬性】 - - 》【高級系統設置】 - - 》【高級】 - - 》【環境變量】 - - 》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】  - - > 【Python安裝目錄追加到變值值中,用 ; 分割】
     如:原來的值;C:\python27,切記前面有分號

linux:

1
2
3
無需安裝,原裝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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
查看默認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  - / usr / local / bin / python2. 7  / usr / bin / python
7 、防止yum執行異常,修改yum使用的Python版本
     vi  / usr / bin / yum
     將頭部  #!/usr/bin/python 修改成 #!/usr/bin/python2.6

Python 入門

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內部提供的模塊
  • 業內開源的模塊
  • 程序員本身開發的模塊

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"

變量的做用:暱稱,其代指內存裏某個地址中保存的內容

變量定義的規則:

  • 變量名只能是 字母、數字或下劃線的任意組合
  • 變量名的第一個字符不能是數字
  • 如下關鍵字不能聲明爲變量名
    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

二、變量的賦值

複製代碼
#!/usr/bin/env python
# -*- coding: utf-8 -*-

name1 = "wupeiqi"
name2 = "alex"


複製代碼
 
複製代碼
#!/usr/bin/env python
# -*- coding: utf-8 -*-

name1 = "wupeiqi"
name2 = name1


複製代碼
8、輸入
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 --> 業務主管
# 其餘 --> 普通用戶
 
外層變量,能夠被內層變量使用
內層變量,沒法被外層變量使用
 
10、初識基本數據類型
一、數字

2 是一個整數的例子。
長整數 不過是大一些的整數。
3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是複數的例子。

int(整型)

  在32位機器上,整數的位數爲32位,取值範圍爲-2**31~2**31-1,即-2147483648~2147483647
  在64位系統上,整數的位數爲64位,取值範圍爲-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(長整型)
  跟C語言不一樣,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上因爲機器內存有限,咱們使用的長整數數值不可能無限大。
  注意,自從Python2.2起,若是整數發生溢出,Python會自動將整數數據轉換爲長整數,因此現在在長整數數據後面不加字母L也不會致使嚴重後果了。
float(浮點型)
  浮點數用來處理實數,即帶有小數的數字。相似於C語言中的double類型,佔8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
complex(複數)
  複數由實數部分和虛數部分組成,通常形式爲x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裏的x和y都是實數。
注:Python中存在小數字池:-5 ~ 257
 
二、布爾值
  真或假
  1 或 0
三、字符串
"hello world"
萬惡的字符串拼接:
  python中的字符串在C語言中體現爲是一個字符數組,每次建立字符串時候須要在內存中開闢一塊連續的空,而且一旦須要修改字符串的話,就須要再次開闢空間,萬惡的+號每出現一次就會在內從中從新開闢一塊空間。
字符串格式化
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 })

經常使用操做:

  • 索引
  • 新增
  • 刪除
  • 鍵、值、鍵值對
  • 循環
  • 長度
PS:循環,range,continue 和 break
 
11、運算
算數運算:

比較運算:

賦值運算:

邏輯運算:

成員運算:

身份運算:

位運算:

運算符優先級:

更多內容:猛擊這裏

12、初識文本的基本操做
 
打開文件:
  file_obj = file("文件路徑","模式")
打開文件的模式有:
  • r,以只讀方式打開文件
  • w,打開一個文件只用於寫入。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。
  • a,打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容以後。若是該文件不存在,建立新文件進行寫入。
  • w+,打開一個文件用於讀寫。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。

讀取文件的內容:

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()

 詳細參考連接:http://www.cnblogs.com/wupeiqi/articles/4906230.html

相關文章
相關標籤/搜索