关于包导入,这三个知识点太多人不知道了

7、python基础:错误和异常 文章目录前言一、句法错误二、异常三、处理异常四、触发异常五、异常链python官方文档链接python官方标准库链接 前言 余生平,怎一个懒字了得。 一、句法错误 句法错误又称解析错误,是学习 Python 时最常见的错误: >>> while True print('Hello world') File "<stdin>", line 1 while True print('Hello world') ^ SyntaxErro 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料、代码以及交流解答点击即可加入


1. 使用 all 控制可被导入的变量

使用 from module import * 默认情况下会导入 module 里的所有变量,若你只想从模块中导入其中几个变量,可以在 module 中使用 all 来控制想要被其他模块导入的变量。

# profile.py
name='小明'
age=18

__all__=['name']

打开 python console 验证一下

>>> from profile import *
>>> print(name)
小明
>>> print(age)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'age' is not defined

__ all __ 仅对于使用from module import * 这种情况适用。

它经常在一个包的 __ init __.py 中出现。

2. 命名空间包的神奇之处

命名空间包,对于不少人来说,可能是一个陌生的名字。

与我们熟悉的常规包不同的是,它没有 __ init __.py 文件。

更为特殊的是,它可以跨空间地将两个不相邻的子包,合并成一个虚拟机的包,我们将其称之为 命名空间包。

例如,一个项目的部分代码布局如下

foo-package/
    spam/
        blah.py

bar-package/
    spam/
        grok.py

在这2个目录里,都有着共同的命名空间spam。在任何一个目录里都没有init.py文件。

让我们看看,如果将foo-package和bar-package都加到python模块路径并尝试导入会发生什么?

>>> import sys
>>> sys.path.extend(['foo-package', 'bar-package'])
>>> import spam.blah
>>> import spam.grok
>>>

当一个包为命名空间包时,他就不再和常规包一样具有 __ file __ 属性,取而代之的是 __ path __

>>> import sys
>>> sys.path.extend(['foo-package', 'bar-package'])
>>> import spam.blah
>>> import spam.grok
>>> spam.__path__
_NamespacePath(['foo-package/spam', 'bar-package/spam'])
>>> spam.__file__
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute '__file__'

3. 模块重载中的一个坑

由于有 sys.modules 的存在,当你导入一个已导入的模块时,实际上是没有效果的。

为了达到模块的重载,有的人会将已导入的包从 sys.modules 中移除后再导入

就像下面这样子

>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> sys.modules['foo.bar']
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>
>>> del sys.modules['foo.bar']
>>>
>>> import foo.bar
successful to be imported

上面的例子里我使用的是import foo.bar ,如果你使用的是 from foo import bar 这种导入形式,会发现重载是同样是无效的。

这应该算是一个小坑,不知道的人,会掉入坑中爬不出来。

>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> del sys.modules['foo.bar']
>>> from foo import bar
>>>

因此,在生产环境中可能需要避免重新加载模块。而在调试模式中,它会提供一定的便利,但你要知道这个重载的弊端,以免掉入坑里。

第一个pyhton程序 Traceback (most recent call last): File “<stdin>“, line 1, in <module>NameError: name 第一个pyhton程序 Traceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name 阅读详情

相关推荐

Python模块与包【建议收藏】

这篇文章详细介绍了Python模块与包的知识

Elio_akun的博客 1856

Python File “<stdin>“, line 1 ^ SyntaxError: invalid syntax问题

问题 使用Python运行代码时反复跳出“File “”, line 1 ^SyntaxError: invalid syntax”问题,运行不了。着急 原因 原因如下:之前已经运行过,进入了py程序内,没有退出 上图中已通过输入python进入了python运行环境,出现>>>时候的不能再用python z.py 来运行hello.py文件; 应该通过exit()退出当前python运行环境,然后再输入python hello.py来运行桌面上的hello.py文件; 解决方

Qiao_er682的博客 2万+

Unity按需导入实战:告别unitypackage整包依赖的坑

