day5_ 导入模块和包
######################模块
导入模块做的事
1.产生新的名称空间
2.以新建的名称空间为全局名称空间,执行文件的代码
3.拿到一个模块名spam,指向spam.py产生的名称空间
import 文件名 导入 在同级目录下
import x
x.foo() 之后 调用该模块下的 函数 或者变量 要加 模块名(文件名)
from ... import ...
优点:方便,不用加前缀
缺点:容易跟当前文件的名称空间冲突
可以导入文件下的一个函数
from sparm import foo
foo() -->之后 可以直接 执行
from sparm import * -->导入 所有 功能 可以 直接调用
foo()
foo2()
glo()
foo()
print (A) 备注:sparm 中 开头定义了变量 A=100 又定义了函数 foo 和 foo2 都是 打印 变量 A,
函数glo()定义了 修改全局变量 A =111 之后 再调用 foo 打印的 A 是 111 而 直接 print (A) 打印的是 100没变
######################包
#当 在写一个比较大的项目时候 会引入 包的作用
# 在别人 引用的你的 代码的时候 或者你引用别人的代码的时候 import 或者 from * import *
#在引入的一个是 文件夹的时候 其实 是在导入 该文件夹下的 __init__.py 文件
#再通过这个文件 导入 你这个文件夹 下的 其他 文件 或目录
目录结构 是这样的
test.py
glance
__init__.py (glance)
api
__init__.py (api)
testapi.py
test.py==>
import glance
glance.B()
glance目录-->__init__.py (glance)==>
from .api.api_test1 import *
from .api.mode import * api目录-->__init__.py (api)==>
什么都没定义 testapi.py==>
def B():
print ('这个是api 下的 test1的B')
----------------------这样 在和glance同级目录的文件就 可以调用 最里面 api 目录下文件的功能了
最里面的文件 可以定义被调用的功能,放入一个列表,如果不在这个列表 就不被调用
__all__=[] 来定义;这里面存放 被调用的 ===============>然后还可以 定义 如果被调用,执行什么, 自己测试 执行什么
if __name__ == '__main__':-->自己测试的结果
print ('自己测试')
else: -->调用的结果
from .api.testapi import *
print ('被其他地方调用')
===========================================以上 的执行 形式 是 glance.功能(),但是 这样有可能会 遇见功能名重复;所以 参考 下面: ###################执行形式 是 glance.文件名.功能() 目录结构 是这样的
test.py
glance
__init__.py (glance)
api
__init__.py (api)
testapi.py test.py==>>
import glance glance.mode.A()
glance.mode.C()
glance.api_test1.B()
glance.api_test1.D()
glance目录-->__init__.py (glance)==>
from .api import * #--->api_test1 mode
api目录-->__init__.py (api)==>
if __name__ =='__main__':
print ('这个是api') from .api_test1 import * --># B D 功能
from .mode import * -->#AC
testapi.py==>
def B():
print ('这个是api 下的 test1的B') def D():
print ('不该显示这个D') mode.py==>
def A():
print ('model') def C():
print ('不该显示这个C')
day5_ 导入模块和包的更多相关文章
- Python 3基础教程20-Python中导入模块和包
本文介绍Python中导入模块和包 #目录: # 导入模块和包--- # | # 上级包.上级模块.导入模块和包的init模块----- # | # 同级包.同级模块.上级包的init模块.test模 ...
- selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点
在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...
- Python进阶-XIII 导入模块和包 异常处理
一.模块的导入 1).import # 测试一:money与my_module.money不冲突 import my_module money=10 print(my_module.money) '' ...
- python 导入模块、包
1. 模块:一个有逻辑的python文件,包含变量.函数.类等.2. 包:一个包含__init__.py的文件夹,存放多个模块 import 本质是路径搜索,查找sys.path下有无你导入的 pac ...
- python导入模块和包的使用
做项目的时候经常会要求做到模块化管理,即同样功能的代码放到同一个文件夹下,以便于方便管理,相信很多人对模块的引用都模糊不清,今天鄙人在这里就总结下. 一.模块导入的使用 在同一个文件夹下有两个文件分别 ...
- python中模块,包,库的概念
模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...
- python中模块,包,库
模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...
- python中动态导入模块
当导入的模块不存在时,就会报ImportError错误,为了避免这种错误可以备选其他的模块或者希望优先使用某个模块或包,可以使用try...except...导入模块或包的方式. 例如: Python ...
- 转载 Python导入模块的几种姿势
作为一名新手Python程序员,你首先需要学习的内容之一就是如何导入模块或包.但是我注意到,那些许多年来不时使用Python的人并不是都知道Python的导入机制其实非常灵活.在本文中,我们将探讨以下 ...
随机推荐
- .dll 文件编写和使用
1.基本概念 dll(dynamic-link library),动态链接库,是微软实现共享函数库的一种方式.动态链接,就是把一些常用的函数代码制作成dll文件,当某个程序调用到dll中的某个函数的时 ...
- JS数组根据属性来实现排序
var data = [{ name: "zhao", age: }, { name: "qian", age: }, { name: "sun&qu ...
- Rookey.Frame v1.0极速开发平台稳定版发布
Rookey.Frame v1.0经过一年时间的修改及沉淀,稳定版终于问世了,此版本经过上线系统验证,各个功能点都经过终端用户验证并持续优化,主要优化以下几个方面: 1.性能较原来提升3倍之多 2.修 ...
- 【HDOJ 2150】线段交叉问题
Pipe Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- 移动端测试方案--sptt
sptt sptt是移动端UI自动化测试的一种解决方案,全称为special tool of test.sptt提供了一套测试解决方案,并使用命令行完成相关操作,最终可集成在各种后续的流程中. spt ...
- const常量类型
1.定义:const常量类型表示一个”常值变量“,其值是不能被修改的变量.即一旦变量被声明为const类型,编译器将禁止任何试图修改该变量的操作. 2.声明:const <声明数据类型> ...
- stm32中断学习总结
经过了两天,终于差不多能看懂32的中断了,由于是用的库函数操作的,所以有些内部知识并没有求甚解,只是理解知道是这样的.但对于要做简单开发的我来说这些已经够了. 我学习喜欢从一个例程来看,下面的程序是我 ...
- JS + HTml 时钟代码实现
JS+ Html 画布实现的时钟效果图: 闲来无聊做了一个网页的时钟,效果模拟传统时钟的运行方式, 运用了html 的画布实现指针,背景图片引用了网络图片. 具体原理: 首先将时钟分为四个不同区域,对 ...
- typedef和define的详细区别
typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字. #define是预处理指令.下面让我们一起来看. typedef是C语言语句, ...
- Supervisor: A Process Control System
Supervisor: 进程控制系统 概述:Supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序. 它与launch ...