import方法引入模块详解

简介: import方法引入模块详解

在python用import或者from...import或者from...import...as...来导入相应的模块,作用和使用方法与C语言的include头文件类似。其实就是引入某些成熟的函数库和成熟的方法,避免重复造轮子,提高开发速度。


python的import方法可以引入系统的模块,也可以引入我们自己写好的共用模块,这点和php非常相似,但是它们的具体细节还不是很一样。因为php是在引入的时候指明引入文件的具体路径,而python中不能够写文件路径进行引入。


下面总结一下import的几种情况:


python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。


下面将具体介绍几种常用情况:


(1)主程序与模块程序在同一目录下:


如下面程序结构:

`-- src
    |-- mod1.py
    `-- test1.py

 若在程序test1.py中导入模块mod1, 则直接使用import mod1或from mod1 import *;

(2)主程序所在目录是模块所在目录的父(或祖辈)目录

如下面程序结构:

`-- src
    |-- mod1.py
    |-- mod2
    |   `-- mod2.py
    `-- test1.py

若在程序test1.py中导入模块mod2, 需要在mod2文件夹中建立空文件__init__.py文件(也可以在该文件中自定义输出模块接口); 然后使用 from mod2.mod2 import * 或import mod2.mod2.


(3)主程序导入上层目录中模块或其他目录(平级)下的模块


如下面程序结构:

`-- src
    |-- mod1.py
    |-- mod2
    |   `-- mod2.py
    |-- sub
    |   `-- test2.py
    `-- test1.py

 若在程序test2.py中导入模块mod1和mod2。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立该文件。然后调用方式如下:


  下面程序执行方式均在程序文件所在目录下执行,如test2.py是在cd sub;之后执行python test2.py


而test1.py是在cd src;之后执行python test1.py; 不保证在src目录下执行python sub/test2.py成功

   import sys
   sys.path.append("..")
   import mod1
   import mod2.mod2
相关文章
|
Ubuntu Linux 计算机视觉
NumPy 秘籍中文第二版:二、高级索引和数组概念
NumPy 秘籍中文第二版:二、高级索引和数组概念
134 0
|
SQL DataWorks 数据可视化
DataWorks操作报错合集之使用sql查询报错:系统异常,是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
Linux 图形学
深入理解Qt定时器:QTimer的魅力与挑战(一)
深入理解Qt定时器:QTimer的魅力与挑战
8204 0
|
存储 分布式计算 Hadoop
Apache Hudi:云数据湖解决方案
Apache Hudi:云数据湖解决方案
290 0
|
Linux 定位技术 虚拟化
【OSTEP】多道程序和时分共享 | 虚拟地址空间 | 用户栈vs内核栈 | 进程结构: struct thread | 虚拟vs物理地址空间 | 地址转换方案
【OSTEP】多道程序和时分共享 | 虚拟地址空间 | 用户栈vs内核栈 | 进程结构: struct thread | 虚拟vs物理地址空间 | 地址转换方案
159 0
|
传感器 存储 物联网
手持采集读数仪VH501TC接口说明
传感器接口 传感器接口须使用设备专门配备的测线,一端为 DB9 或者航空插头,另一端为用颜色区分的多个鳄鱼夹,线(鳄鱼夹)颜色和功能定义详见前述“设备组成和接口定义” 。
手持采集读数仪VH501TC接口说明
|
存储 小程序 编译器
C-数据的储存(1)
C语言学习第十五弹
|
缓存 Java 应用服务中间件
不规范使用ThreadLocal导致的bug,说多了都是泪
ThreadLocal一般用于线程间的数据隔离,通过将数据缓存在ThreadLocal中,可以极大的提升性能。但是,如果错误的使用Threadlocal,可能会引起不可预期的bug,以及造成内存泄露。
422 0
不规范使用ThreadLocal导致的bug,说多了都是泪
|
JavaScript
基于node.js开发的文章生成器(四、控制台版本的文章生成器)
> 持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,[点击查看活动详情](https://juejin.cn/post/7147654075599978532 "https://juejin.cn/post/7147654075599978532") # 引言 通过前面的学习,随机句子的选取,段落的生成,文章的生成,我们都已经学会了。接下来我们本次来学习控制台版的狗屁不通文章生成器。 # readline模块的学习与尝试 接下来我们来学习并练习使用readline模块。readline模块是node7之后便开始提供的模块。 接下来我们来详细说说这个模块 #
|
存储 自然语言处理 C语言
C++ Primer Plus 第6版 读书笔记(5)第5章 循环和关系表达式
如本章前面所述,for 循环是一种处理数组的工具。下面进一步讨论如何使用嵌套 for 循环中来处理二 维数组。首先,介绍一下什么是二维数组。到目前为止,本章使用的数组都是一维数组,因为每个数组都可以看作是一行数据。二维数组更像是一个表格—既有数据行又有数据列。例如,可以用二维数组来表示 6 个不同地区每季度的销售额,每一个地区占一行数据。也可以用二维数组来表示 RoboDork 在计算机游戏板上的位置。
194 0