在Unity开发中,资源与依赖管理直接影响工程稳定性和协作效率。传统的unitypackage整包导入虽然操作简单,却容易引入冗余文件、GUID冲突及版本冲突,尤其在团队协作时隐患巨大。按需导入作为一种声明式依赖管理思维,通过Unity Package Manager(UPM)将资源包纳入manifest.json统一管理,实现依赖的可读、可查、可回滚。本文从整包导入的痛点出发,详细介绍了手动筛选、解包转UPM、git URL安装等三种实操方案,并分享了迁移过程中的踩坑记录与解决策略,帮助开发者实现从“打包

weixin_29008805的博客 325

【新手向】【Python】pip install 报错File “<stdin>“, line 1, in <module>NameErro

在python环境中运行pip命令报错的解决办法。

weixin_44114514的博客 1万+

eclipse项目导入as

eclipse项目导入androidStudio

u014766637的博客 4075

python安装报错

我的电脑 – 右击 – 属性 – 高级系统设置 – 环境变量(N) – Path – 编辑 – 新建(N)首先,查看python环境变量有没有配置。如果是在 python控制台下输入报错。python安装完,测试报错。在python控制台可以输。需要在cmd控制台输入。

Davina_yu的博客 1452

在Python中关于包导入,这三个知识点太多人不知道了...

1. 使用all控制可被导入的变量 使用 from module import * 默认情况下会导入 module 里的所有变量,若你只想从模块中导入其中几个变量,可以在 module 中使用all来控制想要被其他模块导入的变量。 # profile.py name='小明' age=18 __all__=['name'] 打开 python console 验证一下 >>> from profile import * >>> print...

mifffy_java的博客 286

0基础学Python系列【09】轻松搞定 Python 中的模块和包导入

在 Python 中,模块(module)和包(package)是代码组织的基本单位。模块是一个包含 Python 代码的文件,后缀通常是.py。包是包含多个模块的文件夹,必须有一个特殊的文件(自 Python 3.3 起,这个文件可以省略)。导入模块和包是 Python 编程中必不可少的一部分。导入方式优点缺点import 模块简单明了,命名冲突少需要模块名前缀,稍显啰嗦from 模块 import 工具代码简洁,直接使用函数或变量可能导致命名冲突from 模块 import *

奔跑的蜗牛 485

Pycharm导入 Opencv的CV2 包过程(喷血记录)

Pycharm导入 Opencv的CV2 包过程(喷血记录) -<配置python 环境以及安装numpy和matplotlibd的过程,不知道的朋友可以随便搜,正常操作就行了, 1. 我遇到的问题: ***第一个问题***是无法直接通过pycharm安装python-opencv,通过清华的开源opencv镜像文件可以快速的下载,又方便的安装到pycharm中. ***第二个问题***是安装了opencv-python,但是无法导入,在优快云看到无数条方案,找到一条解决方法,再此文综合.>

uuuuty的博客 2万+

stm32驱动NRF24L01_原理+代码解析

NRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK 调制,集成NORDIC自家的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。①2.4G全球开放的ISM频段,免许可证使用。②最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。③126个可选的频道,满足多点通信和调频通信的需要。④内置CRC检错和点对多点的通信地址控制。⑤可设置自动应答,确保数据可靠传输。//NRF24L01寄存器操作命令。

zyc18700766982的博客 2万+

RK3588部署Zipformer模型问题总结

本文分享了在RK3588嵌入式设备上部署小米Zipformer语音识别模型时遇到的问题及解决方法。主要遇到两个问题:1)在rknn_model_zoo例程编译时出现静态库版本不兼容,通过重新编译kaldi-native-fbank库并修改链接路径解决;2)sherpa-onnx编译时提示缺少portaudio库,通过修改编译脚本启用相关宏定义后成功编译。最终成功在RK3588上运行Zipformer模型,测试结果显示该模型具有较好的识别效果和实时性(RTF=0.22),验证了其在边缘设备上的适用性。

pkyang2004的博客 2149

IDEA如何自动导入依赖的jar包

