python学习手册:第二十二章——模块代码编写基础

Posted 盈盈的月儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习手册:第二十二章——模块代码编写基础相关的知识,希望对你有一定的参考价值。

模块导入逻辑

  • 模块只能导入一次,如果导入之后模块有修改可以使用
import module
module.xxx
from imp import reload
reload(module)
module.xxx

包和搜索路径设置

  • python不支持用绝对路径导入包: import C:mycodedirmod 这么导入会报错
  • 如果模块不在可搜索的工作目录,可以使用相对路径: import dir1.dir2.mod
  • 每个非根目录的目录下必须有一个__init__.py文件
  • dir1.dir2.mod的导入路径应该是这样的
dir0    dir1        __init__.py
        dir2            __init__.py
            mod.py
  • init.py文件可以用python程序,也可以是全空的,扮演了包初始化的钩子
  • 当包被导入的时候,会自动执行目录下__init__.py的所有的程序,来创建程序所需要的数据文件 连接数据库等 # from *语句
  • 在__init__.py中使用__all__列表来定义使用from * 语句时,需要导出什么

    小demo

#分别有三个文件
# dir1\__init__.py
print('dir1 init')
x = 1 

# dir1dir2\__init__.py
print('dir2 init')
y = 2 

# dir1dir2mod.py
print('in mod')
z = 3

print("------第一次运行---------")
import dir1.dir2.mod
print("------第二次运行---------")
import dir1.dir2.mod
from importlib import reload
print("------第三次运行---------")
reload(dir1)
reload(dir1.dir2.mod)

# ------第一次运行---------
# dir1 init 模块导入的时候会自动执行导入路径中init文件中的代码
# dir2 init 
# in mod 导入目标模块时会先运行一次模块代码
# ------第二次运行--------- 模块已经导入一次,再次导入不会生效
# ------第三次运行--------- 重载后,目标模块重载,但执行过程中的init不会重载
# dir1 init
# in mod

# 调用模块中的变量
print(dir1.x,dir1.dir2.y,dir1.dir2.mod.z) # 1 2 3  

# from...import的灵活调用
from dir1.dir2 import mod
print(mod.z)

from dir1.dir2.mod import z
print(z)

import dir1.dir2.mod as  t
print(t.z)

import as

```
import module as name

想当于import module ; name = module;del module

以上是关于python学习手册:第二十二章——模块代码编写基础的主要内容,如果未能解决你的问题,请参考以下文章

python学习第二十二章

WPF学习第二十二章 文本控件

Python 第二十二章

Python之路第二十二章:Django 进阶

Python之路第二十二章:Django 缓存

我的学习之路_第二十二章_事务