淺讀Python開(kāi)發(fā)語(yǔ)言形式問(wèn)題
Python開(kāi)發(fā)語(yǔ)言是一種動(dòng)態(tài)語(yǔ)言,同一變量名可以在程序運(yùn)行的不同階段代表不同形式比如整型,浮點(diǎn),列表,元組...。Python開(kāi)發(fā)語(yǔ)言與C語(yǔ)言不同的是,C語(yǔ)言中變量名代表的是用來(lái)存放結(jié)果的一個(gè)固定位置及長(zhǎng)度的內(nèi)存片段。
從例子Listing 1.1中的變量principal可以看出Python開(kāi)發(fā)語(yǔ)言的動(dòng)態(tài)特性.最初,它被賦值為一個(gè)整數(shù),但是稍后程序?qū)⑺俅钨x值: 這個(gè)語(yǔ)句計(jì)算表達(dá)式的值,然后將計(jì)算結(jié)果賦給 principal 變量做為它的新值。當(dāng)賦值動(dòng)作發(fā)生時(shí),principal最初綁定的值1000被丟棄。
賦值結(jié)束,不但 principal 綁定的值發(fā)生了變化,它的類型也隨著賦值動(dòng)作發(fā)生了相應(yīng)的變化。在這個(gè)例子中,由于rate是一個(gè)浮點(diǎn)數(shù),所以在賦值完成后,principal也變成一個(gè)浮點(diǎn)數(shù)。 while 語(yǔ)句首先檢查在它后邊的循環(huán)條件,若條件表達(dá)式為真,它就執(zhí)行冒號(hào)后面的語(yǔ)句塊,然后再次測(cè)試循環(huán)條件,直至為假。
冒號(hào)后面的縮近語(yǔ)句塊為循環(huán)體。注意,Python開(kāi)發(fā)語(yǔ)言使用縮進(jìn)塊來(lái)表示程序邏輯(其它大多數(shù)語(yǔ)言使用大括號(hào)等)。在Listing 1.1中while語(yǔ)句后的三條語(yǔ)句為循環(huán)體,在每次循環(huán)中均執(zhí)行。Python開(kāi)發(fā)語(yǔ)言并未指定縮進(jìn)的空白(空格和制表符)數(shù)目。
唯一的要求是同一層次的語(yǔ)句必須有相同的縮進(jìn)空白。(注意,要么都是空格,要是么都制表符,千萬(wàn)別混用) 格式字符串包含普通文本及格式化字符序列(例如"%d", "%s", 和 "%f"),這些序列決定特定類型的數(shù)據(jù)(如整型,字符串,浮點(diǎn)數(shù))的輸出格式。
'%3d'將一個(gè)整數(shù)在寬度為3個(gè)字符的欄中右對(duì)齊,'%0.2f'將一個(gè)浮點(diǎn)數(shù)的小數(shù)點(diǎn)后部分轉(zhuǎn)換為2位。格式字符串的作用和C語(yǔ)言中的sprintf()函數(shù)基本相同。詳細(xì)內(nèi)容請(qǐng)參閱第四章--操作符及表達(dá)式。
open()函數(shù)返回一個(gè)新文件對(duì)象(file object)。通過(guò)調(diào)用此對(duì)象的不同方法可以對(duì)文件進(jìn)行不同的操作。readline()方法讀取文件的一行(包括換行符'\n')。如果讀到文件末尾,就返回一個(gè)空字符串。要將程序的輸出內(nèi)容由屏幕重定向到文件中,可以使用'>>'運(yùn)算符,如下例:
- 1 class Stack(object):
- 2 def __init__(self): # 初始化棧
- 3 self.stack = [ ]
- 4 def push(self,object):
- 5 self.stack.append(object)
- 6 def pop(self):
- 7 return self.stack.pop()
- 8 def length(self):
- 9 return len(self.stack)
表達(dá)式 [float(s) for s in svalues] 通過(guò)循環(huán)列表svalues中的所有字符串并對(duì)每個(gè)元素運(yùn)行函數(shù)float()來(lái)建立一個(gè)新的列表。這種特殊的建立列表的方法叫做列表包含( licomprehension)。 在列表中所有的字符串都轉(zhuǎn)換為浮點(diǎn)數(shù)之后,內(nèi)建函數(shù)min()和max()計(jì)算出列表中的***值及最小值。
盡管字符串是最常見(jiàn)的 關(guān)鍵字(key) 類型,你還是可以使用很多其它的 Python開(kāi)發(fā)語(yǔ)言做為字典的關(guān)鍵字,比如 數(shù)字 和 tuple,只要是不可修改對(duì)象,都可以用來(lái)做字典的key。有些對(duì)象,例如列表和字典,不可以用來(lái)做字典的key,因?yàn)樗麄兊膬?nèi)容是允許更改的。
在類定義中,方法用 def 語(yǔ)句定義。類中每個(gè)方法的***個(gè)參數(shù)總是引用類實(shí)例對(duì)象本身,大家習(xí)慣上使用 self 這個(gè)名字代表這個(gè)參數(shù)。不過(guò)這僅僅是個(gè)習(xí)慣而已,如果你愿意也可以用任意的別的名字。
不過(guò)為了別人容易看懂你的程序,***還是跟隨大家的習(xí)慣。類的方法中若需要調(diào)用實(shí)例對(duì)象的屬性則必須顯式使用self變量(如上所示)。方法名中若前后均有兩個(gè)下劃線,則表示這是一個(gè)特殊方法,比如init方法被用來(lái)初始化一個(gè)對(duì)象(實(shí)例)。
【編輯推薦】