1. 程式人生 > >python學習小筆記一

python學習小筆記一

資料型別

整數,包括負整數,為方便用十六進位制表示整數,字首為0x,如0xff00。

浮點數,對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5。

字串,如果字串內部既包含'又包含"怎麼辦?可以用轉義字元\來標識,轉義字元\可以轉義很多字元,比如\n表示換行,\t表示製表符,字元\本身也要轉義,所以\\表示的字元就是\,如果字串裡面有很多字元都需要轉義,就需要加很多\,為了簡化,Python還允許用r''表示''內部的字串預設不轉義。如果字串內部有很多換行,用\n寫在一行裡不好閱讀,為了簡化,Python允許用'''...'''

的格式表示多行內容。

/除法的兩個整數計算結果是浮點數,//地板除的兩個整數結果是整數,%取餘。

編碼

8 bit(位元)= 1 byte(位元組)

對於單個字元的編碼,Python提供了ord()函式獲取字元的整數表示,chr()函式把編碼轉換為對應的字元:

以Unicode表示的str通過encode()方法可以編碼為指定的bytes

反過來,如果我們從網路或磁碟上讀取了位元組流,那麼讀到的資料就是bytes。要把bytes變為str,就需要用decode()方法

要計算str包含多少個字元,可以用len()函式

1箇中文字元經過UTF-8編碼後通常會佔用3個位元組,而1個英文字元只佔用1個位元組

python讀檔案通常在開頭加這兩句

#!/usr/bin/env python3      第一行註釋是為了告訴Linux/OS X系統,這是一個Python可執行程式,Windows系統會忽略這個註釋
# -*- coding: utf-8 -*-         第二行註釋是為了告訴Python直譯器,按照UTF-8編碼讀取原始碼,否則,你在原始碼中寫的中文輸出可能會有亂碼

另一種格式化字串的方法是使用字串的format()方法,它會用傳入的引數依次替換字串內的佔位符{0}{1}……,不過這種方式寫起來比%要麻煩得多

常見佔位符:%d整數,%f浮點數,%s字串,%x十六進位制整數

列表

list是一種有序的集合,可以隨時新增和刪除其中的元素。

list是一個可變的有序表,所以,可以往list中追加元素到末尾:classmated.append('Adam')

把元素插入到指定的位置,比如索引號為1的位置:classmates.insert(1,'Jack')

要刪除指定位置的元素,用pop(i)方法,其中i是索引位置:classmates.pop(1)

要把某個元素替換成別的元素,可以直接賦值給對應的索引位置:classmates[1]='Mike'

另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改.

只有1個元素的tuple定義時必須加一個逗號,,來消除歧義:t=(1,)

dict字典,key-value儲存,判斷key是否存在,'name' in d。d.get()函式。

通過key計算位置的演算法稱為雜湊演算法(Hash)

set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。

pass語句什麼都不做,那有什麼用?實際上pass可以用來作為佔位符,比如現在還沒想好怎麼寫函式的程式碼,就可以先放一個pass,讓程式碼能執行起來。

如果你已經把my_abs()的函式定義儲存為abstest.py檔案了,那麼,可以在該檔案的當前目錄下啟動Python直譯器,用from abstest import my_abs來匯入my_abs()函式,注意abstest是檔名。

自定義函式

定義預設引數要牢記一點:預設引數必須指向不變物件!

定義可變引數和定義一個list或tuple引數相比,僅僅在引數前面加了一個*號。在函式內部,引數numbers接收到的是一個tuple,因此,函式程式碼完全不變。但是,呼叫該函式時,可以傳入任意個引數,包括0個引數。

*nums表示把nums這個list的所有元素作為可變引數傳進去。這種寫法相當有用,而且很常見。

**extra表示把extra這個dict的所有key-value用關鍵字引數傳入到函式的**kw引數,kw將獲得一個dict,注意kw獲得的dict是extra的一份拷貝,對kw的改動不會影響到函式外的extra

命名關鍵字引數需要一個特殊分隔符**後面的引數被視為命名關鍵字引數。