2 python包、模块相关
1 ############### 调用其它路径下面的模块和包 ################################### 2 3 import sys 4 sys.path.append(r"/hyy/python/model/model_name") 5 sys.path.append(r"目录路径") 6 7 ############ 模块 ################################# 8 ---说明1: 9 一个.py结尾的文件,就可以叫做是模块。 10 模块就是普通的.py .pyc .pyo文件 11 使用import导入(即相当于把1.py文件中的源代码拷贝到当前被导入文件中) 12 13 14 ------------------------ 模块的举例 --------------------------------- 15 16 例: 17 模块mymod.py 内容如下: 18 def func_sum(arg): 19 print sum(arg) 20 print "zzzz" 21 22 -- 即from后面的名字前缀可以省略掉。 23 24 25 ## 使用方法1: 26 import mymod ## 模块导入的时候即会被执行 27 28 print "bb" 29 a=[1,2,3,4,5,6] 30 mymod.func_sum(a) ## 执行模块中的函数(必须前面有模块名的前缀) 31 32 结果: 33 zzzz 34 bb 35 21 36 37 38 ##使用方法2: 39 from mymod import func_sum 40 41 print "bb" 42 a=[1,2,3,4,5,6] 43 func_sum(a) ## 执行模块中的函数(这里不能有模块名的前缀) 44 45 结果: 46 zzzz 47 bb 48 21 49 50 -------------------模块的特性---------------------------------------- 51 52 -- 说明2: 53 需要用到内置变量 __name__ 54 在本文件中被调用 __name__ 值为 __main__ 55 在其它文件被调用 __name__ 值为模块的文件名 56 57 则在模块中可以写如下判断代码: 58 ## 因为模块被导入时,会被执行 59 ## 如时不想让模块中的main函数在导入import时被执行。则模块中要写此语句 60 if __name__ == '__main__': 61 main() 62 63 64 65 -----------------------------补充 ----------------------------------- 66 补充: 67 --源代码 1.py 68 以.py结束 python源代码的文件 69 --字节代码 1.pyc 70 以.pyc结束 是源文件经过编译后生成的 71 import py_compile --引入编译模块 72 py_compile.compile("1.py") ---进行编译,生成了.pyc文件(二进制文件) 73 --优化代码 1.pyo 74 经过优化的源文件, 以.pyo结尾(二进制文件) 75 python -O -m py_compile 1.py 76 77 注意: 78 以上.py .pyc .pyo 三种文件都可以直接运行, 79 执行.py 是解释执行 相对来说较慢 80 执行.pyc 和.pyo 则是以二进制来执行是比较快的 81 82 83 ########## 包 ################################# 84 1, 创建包 85 86 说明1: 87 包是模块的集合(所有的模块文件放在一个文件夹下就是一个包) 88 包中(即文件夹)必须有一个模块名为:__init__.py 的文件(可空可不为空,即表名此文件夹为包) 89 说明2: 90 一般__init__.py文件中可以写包的一些相关信息(比如这个包是干嘛的) 91 因为包在调用时,都会自动执行这个名为__init__.py 的模块文件 92 93 94 -----------包的调用------------------------- 95 说明: 96 com 是包名,即目录名 97 util 是模块名,即目录下文件名, 98 func_sum 是模块中的函数 99 100 -- 即from后面的名字前缀可以省略掉。 101 102 --方法1: 103 import com.util 104 com.util.func_sum() 105 106 方法2: 107 from com import util 108 util.func_sum() 109 110 方法3: 111 from com.util import func_sum() 112 func_sum() 113 114 方法4 115 from com.util import * 116 func_sum()