天天看點

Python介紹

Python概述

Python創始人是吉多.範羅蘇姆。在1989年萬聖節期間為打發時間而開發的。

目前Python在TIOBE排行榜第五位置

Python介紹

Python可以應用在衆多的領域中:

資料分析、組建內建、網絡服務、圖像處理、數值計算和科學計算等領域。

Python應用的知名公司有:

Youtube、Dropbox、BT、知乎、豆瓣、谷歌、百度、騰訊、

汽車之家等。

Python可以做的工作有:

自動化運維、自動化測試、大資料分析、爬蟲、Web等

Python與其他語言的異同:

python是由C語言來發而來的。

代碼的執行:

C語言:代碼編譯===》機器碼===》執行

其他語言:代碼編譯===》位元組碼===》機器碼===》執行

python也是這樣,在位元組碼===》機器碼的過程會生成一個.pyc的檔案,這個檔案就是機器碼的檔案。

注視:python在執行過程中會先找有沒有.pyc檔案,然後與原py檔案進行對比,如果沒有變化,則直接執行.pyc檔案;如果.py檔案較新,則重新生産.pyc檔案。然後執行。

代碼執行速度

由上面代碼的執行順序,也可以看出,python的運作速度相比較C會慢。

内置模版庫

Python内部會自帶很多的模版庫,可以直接調用。可以滿足大多數的基本的需求。

Python的種類

Cpython

官方的版本。使用C語言實作,使用最為廣泛。CPython實作會将源檔案(py檔案)轉換成位元組碼檔案(pyc檔案),然後運作在Python虛拟機上。

Jyhton

Python的Java實作,Jython會将Python代碼動态編譯成Java位元組碼,然後在JVM上運作。

IronPython

Python的C#實作,IronPython将Python代碼編譯成C#位元組碼,然後在CLR上運作。

PyPy

Python實作的Python,将Python的位元組碼位元組碼再編譯成機器碼。它在Python的基礎上對Python的位元組碼進一步處理,提升了執行速度。

Python介紹

Python環境

推薦使用2.7版本的

Windows:

1:下載下傳安裝包

<a href="https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi">https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi</a>

2:直接安裝

預設的安裝路徑是:C:\Python27

3:配置環境變量

【右鍵計算機】--》【屬性】--》【進階系統設定】--》【進階】--》【環境變量】--》【在第二個内容框中找到 變量名為Path 的一行,輕按兩下】 --&gt; 【Python安裝目錄追加到變值值中,用 ; 分割】

例如:;C:\Python27 在最後面添加即可。

Linux:

1:linux都自帶Python環境。推薦使用ubuntu。因為其自帶比較新的版本。

Python入門

一:你好世界

建立hello.py

Python介紹

 View Code

二:python程式的執行過程

Python介紹

三:編碼格式

ASCII:美國标準資訊交換代碼是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言,其最多隻能用 8 位來表示(一個位元組),即:2**8 = 256,是以,ASCII碼最多隻能表示 256 個符号。

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字元編碼。Unicode 是為了解決傳統的字元編碼方案的局限而産生的,它為每種語言中的每個字元設定了統一并且唯一的二進制編碼,規定雖有的字元和符号最少由 16 位來表示(2個位元組),即:2 **16 = 65536,

注:此處說的的是最少2個位元組,可能更多。

UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個位元組,而是将所有的字元和符号進行分類:ascii碼中的内容用1個位元組儲存、歐洲的字元用2個位元組儲存,東亞的字元用3個位元組儲存。

是以,python解釋器在加載 .py 檔案中的代碼時,會對内容進行編碼(預設ascill)。但是3.0以後的版本預設是UTF-8。

四:注釋的方式

單行注釋:#

多行注釋:"""注釋的内容"""或者是三個單引号

五:傳參

上面已經說了,Python有大量的子產品,進而使得開發很簡潔,類庫主要包含三種:

1:Python内部提供的子產品

2:業内開源的子產品

3:程式員自己開發的子產品

Python内部提供一個sys的子產品,其中的sys.argv就是用來捕獲執行python腳本時傳入的參數。

Python介紹

六:變量

1:聲明變量

Python介紹

變量的名:name 變量的值:"曹小賤"

變量的作用:昵稱,代指記憶體裡某個位址中儲存的内容。

Python介紹

變量定義的規則:

1:變量名隻能是字母、數字或下劃線的任意組合。

2:變量名不能以數字開頭。

3:不能使用關鍵字進行聲明。

['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']

2:變量的指派

Python介紹
Python介紹

七:輸入

Python介紹

八:流程控制和縮進

需求一:使用者登入驗證

Python介紹

需求二:根據使用者輸入内容輸出其權限

Python介紹

注釋:外層變量可以被記憶體變量調用,反之不行。

九:Python的基本類型

1:數字

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(浮點型)

  浮點數用來處理實數,即帶有小數的數字。

complex(複數)

  複數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裡的x和y都是實數。

注:Python中存在小數字池:-5 ~ 257

