模块笔记01

文件夹module_test:1.main.py     主程序

                             2.module01.py     模块一

包package01: 2.p_test01.py     模块

          3.p_test02.py     模块

          4.p_test03.py     模块

1.定义:

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

包:本质就是一个目录(必须带有一个叫__init__.py文件)

      从逻辑上组织模块

 

2.导入方法

import module01  #导入模块

import module01,module02    #有多个模块用逗号隔开

from module01 import *  #导入module_01的所有 相当于把module_01下的所有东西在这里展示出来 不建议使用

from module01 import m1,m2,m3  #导入module01模块里的多个函数

form module01 import logger as logger_def #当主程序和模块都里有个logger函数时, 给模块的函数重新定义一个名,在主程序直接运行别名函数

form module01 import name #(name是模块的变量)相当与name='jeck' 执行了一边 在主程序里使用是直接使用,不用加模块名

导入包:

import package01  #导入包

 

导入上级目录的模块:

 

import module_test

 

3.import的本质

  相当与把module01模块解释了一边或称运行了一边,把module01里的所有代码函数等封装赋值给module01

  (import先在本目录下寻找module01模块)

  导入包的本质就是解释、执行包下面的__init__.py文件 在主程序运行时会直接执行__init__.py文件

  例如:包package下有test1模块,模块里有个test函数,同级包的一个目录下有main.py要调用test1模块,package下的__init__文件里就要导入  form.import test1(“.”从当前目录下导入)

  相当于把test1模块里的代码在__init__里面执行了一遍,main里面先导入路径sys.path.append('../')再导入包import package   执行package.test1.test()即可执行

  如dir1和dir2同级,dir1下有个包package,包里有test1模块,模块里有个test函数,dir2里有个main.py想调用test函数main里应该

  

1 import sys,os
2 
3 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
4 
5 from dir1 import package
6 
7 package.test1.test()

 小技巧:

module.py和main.py 同级,module有个test函数,main里很多函数要调用test,如果main里这样import module定义, 就每个函数都要去寻找module再找到test,module.test()执行,

这样就降低效率。如果是form module import test定义 就相当于test函数在main里面解释执行了一遍,就直接test()使用,有重名就as定义个别名

猜你喜欢

转载自www.cnblogs.com/zhong2018/p/8962087.html