小白福利!Python基礎語法帶你入門

這是一篇正經的乾貨分享!帶領小白入門Python。

我們學習之前可以先來了解一下Python~

Python的特點

1.簡單

Python是一種代表簡單思想的語言。

2.易學

Python有極其簡單的語法。

3.免費、開源

Python是FLOSS(自由/開放源碼軟體)之一。

4.高層語言

使用Python編寫程序時無需考慮如何管理程序使用的內存一類的底層細節。

5.可移植性

Python已被移植到很多平台,這些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、

BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、

Windows CE甚至還有PocketPC。

6.解釋性

可以直接從原始碼運行。在計算機內部,python解釋器把原始碼轉換為字節碼的中間形式,然後再把它翻譯成計算機使用的機器語言。

7.面向對象

Python既支持面向過程編程也支持面向對象編程。

8.可擴展性

部分程序可以使用其他語言編寫,如c/c++。

9.可嵌入型

可以把Python嵌入到c/c++程序中,從而提供腳本功能。

10.豐富的庫

Python標準庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、

電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。

---------------分割線------------------------以下是Python的基本語法---------------------------------------------------------

一、基本概念

1. python中數有四種類型:整數、長整數、浮點數和複數。

· 整數, 如 1

· 長整數 是比較大的整數

· 浮點數 如 1.23、3E-2

· 複數 如 1 + 2j、 1.1 + 2.2j

2. 字符串(字符的序列)

· python中單引號和雙引號使用完全相同。

