python导入模块
拿来主义:
import os import sys try: from apis import MgmtPlaneAPI except ImportError: curr_path = os.path.dirname(os.path.abspath(__file__)) web_svr_path = os.path.join(curr_path, os.pardir, os.pardir, os.pardir, 'some_module_dir') sys.path.insert(0, web_svr_path) from some_module_dir import xxx
参考:https://www.cnblogs.com/yangdonghao/p/7921468.html
1、模块的定义:
模块定义:用来逻辑上组织python代码(变量、函数、类、逻辑;目的是:实现一个功能),本质就是.py结尾的python文件。
补充:
包的定义:用来从逻辑组织模块的,本质就是一个目录(必须带有一个__init__.py文件)
2、导入方法:
导入模块的方法:
1.import module_name 导入一个模块
使用的时候需要加上前缀module_name.name
2.import module_name,module2_name 导入多个模块
3.from module_name import * 导入module_name模块里边的所有变量,不建议使用!
4.from module_name import name 只导入module_name里边的name解释了一遍。
使用的时候直接 name 调用即可
import 和from 的区别
1.import 的时候 module_name.logger()
2.from 的时候 logger() 直接执行;from的时候等于把所有代码都复制了一份,执行一下。
解释器:做的事就是指定一个变量 并指向一个内存地址,将代码内容放在了内存地址里边。
导入包的方法:
import 包的名字
多级目录导入方法:
查看当前路径:
import sys
sys.path
查找父及目录
import os
os.path.abspath(__file__)
abspath() 当前文件的绝对路径
__file__ 当前文件的文件名
os.path.dirname(os.path.abspath(__file__))
dirname() 获取目录名
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
路径加入
sys.path.append() 这样会把路径加入到python系统路径列表的最后,不利于快速查找。
sys.path.insert() 这样就会把路径加入到python系统路径列表的最前边。
例子:
import sys,os
print(sys.path)
a = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(a)
print(sys.path)
from xxx import xxx
3、import本质(路径搜索和搜索路径)
导入模块的本质: 就是把python文件解释一遍
分析:import module_name - - -》就是要解释module_name.py- - -》首先要找到module_name.py的位置- - -》查找系统路径sys.path,当前路径优先。
导入包的本质:就是执行该包下的__init__.py文件
导入包下边的test1.py文件
1.修改__init__.py文件,导入包下边的py文件
from . imprt test1
#import test1
2.在py文件中导入包下边的模块test1.py文件
4、导入优化
例如:
优化前:

module_test.py def test(): print ("in the test!") test.py import module_test def logger(): module_test.test() print("in the logger!") def search(): module_test.test() print("in the search!")
优化后:

module_test.py def test(): print ("in the test!") test.py from module_test import test def logger(): test() print("in the logger!") def search(): test() print("in the search!")
注意:
如果导入模块的方法和目前环境中有冲突,导入的时候可以设置别名:
from module_test import test as test01
标签:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2017-03-15 mongodb c++ driver安装踩坑记
2017-03-15 赴美生子诚实签
2017-03-15 签证存款证明——如果在签证前不久刚存入的资金,最好能够提供资金来源的证明,强调资金肯定不是借来的,是自己家的,这样的证明包括企业的营业执照和盈利的证明(账本),炒股的进出账单、有活期进出帐的存折,父母亲的收入证明等
2017-03-15 量子计算的基本原理——本质上是在操作薛定谔的猫(同时去运算和操作死+不死两种状态)