探秘豐富多彩的Python語(yǔ)言
Python語(yǔ)言是一種動(dòng)態(tài)語(yǔ)言,在程序運(yùn)行過(guò)程中,同一變量名可以(在程序運(yùn)行的不同階段)代表不同形式的值(整型,浮點(diǎn),列表,元組...)。事實(shí)上,程序中使用的變量名只是各種數(shù)據(jù)及對(duì)象的引用。這與C語(yǔ)言不同,C語(yǔ)言中變量名代表的是用來(lái)存放結(jié)果的一個(gè)固定位置及長(zhǎng)度的內(nèi)存片段。
從例子Listing 1.1中的變量principal可以看出Python語(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ù)。Python中每個(gè)語(yǔ)句以換行結(jié)束,當(dāng)然你也可以在一行中寫(xiě)多個(gè)語(yǔ)句,這時(shí)語(yǔ)句之間必須使用用分號(hào)分隔,就象下面這樣。.
while 語(yǔ)句首先檢查在它后邊的循環(huán)條件,若條件表達(dá)式為真,它就執(zhí)行冒號(hào)后面的語(yǔ)句塊,然后再次測(cè)試循環(huán)條件,直至為假。冒號(hào)后面的縮近語(yǔ)句塊為循環(huán)體。注意,Python語(yǔ)言使用縮進(jìn)塊來(lái)表示程序邏輯(其它大多數(shù)語(yǔ)言使用大括號(hào)等)。在Listing 1.1中while語(yǔ)句后的三條語(yǔ)句為循環(huán)體,在每次循環(huán)中均執(zhí)行。#t#
Python并未指定縮進(jìn)的空白(空格和制表符)數(shù)目,唯一的要求是同一層次的語(yǔ)句必須有相同的縮進(jìn)空白。(注意,要么都是空格,要是么都制表符,千萬(wàn)別混用)Listing 1.1中的程序美中不足的就是輸出不是很好看,為了讓它美觀一點(diǎn),可以用格式字符串將計(jì)算結(jié)果只保留小數(shù)點(diǎn)后兩位。
open()函數(shù)返回一個(gè)新文件對(duì)象(file object)。通過(guò)調(diào)用此對(duì)象的不同方法可以對(duì)文件進(jìn)行不同的操作。readline()方法讀取文件的一行(包括換行符'\n')。如果讀到文件末尾,就返回一個(gè)空字符串。要將程序的輸出內(nèi)容由屏幕重定向到文件中,可以使用'>>'運(yùn)算符,如下例:
- >>> import string
- >>> dir(string)
- ['_ _builtins_ _', '_ _doc_ _', '_ _file_ _', '_ _name_ _', '_idmap',
- '_idmapL', '_lower', '_swapcase', '_upper', 'atof', 'atof_error',
- 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize',
- 'capwords', 'center', 'count', 'digits', 'expandtabs', 'find',
- ...
表達(dá)式 [float(s) for s in svalues] 通過(guò)循環(huán)列表svalues中的所有字符串并對(duì)每個(gè)元素運(yùn)行函數(shù)float()來(lái)建立一個(gè)新的列表。這種特殊的建立列表的方法叫做列表包含( list comprehension)。 在列表中所有的字符串都轉(zhuǎn)換為浮點(diǎn)數(shù)之后,內(nèi)建函數(shù)min()和max()計(jì)算出列表中的***值及最小值。