· 使用三引號('''或""")可以指定一個多行字符串。

· 轉義符 ''

· 自然字符串, 通過在字符串前加r或R。 如 r"this is a line with " 則 會顯示,並不是換行。

· python允許處理unicode字符串,加前綴u或U, 如 u"this is an unicode string"。

· 字符串是不可變的。

· 按字面意義級聯字符串,如"this " "is " "string"會被自動轉換為this is string。

3. 標識符的命名

· 第一個字符必須是字母表中字母或下劃線'_'。

· 標識符的其他的部分有字母、數字和下劃線組成。

· 標識符對大小寫敏感。

4. 對象

python程序中用到的任何「東西」都成為「對象」。

5. 邏輯行和物理行

物理行是我們在編寫程序時看到的,邏輯行則是python看到的。

python中分號;標識一個邏輯行的結束,但是實際中一般每個物理行只寫一個邏輯行,可以避免使用分號。

多個物理行中可以寫一個邏輯行,如下:

s = "peter is

writing this article"

上面的使用被稱為『明確的行連接』, 又如:

print

"peter"

6. 縮進

空白在python是非常重要的,行首的空白是最重要的,又稱為縮進。行首的空白(空格和制表符)用來決定邏輯行的縮進層次,從而決定語句

分組。這代表著同一層次的語句必須有相同的縮進,每一組這樣的語句稱為一個塊。

注意:不要混合使用空格和制表符來縮進,因為在跨越不同的平台時無法正常工作。

二、運算符與表達式

1. 運算符與其用法

2. 運算符優先級(從低到高)

三、控制流

1. if 語句

i = 10

n = int(raw_input("enter a number:"))

if n == i:

print "equal"

elif n < i:

print "lower"

else:

print "higher"

2. while語句

while True:

pass

else:

pass

#else語句可選,當while為False時,else語句被執行。 pass是空語句。

3. for 循環 for..in

for i in range(0, 5):

print i

else:

pass

# 列印0到4

註:當for循環結束後執行else語句;

range(a, b)返回一個序列,從a開始到b為止,但不包括b,range默認步長為1,可以指定步長,range(0,10,2);

4. break語句

終止循環語句,如果從for或while中終止,任何對應循環的else將執行。

5. continue語句

continue語句用來調過當前循環的剩餘語句,然後繼續下一輪循環。

四、函數

函數通過def定義。def關鍵字後跟函數的標識符名稱,然後跟一對圓括號,括號之內可以包含一些變量名,該行以冒號結尾;接下來是一塊語句,即函數體。

def sumOf(a, b):

return a + b

1. 函數形參

函數中的參數名稱為『形參』,調用函數時傳遞的值為『實參』

2. 局部變量

在函數內定義的變量與函數外具有相同名稱的其他變量沒有任何關係,即變量名稱對於函數來說是局部的。這稱為變量的作用域。

global語句, 為定義在函數外的變量賦值時使用global語句。

def func():

global x

print "x is ", x

x = 1

x = 3

func()

print x

#3

#1

3. 默認參數

通過使用默認參數可以使函數的一些參數是『可選的』。

def say(msg, times = 1):

print msg * times

say("peter")

say("peter", 3)

注意:只有在形參表末尾的那些參數可以有默認參數值,即不能在聲明函數形參的時候,先聲明有默認值的形參而後聲明沒有默認值的形參,只是因為賦給形參的值是根據位置而賦值的。

4. 關鍵參數

如果某個函數有很多參數,而現在只想指定其中的部分,那麼可以通過命名為這些參數賦值(稱為『關鍵參數』)。

優點:不必擔心參數的順序,使函數變的更加簡單;假設其他參數都有默認值,可以只給我們想要的那些參數賦值。

def func(a, b=2, c=3):

print "a is %s, b is %s, c is %s" % (a, b, c)

func(1) #a is 1, b is 2, c is 3

func(1, 5) #a is 1, b is 5, c is 3

func(1, c = 10) #a is 1, b is 2, c is 10

func(c = 20, a = 30) #a is 30, b is 2, c is 20

5. return 語句

return語句用來從一個函數返回,即跳出函數。可從函數返回一個值。

沒有返回值的return語句等價於return None。None表示沒有任何東西的特殊類型。

6. DocStrings(文檔字符串)

def func():

'''This is self-defined function

Do nothing'''

pass

print func.__doc__

#This is self-defined function

#

#Do nothing

五、模塊

模塊就是一個包含了所有你定義的函數和變量的文件,模塊必須以.py為擴展名。模塊可以從其他程序中『輸入』(import)以便利用它的功能。

在python程序中導入其他模塊使用'import', 所導入的模塊必須在sys.path所列的目錄中,因為sys.path第一個字符串是空串''即當前目錄,所以程序中可導入當前目錄的模塊。

1. 字節編譯的.pyc文件

導入模塊比較費時,python做了優化,以便導入模塊更快些。一種方法是創建字節編譯的文件,這些文件以.pyc為擴展名。

pyc是一種二進位文件,是py文件經編譯後產生的一種byte code,而且是跨平台的(平台無關)字節碼,是有python虛擬機執行的,類似於

java或.net虛擬機的概念。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc文件是不同的。

2. from .. import

如果想直接使用其他模塊的變量或其他,而不加'模塊名+.'前綴,可以使用from .. import。

例如想直接使用sys的argv,from sys import argv 或 from sys import *

3. 模塊的__name__

每個模塊都有一個名稱,py文件對應模塊名默認為py文件名,也可在py文件中為__name__賦值;如果是__name__,說明這個模塊被用戶

單獨運行。

4. dir()函數

dir(sys)返回sys模塊的名稱列表;如果不提供參數,即dir(),則返回當前模塊中定義名稱列表。

del -> 刪除一個變量/名稱,del之後,該變量就不能再使用。

六、數據結構

python有三種內建的數據結構:列表、元組和字典。

1. 列表

list是處理一組有序項目的數據結構,列表是可變的數據結構。列表的項目包含在方括號[]中,eg: [1, 2, 3], 空列表[]。判斷列表中是否包含某項可以使用in, 比如 l = [1, 2, 3]; print 1 in l; #True;支持索引和切片操作;索引時若超出範圍,則IndexError;使用函數len()查看長度;使用del可以刪除列表中的項,eg: del l[0] # 如果超出範圍,則IndexError

list函數如下:

append(value)---向列表尾添加項value

l = [1, 2, 2]

l.append(3) #[1, 2, 2, 3]

count(value)---返回列表中值為value的項的個數

l = [1, 2, 2]

print l.count(2) # 2

extend(list2)---向列表尾添加列表list2

l = [1, 2, 2]

l1 = [10, 20]

l.extend(l1)

print l #[1, 2, 2, 10, 20]

index(value, [start, [stop]])---返回列表中第一個出現的值為value的索引,如果沒有,則異常 ValueError

l = [1, 2, 2]

a = 4

try:

print l.index(a)

except ValueError, ve:

print "there is no %d in list" % a

insert(i, value)---向列表i位置插入項vlaue,如果沒有i,則添加到列表尾部

l = [1, 2, 2]

l.insert(1, 100)

print l #[1, 100, 2, 2]

l.insert(100, 1000)

print l #[1, 100, 2, 2, 1000]

pop([i])---返回i位置項,並從列表中刪除;如果不提供參數,則刪除最後一個項;如果提供,但是i超出索引範圍,則異常IndexError

l = [0, 1, 2, 3, 4, 5]

print l.pop() # 5

print l #[0, 1, 2, 3, 4]

print l.pop(1) #1

print l #[0, 2, 3, 4]

try:

l.pop(100)

except IndexError, ie:

print "index out of range"

remove(value)---刪除列表中第一次出現的value,如果列表中沒有vlaue,則異常ValueError

l = [1, 2, 3, 1, 2, 3]

l.remove(2)

print l #[1, 3, 1, 2, 3]

try:

l.remove(10)

except ValueError, ve:

print "there is no 10 in list"

reverse()---列表反轉

l = [1, 2, 3]

l.reverse()

print l #[3, 2, 1]

sort(cmp=None, key=None, reverse=False)---列表排序

【Python Library Reference】

cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument:

"cmp=lambda x,y: cmp(x.lower(), y.lower())"

key:key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower"

reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying an

equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.

l5 = [10, 5, 20, 1, 30]

l5.sort()

print l5 #[1, 5, 10, 20, 30]

l6 = ["bcd", "abc", "cde", "bbb"]

l6.sort(cmp = lambda s1, s2: cmp(s1[0],s2[1]))

print l6 #['abc', 'bbb', 'bcd', 'cde']

l7 = ["bcd", "abc", "cde", "bbb", "faf"]

l7.sort(key = lambda s: s[1])

print l7 #['faf', 'abc', 'bbb', 'bcd', 'cde']

這邊分享出的是語法第一部分,對Python開發技術感興趣的同學,歡迎加QQ群:862672474,一起學習,相互討論。

如何一起學習,有沒有免費資料?

群內已經有小夥伴將知識體系整理好(源碼,筆記,PPT,學習影片),歡迎加群免費領取。

聲明:文章觀點僅代表作者本人,PTTZH僅提供信息發布平台存儲空間服務。
喔!快樂的時光竟然這麼快就過⋯