2:布爾值(bool)

True False

真或假

1 或0

3:字元串

"Hello World"

萬惡的字元串拼接:

python中的字元串在C語言中展現為是一個字元數組,每次建立字元串時候需要在記憶體中開辟一塊連續的空,并且一旦需要修改字元串的話,就需要再次開辟空間,萬惡的+号每出現一次就會在内從中重新開辟一塊空間。

字元串格式化

&gt;&gt;&gt; name = "曹小賤"

&gt;&gt;&gt; print "i am %s " % name

i am 曹小賤

注釋:字元串是%s;整數%d;浮點數%f

字元串的常用功能:

移除空白

strip

lstrip

rstrip

&gt;&gt;&gt; name = " alex "

&gt;&gt;&gt; import tab

&gt;&gt;&gt; print name.strip()

alex

&gt;&gt;&gt; print name.lstrip()

&gt;&gt;&gt; print name.rstrip()

分割

&gt;&gt;&gt; name = "a;b;c;d"

&gt;&gt;&gt; name1 = name.split(';')

&gt;&gt;&gt; name1

['a', 'b', 'c', 'd']

長度

&gt;&gt;&gt; name

'a;b;c;d'

&gt;&gt;&gt; len(name)

7

&gt;&gt;&gt; name[len(name)-1]

'd'

索引

&gt;&gt;&gt; name[1]

';'

&gt;&gt;&gt; name[2]

'b'

切片

&gt;&gt;&gt; name = "alexd"

&gt;&gt;&gt; name[0]

'a'

&gt;&gt;&gt; name[1:2]

'l'

&gt;&gt;&gt; name[1:4]

'lex'

&gt;&gt;&gt; name[3:4]

'x'

&gt;&gt;&gt; name[-3:]

'exd'

&gt;&gt;&gt; name[0:]

'alexd'

4:清單

建立(第一種方式最終要調用第二種方式)

&gt;&gt;&gt; name = ['ccc','ggg','ttt']

['ccc', 'ggg', 'ttt']

&gt;&gt;&gt; name = list(['ccc','ggg','ttt'])

'ggg'

&gt;&gt;&gt; name[1:3]

['ggg', 'ttt']

追加

&gt;&gt;&gt; name.append('sss')

['ccc', 'ggg', 'ttt', 'sss']

删除

&gt;&gt;&gt; del name[2]

['ccc', 'ggg', 'sss']

3

循環

#!/usr/bin/env python

#coding:utf-8

name = ['ccc','ggg','ttt']

for i in name:

if i == "ccc":

print "找到了"

break

包含

&gt;&gt;&gt; 'ccc' in name

True

&gt;&gt;&gt; 'cgt' in name

False

5:元組(tuple)

建立元組

&gt;&gt;&gt; name = ('ccc','ggg','ttt')

('ccc', 'ggg', 'ttt')

&gt;&gt;&gt; name1 = tuple(('aaa','bbb','ccc'))

('aaa', 'bbb', 'ccc')

上面的name的方式最終還是要調用下面的方式。

&gt;&gt;&gt; name1[2]

'ccc'

('ggg',)

解釋:顧頭不顧尾

name = ('aaa', 'bbb', 'ccc')

&gt;&gt;&gt; 'bbb' in name1

&gt;&gt;&gt; 'abc' in name1

6:字典(無序)

建立字典

&gt;&gt;&gt; menu = {'name':'cgt','age':24,'job':'IT'}

&gt;&gt;&gt; menu

{'job': 'IT', 'age': 24, 'name': 'cgt'}

&gt;&gt;&gt; menu1 = {'name':'cgt1','age':2424,'job':'IT'}

&gt;&gt;&gt; menu1

{'job': 'IT', 'age': 2424, 'name': 'cgt1'}

&gt;&gt;&gt; menu[1] #字典是一種鍵值對的方式,不能使用下标來擷取,通過鍵值。原因是它是無序的

Traceback (most recent call last):

File "&lt;stdin&gt;", line 1, in &lt;module&gt;

KeyError: 1

&gt;&gt;&gt; menu['name']

'cgt'

新增

&gt;&gt;&gt; menu['salary']=400000

{'job': 'IT', 'salary': 400000, 'age': 24, 'name': 'cgt'} #從這裡也可以展現出他的無序

修改

{'job': 'IT', 'salary': 400000, 'age': 24, 'name': 'cgt'}

&gt;&gt;&gt; menu['salary']=1 #可以直接重新定義變量的值,進行修改

{'job': 'IT', 'salary': 1, 'age': 24, 'name': 'cgt'}

&gt;&gt;&gt; del menu['salary']

#通過pop來删除鍵,它的不同之處是再删除的同時,顯示出值

&gt;&gt;&gt; menu.pop('name')

{'job': 'IT', 'age': 24}

#清除所有的鍵

&gt;&gt;&gt; menu1.clear()

{}

menu = {

'name':'曹小賤',

'age':24,

'job':'IT'

}

