1. 模塊
-
概念:其實就是一個Python文件,正常文件有的變量,函數,類,模塊都有
-
功能:模塊可以被其它程序引入,以使用該模塊中的函數等功能。
-
示例:
test-module.py
調用mymodule.py
模塊中的now_time()方法- 新建
mymodule.py
文件
#mymodule.py import time #導入系統標準庫模塊 def now_time(): #設計顯示系統當前時間的函數nt=time.localtime()s=("%02d:%02d:%02d"%nt[3:6])print(s)time.sleep(1)
- 新建
test-module.py
文件
#test-module.py import mymodule print("現在的時間是:",end=' ') mymodule.now_time() #通過其它模塊的函數,顯示系統當前時間
- 在
test-module.py
文件下運行,查看結果
- 新建
1.1 模塊導入方法(掌握)
分類:有標準模塊、自定義模塊和第三方庫之分。
- import 模塊名
- 解釋器會按系統搜索路徑將指定模塊導入當前程序中,這種方式,在使用被導入模塊中的函數時,需用“模塊名.函數名”的格式
- from 模塊名 import 函數
- 解釋器會將模塊中的指定函數單個導入到當前程序中,這種方式,在使用被導入模塊中的函數時,前面無需加“模塊名.”,直接使用函數名。 (3)
- from 模塊名 import *
- 解釋器會將模塊中的所有函數導入到當前程序中,模塊中的所有函數可以在本程序直接使用
- 示例:
#1import mymoudleprint(mymoudle.now_time())#2from mymoudle import now_timeprint(now_time())#3from mymoudle import *print(now_time())#4起別名import mymoudle as my#使用mymoudle模塊中的now_time函數# 獲取系統當前時間#別名.函數名()my.now_time()my.test()
2. 命名空間
- 概念:在編寫Python程序的過程中,如果要使用變量和函數,都需要先對變量和函數命名后才能使用。 Python會把命名后的變量和函數分配到不同的命名空間(Namespace),并通過名稱來識別它們。
- 作用:
- 是不同的命名空間對應不同的作用域,和作用域類似
- 防止命名沖突
- 分類:
- 局部命名空間(Local):每個函數所擁有的命名空間,記錄了函數中定義的所有變量,包括函數的參數、內部定義的局部變量
- 全局命名空間(Global):每個模塊加載執行時創建的,記錄了模塊中定義的變量,包括模塊中定義的函數、類、其他導入的模塊、模塊級的變量與常量
- 內建命名空間(Built-in):是Python自帶的,任何模塊均可以訪問,放著內置的函數和異常
3.總結
重點畫框的部分,
作用域和命名空間,重點理解作用域
模塊:掌握模塊使用方法,和4種導入方式
作業:
-
改寫用戶通訊錄系統,
-
把所有面向過程的方法,改寫成函數形式,運行并、截圖
-
函數形式改寫成模塊形式,運行并截圖
-
-
最初版本:
-
截圖:
print("""======================
歡迎使用通訊錄
1.添加聯系人
2.查看通訊錄
3.刪除聯系人
4.修改聯系人信息
5.查找聯系人
6.退出
== == == == == == == == == == = """)
list_person = [] # 存放每個人的信息列表
while (True):gongneng = eval(input("請輸入功能序號:"))# 1.添加聯系人if gongneng == 1:print('添加功能')ximing = input("請輸入聯系人的姓名:")shouji = input("請輸入聯系人的手機號:")youxiang = input("請輸入聯系人的郵箱:")dizhi = input("請輸入聯系人的地址:")dict_person = {"姓名": ximing, "手機號": shouji,"郵箱": youxiang, "地址": dizhi}list_person.append(dict_person)# 2.查看通訊錄elif gongneng == 2:print('查看通訊錄')if len(list_person) == 0:print("通訊錄沒有聯系人")else:for i in list_person: # 此時從列表取出的元素是字典,存在i里面# 打印一個人的所有信息for key, value in i.items():print(f"{key}:{value}")print("-----------")# 3.刪除聯系人elif gongneng == 3:if len(list_person) == 0:print("通訊錄沒有聯系人")else:print('刪除聯系人')# 3.1 獲取刪除的聯系人姓名delete_xm = input("請輸出要刪除的聯系人姓名:")# 3.2 根據姓名找到其所在字典,然后通過字典找到所在列表的下標flag = 0 # 標記,為1時,應該結束外層找字典的循環index = -1 # i就是字典在列表的下標for i in list_person: # 找字典index += 1for key, value in i.items():if key == "姓名" and value == delete_xm:flag = 1breakif flag == 1:break# 3.3 根據下標刪除列表的元素list_person.pop(index)print("刪除成功")# 4.修改聯系人信息elif gongneng == 4:print('修改聯系人信息')if len(list_person) == 0:print("通訊錄沒有聯系人")else:#獲取要修改的聯系人姓名change_name = input("請輸入要修改的聯系人姓名:") print(change_name)#總思路:從字典找到對應姓名,然后替換信息#1.遍歷列表,獲取每一個元素(字典,也是每個人的個人信息)index = -1#當前元素所在列表下標flag = 0 #值為1時,標記已經找到對應下標for i in list_person:index += 1for key,value in i.items():if key == "姓名" and value == change_name: flag = 1breakif flag == 1:breakif flag == 1:#2.找到了下標,修改信息list_person[index]["姓名"] = input("請輸入新姓名:")list_person[index]["手機號"] = input("請輸入新手機號:")list_person[index]["郵箱"] = input("請輸入新郵箱:")list_person[index]["地址"] = input("請輸入新地址:")else:print("沒有該聯系人")# 5.查找聯系人elif gongneng == 5:print('查找聯系人')# 6.退出elif gongneng == 6:print('# 退出')break
-
函數形式版本:(待更新)
-
模塊化后版本:(待更新)