當前位置:
首頁 > 最新 > Python入門教程講解

Python入門教程講解

Python是一門動態語言

與Java,C等相對,Python不用編譯,像腳本一樣直接運行.這就導致了,所有錯誤都是運行時的!即使有語法錯誤,或者異常,如果程序邏輯沒有執行到,就不會有錯誤.比如一個if分支中有語法錯誤,使用了未定義的函數,但如果未執行到此分支,就可以正常運行.

動態的另外一層意思就是它的類型是動態的,也就是說無需指定變數的類型,在運行時,根據它的內容來決定的類型.

如何運行Python

通常來講有二種方式,一種方式是互動式的,就像Shell命令行提示符那樣,互動式的,輸入,就有輸出;

在終端輸入python命令,就進入了Python的命令提示符中:>>>輸入Python語句,解釋器就會執行,並輸出結果,如:

[python]view plain copy

[alex@alexon:~]$python

Python 2.7.3 (default, Apr 10 2013, 06:20:15)

[GCC 4.6.3] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> print "hello, world"

hello, world

輸入exit()可以退出命令提示符.

另外一種方式就是腳本,就像Shell的腳本的一樣,把一組命令集合到一起執行,這就能發揮更大的作用.

[python]view plain copy

#!/usr/bin/python

print "hello, world"

Python以縮進來區分語句塊

不像Java,C/C++以花括弧{}來區分語句塊.Python是以縮進來表示語句塊,同一縮進級別為同一級別的語句塊.

一個腳本文件中的0級縮進是文件載入的時候就會被執行的語句,如上面的print.開啟一個新的縮進需要使用:(冒號),代表下一級別的語句塊,如條件,循環或者函數定義.

縮進最好使用四個空格.而且要注意縮進要一致,使用空格就全都用空格,使用Tab就都使用Tab,混用就可能得到縮進錯誤:

IndentationError: unindent does not match any outer indentation level

操作符

與Java和C中十分類似, +(加), -(減), *(乘), /(除), %(求余), **(指數運算), = (賦值).以及減便運算,如 +=, -=, *=和/= 等.

賦值運算與其他語言一致.

邏輯操作

> = != ==與其他語言一樣.

不一樣的有not邏輯非,and邏輯與和or邏輯或.

注釋與文檔

一行當中,從#開始地方就是注釋.不會影響下一行.

""引號放在文件的開頭,函數的開頭或者一個類的開頭,就是文檔注釋,與Java中的/** ... */作用和目的是一樣的.

折行

如果一行太長了,寫不下了,就需要在下一行接著寫,這時可以使用來告訴Python,下一行繼續.

一行寫多個語句

Python是一個語句放在一行,行尾可以選擇性的加上;但如果想在一行放多個語句,就需要用;來分隔語句:

a = 1; b = 2; c = 3;

雖然這在語法上可行,但不是一個好習慣,絕大多數的編程規範都是要一行寫一個語句.

基本數據類型

int

long

bool

float

與Java中非常接近.可以近似認為一致.bool的值是True和False,或者0(False),非0就是True.

List和Tuple

這就是Java或C中的數組.它是一個容器,能用來順序的,以整數索引方式檢索, 存儲一組對象.List用[]來表示,如[1, 2, 3]就是一個List;而Tuple用()來表示,如(3, 4, 5)就是一個Tuple.它們的區別在於List是可變的;而Tuple是不可變的.也就是說不可以增,刪和改.

索引方式除了與Java一樣的以一個整數下標方式外,還可以指定開始,結束和步長,和使用負索引來分割List:

通用語法格式是:list[start:end:step]

list[index] --- 返回第(index+1)個元素,受C語言影響,下標亦是從0開始

list[start:end] --- 返回從start開始,到end-1,也就是list[start], list[start+1].....list[end-1]

list[start:end:step] --- 與上面類似,只不過每隔step取一個

list[:end] ---- 預設的開端是0

list[start:] ---- 預設的結尾是len(list),或者-1

負數索引更是方便,它與正數的對應關係為:

正數索引 0 1 2 3

數組元素 [1] [3] [5] [7]

負數索引 -4 -3 -2 -1

實例:

[python]view plain copy

>>> a = [1, 3, 5, 7];

1

7

7

5

>>> a[0:3]

[1, 3, 5]

>>> a[1:3:2]

[3]

>>> a[0:3:2]

[1, 5]

>>> a[0:-1:2]

