解碼 from XXX import * - 導入的真相

文章目錄

  • 前言
  • 一、 什么是 from XXX import *?
  • 二、基本用法:導入的實際效果
  • 三、默認行為:無 __all__ 的情況
  • 四、與直接運行 XXX.py 的對比
    • 示例模塊
      • 使用 from XXX import *
      • 直接運行 python example.py
      • 關鍵差異
  • 五、為什么需要注意 from XXX import *?
    • 最佳實踐
  • 六、實際應用場景
  • 總結


前言

Python 的模塊導入機制是其生態系統的基石之一,讓開發者可以輕松復用代碼、組織項目。在眾多導入方式中,from XXX import * 以其簡潔而獨特的形式常常出現在代碼中。然而,它究竟做了什么?它與直接運行模塊文件有何不同?在“Python 解碼”系列的第六篇中,我們將深入剖析這一語句,揭示它背后的真相。

你是否曾疑惑 * 導入了哪些內容?或者擔心它會帶來隱藏的風險?通過本文,你將不僅理解 from XXX import * 的工作原理,還能學會如何正確使用它。讓我們一起撥開迷霧,探索導入的奧秘吧!


一、 什么是 from XXX import *?

在 Python 中,from XXX import * 是一種模塊導入方式,它會將模塊 XXX 中指定的一部分名稱(變量、函數、類等)注入到當前命名空間。表面上看,它像是“把模塊里的一切都拿過來”,但真相遠沒有這么簡單。

  • 核心行為
    • 加載模塊 XXX(通常是 XXX.py 文件)。
    • 根據規則將模塊中的名稱導入當前作用域。
  • 控制因素:受模塊中 __all__ 變量或默認命名約定的影響。

讓我們一步步解碼它的運作過程。

二、基本用法:導入的實際效果

假設有一個模塊 my_module.py

# my_module.py
__all__ = ['public_function', 'x']def public_function():return "This is public"def _private_function():return "This is private"x = 10
y = 20

現在,在另一個文件中使用它:

# 

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

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

相關文章

JavaScript 中常見的鼠標事件及應用

JavaScript 中常見的鼠標事件及應用 在 JavaScript 中,鼠標事件是用戶與網頁進行交互的重要方式,通過監聽這些事件,開發者可以實現各種交互效果,如點擊、懸停、拖動等。 在 JavaScript 中,鼠標事件類型多樣&#xff0…

Nacos注冊中心AP模式核心源碼分析(單機模式)

文章目錄 概述一、客戶端啟動主線流程源碼分析1.1、客戶端與Spring Boot整合1.2、注冊實例(服務注冊)1.3、發送心跳1.4、拉取服務端實例列表(服務發現) 二、服務端接收請求主線流程源碼分析2.1、接收注冊請求2.1.1、初始化注冊表2…

prism WPF 模塊

模塊 DLL ModuleA 和 ModuleB 都要安裝 Prism.Unity 引用方式1 項目引用 直接 在引用中添加項目引用 App.xaml.cs 添加模塊 ConfigureModuleCatalog using ModuleA; using ModuleB; using Prism.Ioc; using Prism.Modularity; using Prism.Unity; using PrismWpfApp.ViewMo…

CSS:換行與不換行

一、CSS 不允許換行 在 CSS 中,有幾種方法可以控制文本不換行: 1. 使用 white-space 屬性 .no-wrap {white-space: nowrap; } white-space: nowrap; 會強制文本在一行顯示,不換行。 2. 使用 overflow 和 text-overflow 通常與 white-sp…

JavaScript BOM、事件循環

目錄 BOM(瀏覽器對象模型) 一、window 對象 1. 窗口控制 2. 定時器 二、location 對象 三、navigator 對象 四、history 對象 五、screen 對象 六、本地存儲 1. localStorage 2. sessionStorage 七、BOM 應用場景 八、總結 JavaScript 執行…

k8s運維面試總結(持續更新)

一、你使用的promethues監控pod的哪些指標? CPU使用率 內存使用率 網絡吞吐量 磁盤I/O 資源限制和配額:Prometheus可以監控Pod的資源請求和限制,確保它們符合預設的配額,防止資源過度使用。具體指標如container_spec_cpu_quota用于…

ubuntu20.04升級成ubuntu22.04

命令行 sudo do-release-upgrade 我是按提示輸入y確認操作,也可以遇到配置文件沖突時建議選擇N保留當前配置

Cortex-M? 函數調用的入棧與出棧操作

