python基础之包的导入和__init__.py的介绍
调用同级目录:
– src |– mod.py |– test.py
若在程序test.py中导入模块mod, 则直接使用
import mod 或 from mod import *
调用子目录下的模块:
– src |– mod.py |– lib | |– mod2.py |– test.py from lib.mod2 import * 或 import lib.mod2
调用上级目录下的文件
目录结构如下:
– src |– mod.py |– lib | |– mod2.py |– sub | |– test2.py import sys sys.path.append('C:\\test\\A\\C') import mod import lib.mod2
__init__.py
在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有__init__.py 那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml 导入 dom )的时候,实际上导入了它的__init__.py 文件。
一个包是一个带有特殊文件 __init__.py 的目录。__init__.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。
__init__.py 中还有一个重要的变量,叫做__all__。
如果此时目录如下
– src |– mod.py |– lib | |– mod2.py | |– mod3.py | |– sub | |– | |– mod3.py
我们有时会使出一招“全部导入”,也就是这样:
from lib import *
这时 import 就会把注册在包__init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
#文件__init__.py __all__ = ["mod2", "mod3", "sub"]
总结:
对于其余路径下载py文件,要想导入,先加到sys.path中,然后再导入。
__init__.py的作用:
- package的标识,不能删除
- 定义package中的__all__,用来模糊导入
- 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)
总结
以上所述是小编给大家介绍的python基础之包的导入和__init__.py的介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
详解Python中的__new__、__init__、__call__三个特殊方法
__new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是self. __call__ : 对象可call,注意不是类,是对象. 先有创建,才有初始化.即先__new__,而后__init__. 上面说的不好理解,看例子. 1.对于__new__ class Bar(object): pass class Foo(object): def __new__(cls
-
Python中__init__.py文件的作用详解
__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件. 通常__init__.py 文件为空,但是我们还可以为它增加其他的功能.我们在导入一个包时,实际上是导入了它的__init__.py文件.这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入. # package # __init__.py import re import urllib import sys impo
-
python中的__init__ 、__new__、__call__小结
1.__new__(cls, *args, **kwargs) 创建对象时调用,返回当前对象的一个实例;注意:这里的第一个参数是cls即class本身2.__init__(self, *args, **kwargs) 创建完对象后调用,对当前对象的实例的一些初始化,无返回值,即在调用__new__之后,根据返回的实例初始化:注意,这里的第一个参数是self即对象本身[注意和new的区别]3.__call__(self, *args, **kwargs) 如果类实现了这个方法,相当于把这个类型
-
详细解读Python中的__init__()方法
__init__()方法意义重大的原因有两个.第一个原因是在对象生命周期中初始化是最重要的一步:每个对象必须正确初始化后才能正常工作.第二个原因是__init__()参数值可以有多种形式. 因为有很多种方式为__init__()提供参数值,对于对象创建有大量的用例,我们可以看看其中的几个.我们想尽可能的弄清楚,因此我们需要定义一个初始化来正确的描述问题区域. 在我们接触__init__()方法之前,无论如何,我们都需要粗略.简单地看看在Python中隐含的object类的层次结构. 在这一章,我
-
深入理解Python中的 __new__ 和 __init__及区别介绍
本文的目的是讨论Python中 __new__ 和 __ini___ 的用法. __new__ 和 __init__ 的区别主要表现在:1. 它自身的区别:2. 及在Python中新式类和老式类的定义. 理解 __new__ 和 __init__ 的区别 这两个方法的主要区别在于:__new__ 负责对象的创建而 __init__ 负责对象的初始化.在对象的实例化过程中,这两个方法会有些细微的差别,表现于:如何工作,何时定义. Python中两种类的定义方式 Python 2.x 中类的定义分为
-
python中对_init_的理解及实例解析
一.self的位置是出现在哪里? 首先,self是在类的方法中的,在调用此方法时,不用给self赋值,Python会自动给他赋值,而且这个值就是类的实例--对象本身.也可以将self换成别的叫法例如seef,但不建议,因为大家习惯也默认了写成self. 二.self的值是什么? self的值是Python会自动赋值的,而且值是对象本身.举例说明:类Dog,他的实例是d,那么,d调用类的方法jian(arge1,arge2)的时候,Python会自动转为Dog.jian(d,arge1,arge2
-
python中子类继承父类的__init__方法实例
前言 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 . 注意:这个名称的开始和结尾都是双下划线. 父类A class A(object): def __init__(self, name): self.name=name print "name:", self.name def getName(self): return 'A ' + sel
-
python基础之包的导入和__init__.py的介绍
调用同级目录: – src |– mod.py |– test.py 若在程序test.py中导入模块mod, 则直接使用 import mod 或 from mod import * 调用子目录下的模块: – src |– mod.py |– lib | |– mod2.py |– test.py from lib.mod2 import * 或 import lib.mod2 调用上级目录下的文件 目录结构如下: – src |– mod.py |– lib | |– mod2.py |–
-
python基础之模块的导入
import导入模块 import time #导入的时模块中的所有内容 print(time.ctime()) #调用模块中的函数 # import 到首次导入模块的时候,会发生如下3步操作 # 1.打开模块文件 # 2.执行模块对应的文件 将执行过程中产生的名字都丢到模块的名称空间 # 3.在程序中会有一个模块[可以取别名的]的名称只想模块的名称空间区 # 4.建立模块时,不要与模块名相同,否则系统会直接就近在文件中查找,而不是导入真正的模块 # 引用格式:模块名:函数名 可以防止不同模块中
-
python包相关知识点之包的导入、相对路径以及绝对路径
目录 一.包 二.包的导入 1.import 导入 2.from...import...导入 3.__init__.py文件 4.from 包.模块 import * 三.包的相对和绝对导入 1. 绝对导入 2.相对导入 四.import 导入自定义包的子模块 五.包的单独导入 六.包的安装和发布 总结 一.包 在我们的项目中,可能会有太多的模块 但是我们不能把所有的模块这样放在这里,这样项目会乱七八糟. 我们可以将所有相同类型的模块放在一个文件夹中,这个文件夹就叫做包 包就是文件夹,他用于存放
-
python基础之编码规范总结
一.PEP 8规范 官方文档:https://legacy.python.org/dev/peps/pep-0008/ 中文翻译: https://www.jb51.net/article/103944.htm 二.缩进 每一级缩进4个空格. 续行应该与包裹元素对齐,要么使用圆括号,方括号,花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐.当使用挂行缩进对齐时,应该考虑到第一行不应该有参数,以及使用缩进以区分自己是续行. 对齐缩进(左右括号对齐) def long_function_name
-
Python基础之模块相关知识总结
一.什么是模块 容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序,模块就是.py文件 导入hello模块,且使用hello命名空间的hi()函数 (1)hello.py模块的创建 注意模块与调用的程序要在同一个文件夹下面 import的时候直接写名字就行了,不用加上.py,eg:hello.py,hello就是模块名 (2)执行 命名空间 在Python中,每个模块都会维护一个独立的命名空间,我们应该将模块名加上,才能够正常使用模
-
Python学习之包与模块详解
目录 什么是 Python 的包与模块 包的身份证 如何创建包 创建包的小练习 包的导入 - import 模块的导入 - from…import 导入子包及子包函数的调用 导入主包及主包的函数调用 导入的包与子包模块之间过长如何优化 强大的第三方包 什么是第三方包 如何安装第三方包 总结 大家好,学完面向对象与异常处理机制之后,接下里我们要学习 包与模块 .首先我们要了解什么是包?什么是模块?接下来我们还要学习 如何自定义创建包.自定义创建模块以及如何导入包与模块.最后我们在学习如何使用第三方
-
Python基础教程之错误和异常的处理方法
目录 前言 异常与错误的概念 错误分类 语法错误 运行时错误 逻辑错误 异常处理机制 捕获异常并处理 主动抛出异常 断言处理 自定义异常类 常见异常及释义 附:用户自定义异常实例 总结 前言 继续更新Python基础语法,到目前为止Python基础语法已经接近了尾声,本次错误与异常处理更新完后会对文件.数据库.包管理.模块管理.正则表达式的使用进行更新.完成这几个大致的任务之后将会更新爬虫与数据分析.本专栏所写的东西非常的适用初学者,当然也非常适合老手,每一部分都有很全面的编程技巧.相信大家看完
-
浅谈Python __init__.py的作用
我们经常在python的模块目录中会看到 "__init__.py" 这个文件,那么它到底有什么作用呢? 1. 标识该目录是一个python的模块包(module package) 如果你是使用python的相关IDE来进行开发,那么如果目录中存在该文件,该目录就会被识别为 module package . 2. 简化模块导入操作 假设我们的模块包的目录结构如下: . └── mypackage ├── subpackage_1 │ ├── test11.py │ └── test1
-
Python基础之元编程知识总结
一.前言 首先说,Python中一切皆对象,老生常谈.还有,Python提供了许多特殊方法.元类等等这样的"元编程"机制.像给对象动态添加属性方法之类的,在Python中根本谈不上是"元编程",但在某些静态语言中却是需要一定技巧的东西.我们来谈些Python程序员也容易被搞糊涂的东西. 我们先来把对象分分层次,通常我们知道一个对象有它的类型,老早以前Python就将类型也实现为对象.这样我们就有了实例对象和类对象.这是两个层次.稍有基础的读者就会知道还有元类这个东西
随机推荐
- 详解angular中如何监控dom渲染完毕
- display和visibility的区别示例介绍
- eclipse如何忽略js文件报错(附图)
- 简单的Lua 连接操作mysql数据库的方法
- 正则表达式(括号)、[中括号]、{大括号}的区别小结
- VMware给虚拟机安装linux系统
- IE下使用cloneNode注意事项分享
- 原生JS实现旋转木马式图片轮播插件
- js中同步与异步处理的方法和区别总结
- php实现的SSO单点登录系统接入功能示例分析
- thinkphp3.2.3版本的数据库增删改查实现代码
- 微信和qq时间格式模板实例详解
- js如何判断输入字符串长度
- 一个shell小案例(创建日期目录)
- Powershell小技巧之获取对象可变的特征
- eXeScope注册码算法bat版
- SQL货币数字转英文字符语句
- 解决jquery插件:TypeError:$.browser is undefined报错的方法
- Jquery easyui 下loaing效果示例代码
- 浅谈C++类型转化(运算符重载函数)和基本运算符重载(自增自减)