Python基礎知識點梳理

Robot647發表於2020-02-08

python基礎知識點梳理

摘要:
本文主要介紹一些平時經常會用到的python基礎知識點,用於加深印象,也算是對於學習這門語言的一個總結與回顧。python的詳細語法介紹可以檢視官方程式設計手冊,也有一些線上網站對python語法進行了比較全面的介紹,比如菜鳥教程:
python3 教程|菜鳥教程
為了方便聚焦知識點,本文涉及的操作例項並不多,想學好一門語言關鍵還得自己多編碼多實踐。

python語言介紹

python是一門解釋型語言,python的設計目標:

  • 一門簡單直觀的語言並與主要競爭者一樣強大
  • 開源,以便任何人都可以為它做貢獻
  • 程式碼像純英語那樣容易理解
  • 適用於短期開發的日常任務

設計哲學是:

  1. 優雅
  2. 明確
  3. 簡單

python基礎語法

識別符號

  • 第一個字元必須是字母表中字母或下劃線 。
  • 識別符號的其他的部分由字母、數字和下劃線組成。
  • 識別符號對大小寫敏感。

註釋

型別 語法
單行註釋 以 # 開頭,程式設計規範建議#後面跟一個空格
多行註釋 用一對連續的三個引號,單引號或者雙引號均可("""/’’’)

行與縮排

  • python與其他語言明顯的區別是沒有大括號,而是用縮排表示程式碼塊。
  • 另外,每行語句不需要以分號結束。

多行語句

如果語句很長,可以使用反斜槓(\)來實現多行語句
說明:在 [], {}, 或 () 中的多行語句不需要使用反斜槓

算術運算子

運算子 描述 例項
+ 兩個物件相加 10 + 9 = 19
- 兩個物件相減 10 - 9 = 1
* 兩個數相乘法,用於字串時可以重複多次 10 * 9 = 90
/ x除以y 10 / 2 = 5
// 取整除 10 // 9 = 1
% 取餘數 10 % 8 = 2
** 返回x的y次冪 10 ** 2= 100

判斷語法

if else語句

if 和 else用於對條件進行判斷並進行處理,語法如下:

if 要判斷的條件:
	條件成立時要做的事情
	...
else:
	條件不成立時要做的事情
邏輯運算子

對於同時判斷多個條件的情況可以用邏輯運算子,有如下三種:

符號 說明 語法
and ,兩個都成立才返回True 條件1 and 條件2
or ,兩個只要有一個滿足就返回True 條件1 or 條件2
not ,對條件取反 not 條件
elif 語句

elif語句用於有多個條件進行判斷的場景,語法如下:

if 條件1:
	條件1滿足時執行的程式碼
elif 條件2:
	條件2滿足時執行的程式碼
elif 條件3:
	條件3滿足時執行的程式碼
else:
	以上都不滿足時執行的程式碼

迴圈語法

迴圈的作用就是讓指定的程式碼重複執行

while迴圈

while迴圈是python中常見的迴圈,用於讓執行的程式碼按照指定次數重複執行,語法如下:

初始條件設定,通常是計數器
while 條件(判斷計數器是否達到目標次數):
	條件滿足時候執行的程式碼
	...
	處理條件(計數器 + 1)
for迴圈

for迴圈可以方便地遍歷列表,元組,字典等資料型別,比如遍歷一個列表的程式碼片段如下:

nameList = ["zhangsan", "lisi", "wangwu"]
for name in nameList:
	print(name)

python中,for迴圈經常與range函式搭配使用,如下:

for i in range(1, 10):
	print(i)

python資料型別介紹

  • 按照是否是數字可以按照如下表格分類:
數字型別 非數字型別
整型(int)/ 浮點型(float)/ 布林型(bool)/ 複數型(complex) 字串(str)/ 列表(list)/ 元組(tuple) / 字典(dict)

說明:使用type函式可以返回變數的資料型別

按照是否可變可以分為:

不可變型別 可變型別
整型(int)/ 浮點型(float)/ 布林型(bool)/ 複數型(complex)/ 字串(str)/ 元組(tuple) 列表(list)/ 字典(dict)

列表

列表(list)是python中使用最頻繁的資料型別,類似其他語言的陣列
列表的符號是中括號[],初始化一個列表語法如下:

program_list = ["c++", "java", "python", "php"]

列表中常見的幾種操作如下:

序號 分類 方法 說明 例項
01 查詢 list.index(obj) 從列表中找出某個值第一個匹配項的索引位置 program_list.index(“java”))
02 增加 list.insert(index, obj) 在列表中指定位置插入資料 program_list.insert(1, “kotlin”)
03 增加 list.append(obj) 在列表末尾追加資料 program_list.append(“C#”)
04 增加 list.extend(list1) 在列表1的資料追加到列表中 program_list.extend([“C#”, “kotlin”, “bash”])
05 增加 list.extend(list1) 在列表1的資料追加到列表中 program_list.extend([“C#”, “kotlin”, “bash”])
06 修改 list[index] = obj 修改指定索引的資料 program_list[2] = “Go”
07 刪除 list.clear() 清空列表 program_list.clear()
08 刪除 list.remove(obj) 刪除第一個出現的指定資料 program_list.remove(“java”)
09 刪除 list.pop() 刪除末尾的資料 program_list.pop()
10 刪除 list.pop(index) 刪除指定索引的資料 program_list.pop(1)
11 統計 len(list) 計算列表長度 len(program_list)
12 統計 list.count(obj) 統計資料在列表中出現的次數 program_list.count(“java”)
13 排序 list.sort() 將列表升序排列 program_list.sort()
14 排序 list.sort(reverse=True) 將列表降序排列 program_list.sort(reverse = True)
15 翻轉 list.reverse() 將列表翻轉 program_list.reverse()

元組

元組(tuple)與列表類似,區別是元組的資料不能修改,元組的符號是小括號(),初始化一個元組的語法如下:

program_tuple = ("c++", "java", "python", "php")

元組主要用於函式的引數和返回值,格式化字串,以及保護列表資料,由於元組的資料無法修改,因此提供的方法也比較少:

序號 分類 方法 說明 例項
01 查詢 tuple.index(obj) 從元組中找出某個值第一個匹配項的索引位置 program_tuple.index(“java”)
02 統計 len(tuple) 計算元組長度 len(program_tuple)
03 統計 tuple.count(obj) 統計資料在列表中出現的次數 program_tuple.count(“python”)

元組在python中還可以用於交換兩個變數的值:

a = 10
b = 9
a, b = (b, a)

字典

字典(dict)通常用於描述一個物體的相關資訊,使用鍵值對儲存資料,鍵必須唯一,由於要使用hash演算法,只有不可變型別才能用作鍵,字典的符號是大括號{},初始化一個字典的語法如下:

human_dic = {"name": "zhangsan",
			"age": 26,
			"height": 1.75,
			"weight": 66}

字典的常用操作函式如下:

序號 分類 方法 說明 例項
01 取值 dict[key] 從字典中取出鍵對應的值 human_dic[“name”]
02 取值 dict.get(key) 從字典中取出鍵對應的值 human_dic.get(“name”)
03 取值 dict.items() 以列表返回可遍歷的(鍵, 值) 元組陣列 list(human_dic.items())
04 取值 dict.keys() 以列表返回一個字典所有的鍵 list(human_dic.keys())
05 取值 dict.values() 以列表返回字典中的所有值 list(human_dic.values())
06 增加/修改 dict[key] = value key存在則更新value,否則增加鍵值對 human_dic[“gender”] = “male”
07 刪除 dict.pop(key) pop函式返回key對應的value值,並刪除鍵值對 human_dic.pop(“gender”)
08 刪除 dict.popitem() 返回並刪除字典中的最後一對鍵和值 human_dic.popitem()
09 合併 dict.update(dic2) 合併字典dic2中的資料,已存在的key跟新value的值 human_dic.update({“weight”: 64, “age”: 27})
10 複製 dict.copy() 返回字典的淺複製 new_dic = human_dic.copy()
11 清空 dict.clear() 清空字典 human_dic.clear()

字串

字串(str)的使用也非常廣泛,可以使用引號('或")來建立字串,初始化一個字串的語法如下:

testStr = "Wasting time is robbing oneself"

python對於str提供了很多實用的方法,比較常用的有以下這些:

  • 對字串進行判斷的方法:
序號 方法 說明
01 str.isalnum() 如果 string 至少有一個字元並且所有字元都是字母或數字則返回 True,否則返回 False
02 str.isalpha() 如果 string 至少有一個字元並且所有字元都是字母則返回 True,否則返回 False
03 str.isdecimal() 如果 string 只包含數字則返回True,否則返回False
04 str.istitle() 如果 string 是標題化的(每個單詞的首字母大寫)則返回True
05 str.isupper() 如果 string 所有區分大小寫的字元都是大寫,則返回True
06 str.islower() 如果 string 所有區分大小寫的字元都是小寫,則返回True
07 str.isspace() 如果 string 中只包含空格,則返回 True,否則返回 False
  • 對字串進行修改(包括格式化,大小寫轉換):
序號 分類 方法 說明
01 格式化 str.format() 格式化字串
02 格式化 str.strip() 去掉字串左右兩邊的空白字元
03 格式化 str.lstrip() 去掉字串左邊的空白字元
04 格式化 str.rstrip() 去掉字串右邊的空白字元
05 文字對齊 str.ljust(width) 返回一個原字串左對齊,並使用空格填充寬度至長度width的新字串
06 文字對齊 str.rjust(width) 返回一個原字串右對齊,並使用空格填充寬度至長度width的新字串
07 文字對齊 str.center(width) 返回一個原字元居中對齊,並使用空格填充寬度至長度width的新字串
08 大小寫 str.title() 把字串的每個單詞首字母大寫
09 大小寫 str.lower() 把字串的所有大寫字元轉換成小寫
10 大小寫 str.upper() 把字串的所有小寫字元轉換成大寫
11 大小寫 str.swapcase() 翻轉字串的大小寫
  • 字串的查詢和替換:
序號 方法 說明
01 str.count(str1, beg=0, end=len(string)) 返回 str1 在字串中出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數
02 str.startswith(obj, beg=0,end=len(string)) 檢查字串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查.
03 str.endswith(obj, beg=0, end=len(string)) 檢查字串是否以 obj 結束,是則返回 True,否則返回 False。如果beg 或者 end 指定值,則在指定範圍內檢查
04 str.find(str1, beg=0, end=len(string)) 檢測 str1是否包含在字串中,如果 beg 和 end 指定範圍,則檢查是否包含在指定範圍內。如果是則返回開始的索引值,否則返回-1
05 str.rfind(str1, beg=0,end=len(string) ) 類似於find函式,不過是從右邊開始查詢
06 str.index(str1, beg=0, end=len(string)) 跟find()方法一樣,只不過如果str1不在 字串中會報一個異常.
07 str.rindex(str1, beg=0, end=len(string)) 類似於index函式,不過是從右邊開始
08 str.replace(str1, str2, num=string.count(str1)) 把 字串中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次.
  • 字串的拆分和連線:
序號 方法 說明
01 str.split(str1="", num=str.count(str1)) 以 str1 為分隔符切片字串,如果 num 有指定值,則僅分隔 num+1 個子字串
02 str.splitlines([keepends]) 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一個包含各行作為元素的列表,如果引數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。
03 str.join(seq) 以 字串作為分隔符,將 列表seq 中所有的元素(用字串表示)合併為一個新的字串

公共方法

內建函式

對於列表,元組,字典,字串,python也提供了一些公共方法,如下:

函式 描述 說明
len(item) 計算元素的總個數
del(item) 刪除變數 可以刪除整個變數,加上索引可以只刪除指定的元素
max(item) 返回元素的最大值 字典只針對key比較
min(item) 返回元素的最小值 字典只針對key比較
運算子

高階資料型別同樣支援以下常見的運算子:

序號 運算子 描述 支援的資料型別
01 + 合併 列表,元組,字串
02 * 重複 列表,元組,字串
03 in 元素是否存在 列表,元組,字典,字串
04 not in 元素是否不存在 列表,元組,字典,字串
05 > < >= <= == 比較 列表,元組,字串
切片

切片使用索引值可以方便地擷取容器中一定範圍的資料,適用於列表,元組,字串。
切片語法如下:
item[N:M:S]
其中N表示要擷取的開始位置,M表示結束位置,S表示step也就是步長,預設是1,擷取的時候[N:M]是個半閉合區間,等效於數學上[N,M)取值範圍,取N不取M, N和M都可以省略。python中,-1可以表示最後一個元素,字串利用切片完成翻轉的程式碼如下:

>>> test_str = "Hello World"
>>> print(test_str[::-1])

python函式語法

在python中定義一個函式需要使用def關鍵字,相比其他語言,返回值不需要宣告,定義一個函式的語法如下:

def print_hello():
	print("Hello, World!")

預設引數

除了常見的必須引數外,python支援預設引數,即為引數指定一個預設值,可以不傳入這個引數,程式碼例子如下:

def print_human(name, age = 23):
	print("body info: name is %s, age is %s" % (name, age) )
	
print_human("wangwu")
print_human("lisi", 25)
print_human("zhangsan", age = 36)

多值引數

如果函式處理的引數的個數不確定,就可以用多值引數:

  1. 引數名前面增加一個*可以接收元組
  2. 引數名前面增加兩個*可以接收字典

使用了這兩個多值引數的程式碼例子如下:

def print_info(*args, **kwargs):
	print(args)
	print(kwargs)
	
program_list = ["c++", "java", "python", "php"]
human_dic = {"name": "zhangsan", "age": 26, "height": 1.75, "weight": 66}
	
print_info(*program_list, **human_dic)

返回多個值

python中可以利用元組返回多個值,多個返回值的程式碼如下:

def measure_rect():
	width = 12
	height = 6
	return width, height

w, h = measure_rect()
print("width is %d, height is %d" % (w, h))

python常用函式

print輸出函式

python使用print函式將資訊輸出到控制檯,輸出資料時經常會用到格式化操作符,不同的格式化字串含義如下表:

格式化字元 含義
%s 字串
%d 有符號十進位制整數(%07d 表示顯示7位整數,不足就用0補全)
%f 浮點數(%.02f 表示小數點後顯示兩位)
%% 輸出%

語法格式如下:

print("格式化字串" % 變數1)
print("格式化字串" % (變數1, 變數2...))

print函式預設會自動在內容末尾增加換行,如果不希望換行,可以用end引數指定需要輸出的內容
語法格式如下:

print("Hello word!", end="")

input輸入函式

使用input函式從鍵盤等待使用者的輸入,預設都是一個字串
語法格式如下:

字串變數 = input("提示資訊:")

型別轉換函式

常見的型別轉換函式如下:

函式 說明
int(x) 將x轉換為一個整數
float(x) 將x轉換為一個浮點數
str(list) 將列表轉換為字串
tuple(list) 將列表轉換為元組
list(tuple) 將元組轉換為列表

相關文章