笔记-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的更多相关文章

  1. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  2. 笔记-python异常信息输出

    笔记-python异常信息输出 1.      异常信息输出 python异常捕获使用try-except-else-finally语句: 在except 语句中可以使用except as e,然后通 ...

  3. 笔记-python -asynio

    笔记-python -asynio 1.      简介 asyncio是做什么的? asyncio is a library to write concurrent code using the a ...

  4. 笔记-python tutorial-9.classes

    笔记-python tutorial-9.classes 1.      Classes 1.1.    scopes and namespaces namespace: A namespace is ...

  5. install python module

    [install python module] 参考:http://docs.python.org/2.7/install/index.html

  6. Nuke Python module的使用

    最近很多脚本工作都需要脱离nuke的gui环境运行,没有了script editor就必须要尝试Nuke Python module功能了.该模式可以执行大部分在GUI环境中的命令,在自动生成或者批量 ...

  7. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  8. __import__ 与动态加载 python module

    原文出处: koala bear    Direct use of __import__() is rare, except in cases where you want to import a m ...

  9. 笔记-python操作mysql

    笔记-python操作mysql 1.      开始 1.1.    环境准备-mysql create database db_python; use db_python; create tabl ...

  10. 笔记-python lib-pymongo

    笔记-python lib-pymongo 1.      开始 pymongo是python版的连接库,最新版为3.7.2. 文档地址:https://pypi.org/project/pymong ...

随机推荐

  1. 手把手教你做一个python+matplotlib的炫酷的数据可视化动图

    1.效果图 2.注意: 上述资料是虚拟的,为了学习制作动图,构建的. 仅供学习, 不是真实数据,请别误传. 当自己需要对真实数据进行可视化时,可进行适当修改. 3.代码: #第1步:导出模块,固定 i ...

  2. supervisor的使用点滴

    supervisor的安装 pip install supervisor 安装成功后步骤 1.创建配置文件 echo_supervisord_conf  > /etc/supervisord.c ...

  3. Educational Codeforces Round 78 (Rated for Div. 2)E(构造,DFS)

    DFS,把和当前结点相连的点全都括在当前结点左右区间里,它们的左端点依次++,然后对这些结点进行DFS,优先对左端点更大的进行DFS,这样它右端点会先括起来,和它同层的结点(后DFS的那些)的区间会把 ...

  4. 论STA | SOCV / POCV 之 variation (2)

    芯片制造涉及到许多复杂重复的过程,如:光刻.蚀刻.离子注入.扩散.退火.而且都是原子级操作,尽管控制非常严格,但偏差不可避免. 工艺偏差会导致芯片物理参数偏差,如:线宽.沟道掺杂浓度.线厚.临界尺寸. ...

  5. Azure虚拟机网站部署 防火墙设置

    唯一需要注意的是当你的网站设置的端口不是默认的80的时候,需要在防火墙那里将你新设置的端口设置为allow 先要到云的后台设置  “入站安全规则”--> 将你的网站端口设置为Allow 1.通过 ...

  6. AttributeError: This QueryDict instance is immutable

    当写添加注册后端时,运行当运行时,会出现: "AttributeError: This QueryDict instance is immutable": 因为默认的 QueryD ...

  7. ENS中文文档系列之三 [ ENS常见问题 ]

    原文地址:https://ensuser.com/docs/frequently-asked-questions.html更多最新信息,请前往 ENS 中文服务站点:ENSUser 关于 ENS 注册 ...

  8. Linux-VMware 15 虚拟机黑屏问题

    VMware 15 虚拟机黑屏问题   最近终于舍弃win7,换了win10的操作系统...   VM12不兼容,各种问题频出,于是换了VM15. 新装了kali2019.03,结果刚装好不久,在某一 ...

  9. FULL OUTER JOIN

    FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行. SELECT Web.name, access.count, access.dat ...

  10. eclipse链接mySQL数据库常见错误

    1错误: 解决: 2,用户名输入错误 解决:查看自己的正确用户名https://zhidao.baidu.com/question/248308313.html 3. 解决: 链接示例:https:/ ...