笔记-Python-module
笔记-Python-module
1. 模块
关于模块:
每个模块都有自己的私有符号表,模块中所有的函数以它为全局符号表。因此,模块的作者可以在模块中使用全局变量,而不用担心与用户的全局变量发生意外冲突。另一方面,如果有需要,可以引用某一模块的全局变量,引用方法为modname.itemname。
1.1. 模块引用
import module
from module import function1, function2, function3
from [somemodule] import *
使用方法2引用时不会引用被引用模块的名称
方法3相当于方法2的变体,会导入所有的名称(names,自已理解,相当于属性+方法+变量….),除了以_开头的部分;不建议使用此方法,可能会覆盖同名对象(变量,函数等);
import module as <name>
1.2. 模块执行
模块也可以执行
python fibo.py <arguments>
注意:
if __name__ == “__main__”:
pass
不解释
1.3. 模块搜索路径
导入一个模块,Python解析器对模块位置的搜索顺序是:
脚本当前目录
shell 变量 PYTHONPATH 下的每个目录。
Python默认路径(依赖于安装环境)。UNIX下,默认路径一般为/usr/local/lib/python/。
1.4. 编译模块
为了加速加载模块,Python将每个模块的编译版本缓存在__pycache__名称下的目录中,文件名类似于module.version.pyc;
Python根据编译后的版本检查源代码的修改日期,看它是否过期并需要重新编译。这是一个完全自动的过程。另外,编译后的模块是独立于平台的,因此可以在不同体系结构的系统之间共享相同的库。
1.5. dir()
The built-in function dir() is used to find out which names a module defines. It returns a sorted list of strings:
dir(builtins)
2. package
包是一个目录,可以使用import 导入包,或使用from +import导入包中的部分模块;
包目录第一个文件应该是__init__.py,如果子目录中也有__init__.py,那么它就是这个包的子包了。
引用包
1). import PackageA.SubPackageA.ModuleA,使用时必须用全路径名
2). 变种: from PackageA.SubPackageA import ModuleA, 可以直接使用模块名而不用加上包前缀。
3). 也可以直接导入模块中的函数或变量:from PackageA.SubPackageA.ModuleA import functionA
import语句语法:
1. 当使用from package import item时,item可以是package的子模块或子包,或是其他的定义在包中的名字(比如一个函数、类或变量)
首先检查item是否定义在包中,不过没找到,就认为item是一个模块并尝试加载它,失败时会抛出一个ImportError异常。
2. 当使用import item.subitem.subsubitem语法时,最后一个item之前的item必须是包,最后一个item可以是一个模块或包,但不能是类、函数和变量
3. from pacakge import *
如果包的__init__.py定义了一个名为__all__的列表变量,它包含的模块名字的列表将作为被导入的模块列表。
如果没有定义__all__, 这条语句不会导入所有的package的子模块,它只保证包package被导入,然后导入定义在包中的所有名字。
3. 其它
导入模块其实就是告诉Python解释器去解释那个py文件
导入一个py文件,解释器解释该py文件
导入一个包,解释器解释该包下的 __init__.py 文件
模块能像包含函数定义一样,可包含一些可执行语句。这些可执行语句通常用来进行模块的初始化工作。这些语句只在模块第一次被导入时被执行。这非常重要,有些人以为这些语句会多次导入多次执行,其实不然。
目录下级模块:
import <path>.<module>
也可在下级目录中建立__init__.py文件,然后导入
目录上级模块:
要导入上级目录,把上级目录加到sys.path里:sys.path.append('../')
from fatherdirname import xxx
删除模块
del #只在内存中删除,文件并未删除
import module1,module2,module3
在用import语句导入模块时最好按照这样的顺序:
1、python 标准库模块
2、python 第三方模块
3、自定义模块
3.1. 模块特殊变量
1. __doc__ 将文档的注释封装到该方法 """这种注释才会被封装"""
2. __file__ 获取模块文件的所在路径
3. __name__
if __name__ == ‘__main__’:
打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':
模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。
4. __cached__
5. __package__指定的函数从哪个模块导入
from bin import admin
print(__package__)
print(admin.__package__)
# 结果:
None
bin
3.2. reload
python3中reload被放到了imp模块中
方式(1)
>>> import imp
>>> imp.reload(module)
方式(2)
>>> from imp import reload
>>> reload(module)
注意:使用reload 必须保证module的name已存在于本模块中,也就是说
from module import function后reload会报错;
引用:https://docs.python.org/3/tutorial/modules.html
笔记-Python-module的更多相关文章
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- 笔记-python异常信息输出
笔记-python异常信息输出 1. 异常信息输出 python异常捕获使用try-except-else-finally语句: 在except 语句中可以使用except as e,然后通 ...
- 笔记-python -asynio
笔记-python -asynio 1. 简介 asyncio是做什么的? asyncio is a library to write concurrent code using the a ...
- 笔记-python tutorial-9.classes
笔记-python tutorial-9.classes 1. Classes 1.1. scopes and namespaces namespace: A namespace is ...
- install python module
[install python module] 参考:http://docs.python.org/2.7/install/index.html
- Nuke Python module的使用
最近很多脚本工作都需要脱离nuke的gui环境运行,没有了script editor就必须要尝试Nuke Python module功能了.该模式可以执行大部分在GUI环境中的命令,在自动生成或者批量 ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- __import__ 与动态加载 python module
原文出处: koala bear Direct use of __import__() is rare, except in cases where you want to import a m ...
- 笔记-python操作mysql
笔记-python操作mysql 1. 开始 1.1. 环境准备-mysql create database db_python; use db_python; create tabl ...
- 笔记-python lib-pymongo
笔记-python lib-pymongo 1. 开始 pymongo是python版的连接库,最新版为3.7.2. 文档地址:https://pypi.org/project/pymong ...
随机推荐
- python+tkinter+动画图片+爬虫(查询天气)的GUI图形界面设计
1.完整代码: import time import urllib.request #发送网络请求,获取数据 import gzip #压缩和解压缩模块 import json #解析获得的数据 fr ...
- AD 快捷键设置
TAA 设置自动标记原件位号 AR 设置元件向右对齐 AL 设置元件向左对齐 MS 移动所选择 CO 错误报告设置 CTRL + w 设置电气线 PN 添加net label TG 打开封装管理器 P ...
- Java - Java IO 示例
1. 概述 面试偶尔会问到让你写 文件读写 的面试官 我搞不懂为啥必须会这玩意 面试官的意思是, 这玩意只要是个开发就得会 当然我现在又不是开发 一些概念 读与写 参照 以 进行读写行为的程序 作为参 ...
- 【游戏体验】Colour My World(让我的世界充满色彩)
这是一款玩法简单的游戏 但是它给你的感觉不一样 推荐试玩 个人测评 游戏性 7/10 音乐 9/10 剧情 6/10 总评 22/30
- Go流程结构(for)
一.程序的流程结构 程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构. 顺序结构:代码从上向下逐行的执行 选择结构:条件满足,某些代码才会被执行.0-1次 if语句,switch语句 循环结 ...
- 【Angular】关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep
[Angular]关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep css修改:无效 .ant-input-affix-wrapper .ant-input:not ...
- C语言实例-大小写字母间的转换
初学C语言都会遇到要求写大小写转换的题目 这类题目主要通过ASCII(美国信息交换标准代码)码差值实现,A对应ASCII码十进制数字是65,a对应ASCII码十进制数字是97,即大小写字母之间ASCI ...
- 输入两个正整数num1、num2,计算并输出它们的和、差、积、整数商和余数
课本例题 /*输入两个正整数num1.num2,计算并输出它们的和.差.积.整数商和余数.*/ #include<stdio.h> int main() { int num1, num2; ...
- Analog power pin UPF defination
在一个analog macro端口上,有些pin是always on的,有些是shut down的,如何描述这些pin的power属性?这是一个常见问题,驴就此机会大致描述一下常见的做法.对于这个问题 ...
- 苗条的生成树 Slim Span--洛谷
传送门 钢哥终于没给黑题紫题了(卑微v 稍稍需要多想一点点 ---------------------------------------------------------------------- ...