在 ARM Cortex-M 系列單片機中,普通C函數調用的入棧(壓棧)和出棧操作通常由編譯器編譯后生成的代碼管理,而硬件僅負責部分關鍵操作。以下是詳細分析: 1. 函數調用與返回的核心機制 (1) 硬件自動完成的部分 返回地址的保存: 當通過 BL(Branch with Link)或 BLX 指令調用…

DeepSeek能否用于對話系統(Chatbot)?技術解析與應用實例!

引言:Chatbot 的進化與挑戰 你有沒有發現,現在的AI聊天機器人越來越聰明了?無論是客服助手、智能語音設備,還是社交媒體上的自動回復,Chatbot(對話系統)已經滲透到我們生活的方方面面。但問題是…

多表查詢的多與一

1.查尋表需要的條件 1.1.首先我們要了解查詢表有哪些 1.1.1.多對一 多對一就是一個年表擁有例外一個表的多條數據 一個表對應立一個表的多條數據,另一個表對應這個表的多條數據 這個點被稱為多對一 1.1.2.多對多 多對多簡單來說就是需要一個中間商 中間商就…

配置文件、Spring日志

SpringBoot配置?件 SpringBoot?持并定義了配置?件的格式, 也在另?個層?達到了規范其他框架集成到SpringBoot的 ?的. 很多項?或者框架的配置信息也放在配置?件 中, ?如: 項?的啟動端? 數據庫的連接信息(包含??名和密碼的設置) 第三?系統的調?密鑰等信息 ?…

嵌入式——Linux系統的使用以及編程練習

目錄 一、Linux的進程、線程概念 (一)命令控制進程 1、命令查看各進程的編號pid 2、命令終止一個進程pid 二、初識Linux系統的虛擬機內存管理 (一)虛擬機內存管理 (二)與STM32內存管理對比 三、Lin…

Springcache+xxljob實現定時刷新緩存

目錄 SpringCache詳解 SpringCache概述 核心原理 接口抽象與多態 AOP動態代理 核心注解以及使用 公共屬性 cacheNames KeyGenerator:key生成器 key condition:緩存的條件,對入參進行判斷 注解 xxl-job詳解 SpringcacheRedis實現…

前端Uniapp接入UviewPlus詳細教程!!!

相信大家在引入UviewPlusUI時遇到很頭疼的問題,那就是明明自己是按照官網教程一步一步的走,為什么到處都是bug呢?今天我一定要把這個讓人頭疼的問題解決了! 1.查看插件市場 重點: 我們打開Dcloud插件市場搜素uviewPl…

vector的介紹與代碼演示

由于以后我們寫OJ題時會經常使用到vector,所以我們必不可缺的是熟悉它的各個接口。來為我們未來作鋪墊。 首先,我們了解一下: https://cplusplus.com/reference/vector/ vector的概念: 1. vector是表示可變大小數組的序列容器…

ZLMediaKit 源碼分析——[5] ZLToolKit 中EventPoller之延時任務處理

系列文章目錄 第一篇 基于SRS 的 WebRTC 環境搭建 第二篇 基于SRS 實現RTSP接入與WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 環境搭建 第四篇 WebRTC學習一:獲取音頻和視頻設備 第五篇 WebRTC學習二:WebRTC音視頻數據采集 第六篇 WebRTC學習三…

【零基礎入門unity游戲開發——2D篇】SortingGroup(排序分組)組件

考慮到每個人基礎可能不一樣,且并不是所有人都有同時做2D、3D開發的需求,所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要講解C#的基礎語法,包括變量、數據類型、運算符、…

26信號和槽_自定義信號(1)

Qt 中也允許自定義信號 ①自定義槽函數,非常關鍵.開發中大部分情況都是需要自定義槽函數的. 槽函數,就是用戶觸發某個操作之后,要進行的業務邏輯. ②自定義信號,比較少見.實際開發中很少會需要自定義信號. 信號就對應到用戶的某個操作~ 在 GUI,用戶能夠進行哪些操作…

今天來介紹一下一個簡單,靈活的JavaScrip圖標工具Chart.js

Chart.js 柱形圖 先看效果&#xff1a; 代碼部分&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> <script src"https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/Chart.js/3.7…

Mysql 中的 binlog、redolog、undolog

Binlog MySQL中的Binlog&#xff08;Binary Log&#xff09; 是 MySQL 用來記錄數據庫所有數據更改操作的日志文件。它是 MySQL 數據庫的核心組件之一&#xff0c;廣泛應用于 數據復制、數據恢復 和 故障恢復 等操作中。 Binlog的主要作用&#xff1a; 數據復制&#xff08;…