导入模块和包

导入模块

import的过程中发生了哪些事情?

  1. 寻找模块
  2. 如果找到,开辟一块空间,执行这个模块
  3. 把这个模块中用到的名字都收录到开辟的空间中
  4. 创建一个变量来引用这个模块的空间

注意:

  1. 模块不会被重复导入
  2. 模块和文件之间的内存空间始终是隔离的
  3. 模块名字必须符合变量命名规范
  4. 模块之间不能循环引用,即A中导入B, B中有导入A

模块搜索路径

​ 一个模块能否被导入,就看这个模块所在的目录是否在sys.path中

​ 正常的sys.path中除了内置、扩展模块所在的路径外,只有一个路径永远不会出问题,就是直接执行的这个文件所在的目录

模块和脚本

1. 直接运行时,为脚本,`__name__ = __main__`
2. 导入时,为模块, `__name__ = 模块名`

pyc文件

​ 提前编译好的字节码,只能提高程序的启动效率, 并不能提高程序的执行效率

dir(模块名)

​ 可以获取这个模块中的所有名字

导入包

什么是包?

​ 含有一个__init__.py的文件夹就是一个包,通常包中含有一些py文件

从包中导入模块

import导入

.的左面必须是一个包,终点必须是一个模块

from import导入

from glance2.api import policy
policy.get() from glance2.api.policy import get
get()

直接导入包

导入包的过程中发生了哪些事情?

​ 导入包,相当于执行了这个包的__init__.py文件

绝对导入

from glance2.api.versions import create_resource

相对导入

from ..cmd import manage

​ 运用了相对导入的文件不能被直接执行,即相对导入只能在包内部使用

python---导入模块和包的更多相关文章

  1. selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

    在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...

  2. python 导入模块、包

    1. 模块:一个有逻辑的python文件,包含变量.函数.类等.2. 包:一个包含__init__.py的文件夹,存放多个模块 import 本质是路径搜索,查找sys.path下有无你导入的 pac ...

  3. python导入模块和包的使用

    做项目的时候经常会要求做到模块化管理,即同样功能的代码放到同一个文件夹下,以便于方便管理,相信很多人对模块的引用都模糊不清,今天鄙人在这里就总结下. 一.模块导入的使用 在同一个文件夹下有两个文件分别 ...

  4. Python 3基础教程20-Python中导入模块和包

    本文介绍Python中导入模块和包 #目录: # 导入模块和包--- # | # 上级包.上级模块.导入模块和包的init模块----- # | # 同级包.同级模块.上级包的init模块.test模 ...

  5. Python之模块和包导入

    Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...

  6. python中模块,包,库的概念

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  7. python中模块,包,库

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  8. 转载 Python导入模块的几种姿势

    作为一名新手Python程序员,你首先需要学习的内容之一就是如何导入模块或包.但是我注意到,那些许多年来不时使用Python的人并不是都知道Python的导入机制其实非常灵活.在本文中,我们将探讨以下 ...

  9. Python中 模块、包、库

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  10. 第10章 Python的模块和包

    前面几章介绍的Python基础知识,相关案例都是以单源代码文件为例来说明的,这种单源代码文件在Python中就是模块,每个模块文件都可以被其他应用导入,Python正是通过模块导入技术来实现很灵活的功 ...

随机推荐

  1. java入土---markdown使用技巧

    markdown使用技巧 标题 "#" 为一级标题 "##" 为2级标题 可一直往下曾增加,最多六级标题 字体 加粗 **加粗** 加粗 倾斜 *倾斜* 倾斜 ...

  2. Centos8 下部署 ASP.net Core 程序

    1.安装需要的SDK包,如果程序包含3.1版本,需要安装3.1的SDK. sudo dnf install dotnet-sdk-5.0dotnet --versiondotnet --list-ru ...

  3. centeros 命令

    一.查看系统时间.硬件时间 # date // 查看系统时间 #hwclock // 查看硬件时间 二.时间服务器上的时间同步的方法 安装ntpdate工具 # yum -y install ntp ...

  4. MySQL 导入数据时 2006-MySQLserver has gone away

    MySQL 2006-MySQLserver has gone away MySQL 2006-MySQLserver has gone away 方式一(验证无误): 找到 mysql安装目录下的m ...

  5. DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况+np.log1p()

  6. U8g2库的使用

    一.硬件介绍: 由于笔者这里只有0.96寸的OLED屏幕,那就讲讲最常用的0.96寸OLED屏幕吧. OLED介绍: OLED,即有机发光二极管( Organic Light Emitting Dio ...

  7. Java基础——System类

    System包含几个有用的类字段和方法,因为成员都是静态的所以不能被实例化,可以直接通过类名调用 System类的常用方法: 方法名 说明 public static void exit(int st ...

  8. 【论文阅读】CVPR2021: MP3: A Unified Model to Map, Perceive, Predict and Plan

    Sensor/组织: Uber Status: Reading Summary: 非常棒!端到端输出map中间态 一种建图 感知 预测 规划的通用框架 Type: CVPR Year: 2021 引用 ...

  9. 从字符串某位置开始的递增串(dfs)注意for循环中下标的错误

    #include <iostream> #include <string> using namespace std; char res[50];int tag=1; void ...

  10. String 和StringBuffer、StringBuilder的区别?

    Java提供了:String.StringBuffer和StringBuilder,它们都是CharSequence的实现类,都可以作为字符串使用. String代表了字符序列不可变的字符串:而Str ...