Python基礎知識小結
1、變數
多變數賦值:
a=b=c=1
多物件-多變數
a,b,c=1 ,2.0 ,'c'
2、型別
2.1、數字資料型別:int、long(l或L)、float、complex(複數)
del刪除物件的引用,可刪除單個或多個物件
2.2、字串:由數字、字母、下劃線、符號等組成的一串字元。
字串列表取值:從左到右索引預設0開始的,最大範圍是字串長度少1,從右到左索引預設-1開始的,最大範圍是字串開頭,使用變數 [頭下標:尾下標],就可以擷取相應的字串。
加號(+)是字串連線運算子,星號(*)是重複操作
2.3、列表:支援字元,數字,字串甚至可以包含列表(即巢狀)
列表中值的切割也可以用到變數 [頭下標:尾下標] ,就可以擷取相應的列表,從左到右索引預設 0 開始,從右到左索引預設 -1 開始,下標可以為空表示取到頭或尾
加號 + 是列表連線運算子,星號 * 是重複操作
python 建立二維列表,將需要的引數寫入 cols 和 rows 即可
list_2d=[ [0 for col in range(cols)] for row in range(rows) ]
2.4、元組:類似於List(列表)
元組用"()"標識。內部元素用逗號隔開。但是元組不能二次賦值(元素不能修改),相當於只讀列表。索引同列表。
無關閉分隔符:通常出現在建立多物件賦值操作和輸出print(在Python2.x 是print val,val2。。。在Python3.x中是 print(val1,val2。。。)很顯然是元組)
任意無符號的物件,以逗號隔開,預設為元組
print'abc',-4.24e93,18+6.6j,'xyz'; x, y =1,2;print"Value of x , y : ", x,y;
2.5、字典:可變容器模型,且可儲存任意型別物件。
列表是有序的物件集合,字典是無序的物件集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。字典用"{ }"標識。字典由索引(key)和它對應的值value組成。
鍵必須是唯一的,但值則不必。
值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。
字典值可以沒有限制地取任何python物件,既可以是標準的物件,也可以是使用者定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住
2)鍵必須不可變,所以可以用數字,字串或元組充當,所以用列表就不行
非數字型的共同點:都可以使用切片、連結(+)、重複(*)、取值(a[])等相關運算;非數字型的不同點:列表 可以直接賦值,元組不可以賦值,字典按照 dict[k]=v 的方式賦值。
3、運算子
in : 如果在指定的序列中找到值返回 True,否則返回 False。
not
in :如果在指定的序列中沒有找到值返回 True,否則返回
False。
is
: is 是判斷兩個識別符號是不是引用自一個物件
is
not : is not 是判斷兩個識別符號是不是引用自不同物件
is
與 == 區別:is 用於判斷兩個變數引用物件(地址)是否為同一個,
== 用於判斷引用變數的值是否相等。
在python2.x中,若a=2,b=2 a is b ---->True a=2.0,b=2.0 a is b ----->True
在Python3.x中,若a=2,b=2 a is b ---->True a=2.0,b=2.0 a is b ----->False
python中會為每個出現的物件分配記憶體,哪怕他們的值完全相等(注意是相等不是相同)。為了提高記憶體利用效率對於一些簡單的物件,如一些數值較小的int物件,python採取重用物件記憶體的辦法,如指向a=2,b=2時,由於2作為簡單的int型別且數值小,python不會兩次為其分配記憶體,而是隻分配一次,然後將a與b同時指向已分配的物件
4、while迴圈
通常:while 判斷條件:
執行語句
特殊:while 判斷條件:
執行語句
else:
執行語句
類似
if 語句的語法, while 迴圈體中只有一條語句,你可以將該語句與while寫在同一行中
for
… else ,for 中的語句和普通的沒有區別,else 中的語句會在迴圈正常執行完(即
for 不是通過 break 跳出而中斷的)的情況下執行,while … else 也是一樣。
5、break、continue
break語句,跳出最小封閉for或while迴圈,break語句用來終止迴圈語句,即迴圈條件沒有False條件或者序列還沒被完全遞迴完,也會停止執行迴圈語句。
break語句用在while和for迴圈中。
用巢狀迴圈,break語句將停止執行最深層的迴圈,並開始執行下一行程式碼。
continue
語句跳出本次迴圈,而break跳出整個迴圈。
continue 語句用來告訴Python跳過當前迴圈的剩餘語句,然後繼續進行下一輪迴圈。
continue語句用在while和for迴圈中。
continue 語句是一個刪除的效果,他的存在是為了刪除滿足迴圈條件下的某些不需要的成分:
pass是空語句,是為了保持程式結構的完整性。pass
不做任何事情,一般用做佔位語句。
6、符號
python字串格式化符號:
符 號 描述 %c 格式化字元及其ASCII碼 %s 格式化字串 %d 格式化整數 %u 格式化無符號整型 %o 格式化無符號八進位制數 %x 格式化無符號十六進位制數 %X 格式化無符號十六進位制數(大寫) %f 格式化浮點數字,可指定小數點後的精度 %e 用科學計數法格式化浮點數 %E 作用同%e,用科學計數法格式化浮點數 %g %f和%e的簡寫 %G %f 和 %E 的簡寫 %p 用十六進位制數格式化變數的地址 格式化操作符輔助指令:
符號 功能 * 定義寬度或者小數點精度 - 用做左對齊 + 在正數前面顯示加號( + ) <sp> 在正數前面顯示空格 # 在八進位制數前面顯示零('0'),在十六進位制前面顯示'0x'或者'0X'(取決於用的是'x'還是'X') 0 顯示的數字前面填充'0'而不是預設的空格 % '%%'輸出一個單一的'%' (var) 對映變數(字典引數) m.n. m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)
ASCII編碼和Unicode編碼的區別:
ASCII編碼是1個位元組,而Unicode編碼通常是2個位元組,舉例如下。
字母 A 用ASCII編碼是十進位制的65,二進位制的01000001;
字元 0 用ASCII編碼是十進位制的48,二進位制的00110000,注意字元 '0' 和整數
0 是不同的;
漢字 中 已經超出了ASCII編碼的範圍,用Unicode編碼是十進位制的20013,二進位制的01001110 00101101。
如果把ASCII編碼的 A 用Unicode編碼,只需要在前面補0就可以,因此, A 的Unicode編碼是00000000 01000001。
7、日期和時間
時間間隔以秒為單位的浮點小數。
每個時間戳(通常是一個字元序列,唯一地標識某一刻的時間。數字時間戳技術是數字簽名技術一種變種的應用。)都以自從1970年1月1日午夜(曆元)經過了多長時間來表示。
Python
的 time 模組下有很多函式可以轉換常見日期格式。
使用import time (必須先匯入模組)
help(time)語句可檢視time模組中的方法。
python中時間日期格式化符號:
- %y 兩位數的年份表示(00-99)
- %Y 四位數的年份表示(000-9999)
- %m 月份(01-12)
- %d 月內中的一天(0-31)
- %H 24小時制小時數(0-23)
- %I 12小時制小時數(01-12)
- %M 分鐘數(00=59)
- %S 秒(00-59)
- %a 本地簡化星期名稱
- %A 本地完整星期名稱
- %b 本地簡化的月份名稱
- %B 本地完整的月份名稱
- %c 本地相應的日期表示和時間表示
- %j 年內的一天(001-366)
- %p 本地A.M.或P.M.的等價符
- %U 一年中的星期數(00-53)星期天為星期的開始
- %w 星期(0-6),星期天為星期的開始
- %W 一年中的星期數(00-53)星期一為星期的開始
- %x 本地相應的日期表示
- %X 本地相應的時間表示
- %Z 當前時區的名稱
- %% %號本身
def定義函式
在
python 中,strings, tuples, 和 numbers 是不可更改的物件,而 list,dict 等則是可以修改的物件。
不可變型別:變數賦值 a=5 後再賦值 a=10,這裡實際是新生成一個
int 值物件 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a。
可變型別:變數賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將
list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。
python
函式的引數傳遞:
不可變型別:類似 c++ 的值傳遞,如 整數、