07-2 Python模塊和命名空間

1. 模塊

  • 概念:其實就是一個Python文件,正常文件有的變量,函數,類,模塊都有

  • 功能:模塊可以被其它程序引入,以使用該模塊中的函數等功能。

  • 示例:test-module.py調用mymodule.py模塊中的now_time()方法

    1. 新建mymodule.py文件
    #mymodule.py
    import time          #導入系統標準庫模塊
    def now_time():   #設計顯示系統當前時間的函數nt=time.localtime()s=("%02d:%02d:%02d"%nt[3:6])print(s)time.sleep(1)
    
    1. 新建 test-module.py文件
    #test-module.py
    import mymodule
    print("現在的時間是:",end=' ')
    mymodule.now_time()   #通過其它模塊的函數,顯示系統當前時間
    
    1. test-module.py文件下運行,查看結果

1.1 模塊導入方法(掌握)

分類:有標準模塊、自定義模塊和第三方庫之分。

  1. import 模塊名
    • 解釋器會按系統搜索路徑將指定模塊導入當前程序中,這種方式,在使用被導入模塊中的函數時,需用“模塊名.函數名”的格式
  2. from 模塊名 import 函數
  • 解釋器會將模塊中的指定函數單個導入到當前程序中,這種方式,在使用被導入模塊中的函數時,前面無需加“模塊名.”,直接使用函數名。 (3)
  1. 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種導入方式
image-20231207093754717

作業:

  • 改寫用戶通訊錄系統,

    1. 把所有面向過程的方法,改寫成函數形式,運行并、截圖

    2. 函數形式改寫成模塊形式,運行并截圖

  • 最初版本:

  • 截圖:

    image-20231207113629557
    image-20231207170559711

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
  • 函數形式版本:(待更新)

  • 模塊化后版本:(待更新)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207703.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207703.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207703.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

充電樁IC

充電樁IC 電子元器件百科 文章目錄 充電樁IC前言一、充電樁IC是什么二、充電樁IC的類別三、充電樁IC的應用實例四、充電樁IC的工作原理總結前言 充電樁IC的設計和功能會根據不同的充電協議和市場需求進行調整和定制。目前市場上有許多不同型號和廠家的充電樁IC可供選擇,以滿足…

一篇文章帶你快速入門 Vue 核心語法

一篇文章帶你快速入門 Vue 核心語法 一、為什么要學習Vue 1.前端必備技能 2.崗位多,絕大互聯網公司都在使用Vue 3.提高開發效率 4.高薪必備技能(Vue2Vue3) 二、什么是Vue 概念:Vue (讀音 /vju?/,類似于 view) …

Mysql 日期函數大全

一、時間函數 (一)、獲取當前時間 1、NOW() 獲取當前日期和時間,在程序一開始執行便拿到時間 返回格式 YYYY-MM-DD hh:mm:ss eg: NOW() 得到 2023-12-03 12:20:02 NOW(),SLEEP(2),NOW() 得到 2023-12-03 12:20:02 | 0 | 2023-…

目標檢測——OverFeat算法解讀

論文:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 作者:Pierre Sermanet, David Eigen, Xiang Zhang, Michael Mathieu, Rob Fergus, Yann LeCun 鏈接:https://arxiv.org/abs/1312.6229 文章…

Go語言-讓我印象深刻的13個特性

我們正在加速進入云原生時代,Go語言作為云原生的一塊基石,確有它的獨到之處。本文介紹Go語言的幾個讓我印象深刻的特性。 1、兼顧開發效率和性能 Go語言兼顧開發效率和性能。可以像Python那樣有很快的開發速度,也可以像C那樣有很快的執行速…

SpringAOP專欄二《原理篇》

上一篇SpringAOP專欄一《使用教程篇》-CSDN博客介紹了SpringAop如何使用,這一篇文章就會介紹Spring AOP 的底層實現原理,并通過源代碼解析來詳細闡述其實現過程。 前言 Spring AOP 的實現原理是基于動態代理和字節碼操作的。不了解動態代理和字節碼操作…

【C語言】函數遞歸詳解(一)

目錄 1.什么是遞歸: 1.1遞歸的思想: 1.2遞歸的限制條件: 2.遞歸舉例: 2.1舉例1:求n的階乘: 2.1.1 分析和代碼實現: 2.1.2圖示遞歸過程: 2.2舉例2:順序打印一個整數的…

機器學習---集成學習的初步理解

1. 集成學習 集成學習(ensemble learning)是現在非常火爆的機器學習方法。它本身不是一個單獨的機器學 習算法,而是通過構建并結合多個機器學習器來完成學習任務。也就是我們常說的“博采眾長”。集 成學習可以用于分類問題集成,回歸問題集成&#xff…

多線程并發Ping腳本

