Python與Perl,C和Java語(yǔ)言等有許多相似之處。不過(guò),也有語(yǔ)言之間有一些明確的區(qū)別。本章的目的是讓你迅速學(xué)習(xí)Python的語(yǔ)法。
第一個(gè)Python程序:
交互模式編程:
調(diào)用解釋器不經(jīng)過(guò)腳本文件作為參數(shù),顯示以下提示:
$ python Python 2.6.4 (#1, Nov 11 2014, 13:34:43) [GCC 4.1.2 20120704 (Red Hat 5.6.2-48)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
鍵入下列文字在Python提示符,然后按Enter鍵:
>>> print "Hello, Python!";
如果您運(yùn)行的是新的Python版本,那么需要使用打印語(yǔ)句括號(hào)像print ("Hello, Python!");。但是在Python版本2.6.4,這將產(chǎn)生以下結(jié)果:
Hello, Python!
腳本模式編程:
調(diào)用解釋器及腳本作為參數(shù),并開始執(zhí)行的腳本,并一直持續(xù)到腳本完成。當(dāng)腳本完成時(shí),解釋器不再是活動(dòng)的。
讓我們?cè)谀_本中編寫一個(gè)簡(jiǎn)單的Python程序。所有的Python文件將具有.py擴(kuò)展。所以,把下面的代碼寫在一個(gè)test.py文件。
print "Hello, Python!";
在這里,我假設(shè)你已經(jīng)在PATH變量中設(shè)置Python解釋器。現(xiàn)在,嘗試如下運(yùn)行這個(gè)程序:
$ python test.py
這將產(chǎn)生以下結(jié)果:
Hello, Python!
讓我們嘗試另一種方式來(lái)執(zhí)行Python腳本。下面是修改后的test.py文件:
#!/usr/bin/python
print "Hello, Python!";
在這里,假設(shè)Python解釋器在/usr/bin目錄中可用。現(xiàn)在,嘗試如下運(yùn)行這個(gè)程序:
$ chmod +x test.py???? # This is to make file executable
$./test.py
這將產(chǎn)生以下結(jié)果:
Hello, Python!
Python標(biāo)識(shí)符:
Python標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)一個(gè)變量,函數(shù),類,模塊或其他對(duì)象的名稱。一個(gè)標(biāo)識(shí)符開始以字母A到Z或a?z或后跟零個(gè)或多個(gè)字母下劃線(_),下劃線和數(shù)字(0?9)。
Python中標(biāo)識(shí)符內(nèi)不允許標(biāo)點(diǎn)符號(hào),如@,$和%。 Python是一種區(qū)分大小寫的編程語(yǔ)言。因此,Manpower 和manpower在Python中是兩個(gè)不同的標(biāo)識(shí)符。
這里有Python標(biāo)識(shí)符命名約定:
? 類名以大寫字母以及所有其它標(biāo)識(shí)符以小寫字母。
? 開頭單個(gè)前導(dǎo)下劃線的標(biāo)識(shí)符表示由該標(biāo)識(shí)符約定意思是私有的。
? 開頭兩個(gè)前導(dǎo)下劃線的標(biāo)識(shí)符表示一個(gè)強(qiáng)烈的私有的標(biāo)識(shí)符。
? 如果標(biāo)識(shí)符末尾還具有兩個(gè)下劃線結(jié)束時(shí),該標(biāo)識(shí)符是一個(gè)語(yǔ)言定義的特殊名稱。
保留字:
下面列出了在Python中的保留字。這些保留字不可以被用作常量或變量,或任何其它標(biāo)識(shí)符。所有Python關(guān)鍵字只包含小寫字母。
and | exec | not |
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
行和縮進(jìn):
一個(gè)程序員學(xué)習(xí)Python時(shí),遇到的第一個(gè)需要注意的地方是,不使用括號(hào)來(lái)表示代碼的類和函數(shù)定義塊或流程控制。代碼塊是由行縮進(jìn),這是嚴(yán)格執(zhí)行表示方式。
在縮進(jìn)位的數(shù)目是可變的,但是在塊中的所有語(yǔ)句必須縮進(jìn)相同的量。在這個(gè)例子中,兩個(gè)功能塊都很好使用:
if True: print "True" else: print "False"
然而,在本實(shí)施例中的第二塊將產(chǎn)生一個(gè)錯(cuò)誤:
if True: print "Answer" print "True" else: print "Answer" print "False"
因此,在Python中所有的連續(xù)線縮進(jìn)的空格數(shù)同樣的會(huì)結(jié)成塊。以下是各種語(yǔ)句塊中的例子:
注意:不要試圖理解所使用的邏輯或不同的功能。只要確定你明白,即使他們各種模塊無(wú)需括號(hào)。
#!/usr/bin/python import sys try: # open file stream file = open(file_name, "w") except IOError: print "There was an error writing to", file_name sys.exit() print "Enter '", file_finish, print "' When finished" while file_text != file_finish: file_text = raw_input("Enter text: ") if file_text == file_finish: # close the file file.close break file.write(file_text) file.write(" ") file.close() file_name = raw_input("Enter filename: ") if len(file_name) == 0: print "Next time please enter something" sys.exit() try: file = open(file_name, "r") except IOError: print "There was an error reading file" sys.exit() file_text = file.read() file.close() print file_text
多行語(yǔ)句:
Python語(yǔ)句通常用一個(gè)新行結(jié)束。 但是,Python允許使用續(xù)行字符()來(lái)表示,該行應(yīng)該繼續(xù)下去(跨行)。例如:
total = item_one + item_two + item_three
包含在[],{}或()括號(hào)內(nèi)的陳述并不需要使用續(xù)行符。例如:
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
Python引號(hào):
Python接受單引號(hào)('),雙引號(hào)(“)和三(''或”“”)引用,以表示字符串常量,只要是同一類型的引號(hào)開始和結(jié)束的字符串。
三重引號(hào)可以用于跨越多個(gè)行的字符串。例如,所有下列是合法的:
word = 'word' sentence = "This is a sentence." paragraph = """This is a paragraph. It is made up of multiple lines and sentences."""
Python注釋:
一個(gè)井號(hào)(#),這不是一個(gè)字符串文字開頭的注釋。“#”號(hào)之后字符和到物理行是注釋的一部分,Python解釋器會(huì)忽略它們。
#!/usr/bin/python # First comment print "Hello, Python!"; # second comment
這將產(chǎn)生以下結(jié)果:
Hello, Python!
注釋可能會(huì)在聲明中表達(dá)或同一行之后:
name = "Madisetti" # This is again comment
你可以使用多行注釋如下:
# This is a comment. # This is a comment, too. # This is a comment, too. # I said that already.
使用空行:
一行只含有空格,可能帶有注釋,如果是空行那么Python完全忽略它。
在交互式解釋器會(huì)話中,必須輸入一個(gè)空的物理行終止多行語(yǔ)句。
等待用戶:
程序的下面一行顯示的提示,按回車鍵退出,等待用戶按下回車鍵:
#!/usr/bin/python raw_input("Press the enter key to exit.")
在這里,“ 已”被用來(lái)顯示實(shí)際行之前創(chuàng)建兩個(gè)換行。一旦用戶按下鍵時(shí),程序結(jié)束。這是一個(gè)很好的技巧,保持一個(gè)控制臺(tái)窗口打開,直到用戶完成應(yīng)用程序運(yùn)行。
在一行中多個(gè)語(yǔ)句:
分號(hào)( ; ) 允許在單行寫入多條語(yǔ)句,不管語(yǔ)句是否啟動(dòng)一個(gè)新的代碼塊。下面是使用分號(hào)示例:
import sys; x = 'foo'; sys.stdout.write(x + '')
多個(gè)語(yǔ)句組作為套件:
一組單獨(dú)的語(yǔ)句,在Python單一的代碼塊被稱為序列。復(fù)雜的語(yǔ)句,如if, while, def, and class,那些需要一個(gè)標(biāo)題行和套件。
標(biāo)題行開始的聲明(與關(guān)鍵字),并終止與冒號(hào)(:)),接著是一個(gè)或多個(gè)線構(gòu)成該套件。例如:
if expression : suite elif expression : suite else : suite
命令行參數(shù):
我們可能已經(jīng)看到了,比如,很多程序可以運(yùn)行,它們提供有關(guān)如何運(yùn)行的一些基本信息。 Python中可以使用 -h 做到這一點(diǎn):
$ python -h usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -c cmd : program passed in as string (terminates option list) -d : debug output from parser (also PYTHONDEBUG=x) -E : ignore environment variables (such as PYTHONPATH) -h : print this help message and exit [ etc. ]
您也可以設(shè)定您的腳本,它應(yīng)該以這樣的方式接受各種選項(xiàng)。 命令行參數(shù)是一個(gè)高級(jí)主題并在以后學(xué)習(xí),當(dāng)您通過(guò)其它的Python概念后。
以下是補(bǔ)充:
Python中查看變量對(duì)應(yīng)的地址用函數(shù)id(var)。
?
注意在Python中與在C語(yǔ)言中有一些不同的地方。比如:a = 10,在Python中是這樣的,數(shù)值10在內(nèi)存中開辟一塊空間來(lái)存放數(shù)據(jù)10,然后用a去引用這個(gè)10,所以這里a相當(dāng)于一個(gè)標(biāo)簽,如果a被重新賦值了,相當(dāng)于a又指向了另一個(gè)地址,比如a = 1000,那么a指向了數(shù)據(jù)1000的地址,在這點(diǎn)與C語(yǔ)言有很大的不同。
?
所以相同的數(shù)據(jù)用不同的變量去引用,它們的地址一樣,比如:
a = 123???? b = 123
然后我們輸出id(a)和id(b)會(huì)發(fā)現(xiàn)這兩個(gè)值完全一樣
Python中的復(fù)數(shù)
?? 在Python中復(fù)數(shù)類型的虛部用j表示的,比如a = 3 + 4j
可以直接進(jìn)行計(jì)算。
?
Python中序列的基本操作
?????
(1)len()??? 求序列的長(zhǎng)度
(2)+??????? 序列拼接
(3)*??????? 重復(fù)序列元素
(4)in?????? 判斷元素是否在序列中
(5)max()與min()??? 返回序列的最大值和最小值
(6)compare(str1,str2)?? str1小于str2返回-1,等于返回0,大于返回1
?
元組
? a,b,c = (1,2,3)
? t = (“name”,30,”school”)
?
列表??
? list = [“name”,30,”school”]
可以看出,元組是用(),而列表用[],另外在元組中不能改變單個(gè)元素的值,而列表可以。
Python里面增加了**運(yùn)算符和//運(yùn)算符
**用于冪的計(jì)算,比如計(jì)算2的3次方,就直接a=2**3
>>> a = 2**3 >>> print a 8 >>>
//用于向下取模,主要用于浮點(diǎn)數(shù),比如3//1.7 = 1.0
>>> a = 3//1.7 >>> print a 1.0 >>>
數(shù)字類型的內(nèi)建函數(shù)
轉(zhuǎn)換函數(shù):將其他類型的數(shù)字轉(zhuǎn)換為相應(yīng)類型
int()、long()、float()、complex()
bool()
>>> a = 6 >>> b=complex(a) >>> print b (6+0j) >>>
功能函數(shù):
abs(num) 絕對(duì)值
coerce(num1,num2) 將num1和num2轉(zhuǎn)換為同一類型,然后以一個(gè)元組的形式返回
>>> a=3.14159 >>> b=100 >>> print coerce(a,b) (3.14159, 100.0) >>>
divmod(num1,num2) 獲得商和余數(shù)的元組
>>> a=9 >>> b=6 >>> print divmod(a,b) (1, 3) >>>
pow(num1,num2,mod=1) 快速冪取模運(yùn)算
>>> a=2 >>> b=3 >>> print pow(a,b,5) 3
round(flt,ndig=1) 對(duì)浮點(diǎn)型進(jìn)行四舍五入運(yùn)算
>>> print round(3.1415926,4) 3.1416 >>>
列表類型內(nèi)建函數(shù)
list.append(obj) 向列表中添加一個(gè)對(duì)象obj
list.count(obj) 返回一個(gè)對(duì)象obj在列表中出現(xiàn)的次數(shù)
list.extend(obj) 把序列obj中的內(nèi)容添加到列表中
list.index(obj,i=0,j=len(list)) 返回list[k]
list.insert(index,obj) 在index位置插入對(duì)象obj
list.pop(index=-1) 刪除并返回指定位置的對(duì)象,默認(rèn)是最后一個(gè)對(duì)象
list.remove(obj) 從列表中刪除對(duì)象obj
list.reversed()
list.sort()
>>> arr = [1,1,5,6,9,7,3,2,11,56,45,78,100,55,0,5,9,10] >>> arr.append(89) >>> print arr [1, 1, 5, 6, 9, 7, 3, 2, 11, 56, 45, 78, 100, 55, 0, 5, 9, 10, 89] >>> print arr.count(5) 2 >>> arr1 = [123,456,789] >>> arr.extend(arr1) >>> print arr [1, 1, 5, 6, 9, 7, 3, 2, 11, 56, 45, 78, 100, 55, 0, 5, 9, 10, 89, 123, 456, 789] >>> arr.insert(1,999) >>> print arr [1, 999, 1, 5, 6, 9, 7, 3, 2, 11, 56, 45, 78, 100, 55, 0, 5, 9, 10, 89, 123, 456, 789] >>> arr.pop(0) 1 >>> print arr [999, 1, 5, 6, 9, 7, 3, 2, 11, 56, 45, 78, 100, 55, 0, 5, 9, 10, 89, 123, 456, 789] >>> arr.remove(999) >>> print arr [1, 5, 6, 9, 7, 3, 2, 11, 56, 45, 78, 100, 55, 0, 5, 9, 10, 89, 123, 456, 789] >>> arr.sort() >>> print arr [0, 1, 2, 3, 5, 5, 6, 7, 9, 9, 10, 11, 45, 55, 56, 78, 89, 100, 123, 456, 789] >>>
列表有容器和可變特性
堆棧―后進(jìn)先出
list.append() 向隊(duì)列尾部添加
list.pop() 從隊(duì)列尾部刪除
隊(duì)列―先進(jìn)先出
list.append() 向隊(duì)列尾部添加
list.pop(0) 從隊(duì)列頭部刪除
字典類型:
訪問字典中的值
通過(guò)鍵訪問相應(yīng)的值 dict2['name']
訪問字典的鍵 dict2.keys(),返回一個(gè)列表
訪問字典的值 dict2.values(), 返回一個(gè)列表
遍歷一個(gè)字典
執(zhí)行中字典的鍵不能被改變
刪除字典元素和字典 del dict2[name] del dict2
>>> dict = {'name':'goujinping','age':'21','sex':'man','school':'NEFU'} >>> print dict {'age': '21', 'school': 'NEFU', 'name': 'goujinping', 'sex': 'man'} >>> dict['age'] '21' >>> print dict['name'] goujinping >>> print dict['age'] 21 >>> for key in dict.keys(): print key age school name sex >>> for value in dict.values(): print value 21 NEFU goujinping man >>> del dict['sex'] >>> print dict {'age': '21', 'school': 'NEFU', 'name': 'goujinping'} >>> del dict['school'] >>> print dict {'age': '21', 'name': 'goujinping'} >>> del dict >>> print dict>>>
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
