码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-11-13 20:35:21      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:strong   搜索   变量   module   语句   使用   应该   块代码   __init__   

模块导入逻辑

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

包和搜索路径设置

  • python不支持用绝对路径导入包: import C:\mycode\dir\mod 这么导入会报错
  • 如果模块不在可搜索的工作目录,可以使用相对路径: 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 

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

# dir1\dir2\mod.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学习手册:第二十二章——模块代码编写基础

标签:strong   搜索   变量   module   语句   使用   应该   块代码   __init__   

原文地址:https://www.cnblogs.com/yingyingdeyueer/p/11852952.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!