提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 一、集合
- 1.集合的定義
- 二、使用集合列表去重
- 導包
- 二、函數
- 1.函數介紹
- 2.定義函數
- 3.調用函數
- 4.函數實現登錄案例
- 5.函數的返回值
- 三、模塊和包
- 1.模塊的概念(Module)
- 2.模塊的導入方式-import
- 3.模塊的導入方式-from...import
- 3.模塊的導入順序
- 4.__name__ 屬性
- 5.包(Package)
- 6.包操作案例
- 7.斷言
- 四、異常
- 1.捕獲異常
- 2.捕獲特定異常類型
- 3.捕獲未知類型異常
- 4.異常捕獲完整語法
- 5.拋出異常
一、集合
1.集合的定義
- 說明:集合中的數據是沒有重復的, 主要應用列表中的數據去重
二、使用集合列表去重
- 1.使用隨機數生成 10 個 1-20 之間的隨機數
- 2.對列表中的數據進行去重
導包
import random
#實現
test_data = []
for i in range(11):
item = random.randint(1, 20)
test_data.append(item)
print(test_data)
print(set(test_data))
二、函數
1.函數介紹
- 說明:把具有獨立功能的代碼塊組織為一個小模塊,在需要的時候調用
- 作用:對具備相同邏輯的代碼進行封裝, 提高代碼的編寫效率, 實現對代碼的重用
2.定義函數
- 語法:def 函數名(參數1, 參數2…):
函數封裝的代碼,可以使用傳遞進來的參數
pass - 說明:
1.def是英文define 的縮寫
2. 函數名最好能夠表達函數內部封裝的代碼的功能, 方便
后續的獲取調用[見名知意]
3. 函數名命名遵循標識符命名規則: 字母, 數字, 下劃線, 不
能以數字開頭, 不用使用系統關鍵字
4. 定義時候的參數稱為形式參數,簡稱形參
3.調用函數
- 語法:函數名(參數1, 參數2…):
- 說法:
- 只定義函數, 不調用函數, 函數永遠不會被執行
- 不能將 函數調用 放在 函數定義 的上方,否則將會出現錯誤
- 函數調用時的參數稱為實際參數,簡稱實參
4.函數實現登錄案例
- 需求:當手機號為”13488888888”,輸出“賬號成功”;否則“賬號錯誤”
5.函數的返回值
- 語法:def 函數名(參數…):
…
return xxx - 說明:如果想在函數調用處獲取函數定義內部的某個數據, 需要使用 return 關鍵字返回結果
- 錯誤樣例:沒有返回值的函數,在函數調用處獲取的結果都是None
def demo():
name = “admin”
print(name) # admin
result = demo()
print(result) # None
- 注意事項:
? return 關鍵字可以將函數定義內部的任意數據, 返回給函數調用處
? return 關鍵字也可以單獨使用, 表示提前結束函數調用, 但不返回任何數據
def demo():
name = “admin”
return name
print(name) # 注意:return 表示返回,后續的代碼都不會被執行
result = demo()
print(result) # admin
三、模塊和包
1.模塊的概念(Module)
l 每一個以 .py
結尾的 Python 代碼文件都是一個模塊
l 模塊名
同樣也是一個 標識符
, 需要符合標識符的命名規則
l 在模塊中定義的 全局變量
、函數
、類
都是提供給外界直接使用的 工具
l 模塊就好比是工具包, 要想使用這個工具包中的工具, 就需要先 `導入模塊
2.模塊的導入方式-import
- 語法:
import 模塊名1, 模塊名2
建議:在導入模塊時,每個導入獨占一行
import 模塊名1
import 模塊名2
如果模塊的名字太長,可以使用 as 指定模塊的名稱,以方便在代碼中的使用
import 模塊名1 as 模塊別名
- 使用方式:導入之后,通過 模塊名. 使用模塊提供的工具(全局變量、函數、類)
- 注意:模塊別名應該符合大駝峰命名法
3.模塊的導入方式-from…import
- 如果希望 從某一個模塊 中,導入 部分 工具,就可以使用 from … import 的方式
- import 模塊名 是 一次性 把模塊中 所有工具全部導入,并且通過 模塊名/別名 訪問
- 語法:
#從 模塊 導入 某一個工具
from 模塊名1 import 工具名
- 使用方式:不需要通過 模塊名.調用,可以直接使用模塊提供的工具(全局變量、函數、類)
- 注意事項:
- 允許一行導入多個工具名: from 模塊名 import 工具名1, 工具名2
- 如果兩個模塊, 存在同名的工具, 那么后導入模塊的工具, 會覆蓋掉先導入的工具
3.模塊的導入順序
- Python 解釋器在導入模塊時的順序是:
- 查找當前目錄下指定模塊名的文件, 如果有就直接導入
- 當前目錄下如果沒有, 則再查找系統目錄下的模塊
- 注意:給模塊名時, 務必不要和系統模塊重名, 否則會直接影響系統模塊的導入!
4.name 屬性
- 語法:
#根據 name 判斷是否執行下方代碼
if name == “main”:
pass
- 作用: 處于該條件下的代碼, 只有是在當前模塊內執行時, 才會被運行
- 原理: Python 內置屬性 name 的主要作用是記錄一個字符串信息
l 當被其他模塊導入后運行時, name 屬性值為模塊名
l 當在模塊內運行時, name 屬性值為 _main - 注意:一般情況下, 都需要將模塊內的調試代碼置于該條件下, 以防止被其他模塊導入后, 調試代碼也參與執行
5.包(Package)
- 說明:包:(Package)是一個包含多個模塊的特殊目錄
- l 目錄下有一個特殊的文件
__init__.py
l 包名 的命名方式和 變量名 一致
l 作用:python文件較多時,方便分目錄管理維護 - 提示:提示:在 PyCharm 中支持直接創建包, 工程根目錄上鼠標右鍵 -> New -> PythonPackage
- 常用尋包方式
6.包操作案例
- login.py
#/api/login.py
def login(phone):
if phone == “13488888888”:
return “賬號正確”
else:
return “賬號錯誤”
- test_login.py
#導包
from api.login import login
#調用
print(login(“13488888888”))
#斷言 assert
assert “賬號正確666” == login(“13488888888”)
7.斷言
- 說明:斷言:自動判斷實際結果和預期結果
- 用法:
① 斷言相等:assert 預期結果 == 實際結果
② 斷言包含:assert 預期結果 in 實際結果 - 結果:
通過PASS: 不顯示
失敗FAIL: 報錯并提示“AssertionError”
四、異常
1.捕獲異常
- 語法:
try:
#嘗試執行的代碼
except:
#出現異常時執行的代碼
基本語法格式
- 說明:
try:嘗試,下方編寫要嘗試代碼,不確定是否能夠正常執行的代碼
lexcept:如果有異常捕獲,下方編寫捕獲到異常,處理失敗的代碼
2.捕獲特定異常類型
- 語法:
try:
#嘗試執行的代碼
except 異常類型:
#出現異常時執行的代碼
語法格式
- 注意:
- 捕獲特定異常類型, 能夠實現僅在特定異常類型出現時, 代碼再做
對應的處理 - 具體的異常類型可以先行從代碼執行的報錯信息中獲取, 在設置捕獲異常操作
3.捕獲未知類型異常
- 語法:
try:
#嘗試執行的代碼
except Exception as e:
#出現異常時執行的代碼
print(‘異常信息為: {}’.format(e))
- 說明:
l 如果希望程序無論出現任何錯誤,都不會因為Python解釋器拋出異
常而被終止,可以捕獲 Exception
l except Exception as e: e表示捕獲到的異常對象,記錄異常的錯
誤信息,e為慣用變量名,可以自定義
4.異常捕獲完整語法
- 語法:
try:
#嘗試執行的代碼
pass
except 錯誤類型1:
#針對錯誤類型1,對應的代碼處理
pass
except 錯誤類型2:
#針對錯誤類型2,對應的代碼處理
pass
except Exception as e:
#打印錯誤信息
print(e)
finally:
#無論是否有異常,都會執行的代碼
pass
- 說明:finally: 無論是否出現異常都會執行
5.拋出異常
- 語法:
#創建異常對象
ex = Exception(“異常描述信息”)
#拋出異常對象
raise ex
- Python 中提供了一個 Exception 異常類
- 在開發時,如果滿足特定業務需求時希望拋出異常,可以:
- 創建 一個 Exception類 的 對象
- 使用 raise 關鍵字 拋出 異常對象