• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Sunshine Alike

            半完美主義

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              35 Posts :: 1 Stories :: 56 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(15)

            積分與排名

            • 積分 - 50272
            • 排名 - 451

            最新隨筆

            最新評論

            突然一時興起找了個Python的Tutorial看了一下下,哈哈,感覺非常好,很小巧很討喜的語言,比較有特點。第一印象是很簡單,語法簡潔而又功能強大,準備要嘗試學一下。

            下面貼一點學習的筆記:

            一、基本知識
            Python同時即是腳本解釋器,又是一個可以運行命令行的shell。在shell里可以計算任務Python表達式,甚至包括變量賦值,這些變量在shell打開時一直有效,關閉時丟失數據。

            函數聲明,以def開始,函數名,參數,冒號后面跟函數體。需要注意的是Python里的格式都以縮進的形式來表達,沒有類C/C++中的大括號。另外函數 不需要指定返回值類型,實際上,如果函數有return語句,它將返回指定類型值,否則返回None(Python的空值)。

            Python即是動態語言,它不需要顯示數據類型聲明,賦值的同時即完成變量聲明。又是強類型語言,一個變量一旦獲得一個數據類型,它實際上就一直是這個類型的了。

            Python里的“對象”概念,這里的“對象”不同于以前接觸到的OO里的對象,Python里的對象定義更為廣泛。一個程序塊,一個變量,甚至一個字符串都可以是一個對象。其具體含義還需要根據上下文來判斷。

            三種重要的內置數據類型:Dictionary,List,Tuple:
            Dictionary對應于C++中的map和Java中的hashtable,也就是一個鍵值對集合。
            List對應于C++中的vector和java中的ArrayList,一個可以動態自動擴展的數組。
            Tuple是一個不可變的list,一旦創建就不能以方式改變它,但是好在Python提供了在Tuple和List之間相互轉換的函數。
            需要注意的是List和Tuple是可以存儲混合類型的數組的,并且都可以通過索引取值(包括負的索引值,其表示從逆序取值)

            For語句:

            Python里的for語句不同于C/C++中的for,更類似于C#中的foreach循環或者是Java中的for (int i : IntArray)。Python的for語句需要配合一個range函數使用,它有三個參數,并返回一個Tupe數組用于表示索引,三個參數是start,stop,step,例如range(0,5,1)則返回[0,1,2,3,4];range(5,0,-1)則返回[5,4,3,2,1]。

            字符串格式化:
            與C中類似%d,%f,%s等等,通過字符串的join函數可以方便的將list的內容合并成字符串。

            and/or:
            and和or負責執行布爾邏輯運算,但是它們不返回布爾值而是返回它們實際進行比較的值之一。非空的對象被認為是真,空對象則被認為是假。and運算會返回第一個假值,而or運算返回第一個真值,其它部分都不會被計算到

            lambda函數:
            一種快速定義的單行最小函數,只有一行,類似于內聯的感覺。例如一個例子:
            ld = lambda i : i*i
            ld(10) # == 100
            理論上lambda函數可以有多個參數(包括可選參數)并且隱含的返回單個表達式的值。

            兩種導入(import)方法:

            Python中有兩種導入模塊的方法: import xx / from xx import yy

            它們的差別在于,from xx import yy這種方式,yy被直接導入到了局部命名空間中(類似于C++中的using),在以后使用yy的時候不再需要(不能)加上模塊名稱限定。也就是說,如果使用import方式導入模塊,在使用 它里面的一個變量的時候,你不得不每次都加上前綴xx.來表示使用的是位于xx模塊中的變量,而使用from導入時,則不需要加入前綴。

            異常處理:
            Python中使用try...except來處理異常,使用raise來引發異常。并且,一個except后面可以跟一個else塊來表示沒有捕獲預期異常時的行為。一個try塊后面也可以跟一個finally塊來保證一些代碼總是被執行到,比如打開文件后的關閉操作。

            注釋:
            Python里使用#來作為單選注釋開始符,使用三個冒號作為多行注釋"""content""",
            需要注意的是后一種形式的注意經常被用來作為函數或者類的"說明",寫在這里的內容可以被其使用者當作參考手冊來使用,Ptyhon里所有對象都具有一個內置的__doc__屬性,通過它可以查看各個對象的說明,應該養成寫__doc__的習慣。一般其格式為首行以大寫字母開始,句號結尾。第二行是空行,從第三行開始是詳細的描述

            引號:
            Python里有單引號,雙引號和三引號。其中單引號和雙引號都可以用來表示字符串,例如
            print 'string' == "string" 將會打印出True
            設置這兩種字符串引號的目的是為了簡化引號的表示,例如如果字符串里含有引號本身就需要使用\來進行標識,例如:'let\'s go!',“he said:\"get out!\"”。
            如果字符串里含有大量這種情況會顯得非常麻煩,可以交替使用單引號和雙引號來避免這種情況。上面的例子可以改為:"let's go!",'he said:"get out!"'。
            而三引號就是用來表示一個多行字符串。它們經常被用來定義文檔字符串,它的首行以大寫字母開始,句號結尾。第二行是空行,從第三行開始是詳細的描述。建議從一開始就遵守這個慣例。

            二、面向對象

            類的定義:
            以class開頭,pass表示結束(實際上沒有特定的u),例如一個簡單的類定義為
            class Person:
            ??? pass
            如果要表示繼承關系只需要將基類用括號回到類名后面即可,Python支持多重繼續,每個基類中間以逗號隔開。
            class Student(Person):
            ? pass
            這里的pass語句僅表示占位之用,沒有特別的含義。

            類成員定義:
            __init__方法,這個函數的功能很類似于Java或者C++中的構造函數,但是仍存在一點細小的差別,__init__函數的第一個參數一定是self,類似于C++中的this指針。
            __init__方法的定義并不是必須的,但是一旦你定義了它,就必須顯示的調用父類的__init__方法。
            需要注意的是,所有的類成員方法都必須定義一個參數(self)但它的名字不是一定的,其作用類似于C++中的this指針。
            __del__方法,類似于析構函數,在使用del語句的時候被調用。

            重載:
            Python的類沒有任何形式的函數重載,即一個方法名稱只能對應一個方法,如果子類中定義的與基類中同名的方法,則會將其覆蓋掉。

            成員屬性:
            Python中有兩種類型的成員方法:普通類方法和專用類方法
            成員也有兩種訪問級別:公開的和私有的
            其中公開和私有成員的表示沒有特別的關鍵字,只是體現的方法名稱上,私有成員的名稱以兩個短小的下劃線作為開始例如:
            class A:
            ? __privatevalue
            ? publicvalue
            ? def __set(self, v):
            ??? __privatevalue = v
            ? def get(self):
            ??? return publicvalue
            ? pass
            并且,一個成員是屬于類的還是屬于對象的,是通過定義這個變量的域來確定的,定義在類體內的變量由所有成員共享,通過self定義的變量則為成員變量。
            此外,類的成員方法還分為:普通類方法和專用類方法。普通方法的定義與普通函數定義類似,它是公開的,在類外部可以被調用。而類的專用方法,沒有特殊的關鍵字來表示,只是在方法的名稱前后各加上兩個短的下劃線,例如def __getitem__。這種專用方法是由用戶顯式調用的,它有點操作符重載的意思在里面,但是功能比操作符重載要強大一些。Python允許我們自己定義需要的類專用方法,例如任何定義了__cmp__方法的類就可以用==進行比較,任何定義了__len__方法的類就可以用len(instance)進行取長度。

            三、標準庫
            1.文件操作
            Python中有一個內置函數open可以用來打開文件
            file = open("pictures/dog.bmp","rb")
            open函數可以接受三個參數:文件名,模式和緩沖區參數,但是只有每一個參數是必須的,文件會默認以文本方式打開。
            文件的讀取和C中類似,tell()返回當前文件位置,seek來移動文件操作的位置。具體的函數使用方法可以使用print seek.__doc__來查看

            處理I/O錯誤:
            try:
            ? file = open(filename, "rb", 0)
            ? try:
            ??? file.seek(-128,2)
            ??? data = file.read(128)
            ??? file.seek(0,2)
            ??? file.write("succeeded")
            ??? finally:
            ????? file.close()
            ? expect IOError:
            ??? pass

            Python提供了一個os.path模塊來進行目錄操作,具體使用方法就不詳細寫出來了,用過幾次就記住了。

            2.序列化
            標準庫里有兩個模塊都提供這個功能,picklecPickle,用于將對象存儲到文件中而后再讀取出來。
            但是后者是使用C語言寫的,速度要比前面的快很多,但是功能都是一樣的。
            使用也很簡便主要就是使用dump和load函數

            ------------------待續----------------


            posted on 2010-03-30 22:34 Sunshine Alike 閱讀(963) 評論(0)  編輯 收藏 引用 所屬分類: Python
            亚洲国产精品人久久| 伊人久久综在合线亚洲2019| 久久久久综合国产欧美一区二区 | 国产日产久久高清欧美一区| 99久久人妻无码精品系列 | 一本一本久久aa综合精品| 日韩久久久久久中文人妻 | 久久精品国产男包| 99久久免费国产精精品| 亚洲国产成人久久精品99| 久久婷婷激情综合色综合俺也去| 久久国产精品成人免费| 久久久久久久久波多野高潮| 国产精品青草久久久久婷婷| 欧美日韩精品久久久免费观看| 久久―日本道色综合久久| 久久久久亚洲AV成人网人人网站| 久久久久免费精品国产 | 狠狠久久综合| 国内精品久久人妻互换| 欧美日韩精品久久免费| 青春久久| 欧美性大战久久久久久| 天天久久狠狠色综合| 国产精品99久久精品| 亚洲精品国产字幕久久不卡| 怡红院日本一道日本久久| 亚洲狠狠婷婷综合久久蜜芽| 日韩精品久久久久久久电影| 亚洲国产成人精品91久久久| 久久综合久久综合九色| 免费国产99久久久香蕉| 97久久超碰国产精品旧版| 亚洲国产精品18久久久久久| 亚洲国产另类久久久精品| 久久久久波多野结衣高潮| 久久WWW免费人成一看片| 国内精品九九久久精品| 少妇久久久久久被弄高潮| 久久久久久精品久久久久| 色妞色综合久久夜夜|