#開始周遊循環

for key in menu:

print key,'對應的值',menu[key]

結果: #這裡呈現的結果列印出來也是無序的

job 對應的值 IT

age 對應的值 24

name 對應的值 曹小賤

#####################################################

for key,value in menu.items():

print key,'對應的值',value

結果:

PS:循環,range,continue 和 break

range在什麼範圍内

continue跳出本次循環,繼續執行下次循環

break終止循環

len(menu)

十:運算

運算符

描述

執行個體

算術運算

兩個對象相加

10+19輸出結果29

_

得到負數;兩個對象相減

10-19輸出結果-9

*

兩個數相乘,

10*19輸出結果190

/

兩個數相除

10/2輸出結果5

%

取模-傳回除法的餘數

10%3輸出結果1

**

2**2輸出結果4

//

取整除傳回商的整數部分

9//2輸出結果4

比較運算

==

等于

(a==b)傳回false

!=

不等于

(a != b)傳回true

&lt;&gt;

(a &lt;&gt; b)傳回false

&gt;

大于

(a &gt; b)傳回false

&lt;

小于

(a &lt; b)傳回true

&gt;= 

大于等于

(a &gt;= b)傳回false

&lt;= 

小于等于

(a &lt;= b)傳回true

指派運算

=

簡單的指派運算符

c = a + b将a+b的運算結果指派給c

+=

加法指派運算

c+=a等效于c=c+a

-=

減法指派運算

c-=a等效于c=c-a

/=

除法指派運算

c/=a等效于c=c/a

%=

取模指派運算

c%=a等效于c=c%a

*=

乘法指派運算

c*=a等效于c=c*a

**=

幂指派運算

c**=a等效于c=c**a

//=

取整指派運算

c//a等效于c=c//a

邏輯運算

and

布爾"與"如果x為False,x and y 傳回false,否則傳回y的值

(a and b)傳回true

or

布爾"或"如果x為True,,則傳回True。否則傳回y大的值

(a or b)傳回true

not

布爾"非",x為true,傳回false

not (a and b)傳回false

成員運算

in

如果在指定的序列内找到值,則傳回True.

x在y的序列中,傳回True

not in

如果在指定的序列内沒找到值,則傳回True.

x不在y的序列中,傳回True

身份運算

is

is 是判斷兩個辨別符是不是引用自一個對象

x is y,如果id(x)=id(y) is傳回結果1

is not

is not 是判斷兩個辨別符是不是引用來自不同的對象

x is not y 如果id(x)!=id(y)傳回結果1

位運算

&amp;

按位與運算

(a&amp;b)輸出結果12.二進制解釋:0000 1100

|

按位或運算

(a|b)輸出結果61二進制解釋:0011 1101

^

按位異或運算

(a^b)輸出結果49 二進制解釋:0011 0001

-

按位取反

(-a)輸出結果-61 二進制解釋:1100 0011

&lt;&lt;

左移動運算

a&lt;&lt;2輸出結果240二進制解釋:1111 0000

&gt;&gt;

右移動運算

a&gt;&gt;2輸出結果15二進制解釋:0000 1111

Python介紹

運算符優先級

指數(最高優先級)

~+-

按位翻轉,一進制加号和減号(最後兩個方法名為:+@和-@)

*/%//

乘除取模取整除

+ -

加法減法

左移右移

位 'AND'

^ |

&lt;= &lt;&gt; &gt;=s

比較運算符

&lt;&gt; == !=

等于運算符

= %= /= //= -= += *= **=

指派運算符

is is not

身份運算符

in not in

成員運算符

not or and

邏輯運算符

十一:對檔案的基本操作

file = file("檔案路徑名稱","模式")

f = file('檔案名','模式') 打開一個檔案,

f = open('檔案名','模式') 打開一個檔案,

f.read():是以字元串的形式讀取出來

f.readline():是以清單的形式

f.name擷取檔案的名字

f.realines():全部一次性讀取到記憶體中出來

f.xrealines():全部讀取到記憶體中出來,但是一行一行的讀取

f.flush():将記憶體中的内容刷到硬碟檔案中

f.close():關閉檔案.

f.write():寫入

f.seek(0): 回到檔案開頭

f.mode:檔案打開的模式,讀寫等

f.truncate():加數字 截取多少位元組

檔案打開的模式

w 以寫方式打開,

a 以追加模式打開 (從 EOF 開始, 必要時建立新檔案)

r+ 以讀寫模式打開(一般使用r+)

w+ 以讀寫模式打開 (參見 w )

a+ 以讀寫模式打開 (參見 a )

rb 以二進制讀模式打開

wb 以二進制寫模式打開 (參見 w )

ab 以二進制追加模式打開 (參見 a )

rb+ 以二進制讀寫模式打開 (參見 r+ )

wb+ 以二進制讀寫模式打開 (參見 w+ )

ab+ 以二進制讀寫模式打開 (參見 a+ )

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************

本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5569737.html,如需轉載請自行聯系原作者