python-模块和包

模块:

1. 一个py文件,就是一个模块,文件中包括定义的函数和类等信息。

2. 尽管可以import多次,实际上模块只导入一次

3. 模块搜索路径 内存中已经加载的模块->内置模块->sys.path路径(导模块的环境变量)中包含的模块 

4. 导入模块

      将整个模块导入   import 模块名

      导入所有函数  from 模块名 import * 

     从模块中导入某个函数 from 模块名称 import 函数1(, 函数2...) 也可以是属性

     使用区别

          

          import 模块名和form 模块名 import *,调用模块函数(属性)时的格式是 模块.函数属性)

          from 模块名 import  函数名(属性名),这可以直接使用,无需添加模块名

包:

      假设目录结构如图:

 1. 当一个目录内含有__init__ . py文件时,就可以视该目录为一个包,因此图中Model和 Basenodel logmodel都是包

 2. 导入包

   (1)import 包名;  import Model.Basemodel,  importModel,  import Basemodel;使用该模块下的方法时,需要将import之后名称全部加上,方可调用成功。

             

           该操作只能导入该包下的模块,不能导入子包中的模块;也不能通过通过包名.报名.模块.函数(变量)来访问。

            直接导入Model,Model中包含包

                    

            提示属性不存在,将Basemodel当作模块调用

                   

   (2)from 包名.[包名. ]   import 模块名(模块名字之前不能有'包名.'):  from Model.Basemodel import Image 

   (3)from  包名.[包名. ]   import *

 3. __init__文件

      (1) 该文件,可以表示该目录是一个包,内容可以为空,第一次导入包或者是包的任何其他部分,实际就是导入该文件。因此,我们在该文件中导入需要的模块(别人在导入包的同时,也就导入__init__文件中的模块),这样在使用时,用户感觉可以将这个包当作模块使用,而不关心其背部结构。

       例如:Model包中的__init__文件内容如下:

         

         其他模块在导入时,就可以简单的使用,不用关心其内部结构(使得导入包 向导入模块一样简单)

         

        

       

   (2) 特殊变量 __all__

          __init__不仅仅用来导入模块,其本身也可以加入代码,其中存在特殊变量__all__ ,该变量是一个列表,列表中以字符串的格式存放变量或者函数,在执行 form 包 import * 时,导入该列表内容。示例:

          列表中添加了add函数和xx变量

其他模块执行 from Model import *,

         

   执行结果:

       

      提示mul函数未定义,因为该函数不在__all__列表中

 4.相对路径导入

             

             在此目录结构中,__init__ 和 Basemodel 在同一目录下,因此在__init__文件中想要导入BaseModel文件,可以使用相对路径,也就是使用linux系统中的 .(本目录) 和..(上级目录),并且只能在一个目录中使用,不能用于不同目录内

                    

                   此截图,使用的就是'.',意思是同级目录下的Basemodel包,而不会去寻找其他包。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值