《Python編程:從入門到實踐》語法知識點總結
友情提醒:本文中函數方法表格初學者不必全部記下來,只需要保存圖片或者收藏本文,使用時自己方便查詢即可。
本文同樣有關於Python語法的細節問題,可以用來查漏補缺。
本文更加適合大一剛學習完C語言,想要學習Python的同學。
文章目錄
第二章:變量和簡單的數據類型
-
python可以直接使用變量而不用聲明
message="hello!" print(message)
-
使用方法修改字符串的大小寫
name="hello python" print(name.title()) #title()以首字母大寫的方式顯示每個單詞 name="Hello Python" print(name.upper()) #upper()將字符串改爲全部大寫 print(name.lower()) #lower()將字符串改爲全部小寫
Hello Python HELLO PYTHON hello python
-
合併(拼接)字符串
first_name="hello" second_name="python" full_name=first_name+" "+second_name print(full_name) print(first_name+" "+second_name)
hello python hello python
-
刪除空白
name="python " print(name.rstrip()) #rstrip()只是暫時刪除字符串末尾的空白 print(name) #輸出字符串末尾仍有空格 name=name.rstrip() #將刪除操作結果存回到變量中可永久刪除空白 print(name) #輸出字符串末尾無空格 name=" python " print(name.lstrip()) #刪除字符串開頭的空白 print(name.strip()) #刪除字符串兩端的空白
-
**爲乘方運算
-
使用函數str()避免類型錯誤:將非字符串值表示爲字符串
age=23 #錯誤代碼 message="happy "+age+"rd birthday" print(message)
age=23 #正確代碼 message="happy "+str(age)+"rd birthday" print(message)
第三章:列表簡介
-
列表由一系列按特定順序排列的元素組成。其中的元素之間可以沒有任何關係。在python中用[ ]來表示列表,並用逗號分隔其中的元素
cars=["car1","car2","car3"] print(cars) print(cars[0]) cars[0]="yeah" print(cars[0]) cars.append("car4") #在列表末尾添加元素 print(cars)
["car1","car2","car3"] #輸出列表,包括方括號 car1 #只返回元素 yeah ["yeah","car2","car3","car4"]
方法append()可以輕鬆地創建動態列表。例如先創建一個空列表,再使用append()添加元素。
-
使用方法insert()可在列表的任何位置添加新元素。爲此需要指定新元素的索引和值。
cars=["car1","car2","car3"] cars.insert(0,car0) print(cars)
["car0","car1","car2","car3"] #將列表中既有的每個元素向右移一位
-
使用del語句刪除元素
cars=["car1","car2","car3"] print(cars) del cars[0] print(cars)
["car1","car2","car3"] ["car2","car3"]
-
使用方法pop()刪除元素,並能夠接着使用它
cars=["car1","car2","car3","car4"] car=cars.pop() #刪除末尾元素 car=cars.pop(0) #指定要刪除元素的索引刪除元素 car="car3" cars.remove(ca0r) #只知道要刪除元素的值,而不知道其位置
方法remove()只刪除第一個指定的值。如果要刪除的值再列表中出現多次,就需要循環判斷是否刪除了所有這樣的值。
-
使用sort()對列表進行永久性排序
sort() #按照字母順序永久排序 sort(reverse=True) #按照與字母順序相反的順序永久排序
-
使用sorted()對列表進行臨時排序
sorted() #按照字母順序臨時排序 sorted(reverse=True) #按照與字母順序相反的順序臨時排序
-
使用方法reverse()永久性反轉列表元素的排列順序
cars=["car1","car2","car3","car4"] print(cars) cars.reverse() print(cars)
["car1","car2","car3","car4"] ["car4","car3","car2","car1"]
-
使用len()確定列表長度
-
列表索引
cars=["car1","car2","car3","car4"] print(cars[-1])
car4
-
列表函數方法
第四章:操作列表
-
遍歷整個列表
cars=["car1","car2","car3","car4"] for car in cars: print(car)
car1 car2 car3 car4
-
創建數值列表
-
使用函數range()
for value in range(1,5) print(value)
1 2 3 4
-
要創建數字列表,可使用函數list()將range()的結果直接轉換爲列表
numbers=list(range(1,6)) print(number)
[1,2,3,4,5]
-
使用函數range()時還可以指定步長
even_numbers=list(range(2,11,2)) #打印1~10內的偶數 print(even_numbers)
-
-
對數字列表執行簡單的統計計算
numbers=[1,2,3,4,5,6,7,8,9] print(min(numbers)) print(max(numbers)) print(sum(numbers))
-
列表解析
numbers=[value**2 for value in range(1,11)] #注意for循環無冒號
[1,4,9,16,25,36,49,64,81,100]
-
切片
cars=["car1","car2","car3","car4","car5","car6"] print(cars[0:3]) print(cars[:3]) #如果沒有指定第一個索引,從列表開頭開始 print(cars[3:]) #如果沒有指定第二個索引,到列表末尾終止 print(cars[-3:]) my_cars=cars[:] #複製列表 my_cars=cars #這樣複製列表錯誤!!!
["car1","car2","car3"] ["car1","car2","car3"] ["car4","car5","car6"] ["car4","car5","car6"]
-
元素值不可變的列表稱爲元組:使用圓括號標識
-
雖然不能修改元組的元素,但可以給存儲元組的變量賦值
第五章:if語句
-
age=20 if age==20 : print("yeah")
-
使用and(相當於C++中的 && )和or(相當於C++中的 || )檢查多個條件
-
要判斷特定的值是否已包含在列表中,可使用關鍵字in
-
要判斷特定的值是否不包含在列表中,可使用關鍵字not in
-
布爾表達式的值要麼爲True,要麼爲False
hello=Ture hello=False
-
if - elif- else結構
-
判斷語句中列表爲空時返回False
第六章:字典
-
字典用放在花括號{}中的一系列鍵值對錶示
-
cars={"car1":"green"} print(cars[car1]) cars["car2"]="red" print(cars) cars["car2"]="black" print(cars[car2]) del cars["car2"] print(cars)
green {"car1":"green","car2":"red"} black {"car1":"green"}
-
cars={"car1":"green","car2":"red"} for key,value in cars.items(): #遍歷所有的鍵值對 print(key+' '+value) for key in cars.keys(): #提取鍵到key中 print(key) for key in cars: #等價於for key in cars.keys(): print(key) for value in cars.values(): print(value)
方法items()返回一個鍵值對列表
方法keys()並非只能用於遍歷,實際上,它返回一個列表,其中包含字典中的所有鍵
方法value()返回一個值列表
-
要以特定的順序返回元素,一種辦法是在for循環中對返回的鍵進行排序。爲此,可使用函數sorted()來獲得按特定順序排序的鍵列表的副本
-
集合(set)類似於列表,但每一個元素都是獨一無二的
cars={"car1":"green","car2":"red","car3":"red"} for car in set(cars.values()) print(car)
green red
-
字典中可以嵌套列表,列表中也可以嵌套字典,字典中也可以嵌套字典
-
字典函數方法
第七章:用戶輸入和while循環
-
input()函數:將用戶輸入解讀爲字符串
message=input("Tell me something:") #先打印Tell me something:,然後將輸入存儲在變量message中 enquiry=Tell me something message=input(enquiry)
-
函數int()將數字的字符串轉換爲數值表示
-
讓用戶選擇何時退出
message="" #將變量message初始值設置爲空字符串 while message!="quit": message=input() print(message)
-
使用標誌
active=True while active: message=input() if message == "quit": active=False else: print(message)
-
使用break退出循環,在循環中使用continue
-
Ctrl+C退出無限循環
-
在for循環中不應修改列表,否則將導致難以跟蹤其中元素
enumerate()函數講解 -
要在遍歷列表的同時對其進行修改,可使用while循環
第八章:函數
-
定義函數
def greet_user(): print("Hello")
-
關鍵字實參
def describe_pet(animal_type,pet_name): print(animal_type+pet_name) describe_pet(animal_type="dog",pet_name="wct") #與下面一行函數調用等效 describe_pet(pet_name="wct",animal_type="dog")
-
編寫函數時,可給每個形參指定默認值
def describe_pet(animal_type,pet_name="wct"): print(animal_type+pet_name) describe_pet(animal_type="dog") #與下面一行函數調用等效 describe_pet("dog")
使用默認值時,在形參列表中必須先列出沒有默認值的形參,在列出有默認值的實參
-
返回使用return。函數可以返回任何類型的值,包括列表和字典等
def name(first_name,last_name): person={"first":full_name,"last":last_name} return person
-
讓實參變成可選的
def name(first_name,middle_name,last_name): full_name=first_name+" "+middle_name+" "last_name return full_name
爲了讓name()在沒有提供中間名時仍然可行,可給實參middle_name指定一個默認值——空字符串,並將其移動到形參列表的末尾:
def name(first_name,last_name,middle_name=""): full_name=first_name+" "+middle_name+" "last_name return full_name
-
禁止函數修改列表
function_name(list_name[:])
切片表示法[:]創建列表的副本
-
傳遞任意數量的實參
def make_pizza(*toppings): print(toppings) make_pizza("a","b","c")
("a","b","c")
形參名*toppings中的星號讓Python創建一個名爲toppings的空元組,並將收到的所有值都封裝到這個元組中。
-
結合使用位置實參和任意數量形參
如果要讓函數接受不同類型的實參,必須在函數定義中將接納任意數量實參的形參放在最後。
Python先匹配位置實參和關鍵字實參,再將剩下的實參都收集到最後一個形參中。
def make_pizza(size,*toppings)
-
使用任意數量的關鍵字實參
def build_profile(first,last,**user_info): profile={} profile["first_name"]=first profile["last_name"]=last for key,value in user_info.items(): profile[key]=value return profile user_profile=build_profile("albert","einstein", location="princeton" field="physics") print(user_profile)
形參**user_info中的兩個星號讓Python創建一個名爲user_info的空字典,並將收到的所有名稱值對都封裝到這個字典中。
-
import語句允許在當前運行的程序文件中使用模塊中的代碼。模塊是拓展名爲.py的文件。
import moudle_name #導入整個模塊 moudle_name.function_name() from moudle_name import function_name #導入模塊中的特定函數 from moudle_name import function_0,function_1 #導入模塊中任意數量的函數 function_name() #若使用這種語法,調用函數時就無需使用句點
-
使用as給函數指定別名
fron moudle_name import function_name as fn
-
使用as給模塊指定別名
import mouble_name as mn
-
導入模塊中所有函數
from moudle_name import *
這樣導入無需使用句點表示法,但使用並非自己編寫的大型模塊時,最好不要採用這種導入方法
要麼只導入自己需要的函數,要麼導入整個模塊並使用句點表示法
-
給形參指定默認值時等號兩邊不要有空格
對於函數調用中的關鍵字實參,也應遵循這種約定
-
如果形參很多,導致函數定義的長度超過了79字符,可在函數定義中輸入左括號後按回車鍵,並在下一行按兩次Tab鍵,從而將形參列表和只縮進一層的函數體區分開來。
def function_name( parameter_0,parameter_1,parameter_2, parameter_3,parameter_4,parameter_5): function body...
-
所有的import語句都應放在文件開頭
第九章:類
-
使用類和實例
class Dog(): #首字母大寫的名稱指的是類 def__init__(self,name,age): self.name = name self.age = age self.color = "black" #給屬性指定默認值 def sit(self): print(self.name.title() + " is now sitting.") def roll_over(self) print(self.name.title() + " rolled over!") def change_age(self,changed_age) self.age=changed_age my_dog = Dog("wct",20) print(my_dog.name+" "+str(my_dog.age)) my_dog.sit() my_dog.roll_over() my_dog.age = 21 #直接修改屬性的值 my_dog.change_age(21) #通過方法修改屬性的值
def__init__(self,name,age):
self.name = name
self.age = age
以self爲前綴的變量都可供類中的所有方法使用 。可通過實例訪問的變量成爲屬性。
-
繼承
-
重寫父類
-
將實例用作屬性
class Car(): class Battery(): def __init__(self,battery_size=70): self.battery_size = battery_size def describe_battery(self): print(str(self.battery_size)) class ElectricCar(Car): def __init__(self,make,model,year): super().__init__(make,model,year) self.battery = Battery() my_car = ElectricCar("tesla","model s",2016) my_car.battery.describe_battery()
-
可以創建一個 .py 文件儲存類
fron module_name class_name1,class_name2 #car.py import module_namer #導入整個模塊,再使用句點表示法訪問需要的類 from module_name import * #導入模塊中的所有類
-
類編碼風格
第十章:文件和異常
-
讀取整個文件
with open('pi.txt') as file_object: #pi.txt在源碼所在目錄中 contents = file_object.read() print(contents)
函數open()接受一個參數:文件的名稱
關鍵字with在不需要訪問文件後將其關閉
方法read()讀取文件的全部內容
-
文件路徑
with open('text_files\filename.txt') as file_object: #相對路徑 file_path = 'C:\User\ehmatthes\other_files\text_files\filename.txt' with open(file_path) as file_object: #絕對路徑通常比相對路徑更長,因此將其存儲在一個變量中,再將該變量傳遞給open()
-
逐行讀取
filename = 'pi.txt' with open(filename) as file_object: for line in file_object: print(line.rstrip) #如果沒有rstrip每一行後會有一條空白行
-
創建一個包含文件各行內容的列表
使用關鍵字with時,open()返回的文件對象只能在with代碼塊內使用
如果要在with代碼塊外訪問文件的內容,可在with代碼塊內將文件的各行存儲在一個列表中
filename = 'pi.txt' with open(filename) as file_object: lines = file_object.readlines() #方法readlines()從文件中讀取每一行並將其存儲在一個列表中 pi_string = '' for line in lines: pi_string += line.strip()
-
寫入空文件
-
寫入多行
函數write()不會在寫入的文本末尾添加換行符
-
附加到文件
with open(filename,'a') as file_object:
-
異常是使用try-except代碼塊處理的。使用try-except代碼塊,即便出現異常,程序也將繼續運行
first_number = input() second_number = input() try: ans = int(first_number) / int(second_number) except ZeroError: print("error!") else print(ans)
-
分析文本
title = "a b c" title.split() #方法split()以空格爲分隔符講字符串拆成多個部分,並儲存在一個列表中
['a','b','c']
-
pass語句:可在代碼塊中使用它讓Python什麼也不做
first_number = input() second_number = input() try: ans = int(first_number) / int(second_number) except ZeroError: pass else print(ans)
pass語句還充當了佔位符,它提醒你在程序的某個地方什麼也沒做,並且以後也需要在這裏做些什麼。例如,我們可能決定講找不到的文件的名稱寫入到文件messing.txt中。用戶看不見這個文件,但我們可以讀取這個文件,進而處理所有文件找不到的問題。
-
存儲數據:模塊json讓你能夠講簡單的Python數據結構儲存到文件中,並在程序再次運行時加載該文件中的數據。
-
使用json.dump()和json.load()
函數json.dump()接受兩個實參:要存儲的數據一級可用於存儲數據的文件對象
import json numbers = [2,3,5,7,11,13] filename = 'numbers.json' #文件拓展名.json with open(filename,'w') as f_boj: json.dump(numbers,f_obj)
import json filename = 'numbers.json' #讀取文件 with open(filename) as f_boj: numbers = json.load(f_obj)
import json filename = 'username.json' try: with open(filename) as f_obj: username = json.load(f_obj) except FilenameFoundError: username = input(what is your name?) with open(filename,'w') as f_obj: json.dump(username,f_obj) print("we will remember you when you come back!") else print("welcome back")
-
重構:代碼可以正確運行,但可以做進一步的改進——將代碼劃分爲一系列完成具體工作的函數,這樣的過程被稱爲重構。
第十一章:測試代碼
-
Python標準庫中的模塊unittest提供了代碼測試工具
-
編寫測試用例,可先導入模塊unittest以及要測試的函數,再創建一個繼承unittest.TestCase的類,並編寫一系列方法對函數行爲的不同方面進行測試。
import unittest from nume_function import get_formatted_name class NamesTestCase(unittest.TestCase): #必須繼承unittest.TestCase類 def test_name(self): #運行此文件時,所有以test_打頭的方法都將自動運行 formatted_name = get_formatted_name('a','b') self.assertEqual(formatted_name,'a b') unittest.main()
方法名必須以test_打頭,這樣它纔可以自動運行
-
各種斷言方法
-
方法setUp()
unittest.TestCase類中包含了方法setUp(),Python將先運行它,再運行各個以TEST_打頭的方法。
-
在項目早期,不要試圖去編寫全覆蓋的測試用例,除非有充分的理由這樣做。
另附:
注意,光看理論還是不行的,實戰纔是核心。最後送大家一套2020最新企業Python項目實戰視頻教程,點進這裏進來獲取,跟着練習下,希望大家一起進步哦!
總結《Python編程:從入門到實踐》且碼字製圖確實不易.16369字,沒有一個字是複製粘貼的。如果本文對你有幫助,請點贊支持。
您的每一次瀏覽、點贊、收藏和關注對於作者都很重要!感謝!
歡迎添加作者公衆號:追豬青年(目前正在建設中)回覆:Python學習資源包 獲取全部資源