1. 前言 最近需要ping地址,還是挺多的,就使用python搞一個ping腳本,記錄一下,以免丟失了。 2. 腳本介紹 首先檢查是否存在True.txt或False.txt文件,并在用戶確認后進行刪除,然后從IP.txt的文件中讀取IP地…

CSS——sticky定位

1. 大白話解釋sticky定位 粘性定位通俗來說,它就是相對定位relative和固定定位fixed的結合體,它的觸發過程分為三個階段 在最近可滾動容器沒有觸發滑動之前,sticky盒子的表現為相對定位relative【第一階段】, 但當最近可滾動容…

【MATLAB】tvfEMD信號分解+FFT+HHT組合算法

有意向獲取代碼,請轉文末觀看代碼獲取方式~也可轉原文鏈接獲取~ 1 基本定義 TVFEMDFFTHHT組合算法是一種結合了總體變分模態分解(TVFEMD)、傅里葉變換(FFT)和希爾伯特-黃變換(HHT)的信號分解方…

vivado時序方法檢查8

TIMING-30 &#xff1a; 生成時鐘所選主源管腳欠佳 生成時鐘 <clock_name> 所選的主源管腳欠佳 &#xff0c; 時序可能處于消極狀態。 描述 雖然 create_generated_clock 命令允許您指定任意參考時鐘 &#xff0c; 但是生成時鐘應引用在其直接扇入中傳輸的時鐘。此…

電子學會C/C++編程等級考試2021年06月(五級)真題解析

C/C++等級考試(1~8級)全部真題?點這里 第1題:數字變換 給定一個包含5個數字(0-9)的字符串,例如 “02943”,請將“12345”變換到它。 你可以采取3種操作進行變換 1. 交換相鄰的兩個數字 2. 將一個數字加1。如果加1后大于9,則變為0 3. 將一個數字加倍。如果加倍后大于…

JS--異步的日常用法

目錄 JS 異步編程并發&#xff08;concurrency&#xff09;和并行&#xff08;parallelism&#xff09;區別回調函數&#xff08;Callback&#xff09;GeneratorPromiseasync 及 await常用定時器函數 JS 異步編程 并發&#xff08;concurrency&#xff09;和并行&#xff08;p…

Python中一些有趣的例題

下面會寫一些基礎的例題&#xff0c;有興趣的自己也可以練練手&#xff01; 1.假設手機短信收到的數字驗證碼為“278902”&#xff0c;編寫一個程序&#xff0c;讓用戶輸入數字驗證碼&#xff0c;如果數字驗證碼輸入正確&#xff0c;提示“支付成功”&#xff1b;否則提示“數…

Python configparser 模塊:優雅處理配置文件的得力工具

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com 配置文件在軟件開發中扮演著重要的角色&#xff0c;而Python中的 configparser 模塊提供了一種優雅而靈活的方式來處理各種配置需求。本文將深入介紹 configparser 模塊的各個方面&#xff0c;通過豐富的示例代碼…

嵌入式雜記 - MDK的Code, RO-data , RW-data, ZI-data意思

嵌入式雜記 - Keil的Code, RO-data , RW-data, ZI-data意思 MDK中的數據分類MCU中的內部存儲分布MDK中數據類型存儲Code代碼段例子 RO-data 只讀數據段例子 RW-data 可讀寫數據段例子 ZI-data 清零數據段例子 在嵌入式開發中&#xff0c;我們經常都會使用一些IDE&#xff0c;例…

Hadoop學習筆記(HDP)-Part.17 安裝Spark2

目錄 Part.01 關于HDP Part.02 核心組件原理 Part.03 資源規劃 Part.04 基礎環境配置 Part.05 Yum源配置 Part.06 安裝OracleJDK Part.07 安裝MySQL Part.08 部署Ambari集群 Part.09 安裝OpenLDAP Part.10 創建集群 Part.11 安裝Kerberos Part.12 安裝HDFS Part.13 安裝Ranger …

Web前端 ---- 【Vue】Vuex的使用(輔助函數、模塊化開發)

目錄 前言 Vuex是什么 Vuex的配置 安裝vuex 配置vuex文件 Vuex核心對象 actions mutations getters state Vuex在vue中的使用 輔助函數 Vuex模塊化開發 前言 本文介紹一種新的用于組件傳值的插件 —— vuex Vuex是什么 Vuex 是一個專為 Vue.js 應用程序開發的狀態…

淺談前端代碼里的命名規范與注釋

淺談前端代碼里的命名規范與注釋 在前端代碼中&#xff0c;命名規范和注釋是非常重要的。它們不僅有助于提高代碼的可讀性和可維護性&#xff0c;還可以幫助開發者之間更好地協作和溝通。下面是一些關于命名規范和注釋的常見建議&#xff1a; 命名規范&#xff1a; 使用有意義…