源码技术
php
java
python
Linux
当前位置:
首页
>
python
>老万聊Python-模块的引用
老万聊Python-模块的引用
2026-09-02 19:16:49
老万聊Python-模块的引用
在软件开发时,不可能不引用其它的库(开发包)或仅用一个源文件,这就需要引用其它的包或工程中的其它源文件。在
python
中有两种方式引入开发包,今天老万聊聊这两种方式以及之间的区别。
一、
模块与
import
语句
一)
import
引入模块
importModule.py
定义了全局变量、函数及类,
CallModule.py
对
import Module
模块的引用及调用见图
1
:
图
1
首次使用
import
引入模块时,他将做以下
3
件事:
1、
创建新的命名空间,并把源文件编译成字节码(
.pyc)
或目标码
(.o)
,这可通过编译选项进行设置,本例为
importModule.cpython-39.pyc
;
2、
在新的命名空间中执行模块中包含的代码;
3、在调用import引入模块时,要用模块名作为前缀,这在一定程度上避免命名的重复,避免命名重复更好的方法是包的引用。
二)
使用
as
限定符
1
、在引入模块时可以使用
as
进行名称的更改。
例如
import numpy as np
该文件编译成字节码时,进行了预处理,把
np
仍
然换成
numpy
!!!
2、
更改已导入模块的名称对于编写可扩展代码很有用,例如
file_format=
’
xml
’
if file_format==
’
xml
’
:
import xmlreader as reader
elif
file_format==
’
csv
’
:
import csvreader as reader
二、
从模块中导入选定的符号
根据图
2
进行讲解
图
2
1
、
from importModule import fun
在调用该模块时,仅用
fun
进行调用,不需要加模块名作为前缀。很容易造成命名空间的冲突(即出现重名现象,
尤其是全局变量,若出现问题很难进行调试
)。
根据
Python
解释规则,以本模块的定义为首选(就近原则)。
2
、如果导入一个很长的名称列表,可以将名称放在括号内,这样可以轻松的将
import
语句放在多行上。
例如:
from importModule import (g_a,
fun,
Spam)
3、
as
限定符也可用于重命名使用
from
导入的具体对象
例如:
from importModule import Spam as sp
4、from importModule import *
导入模块中所定义的全局变量、函数及类,但不包含以下划线(
_
)开头的定义。
from importModule import *
语句只能在模块的顶层使用,不能放在函数内部(
import Module import
与
from importModule import fun
可以,参考图
2
)。原因在于将函数编译为内部字节码时,函数中所有的符号都需要的符号都需要明确指定,而
from importModule import *
没能指定具体的函数,而在顶层时它通过
__all__
来进行导入。
关于下划线,在
python
中有特殊的意义。(详细讲解请关注老万聊
python
)
三
import
与
from
导入的区别
1、
from
导入的模块比
import
导入的运行速度快近
1.2~1.4
倍,如图
3
:
图3
原因是:from导入取消了方法(函数)在模块的查找时间
2
、二则命名空间不同
3
、
网上所说的内存使用不同
(
进行验证,不正确
)
from...import...
会在内存中创建并加载该模块工具的副本,当有另外一个程序导入时,会在内存中创建另一个副本进行加载,不会共用一个副本。所以程序进行的修改不会影响到被导入的原模块,且不同程序之间不会互相影响。
import...
方法导入模块会在内存中直接加载该模块的全部属性。当出现多个程序导入该模块时,会共用一个模块,程序之间会互相影响,包括原模块。
图
4
进行测试,应该是错的。
图
4
工程需要多动手实践!!!
实践是检验真理的唯一方法。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:596563534@qq.com 。
Python Tkinter之工业用触摸屏界面优化技巧
全国雷达拼图下的SCIT风暴识别python实战
最新文章
Python Tkinter之工业用触摸屏界面优化技巧
Linux Mint(Ubuntu)如何在没有网卡驱动情况下利用手机上网安装旧电脑网卡等驱动程序指导书
Linux 进程被莫名杀掉,初中级运维该怎么一步步定位?
仅 7 步!Python 交互式可视化图表,直接上手
公饭第一课,在Kali Linux中装龙虾!
通过Python在Hive中实现层次查询
【第38期】21天养成编程习惯:Python刷题第16天
python做金句视频,应该解决了镜像问题,现在是哈希不匹配问题
Day5:一个Java后端的Python速成记:三天踩坑,一句话总结
2026年python小白自学路线推荐
热门文章
一文搞懂,Linux交叉编译(x86~ARM)
AI 垃圾代码围城,看 Linux 如何破局
当文科生开始学Python,到底能有多香?
python编程题-通过流程图一步一步拆解编程思路
零基础也能看懂的Python入门
一种全新的思维方式|《Think Python》第4章
atasketch,一个轻松驾驭的python项目!
Python学习第17天:PyQt6基础入门(第一个窗体+Qt Designer使用)
Python那些想不通的小事01:为什么不选最新版?
一起学Python(011):从思路到代码@出租车计费
随机文章
10个月宝宝每天需要喝多少奶粉?
Python AI Agent 零基础教程 | 第1篇:AI Agent入门——什么是AI Agent?
我愿称之为Python自动化最伟大的网站(没有之一)
Python AI Agent 零基础教程 | 第1篇:AI Agent入门——什么是AI Agent?
Python那些想不通的小事01:为什么不选最新版?
Python AI Agent 零基础教程 | 第1篇:AI Agent入门——什么是AI Agent?
Python AI Agent 零基础教程 | 第1篇:AI Agent入门——什么是AI Agent?
【极致详解Python 文件管理四大核心库】:os、glob、shutil、pathlib详细使用指南
一起学Python(011):从思路到代码@出租车计费
【Linux社区短距简报】linux-bluetooth周动态(20260415)
Litestar:Python异步API框架的新王诞生?这个FastAPI终结者正在悄然崛起