day16 (模塊)

来源:https://www.cnblogs.com/HZLS/archive/2019/05/05/10816539.html
-Advertisement-
Play Games

一,複習 二,今日內容 三,模塊 四,導入模板完成的三件事 五,起別名 六,模塊的分類 七,模塊的載入順序 八,環境變數 九,from...import語法導入 十,from...import * 十一,鏈式導入 十二,迴圈導入 ...


一,複習

'''
1.生成器中的send方法
    -- 給當前停止的yield發生信息
    -- 內部調用__next__()取到下一個yield的返回值
2.遞歸:函數的(直接,間接)自調用 -- 回溯 與 遞推 -- 重點:出口 | 遞歸的條件
3.匿名函數 -- lambda 參數列表: (返回值, 返回值) -- 應用場景:1.用變數接受 | 2.結合內置函數使用 -- add = lambda n1, n2: n1 + n2
4.內置函數 dic = {'Bob': 88888, 'Tom': 66666} | [('Bob', 88888), ('Tom', 66666)] -- max(iter, key=lambda x: x) | min | map | reduce | sorted -- bin | oct | hex -- max min sum pow abs -- len next iter range enumerate '''

 

二,今日內容

'''
1.模塊:模塊的概念
2.導入的方式:import | from import
    -- 名稱空間***** | 絕對導入 | 起別名
3.環境變數:sys.path *****
4.導入模塊的順序
5.迴圈導入:模塊間相互導入 ******
'''

 

三,模塊

"""
常見的四種模塊:module
1.使用python編寫的.py文件
2.把一系列模塊組織到一起的文件夾(註:文件夾下有一個__init__.py文件,該文件夾稱之為包)
3.使用C編寫並鏈接到python解釋器的內置模塊
4.已被編譯為共用庫或DLL的C或C++擴展
"""

# 1、什麼是模塊:一系列功能的集合體

# 2、為什麼會出現模塊:很多相似的功能,要統一管理,將這些功能放在一個文件中,該文件就是管理這些功能的集合體,我們命名為模塊

# 3、怎麼使用模塊
#        -- 在要使用模塊功能的文件中導入模塊:import 模塊名  - 模塊名:用來管理一系列功能的文件名

# 4、在哪使用模塊
#        -- 在所有要使用模塊中功能的文件中導入並使用模塊

 

四,導入模板完成的三件事

# 首次導入:
  import 模塊名 # 1.將被導入的模塊編譯形成對應的pyc文件 # 2.進入模塊,從上執行執行模塊中的代碼,將產生的所有名字存放在該模塊文件的全局名稱空間中 # 3.在使用模塊的文件中,產生一個與模塊名(模塊文件名)同名的名字,指向模塊的全局名稱空間 # 再次導入: # 不再執行導入模塊的前兩步,只會走第三步:在當前模塊中產生一個名字,指向第一次導入在記憶體中產生的全局名稱空間

 

五,起別名

import 模塊名 as 別名

# 重點:導入一旦起別名,原模塊名變數失效,本質只產生了別名變數指向模塊文件的全局名稱空間

 

六,模塊的分類

# 大方向:內置(built-in) | 自定義(系統提供 | 第三方提供 | 自己自定義)

 

七,模塊的載入順序

# 記憶體 > 內置 > sys.path (安裝環境變數中路徑的先後順序逐一載入)

 

八,環境變數

# 環境變數:存放路徑的list,第一位預設一定是當前執行文件所在的路徑
import sys
# sys.path就是環境變數

# 清空環境變數:所有導入都不能使用了
sys.path.clear()

# 添加指定路徑到環境變數
sys.path.append()
sys.path.insert()

 

九,from...import語法導入

# 導入完成的三件事
# 1.將被導入的模塊編譯形成對應的pyc文件
# 2.進入模塊,從上執行執行模塊中的代碼,將產生的所有名字存放在該模塊文件的全局名稱空間中
# 3.在導入模塊的文件中形成(一個或多個)名字指向模塊全局名稱空間中的(一個或多個)具體名字

from 模塊名 import 模塊中的名字1, ..., 模塊中的名字n
from 模塊名 import 名字 as 別名


# from...import導入依賴環境變數 sys.path

 

