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的导入机制其实非常灵活.在本文中,我们将探讨以下 ...
随机推荐
- 介绍三个Android支持库控件:TabLayout+ViewPager+RecyclerView
本文主要介绍如下三个Android支持库控件的配合使用: TabLayout:android.support.design.widget.TabLayout ViewPager:android.sup ...
- Robotframe work学习之初(二)
一.F5帮助 Robot Framework 并没有像其它框架一样提供一份完整的 API 文档,所以,我们没办法通过官方 API文档进行习.RIDE 提供了 F5 快捷键来打开帮助文档. search ...
- 新手介绍简单一下iOS开发中几种界面传值
首先在处理iOS-UI中,也许在很多地方需要用到两种甚至多种不同界面之间的传值,相比这也是很多iOS入门成员头疼问题,同样作为新手的我在接触这类传值时候也一脸懵然,经过一段时间的研究,对于简单的传值有 ...
- Java设计模式:桥接模式
问题提出 生活中有很多事物集合,设为A1,A2......Am ,而每个事物都有功能F1,F2....Fn. 例如邮局的发送业务.简单模拟有两类事物:信件和包裹,均有平邮和挂号邮寄功能.程序设计中如何 ...
- Latex 公式在线可视化编辑器
寻觅 最近的一个demo需要用到Latex公式在线编辑器,从搜索引擎一般会得到类似http://latex.codecogs.com/eqneditor/editor.php的结果,这个编辑器的问题在 ...
- 初学strurs基础
Struts2基础学习总结 Struts 2是在WebWork2基础发展而来的. 注意:struts 2和struts 1在代码风格上几乎不一样. Struts 2 相比Struts 1的优点: 1. ...
- Android Gradle manifestPlaceholders 占位符详解
Android Gradle manifestPlaceholders 占位符详解 在实际项目中,AndroidManifest里十几个地方的值是需要动态的改变(生成apk文件的时候).如果每次去改也 ...
- callLater
UIComponent的方法,该方法在每次更新屏幕之前,Flash Player 或 AIR 都会调用为更新预定的函数集.有时,应在下次更新时调用函数,以执行为当前更新预定的其余代码.部分功能(如效果 ...
- bzoj4817 [Sdoi2017]树点涂色
Description Bob有一棵n个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义一条路 径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. ...
- 通过bootloader向内核传输启动参数
作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可. Linux提供了一种通过bootloader向其传输启动参数的功能,内核开发者 ...