sys.modules 与sys.modules[__name__] 的理解

面向对象模块和包 1.1 模块 参考链接: 【Python 面向对象】模块和包 来源:优快云 Python面向对象——模块和包 来源:优快云 概念: 每一个以py为拓展名的python源文件都是一个模块,模块类似于一个工具包,在模块中定义的全局变量、函数、类都是提供给外界的工具,若要使用该包中的工具,则先导入此模块 模块化: 模块化是指将一个完整的程序分解为一个一个模块,完整的程序由多个模块组成 模块化优点: 方便开发、维护 模块具有复用性 1.2 模块的使用 模块的导入: 方法一:一次性把模块中的所用变量 阅读详情

sys.modules  以字典形式储存程序的所有模块  , __name__当前模块
例如:

print(__name__)
print(sys.modeles)
print(hasattr(sys.modules[__name__],'A'))  # 可用于映射当前模块是否有‘A’对象或类

输出:

__main__
{'sys': <module 'sys' (built-in)>, 'builtins': <module 'builtins' (built-in)>, '_frozen_importlib': <module '_frozen_importlib' (frozen)>, '_imp': <module '_imp' (built-in)>, '_thread': <module '_thread' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_weakref': <module '_weakref' (built-in)>, 'zipimport': <module 'zipimport' (built-in)>, '_frozen_importlib_external': <module '_frozen_importlib_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'nt': <module 'nt' (built-in)>, 'winreg': <module 'winreg' (built-in)>, 'encodings': <module 'encodings' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\encodings\\__init__.py'>, 'codecs': <module 'codecs' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\codecs.py'>, '_codecs': <module '_codecs' (built-in)>, 'encodings.aliases': <module 'encodings.aliases' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\encodings\\aliases.py'>, 'encodings.utf_8': <module 'encodings.utf_8' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\encodings\\utf_8.py'>, '_signal': <module '_signal' (built-in)>, '__main__': <module '__main__' from 'F:/python/路飞学城/python学习记录(天)/练习.py'>, 'encodings.latin_1': <module 'encodings.latin_1' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\encodings\\latin_1.py'>, 'io': <module 'io' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\io.py'>, 'abc': <module 'abc' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\abc.py'>, '_abc': <module '_abc' (built-in)>, 'site': <module 'site' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site.py'>, 'os': <module 'os' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\os.py'>, 'stat': <module 'stat' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\stat.py'>, '_stat': <module '_stat' (built-in)>, '_collections_abc': <module '_collections_abc' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\_collections_abc.py'>, 'ntpath': <module 'ntpath' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\ntpath.py'>, 'genericpath': <module 'genericpath' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\genericpath.py'>, 'os.path': <module 'ntpath' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\ntpath.py'>, '_sitebuiltins': <module '_sitebuiltins' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\_sitebuiltins.py'>, 'traceback': <module 'traceback' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\traceback.py'>, 'collections': <module 'collections' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\collections\\__init__.py'>, 'operator': <module 'operator' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\operator.py'>, '_operator': <module '_operator' (built-in)>, 'keyword': <module 'keyword' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\keyword.py'>, 'heapq': <module 'heapq' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\heapq.py'>, '_heapq': <module '_heapq' (built-in)>, 'itertools': <module 'itertools' (built-in)>, 'reprlib': <module 'reprlib' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\reprlib.py'>, '_collections': <module '_collections' (built-in)>, 'linecache': <module 'linecache' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\linecache.py'>, 'functools': <module 'functools' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\functools.py'>, '_functools': <module '_functools' (built-in)>, 'tokenize': <module 'tokenize' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\tokenize.py'>, 're': <module 're' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\re.py'>, 'enum': <module 'enum' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\enum.py'>, 'types': <module 'types' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\types.py'>, 'sre_compile': <module 'sre_compile' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\sre_compile.py'>, '_sre': <module '_sre' (built-in)>, 'sre_parse': <module 'sre_parse' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\sre_parse.py'>, 'sre_constants': <module 'sre_constants' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\sre_constants.py'>, '_locale': <module '_locale' (built-in)>, 'copyreg': <module 'copyreg' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\copyreg.py'>, 'token': <module 'token' from 'C:\\Users\\huawang\\AppData\\Local\\Programs\\Python\\Python37\\lib\\token.py'>, 'sitecustomize': <module 'sitecustomize' from 'E:\\谷歌下载\\pycharm\\PyCharm 2020.2\\plugins\\python\\helpers\\pycharm_matplotlib_backend\\sitecustomize.py'>}

True

深入理解Python sys模块:从基础原理到实战应用 在Python编程中,模块导入机制和运行时环境交互是核心基础概念。Python通过sys模块提供了与解释器深度交互的接口,其原理在于管理模块搜索路径、控制程序流程和访问系统资源。这一机制的技术价值在于实现代码的可移植性、调试效率和性能优化,广泛应用于命令行工具开发、跨平台部署和系统集成等场景。本文聚焦sys模块的实战应用,特别针对模块导入路径管理和标准流控制等常见问题,通过sys.path配置和sys.argv解析等热词案例,帮助开发者掌握环境配置与错误排查的关键技能。 阅读详情

相关推荐

Python sys模块深度解析:标准流、系统交互与疑难排查

在Python编程中,系统交互是构建健壮应用的基础。sys模块作为Python标准库的核心组件,提供了与解释器运行时环境直接交互的接口,其原理基于操作系统底层的文件描述符和进程通信机制。这一机制的技术价值在于,它允许开发者精细控制程序的输入输出行为、管理模块导入路径、获取运行时信息,从而提升程序的跨平台兼容性和可调试性。在实际应用场景中,sys模块常用于命令行参数解析、标准流重定向、性能优化以及环境诊断,特别是在处理容器化部署、嵌入式系统等复杂环境时,对sys.stdin、sys.stdout、sys.st

weixin_30617695的博客 356

sys.modules[__name__]

sys.modules[_name_] 在B站上学习李沐大神的动手学习深度学习V2,对他使用的dl2库源代码很感兴趣,然后,发现dl2库中包含以下几个文件,分别对应不同的深度学习库 在导入其中torch脚本的时候,会使用如下代码: from d2l import torch as d2l 初看起来感觉有点奇怪,然后torch.py脚本中有如下一行代码 d2l = sys.modules[__name__] 查阅了一些博客,给出的信息为 大致应该是,一种将当前代码归入到module中使用的方式,所以才

qian_chun_qiang的博客 2067

五、e2studio VS STM32CubeIDE之汉化

介绍stm32cubeide汉化方案和汉化包e2studio自带汉化包,在安装过程中可选择安装e2studio STM32CubeIDE切换中英文。

cl234583745的博客 1766

python的sys.modules[__name__]

转载一篇写的不错的文章python module

weixin_44548214的博客 1398

声纹识别实战:用Python从零搭建一个简易声纹验证系统(附完整代码)

本文是一份详细的声纹识别实战指南,教你使用Python从零搭建一个简易的声纹验证系统。文章涵盖了从音频采集、预处理、MFCC特征提取,到基于高斯混合模型(GMM)的建模与验证全流程,并提供了完整的代码实现,帮助开发者快速掌握这项生物特征识别核心技术。

ik6789012的博客 230

【pprof】简要学习教程

基本介绍 pprof 是在做性能优化前的性能分析工具。 安装: go get -u github.com/google/pprof 分析工具 go tool pprof 是命令行指令,用于分析 Profiling 数据,源数据可以是 http 地址,也可以是已经 dump 下当 profile 文件;查看模式可以命令行交互模式,也可以是浏览器模式(-http 参数)。 两种应用 服务型应用 _ "net/http/pprof" 包,专用于采集 web 服务 运行数据的分析。即在运行的服务中通过 API .

码农印象 883

sys.modules[__name__]的一个实例

  关于sys.modules[__name__]的用法,百度上阅读量比较多得一个帖子是:https://www.cnblogs.com/robinunix/p/8523601.html   对于里面提到的基础性的知识点这里就不再重复了,大家看原贴就好。这里为大家提供一个详细的例子,帮助大家更进一步的理解。   有这样一个需求:我们需要在whw.json文件中读取出name键对应的value,...

weixin_30312659的博客 2788

围绕国产化操作系统以及人大金仓地理空间库的GIS的解决方案,含超详细部署步骤以及与QGIS,GeoServer,PostGlS Shapefile lmport/Export Manager的连接步骤

人大金仓软件 2.1软件的下载以及授权的相关文件插件 2.2上传至虚拟机 2.3KingbaseES V8R6数据库部署过程 2.3.1创建安装用户 2.3.2赋权 2.3.3.创建安装目录且赋权 2.3.4 准备挂载 2.4kingbase安装方法 2.7postgis安装 3 人大金仓数据库与QGIS的连接 4 人大金仓数据库与PostGlS Shapefile lmport/Export Manager的连接 5 人大金仓数据库与geoserver的连接

挣钱花388的博客 2590

Python-2.30 sys模块

import sys print(sys.path) # 值为一个列表,存放了一系列的对文件夹 # 其中第一个文件夹是当前执行文件所在的文件夹 import sys # 找foo.py就把foo.py的文件夹添加到环境变量中 sys.path.append(r'/Users/linhaifeng/PycharmProjects/s14/day21/aa') # import foo # foo.say() # sys.modules查看已经加载到内存中的模块 import sys import

weixin_49729516的博客 204

【webrtc】openh264编码:动态配置码控参数触发IDR编码

SetRates 下发RateControlParameters 给到openh264 编码器 void SetRates(const RateControlParameters& parameters) override; LayerConfig 编码器这边的配置是layerconfig,具体到层的: std::vector<LayerConfig> configurations_; void H264EncoderImpl::SetRates(const RateCo.

突围 723

【PyTorch】CNN(一维卷积Conv1D)实现时间序列预测

本文介绍了一维卷积神经网络(Conv1D)在时间序列预测中的应用,展示了其基本原理及实现方式。通过合适的数据预处理和模型调参,Conv1D可以有效地捕捉时间序列数据中的模式,从而进行精准预测。

走向CTO的路上... 1172

python学习笔记 day20 导入模块和包

导入模块: import demo money=200 demo.func() # demo.py中有变量名money 在该文件中又定义了一个money=200 那么demo.py中的money 变量打印100 因为会现在本地找,read()函数的本地就是它所在的py文件 运行结果: 同一个模块不会被重复导入 import demo import demo 运...

weixin_30677475的博客 181

YOLOv8/v9实战:从零搭建智慧零售货架管理系统(附完整可运行代码)

摘要:本文基于YOLOv8/v9目标检测算法,详细讲解智慧零售货架管理系统的开发流程,解决传统人工巡检效率低、漏检率高的问题。内容涵盖环境配置、商品检测、陈列分析、价格标签验证等核心功能实现,提供可运行代码及零售专用数据集训练方法。系统支持实时货架状态监控、缺货预警与数据分析,帮助零售企业降低运营成本30%以上。 关键词:YOLOv8、YOLOv9、智慧零售、货架管理、商品检测 标签:YOLOv8、YOLOv9、目标检测、零售AI、Python

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1309

sys.all_sql_modules 视图, 它里面存储了函数,表,存储过程,视图等的定义语句

今天向大家介绍Sql server 中的 sys.all_sql_modules 视图, 它里面存储了函数,表,存储过程,视图等的定义语句。介绍这个视图之前先介绍下 sys.all_objects 视图,这个视图视图里有所有对象的名字(函数名,表名,存储过程名,视图名,(主/外)

farawayplace613的专栏 2434

Linux7 挂载 nfs 远程目录

每天一个 DBA 小知识,助你更进一步!

LuciferLiu_DBA 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Salt 的 whitelist_modules 双加载器模型:beacons / engines / mine / schedule / sys.doc 内部子系统组合机制解析

`whitelist_modules` 是 Salt minion 上用于收紧执行模块暴露面(wire-facing surface)的安全配置项。当运维人员只白名单少量模块(例如仅 `test`)时,Salt 内部自带的 beacons、engines、mine、调度器以及 `sys.doc` 错误路径的查询可能因为引用了未列入白名单的辅助模块(如 `status`、`config`、`time

gitblog_00019的博客 715

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

深入理解Python模块导入机制:从sys.modules到循环导入与性能优化

模块化与依赖加载是现代软件工程的基础能力,Python通过import语句把模块查找、缓存和命名空间绑定串联起来。理解sys.path的搜索顺序与sys.modules的缓存机制,能解释ModuleNotFoundError、同名遮蔽、循环导入等常见现象,也能指导绝对/相对导入、命名空间包和动态导入的工程取舍。进一步结合importlib与懒加载优化启动耗时,可服务于插件化架构、服务冷启动和多入口项目等场景。围绕Python模块导入机制,从执行流程、包识别规则到排查手法与性能约束,形成可落地的工程实践。

weixin_31714129的博客 271

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Gel 数据模型指南:深入理解模块(Modules)——SDL 声明、名称解析与 DDL 操作

在 Gel(前身 EdgeDB)中,每个分支(branch)的 schema 都由若干**模块(module)**组成,模块是组织大型 schema 的第一级逻辑容器:它承载类型、函数与子模块,并通过命名空间机制决定名称的解析规则。本文以官方文档 [docs/reference/datamodel/modules.rst](https://link.gitcode.com/i/2e19a49790

gitblog_00521的博客 1035

你的 import 为何“认错人”?——Python sys.path 修改引发模块名冲突的致命混乱与根治术

摘要:Python模块导入混乱的根源与解决方案 当Python的sys.path被手动修改时,同名模块冲突会导致程序静默加载错误版本,引发难以追踪的bug。典型场景包括:本地文件遮蔽标准库(如自定义json.py覆盖标准库)、项目路径顺序错误导致导入错误模块、第三方包与标准库命名冲突等。问题根源在于Python按sys.path顺序加载首个匹配模块并缓存至sys.modules,后续导入直接复用缓存。 常见陷阱包括:过早插入当前目录到sys.path、使用相对路径、在__init__.py中修改路径等。这些

深山技术宅的博客 225

深入理解Python的if __name__ == ‘__main__‘:原理、场景与最佳实践

在Python编程中,模块与脚本的边界往往由一行代码清晰划分:if __name__ == '__main__'。理解它的关键在于掌握Python解释器如何加载文件——当脚本作为主程序运行时,__name__被赋值为__main__;而通过import导入时,则成为模块名。这一机制直接决定了代码的入口保护,避免了导入即执行的副作用。无论是日常数据处理、爬虫脚本,还是多进程编程与包管理,正确使用入口判断都能让模块兼具可复用性与独立运行能力。同时,它也是pytest等测试框架安全收集用例、避免顶层副作用的关键。

weixin_34116482的博客 257

彻底讲透Python的__name__:它与文件名、__main__及模块导入的关系

在Python编程入门阶段,__name__与if __name__ == '__main__'是绕不开的核心概念。很多学习者误以为__name__等于文件名,却在直接运行与import导入时看到完全不同的行为,由此产生困惑。实际上,__name__是模块对象的一个属性,它的值由模块的加载方式决定:作为主脚本运行时固定为__main__,作为模块导入时则被赋值为import语句使用的模块名。理解这一机制,不仅有助于理清Python模块导入与代码执行顺序,也能帮助开发者正确设计可复用模块、避免顶层代码副作用。

weixin_32175665的博客 302

Python模块执行机制与__name__变量详解

Python模块是代码组织的基本单元,理解其执行机制对开发至关重要。模块导入时,Python解释器会执行顶层代码,这时`__name__`变量会根据执行方式自动变化:直接运行时为`__main__`,被导入时为模块名。这一特性衍生出`if __name__ == '__main__'`的经典用法,既能隔离测试代码,又能优化多进程性能。在实际工程中,该模式广泛应用于命令行工具开发、模块测试隔离以及大型项目组织,是Python开发必须掌握的核心技术之一。结合模块缓存机制和现代打包工具,可以构建更高效、更易维护的

weixin_30307921的博客 410

彻底讲透Python的__name__与if __name__ == ‘__main__‘机制

在Python开发中,模块与脚本的边界常常让初学者困惑:为什么同一个文件直接运行和作为模块导入时,执行结果会不同?这背后是Python解释器对代码加载方式的区分。当文件作为程序入口运行时,其特殊变量__name__会被赋值为'__main__';而当它被其他模块导入时,__name__则等于模块名。理解这一机制,有助于合理组织项目代码,避免顶层副作用引发意外错误。通过将可执行逻辑封装在main()函数中,并用if __name__ == '__main__'作为唯一入口,既能保持模块可复用性,又能方便命令行

weixin_29234509的博客 276

python基础-flask源码中使用的模块:sys.module的使用和场景

前言 最近在做一件事情:把flask的源码通读一遍。虽然对flask的运行原理已经比较理解了。但是看了一些代码,发现有很多用法都很有借鉴意义。并且有很多基础模块自己还是不会用。所以决定细细的看一遍flask源码。 一、sys.module的使用 sys.module是一个全局的字典,在初始化python后就已经加载到内存了。比如我们使用的平时的模块,其实早就在module里面记录了。如下: import sys print(sys.modules.get("random")) # 输出 &lt

NeverLate_gogogo的博客 873

Python模块执行机制与`if __name__ == ‘__main__‘`详解

Python模块作为程序组织的基本单元,其执行机制直接影响代码行为。通过`__name__`特殊变量,Python实现了模块的双重身份:既可作为库被导入,也能作为脚本直接运行。这种设计模式在工程实践中具有重要价值,既能隔离测试代码,又能实现命令行工具开发。理解`if __name__ == '__main__'`的工作原理,有助于构建更健壮的Python项目结构。在模块化开发和性能优化场景中,合理运用这一特性可以显著提升代码的可维护性和执行效率。

weixin_30444111的博客 5
上一篇: 网络通信 客户端与服务端解决沾包问题模板
下一篇: pycharam 一键折叠(或展开)所有代码片段
Python_bh
博客等级 码龄7年 11粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值