Python 模块.
容器 -> 数据的封装
函数 -> 语句的封装
类 -> 方法和属性的封装
模块 -> 模块就是程序
自己写的模块要和调用程序在同意目录下 , 这样才可以成功调用 .
模块的存放 .(__name__=='__main',搜索路径和包)
当我们将一个个的模块写好之后往往需要测试 或者 有其他的用途 然后我们摘模块里面开始测试 , 例如1 =========== RESTART: C:\Users\Administrator\Desktop\新建文件夹\Temp.py ===========
1 def c2f(cel): 2 fah=cel*1.8+32 3 return fah 4 5 def f2c(fah): 6 cel=(fah-32)/1.8 7 return cel 8 9 def test(): 10 print('测试 0摄氏度 = %.2f 华氏度 ' % c2f(0)) 11 print('测试 0华氏度 = %.2f 摄氏度 ' % f2c(0)) 12 13 test()
2 测试 0摄氏度 = 32.00 华氏度 3 测试 0华氏度 = -17.78 摄氏度 4 >>>
在这里是没问题的 , 然后我们开始调用这个包.
1 import Temp as T 2 import time 3 print('32摄氏度 = %.2f 华氏度' %T.c2f(32)) 4 print('99华氏度 = %.2f 摄氏度' %T.f2c(99)) 5 time.sleep(20)
1 =========== RESTART: C:\Users\Administrator\Desktop\新建文件夹\jack.py =========== 2 测试 0摄氏度 = 32.00 华氏度 3 测试 0华氏度 = -17.78 摄氏度 4 32摄氏度 = 89.60 华氏度 5 99华氏度 = 37.22 摄氏度
这时候就出问题了 , 我们调用模块时 , 模块中的测试 居然也运行了 , 这可怎么办呢?这时候我们就要告诉Python该模块是作为程序运行还是模块运行了 .
在模块中insert这条语句
1 def c2f(cel): 2 fah=cel*1.8+32 3 return fah 4 5 def f2c(fah): 6 cel=(fah-32)/1.8 7 return cel 8 9 def test(): 10 print('测试 0摄氏度 = %.2f 华氏度 ' % c2f(0)) 11 print('测试 0华氏度 = %.2f 摄氏度 ' % f2c(0)) 12 13 if __name__=='__main__': # 在模块中insert这条语句 14 test()
在主程序中 __name__是__main__ 主程序的意思 , 如果作为包进入了其他的程序 那么 __name__ 就是该模块的名成了 例如将模块程序 进行如下改动 . 然后在运行一下 模块程序
1 def c2f(cel): 2 fah=cel*1.8+32 3 return fah 4 5 def f2c(fah): 6 cel=(fah-32)/1.8 7 return cel 8 9 def test(): 10 print('测试 0摄氏度 = %.2f 华氏度 ' % c2f(0)) 11 print('测试 0华氏度 = %.2f 摄氏度 ' % f2c(0)) 12 13 print(__name__) # 在这里进行第二次修改 14 15 if __name__=='__main__': # 在模块中insert这条语句 16 test()
1 =========== RESTART: C:\Users\Administrator\Desktop\新建文件夹\Temp.py =========== 2 __main__ 3 测试 0摄氏度 = 32.00 华氏度 4 测试 0华氏度 = -17.78 摄氏度 5 >>>
可见在本程序运行的时候 __name__的意思是 __main__ , 然后在其他程序中调用一下该模块试试.
1 import Temp as T 2 import time 3 print('32摄氏度 = %.2f 华氏度' %T.c2f(32)) 4 print('99华氏度 = %.2f 摄氏度' %T.f2c(99)) 5 time.sleep(20)
1 =========== RESTART: C:\Users\Administrator\Desktop\新建文件夹\jack.py =========== 2 Temp 3 32摄氏度 = 89.60 华氏度 4 99华氏度 = 37.22 摄氏度
可见显示出来的是 该模块的名称 /
下面讲解一下搜索路径 / 石景山搜索 路径是一个列表 如电脑中环境变量的储存一样 . 查看自己python的搜索路径都有那些可以这样进行查看.
1 Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32 2 Type "copyright", "credits" or "license()" for more information. 3 >>> import sys 4 >>> sys.path 5 ['', 'C:\\Python3.5\\Lib\\idlelib', 'C:\\Python3.5\\lib\\site-packages\\pip-8.1.2-py3.5.egg', 'C:\\Python3.5\\python35.zip', 'C:\\Python3.5\\DLLs', 'C:\\Python3.5\\lib', 'C:\\Python3.5', 'C:\\Python3.5\\lib\\site-packages'] 6 >>>
只要你的模块在以上路径之内Python就可以自己搜索到 . Python 建议的模块储存区域是.C:\\Python3.5\\lib\\site-packages (site-packages)只要是这个子目录就行 , 安装的不同可能导致目录的不同 .
可以发现python的路径存放是以列表的方法 , 所以我们可以向其中添加自己想存放模块的路径 如果需要添加则进行一下操作 .
sys.path.append('存放的路径.') 这样就添加了一个搜索路径.
最后说一下包的概念 .
包(用于将模块进行分类.)
1 : 创建一个文件夹 , 用于储存相关的模块 , 文件夹的名字就是包的名字.
2 :在其中创建一个名为 __init__.py的文件内容可以为空(龟腚) /
3 : 将模块放到包(文件夹)中 ,
1 import Jack.Temp as T 2 import time 3 print('32摄氏度 = %.2f 华氏度' %T.c2f(32)) 4 print('99华氏度 = %.2f 摄氏度' %T.f2c(99)) 5 time.sleep(20)
def c2f(cel): fah=cel*1.8+32 return fah def f2c(fah): cel=(fah-32)/1.8 return cel def test(): print('测试 0摄氏度 = %.2f 华氏度 ' % c2f(0)) print('测试 0华氏度 = %.2f 摄氏度 ' % f2c(0)) print(__name__) # 在这里进行第二次修改 if __name__=='__main__': # 在模块中insert这条语句 test()
运行结果