一、基本概念
1.內(nèi)置的變量類型:
Python是有變量類型的,而且會(huì)強(qiáng)制檢查變量類型。內(nèi)置的變量類型有如下幾種:
#浮點(diǎn)
float_number?=?2.3
#復(fù)數(shù)
complex_number?=?1?+?5j
#整型
integer_number?=?1
#list 序列
sample_list?=?[2,52,36,'abc']
#嵌套
sample_nest?=?[(2,4,6),{5:7,9:11,'key':[2,5]},6]
#dictionary 字典
sample_dic?=?{"key":value, 5:10}
#tuple 只讀的序列
sample_tuple?=?(3,9,"ab")
從上面的示例可以看出,python的變量無需聲明,可直接給變量賦值。
2.字符串
python中聲明一個(gè)字符串通常有三種方法,''、" "和''' ''',這三種方法在聲明普通字符串時(shí)的效果是完全一樣的,區(qū)別在于字符串本身中存在引號的情況,舉例如下:
word?=?'good'
sentence?=?"hello world"
paragraph?=?'''good noon:"nice to meet you."'''
python中單行注釋采用#開頭。
#!/usr/bin/python
# First comment
print "Hello, world!"; # second comment
上述內(nèi)容輸出:hello,Python!。注釋可以在語句或表達(dá)式行末。
多行注釋可采用三引號,比如:
'''This is a comment.
This is a comment, too.
This is a comment, too.
I said that already.'''
轉(zhuǎn)義符 '';
自然字符串, 通過在字符串前加r或R。 如 r"this is a line with " 則 會(huì)顯示,并不是換行。
python允許處理unicode字符串,加前綴u或U, 如 u"this is an unicode string"。
3.Python標(biāo)識(shí)符
在python里,標(biāo)識(shí)符有字母、數(shù)字、下劃線組成。
在python中,所有標(biāo)識(shí)符可以包括英文、數(shù)字以及下劃線(_),但不能以數(shù)字開頭。
python中的標(biāo)識(shí)符是區(qū)分大小寫的。
以下劃線開頭的標(biāo)識(shí)符是有特殊意義的。以單下劃線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進(jìn)行訪問,不能用"from xxx import *"而導(dǎo)入;
以雙下劃線開頭的(__foo)代表類的私有成員;以雙下劃線開頭和結(jié)尾的(__foo__)代表python里特殊方法專用的標(biāo)識(shí),如__init__()代表類的構(gòu)造函數(shù)。
4.Python保留字符
下面的列表顯示了在Python中的保留字。這些保留字不能用作常數(shù)或變數(shù),或任何其他標(biāo)識(shí)符名稱。
所有Python的關(guān)鍵字只包含小寫字母。
5.行和縮進(jìn)
學(xué)習(xí)Python與其他語言最大的區(qū)別就是,Python的代碼塊不使用大括號({})來控制類,函數(shù)以及其他邏輯判斷。python最具特色的就是用縮進(jìn)來寫模塊。
縮進(jìn)的空白數(shù)量是可變的,但是所有代碼塊語句必須包含相同的縮進(jìn)空白數(shù)量,這個(gè)必須嚴(yán)格執(zhí)行。如下所示:
if?True:
print?"True"
else:
print?"False"
上述,if與else的縮進(jìn)空白數(shù)量相同。以下代碼將會(huì)報(bào)錯(cuò):
if?True:
print?"Answer"
print "True"
else:
print "Answer"
print?"False"
python中分號;標(biāo)識(shí)一個(gè)邏輯行的結(jié)束,但是實(shí)際中一般每個(gè)物理行只寫一個(gè)邏輯行,可以避免使用分號。這樣書寫便于閱讀。注意:不要混合使用空格和制表符來縮進(jìn),因?yàn)樵诳缭讲煌钠脚_(tái)時(shí)無法正常工作。
多個(gè)物理行中可以寫一個(gè)邏輯行,使用行連接符,如下:
s?=?"peter?is
writing this article"
二、運(yùn)算符與表達(dá)式
1. 運(yùn)算符與其用法

