day14-1 模块定义,导入

1.定义:

模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件

(文件名为test.py 对应的模块为test)

包:用来从逻辑上组织模块,本质就是一个目录(必须带有一个.__init__.py 文件)

1 name = 'Ri'
2 
3 def say_hello(name):
4     print("hello,", name)
5     
moudle_ri.py
1 import moudel_ri
2 
3 print(moudel_ri.name)
4 print(moudel_ri.say_hello('yang'))
5 
6 #Ri
7 #hello, yang
8 #None
main.py

2.导入方法:

import moudle_ri 导入一个模块

import moidle_ri,moudle1.ri 导入多个

from moudle_ri import *  导入一个模块所有方法。一般不这样使用,假如导入的模块里面有一个test方法,直接test()就可以调用

如果在之后有test方法,会覆盖掉模块里面的方法。(因为python解释器是逐行解释运行的)

from moudle_ri import m1,m2,m3 导入多个

from moudle_ri import logger as lo  可直接用lo调用

1 from moudel_ri import logger as lo
2 
3 lo()
4 
5 Reloaded modules: moudel_ri
6  #in the logger!
as lo

 

3.import本质(路径搜索和搜索路径):

导入模块的本质是把python在当前文件解释一遍

import test     想当于  test = ‘test.py' all code

from test import m 相当于 m = ’m code‘

import moudle_ri  --------> moudle_ri.py ------->moudle_ri.py 的路径 -----> sys.path

 1 import sys,os
 2 print(sys.path)
 3 x_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 4 sys.path.insert(0,x_path)
 5 print(sys.path)
 6 
 7 #['C:\\day5\\moudle_test', 'C:\\day5',
 8 #  'C:\\day5\\venv\\Scripts\\python35.zip', 
 9 # 'C:\\Python\\Python35\\DLLs', 'C:\\Python\\Python35\\lib',
10 #  'C:\\Python\\Python35', 'C:\\day5\\venv', 'C:\\day5\\venv\\lib\\site-packages', 
11 # 'C:\\day5\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.5.egg', 'C:\\day5\\venv\\lib\\site-packages\\pip-10.0.1-py3.5.egg']
12 #['C:\\day5', 'C:\\day5\\moudle_test', 'C:\\day5', 'C:\\day5\\venv\\Scripts\\python35.zip',
13 #  'C:\\Python\\Python35\\DLLs', 'C:\\Python\\Python35\\lib', 'C:\\Python\\Python35', 'C:\\day5\\venv', 'C:\\day5\\venv\\lib\\site-packages'
os,sys

导入包的本质是就是执行包下的.__init__.py 文件

4.导入优化

 1 # import  moudle_test
 2 from moudle_test import  test   #因为这里有很多地方多需要使用模块下的test,所以用 from moudle_test import  test 免去了重复导入的过程
 3 
 4 
 5 def logger():
 6     #moudle_test.test()
 7     test()
 8     print("in the logger")
 9 
10 def search():
11     #moudle_test.test()
12     test()    
13     print("in thr search")
14 
15 
16 logger()
17 search()
18 
19 # 假设有两个目录day5,day4.需要在day5里的一个py文件导入day4里面的包里的模块
20 #import sys,os
21 #x = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  # 第一个dirname 到达day5,第二个到达day5的上级目录
22 #sys.path.append(x)  
23 #from day4 import package_test
24 #package_test.test1.test()
导入优化

5.模块的分类:

第一类:标准库(自带)

第二类:开源模块(第三方库)

第三类:自定义模块

 

posted @ 2018-10-17 17:10  杨fj  阅读(102)  评论(0编辑  收藏  举报