目录


模块


import流程

  1. 找到模块位置
  2. 编译成位码(需要时)
  3. 执行模块中的代码来创建其所定义的对象

模块只能访问自己的变量

mod1.py

v1='from mod1'
def f1():
    global v1
    print v1

main.py

import mod1
v1='from main'
mod1.v1()
结果:
from mod1

import 和 impor..from

v1='from main'
import  mod1
print v1
print mod1.v1

结果:
from main 
from mod1 

import 会把模块以对象的形式引用到当前作用域

v1='hello'
from  mod1 import v1
print v1

结果:
from mod1 #import的v1覆盖了当前的v1

把变量名复制到当前作用域(容易引起命名冲突,不建议使用)


import 非当前目录下的模块

假如我要import mod2/mod2.py

from mod2 import mod2  #多层目录用 . 链接
print mod2.v2

mod2目录下一定要有一个init.py文件(用于标识这个目录是python模块目录,内容可为空),否则无法引入mod2目录下的模块。python首次倒入某个目录时,会自动执行目录下的init.py文件,所以init.py文件一般用于初始化。


模块属性

一个文件(模块)有若干内置属性,这些属性描述了模块的特征。

  * __name__
    * 模块的名字
    * 如果是以顶层文件执行,则自动复制为“__main__”
  * __all__ 
    * help(mod_name)的时候会展示__all__中的内容

模块高级功能