tips:但是有时候自动导包也会带来一些问题,比如@ResponseBody注解,这个注解在Swagger和SpringBoot里面都有,某些情况下会导错包,导致接收不到前端传的json数据,需要注意下。我们在使用IDEA开发时,会引入第三方的jar包,这些第三方的jar包使我们可以快速的使用别人开发好的功能,而不用重复造轮子了。但是,有时候我们一下子需要导入太多的jar包,如果手动一个个去导入的话,会比较耗时间。最后,我们就可以导入自动导入jar包了。首先,我们点击设置,打开设置面板。

会编程的蜗牛的博客 1638

STM32CubeMX定时器进阶玩法:用编码器模式实现电机转速测量(附避坑清单)

本文详细介绍了如何使用STM32CubeMX配置定时器的编码器模式实现电机转速测量,包括硬件连接、CubeMX配置关键步骤、转速计算算法及常见问题解决方案。特别针对工业控制和机器人开发中的高精度需求,提供了实用的避坑清单和优化技巧,帮助开发者高效完成项目。

joy55的博客 203

Jar包的导入

今天来讲一个jar包的导入,对于刚开始学java的人来说,我们要开发,那么为了快速去完成某个项目任务,那肯定是用到各种的开发工具,这样才能让我们能够完成我们的开发,而要用到一些的开发工具去做我们的开发,那有的时候我们的开发工具也要做一些的准备工作才能去做我们的项目开发,因为在开始学java的同学就会知道在还没学到框架之前,我们要做一个web项目就要做很多的准备工作,而学完框架之后的开发是不用这么的麻烦的了。 好了,开始准备我们的工作吧,首先在开始做准备工作前,java的开发工具有很多,而目前我在学校里学ja

weixin_44550209的博客 4735

Vitis Model Composer闪退?手把手教你用命令行启动Vivado 2021后的System Generator

本文详细解析了Vitis Model Composer闪退问题的根本原因,并提供了命令行启动Vivado 2021后System Generator的完整解决方案。从环境变量配置、组件缺失排查到权限问题处理,手把手教你通过命令行深度排错,并分享高级自动化脚本和系统优化技巧,帮助开发者高效使用Vitis Model Composer与System Generator进行HDL开发。

weixin_26905487的博客 349

深度学习优化算法解析(Momentum, RMSProp, Adam)

之前看了很多人介绍网络的优化器optimizer,无奈很多都把简单的东西讲的复杂化了,不容易让人懂,恰好之前看过吴恩达老师的最新的课程,这里结合老师讲的和个人想法写一下,方便别人同时也为自己以后回顾吧。 深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及m

willduan的博客 12万+

MES系统导入的三个核心问题

就我等经验来说,提出想解决的问题越多,乙方越是为难,然后为了满足甲方的要求,不断赋予MES系统各种使命,最终的结果就是在实际运用中会发现,MES运行流程的复杂性、管控标准的滞后性、条件变更的呆滞性……以前的培训工作主要集中在产品装配的标准动作,无论老员工还是新员工,在产品装配上的标准动作上是没有太多区别的,但是在装配之外,比如备料的放置和拿取、完成品的放置、品质自检方法等等存在太多的差异,特别是在这次的观察中,发现老员工普遍在使用一种简易、自制的品质自检工装,通过这个工装,可以将自检时间缩短将近20%

cdfunlove的博客 1380

【C#程序员入门AI】必知的一些知识

2026年C#调用AI,核心就4个概念+3种方式4个概念:大模型(大脑)、嵌入(数字密码)、向量(载体)、Agent(超级助理)3种方式:云端API(快)、本地模型(隐私)、混合部署(最佳)不用怕复杂,跟着这个思路走,你就能从“AI小白”变成“C# AI开发能手”,把AI集成到你的.NET项目里,提升效率、创造价值!

人工智能AI技术 410

ImportError 找不到父包 使用相对导入报错

以前是选修过python的,不过忘的差不多了,还得多学多练呀。

qq_43949166的博客 2541

【零基础入门unity游戏开发——2D篇】大大简化了地形创建流程,减少Rule Tile的使用 —— AutoTile自动平铺瓦片的使用介绍

