02 Python 起步 - 《Python 核心編程》

來源:互聯網
上載者:User

標籤:

?? 介紹?? 輸入/輸出?? 注釋?? 操作符?? 變數與賦值?? Python 類型?? 縮排?? 迴圈與條件?? 檔案?? 錯誤?? 函數?? 類?? 模組2.3 注釋 普通注釋    和大部分指令碼及Unix-shell 語言一樣,Python 也使用 # 符號標示注釋,從 # 開始,直到一行結束的內容都是注釋。 
    >>> # one comment 
        ... print ‘Hello World!‘ # another comment 
            Hello World! 文檔字串 
    有一種叫做文檔字串的特別注釋。    你可以在模組、類或者函數的起始添加一個字串,起到線上文檔的功能,這是Java 程式員非常熟悉的一個特性。 
    def foo(): 
        "This is a doc string." 
        return True 
    與普通注釋不同,文檔字串可以在運行時訪問,也可以用來自動產生文檔。編碼聲明注 釋( The -*- symbols)
 # -*- coding: latin-1 -*-
 Python looks for coding: name or coding=name in the comment.
 If you don’t include such a comment, the default encoding used will be ASCII.

Unix Executable Scripts(#!)

    If you are goning to use Pythonon a Unix,  Linux,or Unix-like system, you acan also turen files of Python code into executable programs, much as you would for programs coded in a sheel language such as csh or ksh. Such files are usually called executable scripts. In simple terms, Unix-style executable scripts are just normal text files containing Python statements, but with two special properties:     Their first line is special.          Script usually start with a line that begins with the characters #! (often called "hash bang"), followed by the path(the operating system uses it to find an   interpreter for running the program code in the rest of the file) to the Python interpreter on your machine.     They usually have executable privileges.          Script files are usually marked as executable to tell the opration system that they may be run as top-level programs. On Unix systems, a comamnd such as chmod +x file.py usually does thi trick.2.4 運算子標準運算子:    +     -     *     /     //     %     **    加、減、乘、除和取餘都是標準運算子。    Python 有兩種除法運算子,單斜杠用作傳統除法,雙斜杠用作浮點除法(對結果進行四捨五入)。    傳統除法是指如果兩個運算元都是整數的話,它將執行是地板除(取比商小的最大整數),而浮點除法是真正的除法,不管運算元是什麼類型,浮點除法總是執行真正的除法。還有一個乘方運算子, 雙星號(**)。比較子:<     <=     >     >=     ==     !=     <>邏輯運算子:and     or     not索引運算子:[ ]切片運算子:[ : ]   核心風格: 合理使用括弧增強代碼的可讀性,在很多場合使用括弧都是一個好主意,而沒用括弧的話,會使程式得到錯誤結果,或使代碼可讀性降低,引起閱讀者困惑。。括弧在Python語言中不是必須存在的, 不過為了可讀性, 使用括弧總是值得的。任何維護你代碼的人會感謝你, 在你再次閱讀自己的代碼時,你也會感謝你自己。2.5 變數和賦值    Python 中變數名規則與C語言一樣。Python 是動態類型語言, 也就是說不需要預先聲明變數的類型。 變數的類型和值在賦值那一刻被初始化。變數賦值通過等號來執行。    Python 不支援C 語言中的自增1 和自減1 運算子, 這是因為 + 和 - 也是單目運算子,Python 會將 --n 解釋為-(-n) 從而得到 n , 同樣 ++n 的結果也是 n.2.6 數字    Python 支援五種基本數字類型,其中有三種是整數類型。
?? int (有符號整數)?? long (長整數)?? bool (布爾值) (True(1), False(0))?? float (浮點值)?? complex (複數)布爾值是特殊的整數。 儘管布爾值由常量 True 和 False 來表示, 如果將布爾值放到一個數值上下文環境中(比方將 True 與一個數字相加), True 會被當成整數值 1, 而False則會被當成整數值 0。
2.7 字串    Python 中字串被定義為引號之間的字元集合。Python 支援使用成對的單引號或雙引號,三引號(三個連續的單引號或者雙引號)可以用來包含特殊字元。使用索引運算子( [ ] )和切片運算子( [ : ] )可以得到子字串。字串有其特有的索引規則:第一個字元的索引是 0,最後一個字元的索引是 -1。加號( + )用於字串串連運算,星號( * )則用於字串重複。2.8 列表和元組    可以將列表和元組當成普通的“數組”,它能儲存任意數量任意類型的Python 對象。和數組一樣,通過從0 開始的數字索引訪問元素,但是列表和元組可以儲存不同類型的對象。列表和元組有幾處重要的區別。列表元素用中括弧( [ ])包裹,元素的個數及元素的值可以改變。元組元素用小括弧(( ))包裹,不可以更改(儘管他們的內容可以)。元組可以看成是唯讀列表。    通過切片運算( [ ] 和 [ : ] )可以得到子集,這一點與字串的使用方法一樣。2.9 字典    字典是Python 中的映射資料類型,工作原理類似Perl 中的關聯陣列或者雜湊表,由鍵-值(key-value)對構成。幾乎所有類型的Python 對象都可以用作鍵,不過一般還是以數字或者字串最為常用。值可以是任意類型的Python 對象,字典元素用大括弧({ })包裹。>>> aDict = {‘host‘: ‘earth‘} # create dict >>> aDict[‘port‘] = 80 # add to dict >>> aDict         {‘host‘: ‘earth‘, ‘port‘: 80} >>> aDict.keys()         [‘host‘, ‘port‘] >>> aDict[‘host‘]         ‘earth‘ >>> for key in aDict:         ... print key, aDict[key]         ... host earth2.10 代碼塊及縮排對齊    代碼塊通過縮排對齊表達代碼邏輯而不是使用大括弧,因為沒有了額外的字元,程式的可讀性更高。而且縮排完全能夠清楚地表達一個語句屬於哪個代碼塊。當然,代碼塊也可以只有一個語句組成。    也許你會發現生活中沒有大括弧並不會象你想像的那麼糟糕。2.11 if 語句    標準if 條件陳述式的文法如下:
if expression:    if_suite
    如果運算式的值非0 或者為布爾值True, 則程式碼群組 if_suite 被執行; 否則就去執行下一條語句。 程式碼群組是一個Python 術語, 它由一條或多條語句組成,表示一個子代碼塊。Python與其它語言不同, 條件條達式並不需要用括弧括起來。    Python 當然也支援 else 語句, 文法如下:
if expression:    if_suiteelse:    else_suite
    Python 還支援 elif (意指 “else-if ”)語句,文法如下:
if expression1:    if_suiteelif expression2:    elif_suiteelse:    else_suite
2.12 while 迴圈    標準while 條件迴圈語句的文法類似if. 再說一次, 要使用縮排來分隔每個子代碼塊。
while expression:    while_suite
    語句 while_suite 會被連續不斷的迴圈執行, 直到運算式的值變成 0 或 False; 接著Python 會執行下一句代碼。 類似if 語句, Python 的while 語句中的條件運算式也不需要用括弧括起來。2.13 for 迴圈和range()內建函數    Python 中的for 迴圈與傳統的for 迴圈(計數器迴圈)不太一樣, 它更象shell 指令碼裡的foreach 迭代。Python 中的for 接受可迭代對象(例如序列或迭代器)作為其參數,每次迭代其中一個元素。2.14 列表解析    這是一個讓人欣喜的術語, 表示你可以在一行中使用一個for 迴圈將所有值放到一個列表當中:
>>> squared = [x ** 2 for x in range(4)]>>> for i in squared:
print i
0149
    列表解析甚至能做更複雜的事情, 比如挑選出符合要求的值放入列表:
>>> sqdEvens = [x ** 2 for x in range(8) if not x % 2]>>>>>> for i in sqdEvens:
print i
041636
2.15 檔案和內建函數open() 、file()    在你已經習慣一門語言的文法之後, 檔案訪問是相當重要的一環。在一些工作做完之後,將它儲存到持久儲存是很重要的。如何開啟檔案handle = open(file_name, access_mode = ‘r‘)file_name 變數包含我們希望開啟的檔案的字串名字, access_mode 中 ‘r‘ 表示讀取,‘w‘ 表示寫入, ‘a‘ 表示添加。其它可能用到的標聲還有 ‘+‘ 表示讀寫, ‘b‘表示二進位訪問. 如果未提供 access_mode , 預設值為 ‘r‘。如果 open() 成功, 一個檔案物件控點會被返回。所有後續的檔案操作都必須通過此檔案控制代碼進行。當一個檔案對象返回之後, 我們就可以訪問它的一些方法, 比如 readlines() 和close().檔案對象的方法屬性也必須通過句點屬性標識法訪問核心筆記:什麼是屬性?    屬性是與資料有關的項目, 屬性可以是簡單的資料值, 也可以是可執行對象, 比如函數和方法。哪些對象擁有屬性呢? 很多。 類, 模組, 檔案還有複數等等對象都擁有屬性。    我如何訪問對象屬性? 使用句點屬性標識法。 也就是說在對象名和屬性名稱之間加一個句點: object.attribute.2.16 錯誤和異常    編譯時間會檢查語法錯誤, 不過 Python 也允許在程式運行時檢測錯誤。當檢測到一個錯誤,Python 解譯器就引發一個異常, 並顯示異常的詳細資料。程式員可以根據這些資訊迅速定位問題並進行調試, 並找出處理錯誤的辦法。要給你的代碼添加錯誤偵測及異常處理, 只要將它們封裝在 try-except 語句當中。 try之後的程式碼群組, 就是你打算管理的代碼。 except 之後的程式碼群組, 則是你處理錯誤的代碼。try:filename = raw_input(‘Enter file name: ‘)fobj = open(filename, ‘r‘)for eachLine in fobj:    print eachLine, fobj.close()except IOError, e:    print ‘file open error:‘, e程式員也可以通過使用 raise 語句故意引發一個異常。2.17 函數    類似其它的語言, Python 中的函數使用小括弧( () )調用。函數在調用之前必須先定義。如果函數中沒有 return 語句, 就會自動返回 None 對象。    Python 是通過引用調用的。 這意味著函數內對參數的改變會影響到原始對象。不過事實上只有可變對象會受此影響, 對不可變對象來說, 它的行為類似按值調用。如何定義函數
def function_name([arguments]):    "optional documentation string"    function_suite
    定義一個函數的文法由 def 關鍵字及緊隨其後的函數名再加上該函數需要的幾個參數組成。函數參數(比較上面例子中的arguments)是可選的, 這也是為什麼把它們放到中括弧中的原因。(在你的代碼裡千萬別寫上中括弧!)這個語句由一個冒號(:)結束(與if 和while語句的結束方式一樣), 之後是代表函數體的程式碼群組, 下面是一個簡短的例子:def addMe2Me(x):    ‘apply + operation to argument‘    return (x + x)    這個函數, 乾的是“在我的值上加我”的活。它接受一個對象, 將它的值加到自身, 然後返回和。對於數實值型別參數, 它的結果是顯而易見的, 不過我要在這裡指出, 加號運算子幾乎與所有資料類型工作。換句話說, 幾乎所有的標準資料類型都支援 + 運算子, 不管是數值相加還是序列合并。如何調用函數
>>> addMe2Me(4.25)8.5>>>>>> addMe2Me(10)20>>>>>> addMe2Me(‘Python‘)‘PythonPython‘>>>>>> addMe2Me([-1, ‘abc‘])[-1, ‘abc‘, -1, ‘abc‘]
    Python 語言中調用函數與在其它進階語言中一樣, 函數名加上函數運算子, 一對小括弧。    括弧之間是所有可選的參數。    即使一個參數也沒有,小括弧也不能省略。注意一下, + 運算子在非數實值型別中如何工作。預設參數    函數的參數可以有一個預設值, 如果提供有預設值,在函數定義中, 參數以指派陳述式的形式提供。事實上這僅僅是提供預設參數的文法,它表示函數調用時如果沒有提供這個參數, 它就取這個值做為預設值。        >>> def foo(debug=True):         ... ‘determine if in debug mode with default argument‘         ... if debug:         ... print ‘in debug mode‘         ... print ‘done‘         ...         >>> foo()         in debug mode         done         >>> foo(False)         done2.18 類    類是物件導向編程的核心, 它扮演相關資料及邏輯的容器角色。它們提供了建立“真實”對象(也就是執行個體)的藍圖。因為Python 並不強求你以物件導向的方式編程(與Java 不同), 此刻你也可以不學習類。如何定義類
class ClassName(base_class[es]):"optional documentation string"static_member_declarationsmethod_declarations
    使用 class 關鍵字定義類。 可以提供一個可選的父類或者說基類; 如果沒有合適的基類,那就使用 object 作為基類。class 行之後是可選的文檔字串, 靜態成員定義, 及方法定義。__init__() 方法    當一個類執行個體被建立時, __init__() 方法會自動執行, 在類執行個體建立完畢後執行, 類似構建函數。__init__() 可以被當成構建函數, 不過不象其它語言中的構建函數, 它並不建立執行個體--它僅僅是你的對象建立後執行的第一個方法。它的目的是執行一些該對象的必要的初始化工作。通過建立自己的 __init__() 方法, 你可以覆蓋預設的 __init__()方法(預設的方法什麼也不做),從而能夠修飾剛剛建立的對象。self.    什麼是 self ? 它是類執行個體自身的引用。其他語言通常使用一個名為 this 的標識符。如何建立類執行個體    >>> foo1 = FooClass()    建立一個類執行個體就像調用一個函數, 它們確實擁有一樣的文法。它們都是可調用對象。類執行個體使用同樣的函數運算子調用一個函數或方法。2.19 模組    模組是一種組織形式, 它將彼此有關係的Python 程式碼群組織到一個個獨立檔案當中。模組可以包含可執行代碼, 函數和類或者這些東西的組合。如何匯入模組    import  module_name如何訪問一個模組    函數或訪問一個模組變數一旦匯入完成, 一個模組的屬性(函數和變數)可以通過熟悉的 .句點屬性標識法訪問。2.20 實用的函數對新Python 程式員有用的內建函數
函數                                  描述dir([obj])                           顯示對象的屬性,如果沒有提供參數, 則顯示全域變數的名字help([obj])                        以一種整齊美觀的形式 顯示對象的文檔字串, 如果沒有提供任何參數, 則會進入互動式協助。int(obj)                             將一個對象轉換為整數len(obj)                            返回對象的長度open(fn, mode)                以 mode(‘r‘ = 讀, ‘w‘= 寫)方式開啟一個檔案名稱為 fn 的檔案range([[start,]stop[,step])   返回一個整數列表。起始值為 start, 結束值為 stop - 1; start預設值為 0, step預設值為1。raw_input(str)                   等待使用者輸入一個字串, 可以提供一個可選的參數 str 用作提示資訊。str(obj)                             將一個對象轉換為字串type(obj)                          返回對象的類型(傳回值本身是一個type 對象!)

02 Python 起步 - 《Python 核心編程》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.