Python的特點
1.簡單
Python是一種代表簡單思想的語言鞋诗。
2.易學
Python有極其簡單的語法。
3.免費撕捍、開源
Python是FLOSS(自由/開放源碼軟件)之一拿穴。
4.高層語言
使用Python編寫程序時無需考慮如何管理程序使用的內存一類的底層細節(jié)。
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解釋器把源代碼轉換為字節(jié)碼的中間形式,然后再把它翻譯成計算機使用的機器語言如迟。
7.面向對象
Python既支持面向過程編程也支持面向對象編程收毫。
8.可擴展性
部分程序可以使用其他語言編寫,如c/c++殷勘。
9.可嵌入型
可以把Python嵌入到c/c++程序中此再,從而提供腳本功能。
10.豐富的庫
Python標準庫確實很龐大玲销。它可以幫助你處理各種工作输拇,包括正則表達式、文檔生成贤斜、單元測試策吠、線程、數據庫瘩绒、網頁瀏覽器猴抹、CGI、FTP锁荔、
電子郵件蟀给、XML、XML-RPC堕战、HTML坤溃、WAV文件拍霜、密碼系統(tǒng)嘱丢、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關的操作祠饺。
---------------分割線------------------------以下是Python的基本語法---------------------------------------------------------
一越驻、基本概念
1. python中數有四種類型:整數、長整數、浮點數和復數缀旁。
整數记劈, 如 1
長整數 是比較大的整數
浮點數 如 1.23、3E-2
復數 如 1 + 2j并巍、 1.1 + 2.2j
2. 字符串(字符的序列)
python中單引號和雙引號使用完全相同目木。
使用三引號('''或""")可以指定一個多行字符串。
轉義符 '\'
自然字符串懊渡, 通過在字符串前加r或R刽射。 如 r"this is a line with \n" 則\n會顯示,并不是換行剃执。
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. 運算符與其用法
運算符名稱說明例子
+加兩個對象相加3 + 5得到8纳寂。'a' + 'b'得到'ab'。
-減得到負數或是一個數減去另一個數-5.2得到一個負數泻拦。50 - 24得到26毙芜。
*乘兩個數相乘或是返回一個被重復若干次的字符串2 * 3得到6。'la' * 3得到'lalala'争拐。
**冪返回x的y次冪3 ** 4得到81(即3 * 3 * 3 * 3)
/除x除以y4/3得到1(整數的除法得到整數結果)腋粥。4.0/3或4/3.0得到1.3333333333333333
//取整除返回商的整數部分4 // 3.0得到1.0
%取模返回除法的余數8%3得到2。-25.5%2.25得到1.5
<<左移把一個數的比特向左移一定數目(每個數在內存中都表示為比特或二進制數字架曹,即0和1)2 << 2得到8灯抛。——2按比特表示為10
>>右移把一個數的比特向右移一定數目11 >> 1得到5音瓷《越溃——11按比特表示為1011,向右移動1比特后得到101绳慎,即十進制的5纵竖。
&按位與數的按位與5 & 3得到1。
|按位或數的按位或5 | 3得到7杏愤。
^按位異或數的按位異或5 ^ 3得到6
~按位翻轉x的按位翻轉是-(x+1)~5得到6靡砌。
<小于返回x是否小于y。所有比較運算符返回1表示真珊楼,返回0表示假通殃。這分別與特殊的變量True和False等價。注意厕宗,這些變量名的大寫画舌。5 < 3返回0(即False)而3 < 5返回1(即True)。比較可以被任意連接:3 < 5 < 7返回True已慢。
>大于返回x是否大于y5 > 3返回True曲聂。如果兩個操作數都是數字,它們首先被轉換為一個共同的類型佑惠。否則朋腋,它總是返回False。
<=小于等于返回x是否小于等于yx = 3; y = 6; x <= y返回True膜楷。
>=大于等于返回x是否大于等于yx = 4; y = 3; x >= y返回True旭咽。
==等于比較對象是否相等x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False赌厅。x = 'str'; y = 'str'; x == y返回True穷绵。
!=不等于比較兩個對象是否不相等x = 2; y = 3; x != y返回True。
not布爾“非”如果x為True察蹲,返回False催训。如果x為False洽议,它返回True宗收。x = True; not y返回False。
and布爾“與”如果x為False亚兄,x and y返回False混稽,否則它返回y的計算值。x = False; y = True; x and y审胚,由于x是False匈勋,返回False。在這里膳叨,Python不會計算y洽洁,因為它知道這個表達式的值肯定是False(因為x是False)。這個現象稱為短路計算菲嘴。
or布爾“或”如果x是True饿自,它返回True,否則它返回y的計算值龄坪。x = True; y = False; x or y返回True昭雌。短路計算在這里也適用。
2. 運算符優(yōu)先級(從低到高)
運算符描述
lambdaLambda表達式
or布爾“或”
and布爾“與”
not x布爾“非”
in健田,not in成員測試
is烛卧,is not同一性測試
<,<=妓局,>总放,>=,!=好爬,==比較
|按位或
^按位異或
&按位與
<<间聊,>>移位
+,-加法與減法
*抵拘,/哎榴,%乘法、除法與取余
+x僵蛛,-x正負號
~x按位翻轉
**指數
x.attribute屬性參考
x[index]下標
x[index:index]尋址段
f(arguments...)函數調用
(experession,...)綁定或元組顯示
[expression,...]列表顯示
{key:datum,...}字典顯示
'expression,...'字符串轉換
3. python 控制臺輸出使用print
print"abc"#打印abc并換行print"abc%s"%"d"#打印abcdprint"abc%sef%s"%?("d","g")#打印abcdefg
三尚蝌、控制流
1. if 語句
i?=?10
n?=?int(raw_input("enter?a?number:"))
ifn?==?i:
print"equal"
elifn?<?i:
print"lower"
else:
print"higher"
2. while語句
whileTrue:
pass
else:
pass
#else語句可選,當while為False時充尉,else語句被執(zhí)行飘言。?pass是空語句。
3. for 循環(huán) for..in
foriinrange(0,5):
printi
else:
pass
#?打印0到4
注:當for循環(huán)結束后執(zhí)行else語句驼侠;
range(a, b)返回一個序列姿鸿,從a開始到b為止谆吴,但不包括b,range默認步長為1苛预,可以指定步長句狼,range(0,10,2);
4. break語句
終止循環(huán)語句热某,如果從for或while中終止腻菇,任何對應循環(huán)的else將不執(zhí)行。
5. continue語句
continue語句用來調過當前循環(huán)的剩余語句昔馋,然后繼續(xù)下一輪循環(huán)筹吐。
四、函數
函數通過def定義秘遏。def關鍵字后跟函數的標識符名稱丘薛,然后跟一對圓括號,括號之內可以包含一些變量名邦危,該行以冒號結尾洋侨;接下來是一塊語句,即函數體铡俐。
defsumOf(a,?b):
returna?+?b
1. 函數形參
函數中的參數名稱為‘形參’凰兑,調用函數時傳遞的值為‘實參’
2. 局部變量
在函數內定義的變量與函數外具有相同名稱的其他變量沒有任何關系,即變量名稱對于函數來說是局部的审丘。這稱為變量的作用域吏够。
global語句, 為定義在函數外的變量賦值時使用global語句滩报。
deffunc():
globalx
print"x?is?",?x
x?=1
x?=3
func()
printx
#3
#1?
3. 默認參數
通過使用默認參數可以使函數的一些參數是‘可選的’锅知。
defsay(msg,times=1):
printmsg?*times
say("peter")
say("peter",3)
注意:只有在形參表末尾的那些參數可以有默認參數值,即不能在聲明函數形參的時候脓钾,先聲明有默認值的形參而后聲明沒有默認值的形參售睹,只是因為賦給形參的值是根據位置而賦值的。
4. 關鍵參數
如果某個函數有很多參數可训,而現在只想指定其中的部分昌妹,那么可以通過命名為這些參數賦值(稱為‘關鍵參數’)。
優(yōu)點:不必擔心參數的順序握截,使函數變的更加簡單飞崖;假設其他參數都有默認值,可以只給我們想要的那些參數賦值谨胞。
deffunc(a,?b=2,?c=3):
print?"ais%s,?bis%s,?cis%s"?%?(a,?b,?c)
func(1)?#ais1,?bis2,?cis3func(1,5)?#ais1,?bis5,?cis3func(1,?c?=10)?#ais1,?bis2,?cis10func(c?=20,?a?=30)?#ais30,?bis2,?cis20
5. return 語句
return語句用來從一個函數返回固歪,即跳出函數背零⌒矗可從函數返回一個值。
沒有返回值的return語句等價于return None入宦。None表示沒有任何東西的特殊類型震捣。
6. DocStrings(文檔字符串)
deffunc():
'''This?is?self-defined?function
Do?nothing'''
pass
printfunc.__doc__
#This?is?self-defined?function
#
#Do?nothing
五瘪弓、模塊
模塊就是一個包含了所有你定義的函數和變量的文件宰掉,模塊必須以.py為擴展名恐仑。模塊可以從其他程序中‘輸入’(import)以便利用它的功能。
在python程序中導入其他模塊使用'import', 所導入的模塊必須在sys.path所列的目錄中伶椿,因為sys.path第一個字符串是空串''即當前目錄辜伟,所以程序中可導入當前目錄的模塊氓侧。
1. 字節(jié)編譯的.pyc文件
導入模塊比較費時脊另,python做了優(yōu)化,以便導入模塊更快些约巷。一種方法是創(chuàng)建字節(jié)編譯的文件偎痛,這些文件以.pyc為擴展名。
pyc是一種二進制文件独郎,是py文件經編譯后產生的一種byte code踩麦,而且是跨平臺的(平臺無關)字節(jié)碼,是有python虛擬機執(zhí)行的氓癌,類似于
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)
printl#[1,?100,?2,?2]
l.insert(100,?1000)
printl#[1,?100,?2,?2,?1000]
pop([i])---返回i位置項准浴,并從列表中刪除;如果不提供參數捎稚,則刪除最后一個項乐横;如果提供,但是i超出索引范圍阳藻,則異常IndexError
l?=?[0,1,2,3,4,5]
printl.pop()#?5print?l?#[0,?1,?2,?3,?4]
printl.pop(1)#1print?l?#[0,?2,?3,?4]
try:
l.pop(100)
exceptIndexError,?ie:
print"index?out?of?range"
remove(value) ---刪除列表中第一次出現的value晰奖,如果列表中沒有vlaue,則異常ValueError
l?=?[1,2,3,1,2,3]
l.remove(2)
printl#[1,?3,?1,?2,?3]
try:
l.remove(10)
exceptValueError,?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?acustomcomparisonfunctionoftwo?arguments?(iterable?elements)?which?shouldreturna?negative,?zeroorpositive?number?dependingonwhether?the?first?argumentisconsidered?smaller?than,?equalto,orlarger?than?the?second?argument:
"cmp=lambda?x,y:?cmp(x.lower(),?y.lower())"
key
作者:Peter
出處:http://www.cnblogs.com/Peter-Zhang/
如果你對編程感興趣或者想往編程方向發(fā)展腥泥,可以關注微信公眾號【筑夢編程】匾南,大家一起交流討論!小編也會每天定時更新既有趣又有用的編程知識蛔外!