定义

模块:用来从逻辑上组织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模块导入详解的更多相关文章

  1. python 模块导入详解

    本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import ... import ... as ... from .. ...

  2. python模块_hashlib详解

    hashlib 摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长 ...

  3. 详解Python模块导入方法

    python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...

  4. python之模块datetime详解

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块datetime详解 import datetime #data=datetime.dat ...

  5. Python 双向队列Deque、单向队列Queue 模块使用详解

    Python 双向队列Deque 模块使用详解 创建双向队列Deque序列 双向队列Deque提供了类似list的操作方法: #!/usr/bin/python3 import collections ...

  6. python协程详解,gevent asyncio

    python协程详解,gevent asyncio 新建模板小书匠 #协程的概念 #模块操作协程 # gevent 扩展模块 # asyncio 内置模块 # 基础的语法 1.生成器实现切换 [1] ...

  7. windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  8. 《python开发技术详解》|百度网盘免费下载|Python开发入门篇

    <python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby  内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...

  9. Python 字符串方法详解

    Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息.        ...

随机推荐

  1. PR2018制作电子相册

    PR2018制作电子相册 新建序列,自定义的参数 重置工作区域的面板 调节声音的大小 剪辑区域小图标的功能介绍 1,点亮状态表示可以自动对齐吸附,方便拼接视频,2,图标表示视频接音频同时选中的,不点亮 ...

  2. 笔记-Git基础

    git配置 git config --global user.name "xxx" //配置用户名 git config --global user.email "xxx ...

  3. iMacros 入门教程-基础函数介绍(1)

    最近在研究 imacros 这工具,感觉非常强大,简单来说就是自动化对于浏览器的操作,程序自动帮你实现,支持 chrome firefox ie,这样基本就覆盖了99%的人群了吧,甚至他自己也有一个 ...

  4. Hook 初学习

    Hook 概念 百度上的概念 每个Hook都有一个相关的指针列表,后加入的Hook再链表的开始,先加入的在链表的尾部 即后加入先获得控制权 Hook 原理 原本的流程 graph LR id1(Mes ...

  5. LeetCode 面试题 02.06. 回文链表

    题目链接:https://leetcode-cn.com/problems/palindrome-linked-list-lcci/ 编写一个函数,检查输入的链表是否是回文的. 示例 1: 输入: 1 ...

  6. 1级搭建类104-Oracle 12cR2 单实例 FS(阿里云)公开

    项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...

  7. 使用Arduino Nano驱动Lora模块

    使用Arduino Nano驱动Lora模块 为什么选用Lora 射频通信芯片有很多种,但是一般在同样功耗下,距离没有Lora远;同等范围下,没有Lora节能. Lora通信只适用于低速率,高延时的场 ...

  8. POJ 3253 Fence Repair 贪心 优先级队列

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 77001   Accepted: 25185 De ...

  9. YARN安装和使用

    简介 Yet Another Resource Negotiator ,负责整个集群资源的调度,和管理,支持多框架资源统一调度(HIVE spark flink) 开启yarn 安装hadoop,可以 ...

  10. 【gRPC】如何便捷的调试gRPC程序

    前言 gRPC是一款广泛应用的rpc框架,因为基于C/S架构,服务启动之后,需要编写对应的客户端才能调用,调试起来相对麻烦一些,这里主要介绍一下如何通过swagger-ui来调试grpc服务. grp ...