Python模块导入详解
定义
模块:用来从逻辑上组织Python代码(变量、函数、类、逻辑)去实现一个功能。本质就是.py结尾的Python文件。
包:用来从逻辑上组织模块的(可以放一堆模块在目录下)。本质就是一个目录(必须带有一个__init__.py文件)。
导入模块
导入单个:
import 模块名
导入多个:
import 模块名1,模块名2
导入模块中所有代码:
from 模块名 import *
import导入于from 模块名 import *导入在调用上的区别:
module.function()
function()
跨目录导入包:
import sys
print(sys.path) #python会去哪些目录下找模块,是一个列表
Module_Dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #获取到模块目录
sys.path.append(Module_Dir)#把模块目录加到sys.path列表中
import 要导入的模块
代码说明
module_test.py
def Index():
print("Welcome to Index Page.")
main.py
# import module_test
from module_test import * #这种是把模块中的代码复制到了这个py脚本中
from module_test import Index as Index_module #如果导入的模块中函数与该py脚本中的函数名一样,使用as别名 def Index():
print("Main Page")
# module_test.Index() #这样调用是不行的
Index()
Index_module()
输出结果如下:

import本质
就是把Python文件解释一遍。
比如我们导入requests模块,requests = requests模块中的所有代码,所以调用的时候需要requests.function()。
import requests
而使用from导入的时候,是把模块中的代码复制到了这个py脚本中,所以调用的时候直接使用函数。
导入包
导入包的本质是去执行包下的__init__.py文件。
import packagename
如果调用包中的模块呢?
因为本质是读取__init__.py文件,因此在__init__.py文件写要导入的模块(相对导入)。
from . import 模块名
调用的话就是
packagename.模块名.function()





代码演示

__init__.py:
print("in the package")
main.py:
import package
运行效果:

导入优化
import导入:使用多次模块中的函数的话,会重复找路径的动作,效率会低,因此可以使用from方法导入来优化脚本效率。
module.function()
模块的分类
- 标准库(也叫内置模块)
- 开源模块(也叫第三方模块)
- 自定义模块
Python模块导入详解的更多相关文章
- python 模块导入详解
本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import ... import ... as ... from .. ...
- python模块_hashlib详解
hashlib 摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长 ...
- 详解Python模块导入方法
python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...
- python之模块datetime详解
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块datetime详解 import datetime #data=datetime.dat ...
- Python 双向队列Deque、单向队列Queue 模块使用详解
Python 双向队列Deque 模块使用详解 创建双向队列Deque序列 双向队列Deque提供了类似list的操作方法: #!/usr/bin/python3 import collections ...
- python协程详解,gevent asyncio
python协程详解,gevent asyncio 新建模板小书匠 #协程的概念 #模块操作协程 # gevent 扩展模块 # asyncio 内置模块 # 基础的语法 1.生成器实现切换 [1] ...
- windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
随机推荐
- Policy-based Approach(基于策略的方法)
step 1:Neural Network as Actor step 2:goodness of function(训练一些Actor) 是一个序列,包含T个状态s.行为a.奖励s.代表某一次的开始 ...
- Educational Codeforces Round 32 E 二分
题意:从数组中选几个(任意),使他们的和modm的值最大 题解:我一开始是直接暴力写,然后就会t 其实这题可以用二分的方法写,一半数组的值用来遍历,一般数组的值用来查询. 二分查询就能把时间继续缩短 ...
- Lucene之查询索引
Query子类 TermQuery:根据域和关键词进行搜索 /** * termQuery根据域和关键词进行搜索 */ @Test public void termQuery() throws IOE ...
- Html介绍,认识head标签
<head></head>标签位于html文档的头部,主要是用来描述文档的各种属性和信息,包括文档的标题等,当然文档头部包含的数据都不会真正作为内容展示给访客的. 如下的一些标 ...
- 2019年IT事故盘点【IT必读】
昀哥@老兵笔记 2020农历新年开局不容易,新冠肺炎仍在攻艰克难阶段.回首过去的9102年,总有一些事主要是事故值得去记录.下面我们来盘点一下9102年的“外部事故”. 一,我们遭遇的IT基础设施服务 ...
- Vue中在template标签中进行判断时注意比较元素
(一)比较的元素,一个是data元素,另外一个是常量,如下图所示: 编译正常,运行正常,效果在期望中,会显示Hello World,结果如下: (二)比较的元素,一个是data元素,另外一个是cons ...
- npm常用模块之bable使用
更多npm常用模块使用请访问:npm常用模块汇总 bable这是JavaScript编译器. Babel是一个工具链,主要用于在当前和较旧的浏览器或环境中将ECMAScript 2015+代码转换为J ...
- JAVA输出流与输入流
输出流 编程入门的第一个程序,输出一串字符串 public class C { public static void main(String[] args) { System.out.println( ...
- Verilog-同步FIFO
参考博客:https://blog.csdn.net/hengzo/article/details/49683707 1.基本框图 1)双端口RAM加两个读写指针 2)写数据.写使能.写满:读数据.读 ...
- webpack4从安装到使用入过的那些坑
1.全局安装 安装 webpack 前要确保已经下载 node.js 最新版本(node.js官网地址) 目前使用命令行安装的 webpack 默认为最新版本(以下我使用了全局安装.官网建议本地安装, ...