2. 運(yùn)算符優(yōu)先級(從低到高)
我剛整理了一套2018最新的0基礎(chǔ)入門和進(jìn)階教程,無私分享,加Python學(xué)習(xí)q u n?:227-435-450即可獲取,內(nèi)附:開發(fā)工具和安裝包,以及系統(tǒng)學(xué)習(xí)路線圖
三.控制流
1. 條件語句
1.1 if語句
例子, 執(zhí)行if語句內(nèi)的程序
a?=?input("a:")
b?=?input("b:")
if(a > b):
print a, " > ", b
if else語句:
a?=?input("a:")
b?=?input("b:")
if(a > b):
print a, " > ", b
else:
print a, " < ", b
1.2 if…elif…else語句
例子:根據(jù)輸入的分?jǐn)?shù),輸出分?jǐn)?shù)等級:
score?=?raw_input("score:")
score=int(score)
if(score >=?90)?and?(score <=?100):
print?"A"
elif(score >=?80)?and?(score < 90):
print?"B"
elif(score >=?60)?and?(score < 80):
print "C"
else:
print "D"
raw_input() 讀取輸入值。
1.3 if語句的嵌套
編寫條件語句時(shí),應(yīng)該盡量避免使用嵌套語句。嵌套語句不便于閱讀,而且可能會(huì)忽略一些可能性。
x?=?-1
y?=?99
if(x >=?0):
if(x > 0): #嵌套的if語句
y?=?1
else:
y?=?0
else:
y?=?-1
print "y =", y
1.4 實(shí)現(xiàn)switch語句的功能
python中沒有switch特殊字,Python可以通過字典實(shí)現(xiàn)switch語句的功能。
實(shí)現(xiàn)方法分兩步。首先,定義一個(gè)字典。字典是由鍵值對組成的集合。其次,調(diào)用字典的get()獲取相應(yīng)的表達(dá)式。
from?__future__?import?division
x?=?1
y?=?2
operator?=?"/"
result?=?{
"+" : x?+?y,
"-" : x?-?y,
"*" : x?*?y,
"/" : x?/?y
}
print result.get(operator)
輸出為0.5;
另一種使用switch分支語句的方案是創(chuàng)建一個(gè)switch類,處理程序的流程。
a) 創(chuàng)建一個(gè)switch類,該類繼承自Python的祖先類object。調(diào)用構(gòu)造函數(shù)init( )初始化需要匹配的字符串,并需要定義兩個(gè)成員變量value和fall。Value用于存放需要匹配的字符串,fall用于記錄是否匹配成功,初始值為false,標(biāo)識(shí)匹配不成功。如果匹配成功,程序往后執(zhí)行。
b) 定義一個(gè)match( )方法,該方法用于用于匹配case子句。這里需要考慮三種情況:首先是匹配成功的情況,其次是匹配失敗的默認(rèn)case子句,最后是case子句中沒有使用break中斷的情況。
c) 重寫__iter__( )方法,定義該方法后才能使switch類用于循環(huán)語句中。__iter__( )調(diào)用match( )方法進(jìn)行匹配。通過yield保留字,使函數(shù)可以在循環(huán)中迭代。此外,調(diào)用StopIteration異常中斷循環(huán)。
d) 編寫調(diào)用代碼,在for…in…循環(huán)中使用switch類。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class?switch(object):
def?__init__(self, value): # 初始化需要匹配的值value
self.value?=?value
self.fall?=?False # 如果匹配到的case語句中沒有break,則fall為true。
def?__iter__(self):
yield?self.match # 調(diào)用match方法 返回一個(gè)生成器
raise?StopIteration # StopIteration 異常來判斷for循環(huán)是否結(jié)束
def?match(self,?*args): # 模擬case子句的方法
if?self.fall?or?not?args: # 如果fall為true,則繼續(xù)執(zhí)行下面的case子句
# 或case子句沒有匹配項(xiàng),則流轉(zhuǎn)到默認(rèn)分支。
return?True
elif?self.value?in?args: # 匹配成功
self.fall?=?True
return?True
else: # 匹配失敗
return?False
operator?=?"+"
x?=?1
y?=?2
for?case?in?switch(operator): # switch只能用于for in循環(huán)中
if?case('+'):
print x?+?y
break
if?case('-'):
print?x?-?y
break
if?case('*'):
print?x?*?y
break
if?case('/'):
print?x?/?y
break
if?case(): # 默認(rèn)分支
print?""
2.while...語句
只要在一個(gè)條件為真的情況下,while語句允許你重復(fù)執(zhí)行一塊語句。while語句是所謂 循環(huán) 語句的一個(gè)例子。while語句有一個(gè)可選的else從句。
while?True:
pass
else:
pass
#else語句可選,當(dāng)while為False時(shí),else語句被執(zhí)行。 pass是空語句。
3.for 循環(huán)
for?i?in?range(0, 5):
print i
else:
pass
# 打印0到4
注:當(dāng)for循環(huán)結(jié)束后執(zhí)行else語句;range(a, b)返回一個(gè)序列,從a開始到b為止,但不包括b,range默認(rèn)步長為1,可以指定步長,range(0,10,2);
四、函數(shù)
函數(shù)通過def定義。def關(guān)鍵字后跟函數(shù)的標(biāo)識(shí)符名稱,然后跟一對圓括號,括號之內(nèi)可以包含一些變量名,該行以冒號結(jié)尾;接下來是一塊語句,即函數(shù)體。
def?sumOf(a, b):
return?a?+?b
4.1 局部變量
在函數(shù)內(nèi)定義的變量與函數(shù)外具有相同名稱的其他變量沒有任何關(guān)系,即變量名稱對于函數(shù)來說是局部的。這稱為變量的作用域。global語句, 為定義在函數(shù)外的變量賦值時(shí)使用global語句。
def?func():
global?x
print "x is ", x
x?=?1
x?=?3
func()
print?x
以上代碼,輸出的結(jié)果為:
3
1
4.2 默認(rèn)參數(shù)
通過使用默認(rèn)參數(shù)可以使函數(shù)的一些參數(shù)是‘可選的’。
def?say(msg, times?=?1):
print msg?*?times
say("peter")
say("peter", 3)
注意:只有在形參表末尾的那些參數(shù)可以有默認(rèn)參數(shù)值,即不能在聲明函數(shù)形參的時(shí)候,先聲明有默認(rèn)值的形參而后聲明沒有默認(rèn)值的形參,只是因?yàn)橘x給形參的值是根據(jù)位置而賦值的。
4.3 關(guān)鍵參數(shù)
如果某個(gè)函數(shù)有很多參數(shù),而現(xiàn)在只想指定其中的部分,那么可以通過命名為這些參數(shù)賦值(稱為‘關(guān)鍵參數(shù)’)。
優(yōu)點(diǎn):不必?fù)?dān)心參數(shù)的順序,使函數(shù)變的更加簡單;假設(shè)其他參數(shù)都有默認(rèn)值,可以只給我們想要的那些參數(shù)賦值。
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
4.3 return語句
return語句用來從一個(gè)函數(shù)返回,即跳出函數(shù)??蓮暮瘮?shù)返回一個(gè)值。
沒有返回值的return語句等價(jià)于return None。None表示沒有任何東西的特殊類型