cookbook_模块和包
1把模块按层次结构组织成包
只需确保每个目录中都定义了__init__.py即可。
2对所有符号的导入进行精确控制
当用户使用from module import * 语句时,我们希望对从模块或包中导入的符号进行精确控制。
在模块中定义一个变量__all__,用来显示列出可导出的符号名。
__all__ = ["spam","grok"]
3使用相对名称来导入包中的子模块
mypackage/
__init__.py
A/
__init__.py
spam.py
grok.py
B/
__init__.py
bar.py #spam.py
from . import grok
from ..B import bar
使用该方法来导入包内模块,可以很好的减少硬编码导入模块,如果使用绝对名称导入,如果最顶端的文件名变化所有的导入都将出现问题。
ps.
执行脚本出现导入错误时 python3 -m mypackage
4将模块分解成多个文件
在不破坏使用结构的情况下,将一个模块分解成多个模块
首先将模块变成包,在包内__init__.py文件内将子模块导入。
5让各个目录下的代码在统一的命名空间下导入
foo_package/
spam/
blah.py
bar_package/
spam/
grok.py import sys
sys.path.extend(["foo_package","bar_package"])
import spam.blah
import spam.grok
在这两个目录中 spam作为公共的命名空间,注意这两个目录中都没有__init__.py文件。
6重新加载模块
开发环境中使用,尽量不在生产环境使用
import imp
import math
imp.reload(math)
7让目录或zip文件成为可运行的脚本
myapplication/
spam.py
bar.py
grok.py
__main__.py python myapplication 如果包含__main__.py文件,就可以当作脚本来运行,会运行__main__.py里的方法
8读取包中的数据文件
mypackage/
__init__.py
somedata.dat
spam.py import pkgutil
data = pkgutil.get_data(__package__,"somedata.dat") # data会得到一个字节串
9添加目录到sys.path中
三种解决方案,第一种是使用PYTHONPATH环境变量来添加。
env PYTHONPATH = /some/dir:/other/dir python3
第二种是通过创建.pth文件,将.pth文件放在python的site_packages
#mtapplication
/some/dir
/other/dir
第三种是硬编码到代码中
import sys
sys.path.insert(0,"/some/dir")
sys.path.insert(0,"/other/dir")
10使用字符串中给定的名称来导入模块
import importlib
math = importlib.import_module("math")
cookbook_模块和包的更多相关文章
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
- Python中函数、类、模块和包的调用
初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. (1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么 ...
- Python模块和包
模块和包是python组织代码的基本方式. 模块: python的每一个脚本文件都可称之为模块,模块的名称就是脚本的文件名.例如当我们写了一个test.py的脚本文件,则可以在同目录下的另外一个脚本m ...
- python模块与包的导入
1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...
- python模块及包的导入
一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...
- 简述Python模块和包
我们常常会使用别人写的包,假如我们使用的是Python3.4版本,安装在windows的C盘根目录下,那么外部的包一般放在:C:\Python34\Lib\sit-packages下,此目录下有以.p ...
- python 深入模块和包
模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...
- Python中的模块与包
标准库的安装路径 在import模块的时候,python是通过系统路径找到这些模块的,我们可以将这些路径打印出来: >>> pprint.pprint(sys.path) ['', ...
- Python类、模块、包的区别
类 类的概念在许多语言中出现,很容易理解.它将数据和操作进行封装,以便将来的复用. 模块 模块,在Python可理解为对应于一个文件.在创建了一个脚本文件后,定义了某些函数和变量.你在其他需要这些功能 ...
随机推荐
- justgage.js的使用
网址:http://justgage.com/ [1]需引入的文件: <!-- 引入 justGage相关js --><script src="js/raphael-2.1 ...
- java多线程之线程安全
线程安全和非线程安全是多线程的经典问题,非线程安全会在多个线程对同一个对象并发访问时发生. 注意1: 非线程安全的问题存在于实例变量中,如果是方法内部的私有变量,则不存在非线程安全问题. 实例变量是对 ...
- .NET中生成水印更好的方法
.NET中生成水印更好的方法 为了保护知识产权,防止资源被盗用,水印在博客.网店等场景中非常常见. 本文首先演示了基于System.Drawing.Image做正常操作.然后基于Direct2D/WI ...
- 【LEETCODE】32、LeetCode的第35题,查找插入的位置
凉凉,看来想做好一个题还不容易啊... 有点难受... 1.看看题目吧 Given a sorted array and a target value, return the index if the ...
- 【docker学习一】CentOS7.5+Docker安装及使用「安装、查看、pull、创建、进入镜像」
记录安装配置以及使用的过程,可能会有多处摘抄,已注明照抄地址,侵删. 是什么:个人理解,是一种移植性很强的虚拟机,支持版本控制(类似于git),同一个服务器可以运行多个docker容器,每个docke ...
- 【过时】update progress has encountered a problem解决办法
笔者第二次整理博客,已经抛弃MyEclipse了,我将公司项目转换成了idea的目录结构后大家都改换Idea进行开发,虽然我个人比较喜欢eclipse的简洁干净,但是Idea的确有很多方便开发的新功能 ...
- vue随笔
1.vue基础 Vue 是一个mvvm 的渐进式框架.Angular 是一个mvc的.所以vue的重点更偏向于mv 他的使用方式 大家会发现里面带有大量的$的属性. 学习vue的指令 V-for 用 ...
- 【Flink】深入理解Flink-On-Yarn模式
1. 前言 Flink提供了两种在yarn上运行的模式,分别为Session-Cluster和Per-Job-Cluster模式,本文分析两种模式及启动流程. 下图展示了Flink-On-Yarn模式 ...
- Mac上使用ssh连接服务器title显示服务器的ip
Mac上使用ssh连接服务器title显示服务器的ip 使用Mac开发时,管理的服务器过多时,会搞混乱.可能有时啪啪啪一顿操作,最后发现操作错了机器. 解决方案 在远程服务器上,编辑vim /etc/ ...
- 13 | 效率为王:脚本与数据的解耦 + Page Object模型