Python Day5 模块 包
一:区分Python文件的2种用途
1个Python文件的2种用途
1.1 当作脚本执行: if __name__ == '__main__':
1.2 当作模块导入使用 if __name__ == '模块名':
if __name__ == '__main__':
pass
spam.py
说明 在Python内有一种方法
__name__ 这种方法在文件当中默认等于__main__ (此处为2个_) 这样的作用就是。代码可以调试的时候运行的是整个spam.py
money = 1000 def index():
print('in the index', money) def bbs():
print('in the bbs', money) def delphi():
print('in the delphi', money) if __name__ == '__main__':
bbs()
delphi()
index()
print('调试功能') print(__name__) # __main__
写完后本地调用直接运行;其他地方需要引用默认不会输出
二:模块的搜索路径
1 内存
sys.modules 查看已经加载到内存的模块
2 内置模块 sys 内置模块都是C语言写的
3 自己定义的模块 sys.path-->查看当前环境变量


需要加入到环境变量才可以执行:

自己定义模块的时候 不能定义跟内置一样的模块
三: 包
1.什么是包
包就是1个包含__init__.py的文件夹,(可以往该文件夹下放一堆子模块)
在python3中,即时包的文件夹下没有__init__.py文件 python3也不会报错,但是python2会报错

之所以这样做是因为在import package1的时候,看似导入的是package1 实际上导入的是它下面的__init__.py文件
示例如下
在__init__.py中写入:

然后在包的导入.py文件中执行导入操作后的执行结果

================示例1 begin===================
init文件



解释如下:
当包的使用.py运行时,import package1 实际上是导入运行了package1文件夹下的init文件;
然后在执行
from package1 import m1
在package1下的m1被导入了init当中
因而最后包的导入中的package1.m1.func()就可以运行了
================示例1 end===================
注意核心是:根据执行文件所在的路径去找,只有执行文件所在的路径才会加到环境变量当中
2 包的使用
注意:但凡在导入时,出现. (点) 这是导入包才用的语法
点的左边必须是一个包;使用的时候没有限制
以上的导入方式太麻烦了;那么针对此;有没有简便的方法?
=====================================示例2==================================================

要实现该功能,只要在D:\Document\Python0404\day5\模块和包\测试2\package1\__init__.py中写入

上面的导入方式是绝对导入
之所以要这么做 是为了区分开开发者和使用者
=============================================示例3===========================================
原先结构不变;


程式照样运行
注意点 相对导入是从当前init的路径下开始找 . 点 表示当前文件夹
一个点就表示往上一层
from ..m1 import func1
def func2():
func1()
print('in the func2 m2')
Python Day5 模块 包的更多相关文章
- python中模块包的离线下载教程
1.简介 当我们进行Python项目的迁移时(例如迁移到另外一台服务器上),如果该服务器要求离线安装, 往往需要我们将项目中的所需模块包进行离线操作. 2.教程 2.1 首先安装pip2pi模块,它可 ...
- Python安装模块包
可以利用pycharm安装模块包 使用这种方法安装时,可能会报下面类型的异常 AttributeError: module 'pip' has no attribute 'main' 出现这这样的异常 ...
- 跟着ALEX 学python day5 模块
文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 模块 1.模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的pyt ...
- python基础--模块&包
一.模块 1.模块是程序 任何Python程序都可以作为模块导入. 程序的保存也很重要,如果想把程序保存在C:\python (Windows)目录下,需要告诉解释器在哪里寻找模块了. >> ...
- python基础模块,包
#import cal,time #导入模块名可以看作导入一个变量 #from cal import add # from cal import *#引入所有变量 *代表所有 占内存 不推荐 # # ...
- Python札记 -- 使用easy_install进行模块/包管理
今天在阅读以前项目代码时,发现里面使用的第三方模块的参数相当诡异,总是对不上.经过分析之后,发现是自己安装的第三方模块跟项目使用的版本不一致.在Python中进行模块/包管理的话,就不得不提到easy ...
- python导入模块和包的使用
做项目的时候经常会要求做到模块化管理,即同样功能的代码放到同一个文件夹下,以便于方便管理,相信很多人对模块的引用都模糊不清,今天鄙人在这里就总结下. 一.模块导入的使用 在同一个文件夹下有两个文件分别 ...
- Python学习 之 包和模块
1.rpm -ql python #查看python在计算机中安装了哪些文件 2.模块是一个可以导入的Python脚本文件 包是一堆按目录组织的模块和子包,目录下的__init__.py文件存放了包的 ...
- Python 基金会 —— 模块和包简介
一.模块(Module) 1.模块的作用 在交互模式下输出的变量和函数定义,一旦终端重新启动后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Modul ...
随机推荐
- linux软件管理 软件安装
软件包分类 1) 源代码包 脚本安装包 2) 二进制包 (RPM包,系统默认包) 源码包编译后形成二进制包 JDK的安装 下载jdk的文件解压 tar -zxvf jdk-8u144-linu ...
- LeetCode 总结,二叉树各种类型问题小结
三大遍历 前序遍历 中序遍历 后序遍历 关于三大基础遍历,必须要条件反射式的记住:三种遍历的迭代方式使用的都是栈,后序遍历必须使用了 两个栈,其余乱七八糟的解决方式统统就不要再记了. 广度遍历: 分析 ...
- python全栈开发笔记---------数据类型-----字典dict
字典 #dict #1.基本结构 info= { "k1" : "v1", #键值对 "k2" : "v2" } ### ...
- linux远程管理常用命令
目标 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh scp 01. 关机/重启 序号 命令 对应英文 作用 01 shutdown 选项 时 ...
- SQL-44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现。
题目描述 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现.CREATE TABLE IF NOT EXISTS ti ...
- for in& for each in &for of
for...in语句以任意顺序遍历一个对象的可枚举属性.对于每个不同的属性,语句都会被执行. 语法 for (variable in object) {...} variable 在每次迭代时,将不同 ...
- js读取本地图片并显示
抄自 http://blog.csdn.net/qiulei_21/article/details/52785191 js读取本地图片并显示 第一种方法比较好 版权声明:本文为博主原创文章,未经博主允 ...
- React-Native新列表组件FlatList和SectionList学习 | | 联动列表实现
React-Native在0.43推出了两款新的列表组件:FlatList(高性能的简单列表组件)和SectionList(高性能的分组列表组件). 从官方上它们都支持常用的以下功能: 完全跨平台. ...
- 3.5 unittest生成测试报告HTMLTestRunner
3.5 unittest生成测试报告HTMLTestRunner 前言批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的.unittest里面是不 ...
- s21day10 python笔记
s21day10 python笔记 一.函数补充 1.1 参数 基本参数知识 def get_list_date(aaa): #aaa:形式参数(形参) 任意个数 v = [11,22,33,44] ...