Unity 2D游戏开发中的AutoTile技术详解 摘要:本文详细介绍了Unity 2D游戏开发中的AutoTile技术,这是一种智能瓦片系统,能够自动处理地形和场景拼接。文章首先讲解了AutoTile的基本概念和优势,然后分步骤指导读者如何安装2D Tilemap Extras包、创建AutoTile、设置参数和绘制遮罩。通过实际案例演示了AutoTile的使用方法,并比较了AutoTile与Rule Tile的适用场景。最后指出AutoTile虽然使用方便,但对素材要求较高,开发者应根据项目需求选择合

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 732

与OpenClaw同类性质的AI智能体框架/工具汇总(小白友好)

OpenClaw的核心定位是「开源、本地优先、可执行真实任务的AI代理」,核心价值是让AI从“聊天”落地到“动手干活”(操控电脑/服务器、处理办公/系统任务)。结合这一核心,以下是同类性质的工具/框架,按「小白易上手程度」排序,每个产品重点说明和OpenClaw的异同、核心优势及适配场景,方便小白快速区分选择。

hy行者勇哥的博客 2108

导入一个python模块会占用太多内存

4. 如果你的模块中包含了很多类或函数,并且你只打算使用其中的一部分,那么你可以使用`import`和`from`结合的方式来实现。3. 如果你只需要导入模块的一部分,而不是整个模块,你可以使用`from`关键字来实现。5. 最后,如果你不需要导入任何模块,只是想执行一个Python文件中的代码,你可以直接运行这个文件。6. 如果你需要测试你写的代码,可以使用Python的unittest模块来编写测试用例。然后,你就可以直接使用`MyClass`和`af`了,而不需要通过模块名来访问。

521

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JavaSE:包

1.包是什么 包 (package) 是组织类的一种方式 在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。 2.自定义包 基本规则 在文件的最上方加上一个 package 语句指定该代码在哪个包中 包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.niu.www) 包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/niu/www来存储代码 如果一个类没有 package 语句, 则该类被放到一个默认包中. 操作

weixin_55547460的博客 265

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上手Python之包

从物理上看,包就是一个文件夹,在该文件夹下包含了一个 __init__.py 文件,该文件夹可用于包含多个模块文件 从逻辑上看,包的本质依然是模块包的作用:当我们的模块文件越来越多时,包可以帮助我们管理这些模块, 包的作用就是包含多个模块,但包的本质依然是模块我们知道,包可以包含一堆的Python模块,而每个模块又内含许多的功能。所以,我们可以认为:一个包,就是一堆同类型功能的集合体。

一个菜鸡的博客 1313

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

中导入ai文件_AE软件导入PS素材和导入AI素材的几个不同点,你还不知道吗?

最近有很多小伙伴跟我说,让我专心录AE教程视频教程就好,不用费时间写图文教程了,因为他们感觉看视频教程就够用了。哈哈真的是给我的懒惰找了个好借口,说实话更新AE软件图文教程真的是让我头皮发麻。那么以后图文这一方面我就配合视频教程讲一下里面的重点以及难点。当然如果小伙伴们需要其他的软件教程,我也会发在图文这里,大家有什么需要可以在评论里告诉我,我会尽力去找。今天视频教程跟大家讲的是AE软件导入AI素...

weixin_30678145的博客 937

模块无法导入_【Python技术进阶-2】最全的Python模块和包详细指南

刚开始入门时,代码都是几行,十几行,在Python自带的解释器中就可以完成。逐渐的,代码会到几十行、上百行,就会用PyCharm/VSCode之类的Python IDE,通常是新建一个py文件,代码都写在这个py文件。小伙伴们学习都很努力,经过一段时间Python基础知识的学习,已经迫不及待的想要一展身手。有一位小伙伴叫小帅,要完成这样的功能:“从一批存储不同业务数据的Excel文件中读取数据,然...

weixin_42395498的博客 301
上一篇: Python 协程的本质?原来也不过如此
下一篇: 收藏|Python办公自动化不得不会的十大文件操作
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值