十,from...import *

# 模塊中預設會添加 __all__ ,__all__ 就是管理模塊中能被 * 導入的變數們
# __all__可以自定義,自定義 * 能導入的變數們, __all__的list中名字全部可以自定義

__all__ = ['a', 'b', 'c', 'd_', '_e'] # 系統預設添加的__all__中不會納入 _開頭的名字 # -- 所以預設在外界通過from...import *無法導入_開頭的名字 # -- _開頭的名字對from...import *是隱藏的,指名道姓依然可以被外界導入使用

 

十一,鏈式導入

# t1導入m1,m1導入m2,m2導入m3

# 執行流程:右鍵執行t1,在t1導入m1模塊的地方直接進入m1,去執行m1,同理在m1執行過程中遇到導入m2,會馬上進入m2,去執行m2,一直到m3
,m3執行完畢,會回到m2中導入m3的語句,接著往下執行m2,m2執行完畢回到m1,以此類推返回到t1
# 在整個執行流程中,遇到任何模塊的二次導入,都是直接引用記憶體中的名稱空間,不會再次進入模塊

 

十二,迴圈導入

# 迴圈導入的問題點:名字沒有產生就使用名字
# 解決迴圈導入:先產生名字,在導入模塊
#       -- 將會產生迴圈導入的模塊,導入語法延後 - 延後導入


# 問題
# m1.py
import m2
print(m2.y)
x = 666

# m2.py
import m1
print(m2.x)
y = 888



# 解決
# m1.py
x = 666
import m2
print(m2.y)


# m2.py
y = 888
import m1
print(m2.x)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python基礎數據類型:字典dict 01 內容大綱 字典的初識 字典的使用(增刪改查) 字典的嵌套 02 具體內容 字典的初識: why: 列表可以存儲大量的數據,數據之間的關聯性不強 ['太白', 18, '男', '大壯', 3, '男'] 列表的查詢速度比較慢。 what:容器型數據類型: ...
  • 建議先瞭解為什麼項目要使用 MQ 消息隊列,MQ 消息隊列有什麼優點,如果在業務邏輯上沒有此種需求,建議不要使用中間件。中間件對系統的性能做優化的同時,同時增加了系統的複雜性也維護難易度;其次,需要瞭解各種常見的 MQ 消息隊列有什麼區別,以便在相同的成本下選擇一種最合適本系統的技術。 本文主要討論 ...
  • 在程式中如何讀寫文件?不同的編程語言有不同的方式,而 JAVA 則提出了“流”的概念,通過“流”來讀寫文件 什麼是流: 流(Stream)是指一連串的數據(字元或位元組),是以先進先出的方式發送信息的通道,數據源發送的數據經過這個通道到達目的地,按流向區分為輸入流和輸出流 什麼是輸入流:數據流從數據源 ...
  • 新聞 "FableConf 2019開始徵集提案" "2019理事會選舉 " "如同DSL一般的Elmish封裝器fable elmish,可以創建控制台或者終端界面" "介紹VS Code的遠程開發" "F (.NET Core 2.1)開發容器" "SAFE開發容器定義示例" "Rider 20 ...
  • #include<iostream> #include<string> #define ml 10 using namespace std; typedef struct{//定義Data數據項 std::string name; long num; }Data; struct Link{//定義結 ...
  • 數組,是我們最常用的,但是有時候,我們要用數組,但是又不知道數組的類的長度的時候, 我們java就有一個很好用的工具Collection,這都是java的爸爸的用心良苦,Collection中包含List和Set 和Map,但是今天老師講了List和Set。List是有序泛型數組。Set是無序泛型數 ...
  • wc命令含義 wc命令用查看文件的行數、單詞數、字元數等信息 wc命令格式 wc [-clmw] [file ...] wc命令參數以及實例介紹 (1)最基礎的查看文件的行數、單詞數、字元數等信息 (2)-l 選項 :統計文件的行數信息 (3) -w 選項:統計文件的單詞數信息 (4)-c 選項:統 ...
  • 1 import pandas as pd 2 import numpy as np 3 4 # merge合併 ,類似於Excel中的vlookup 5 6 df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 7 'A': ['A0', 'A1... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...