1、最早只有127個字元被編碼到計算機裡,也就是大小寫英文本母、數字和一些符號,這個編碼表被稱為ascii
編碼,ascii碼佔乙個位元組(byte)8位。但是要處理中文顯然乙個位元組是不夠的,至少需要兩個位元組,還不能和ascii編碼衝突,所以,中國制定了gb2312
編碼,用來把中文編進去,各國都有開發自己的編碼。後來為了統一,出現了unicode,unicode編碼常使用倆個位元組表示乙個字元,現代作業系統和大多數程式語言都直接支援unicode。
2、如果文字資訊全部是英文的話,用unicode編碼比ascii編碼需要多一倍的儲存空間,在儲存和傳輸上就十分不划算,所以utf-8誕生了。utf-8相容ascii編碼 ,在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為utf-8編碼。瀏覽網頁的時候,伺服器會把動態生成的unicode內容轉換為utf-8再傳輸到瀏覽器。1個中文字元經過utf-8編碼後通常會占用3個位元組。
3、python3中字串是以unicode編碼的,ord()函式將字元轉換為十進位制數,chr()將編碼轉換為字元。python的字串型別str在記憶體中以unicode編碼,如果要在網路上傳輸,或者儲存到磁碟上,就需要把str
變為以位元組為單位的bytes,以b' '表示。當str
和bytes
互相轉換時,需要指定編碼,最常用的編碼是utf-8(除特殊需求外)。
python3 中有六個標準的資料型別:number(數字)、string(字串)、list(列表)、tuple(元組)、set(集合)、dictionary(字典)。其中,元組、數字、字串是不可變的
1、數字(number):python3包含int、float、bool、complex(複數)。資料型別是不允許改變的,如果改變值,將重新分配記憶體空間。python可以同時為多個變數賦值,如a, b = 1, 2;python還支援複數,複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型;數值的除法包含兩個運算子:/ 返回乙個浮點數,// 返回乙個整數。
常用函式:abs()返回數字絕對值; ceil()返回數字的上入整數; floor()返回數字的下入整數; exp(x)返回e的x次方; pow(x, y)x**y的值; sqrt(x)返回x的平方根; round(x, y)x小數點後y位四捨五入
2、字串(str):python中的字串可以切片、有兩種索引方式,從左往右以0開始,從右往左以-1開始,str[ : ](遵循左閉右開),加號 + 是字串的連線符, 星號 * 表示複製當前字串。字串也是不可變的,一切改變字串的函式實質上都是生成了乙個新物件,原字串還是不變的。
常用函式:str.count(); str.startswith()\str.endswith(); str.find()\str.index(); str.expandtabs()將文字中tab轉換為空格; str.join(); str.lstrip()\rstrip()\strip(); str.replace(); str.split()
3、列表(list):可以進行的操作包括索引,切片,加,乘,檢查成員;
4、元組(tuple):不可修改,只能查詢,操作與列表類似。當元組中有列表等可修改的資料型別存在時,是可以修改列表等中的內容,這是因為元組元素所指的物件是列表,所以列表本身是不可變的,但其中的內容是可變的。就像往微波爐裡放東西加熱,微波爐指定只能用專用的碗不可更換,但至於碗裡是什麼東西就無所謂了。
5、字典(dict):字典的查詢速度比列表快,但占用的記憶體大,典型的以空間換時間。字典的key是不可變的,這是因為字典查詢是根據key的雜湊值獲取對應value的位址,所以對乙個key多次賦值後面的值會覆蓋前的。
常用函式:dict.copy()返回乙個字典的淺拷貝(深淺拷貝後面再寫); dict.get()通過key獲取值 dict.fromkeys( ,)建立乙個新字典; dict.items()返回乙個存著鍵值元組的列表; dict.keys()以列表形式返回key值; dict.values()以列表形式返回value值; dict.setdefault()key值查詢,若不存在則自動建立; dict.popitem()刪除最後乙個元素;
6、集合(set):set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key,也就不能放入可變的物件。
常用函式:set.add(); set.remove();
1、列表生成式:[表示式 for item in 可迭代物件 if 條件],例:
>>> [x * x for x in range(1,10)]
[1, 4, 9, 16, 25, 36, 49, 64, 81]
當加入判斷條件後:
>>> [x * x for x in range(1,10) if x!=5]
[1, 4, 9, 16, 36, 49, 64, 81]
也可以再加一層迴圈:
>>> [x * y for x in range(1,6) for y in range(6,11)]
[6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 18, 21, 24, 27, 30, 24, 28, 32, 36, 40, 30, 35, 40, 45, 50]
當判斷條件放到for前面時必須用if else:
>>> [x * x if x!=5 else x==0 for x in range(1,10)]
[1, 4, 9, 16, false, 36, 49, 64, 81]
Python學習筆記 基礎知識
coding cp936 此行是為了和linux的平台保持相容,是用來告訴shell執行時,去用 bin python來解釋執行 bin python 此行指明了編碼方式,預設是utf 8,如果我們要輸出中文或者採用中文的注釋,就會出現錯誤 coding gb2312 python特色一 三引號注釋...
Python基礎知識學習筆記
前置知識 一切皆物件,有自己的屬性和方法 變數 變數 variable 先賦值後使用 字串 轉義字元 i m lzh 格式化字串 print f my name is name 0 3 lzh 包括前面不包括後面 函式 def triangel width int input 請輸入長 height...
Python學習筆記 基礎知識
python中單行注釋以 開頭,多行注釋可以用多個 號,或者三個單引號或雙引號。我是注釋 我也是注釋 我也是注釋 我也是注釋 python使用縮排空格數來識別 塊而不是大括號,同乙個 塊的語句必須包含相同的縮排空格數。if true print hello world else print hell...