《Learning Python》學習筆記(一)

通過網絡零零散散地學習Python基礎語法,買了入門書中最厚的一本——《python學習手冊》來查漏補缺。以下筆記只記我認爲自己不熟悉的。而且都是流水賬。


模塊就是爲了保存代碼的python文件,因爲交互式環境中程序無法保存。
‘模塊’通常既有被另一個python文件所導入的文件之意,也有腳本之意(頂層程序文件)。
作爲被導入的模塊文件必須以.py作後綴
在shell中運行時,可以把腳本的輸出結果重定向到另一個py文件中:
    python test1.py>test2.py
在系統提示模式(shell)中使用文擴展名,但在導入時不使用

簡單來說,每一個擴展名爲py後綴的Python源代碼文件都是模塊。導入從本質上講就是載入另一個文件並讀取其內容
不重啓窗口的情況下,在同一個會話中再次運行文件(默認情況下同一個模塊在會話中只能導入一次,只在第一次導入時執行,即使隨後更改了模塊源碼,再import導入也不會生效!)
此時就需要用到imp標準庫中的reload函數;語法:
    from imp import reload #python2中reload()是內置函數
    reload(module_name) #不帶擴展名

python中一切皆對象,對象無非是內存中的一部分,包含數據和相關指令的集合
Python程序可分解成 模塊、語句、表達式及對象:
    1、程序由模塊構成
    2、模塊包含語句
    3、語句包含表達式
    4、表達式定義並處理對象

python變量不需要提前聲明,定義和賦值在一個表達式中完成。
加號“+”對於不同對象有不同的意義,對於數字是加法,對於字符串是合併——這也是多態的一種體現。
方法:對象調用的函數,將會通過一個調用表達式觸發
類型特定方法:除了序列的一般方法外(每種序列都適用的),字符串操作還有一些獨特的方法。
    find()   返回傳入的子字符串的偏移量,未找到就返回-1
    replace()   對全局進行搜索和替換,未搜索到則返回原字符串
    注意字符串方法都是原地操作,返回一個新字符串而不會改變原值,因爲字符串是不可變類型
    split()   分割成列表
    upper()   全體大寫
    lower()   全體小寫
    strip() rstrip() lstrip()   三個去空格方法
    %和.format   兩個格式化操作
如何區分通用的序列操作和特定的類型操作?一條簡明的法則:
    可作用於多種類型的通用操作都是以內置函數和表達式的形式出現的(如len(x),X[1]),而特定的類型操作是以句點法方法調用的形式出現的

如何查看一個對象可用句點法訪問的所有屬性和可調用的所有方法,以及所有隱藏屬性和方法?
    使用內置函數dir(),傳遞一個對象作爲其參數,會返回一個包含該對象所有屬性的列表;而由於方法也是屬性,故也包括在列表中
    dir()函數只能簡單地列出所有屬性,要查詢其作用,就要用到help()函數(如help(string.replace)注:help是一個隨python一起分發的面向系統代碼的接口

列表解析源自集合的概念,它是一種通過對序列中每一項運行一個表達式來創建一個新列表的方法,每次一個從左至右。

映射是一個其他對象的集合,但他們與列表和字符串不同,是通過鍵而非相對位置來存儲的。實際上映射並沒有任何可靠的從左到右的順序,他們是簡單地將鍵映射到值
    正因爲字典不是通過相對位置存儲值的,在集合中沒有固定順序,故打印字典時呈現的鍵值對順序可能與創建時寫入的不同
通過鍵對字典進行索引來讀或改變鍵所關聯的值。字典的索引操作和序列使用的相同語法,只不過方括號中的是鍵而非下標值

Python沒有類型聲明,不把代碼限制在特定的類型上,使代碼自動適用於多種類型——這是python重要的思維方法——多態。
多態——調用相同操作的對象不同,操作的意義就不同。 如加號‘+’處理字符串對象時合併,操作數值對象時就是相加



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章