[1, 5]

List是一個對象,它有一此內置的方法,如:

包含關係: in, not in

[python]view plain copy

>>> 3 in a

True

>>> 8 in a

False

>>> 8 not in a

True

連接符: +

[python]view plain copy

>>> a + [9, 11]

[1, 3, 5, 7, 9, 11]

重複: *

[python]view plain copy

[1, 3, 5, 7, 1, 3, 5, 7]

字元串String

字元串就是一個字元的數組,List的操作都可以對String直接使用.

[python]view plain copy

>>> str = "hello, world"

>>> str[0:3]

"hel"

>>> str[0:3:2]

"hl"

>>> str[-1]

"d"

>>> str * 2

"hello, worldhello, world"

>>> "3" in str

False

>>> "le" in str

False

>>> "el" in str

True

>>> "ell" not in str

False

字串格式化符%

這是一個類似C語言printf和Java中的String.format()的操作符,它能格式化字串,整數,浮點等類型:語句是:

formats % (var1, var2,....)

它返回的是一個String.

[python]view plain copy

>>> "Int %d, Float %d, String "%s"" % (5, 2.3, "hello")

"Int 5, Float 2, String "hello""

Dictionary字典

相當於Java中的HashMap,用於以Key/Value方式存儲的容器.創建方式為, 更改方式為dict[key] = new_value;索引方式為dict[key]. dict.keys()方法以List形式返回容器中所有的Key;dict.values()以List方式返回容器中的所有的Value:

[python]view plain copy

>>> box = {"fruits": ["apple","orange"], "money": 1993, "name": "obama"}

>>> box["fruits"]

["apple", "orange"]

>>> box["money"]

1993

>>> box["money"] = 29393

>>> box["money"]

29393

>>> box["nation"] = "USA"

{"money": 29393, "nation": "USA", "name": "obama", "fruits": ["apple", "orange"]}

>>> box.keys()

["money", "nation", "name", "fruits"]

>>> box.values()

[29393, "USA", "obama", ["apple", "orange"]]

分支語句

格式為:

[python]view plain copy

if expression:

blocks;

elif expression2:

blocks;

else:

blocks;

其中邏輯表達式可以加上括弧(),也可以不加.但如果表達式裡面比較混亂,還是要加上括弧,以提高清晰.但整體的邏輯表達式是可以不加的:

[python]view plain copy

>>> a = 3; b = 4; c = 5;

>>> if a == b and a != c:

... print "Are you sure"

... elif (a == c and b == c):

... print "All equal"

... else:

... print "I am not sure"

...

I am not sure

while循環

與Java中類似:

while expression:

blocks

[python]view plain copy

>>> i = 0;

>>> while i

... print "I am repeating";

... i += 1;

...

I am repeating

I am repeating

I am repeating

for語句

與Java中的foreach語法一樣, 遍歷List:

for var in list:

blocks;

[python]view plain copy

>>> msg = "Hello";

>>> for c in msg:

... print c;

...

數組推導

這是Python最強大,也是最性感的功能:

list = [expression for var in list condition]

它相當於這樣的邏輯:

list = [];

for var in list:

if condition:

execute expression;

add result of expression to list

return list;

一句話,相當於這麼多邏輯,可見數組推導是一個十分強大的功能:

[python]view plain copy

>>> a = range(4);

[0, 1, 2, 3]

>>> [x*x for x in a if x % 2 == 0]

[0, 4]

遍歷列表a,對其是偶數的項,乘方.

函數

如何定義函數

def function_name(args):

function_body;

調用函數的方式function_name(formal_args):

[python]view plain copy

>>> def power(x):

... return x*x;

...

>>> power(4)

16

Python中函數也是一個對象,可以賦值,可以拷貝,可以像普通變數那樣使用.其實可以理解為C語言中的指針:

[python]view plain copy

[python]view plain copy

>>> d = power;

4

另外就是匿名函數,或者叫做lambda函數,它沒有名字,只有參數和表達式:

lambda args: expression

[python]view plain copy

>>> d = lambda x: x*x;

4

lambda最大的用處是用作實參:

[python]view plain copy

>>> def iter(func, list):

... ret = [];

... for var in list:

... ret.append(func(var));

... return ret;

...

>>> iter(lambda x: x*x, a)

[0, 1, 4, 9]


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

從數據角度探究《前任3》為什麼這麼火爆

TAG:Python |