python模块和包

ALT+回车可以快捷键导包导模块

 

一、导入模块后的类,方法,属性的调用

1.皆可以用import 模块名    

模块名.方法\类名\属性来调用

 

2.也可以通过from模块名 import 类\方法\变量

此时调用时可直接调用导入的类\方法\变量,不用通过模块名.方法\类名\属性来调用。

 

3.可以使用 from 模块名 import *的方式把模块里的所有东西导入

注意:模块中是可以通过 __all__=[]来限制*所取到的值。有时import*时导入的并不是所有属性而是__all__列表中所拥有的值。

 

4.当导模块时,会加载模块中要用的东西到内存,所以模块中的执行语句会执行。所以当导模块时不希望模块中的执行语句执行,要把执行语句放在 if __name__=='__main__':中

 

 

二、python的包

为能够创建同名的模块,可以用到包,在不同包中可以创建同名的模块。

在pycharm编译器中,创建文件夹和创建包是有区别的。

1.非py文件可放入文件夹,包里都是py文件

2.只要在文件夹下创建一个__init__.py文件,文件夹就变成了包

3.包创建使要遵循命名规范,字母数字下划线。

4.from 包名 import 模块名,使用模块内的东西时需要通过模块名.属性来调用

5.也可以通过 from 包名.模块名 import 属性 来方便使用

6.在同一包下的模块,也不能直接import这个模块,要使用from 包名.模块名 import *来使用

7.在同一包下的模块,可以通过 from .模块 来导入这个模块(类似于相对路径)(这个.代表当前目录)

8.在同一项目下,不同包的模块也可以直接通过from包名import模块来导入这个模块,因为这个搜寻都是基于这一项目开始查找,不同项目才可以通过os.chdir或sys.path.append来添加路径来导包。

 

三、包的__init__

只要有导包就会默认调用包的__init__文件

此时默认初始化加载__init__.py,若__init__.py文件中有方法或类,那么py内存中已经加载这些东西,可以直接通过包名.方法()来调用。

当需要用到from 包名 import *时 ,平常的理解是导包内的所有东西,但实际是若包的__init__不加__all__=【】来限定*中的东西,什么东西都导不进来,需要添加__all__列表,列表中的东西可通过from 包名 import *来导入。

 

from 模块名 import *  与 from 包名 import * 的区别:

导模块的*代表能导入模块中的所有属性,__all__限制了往里面导的东西

而导包的*代表能导入__all__中的东西,并不是全部东西。

 

四、模块的循环导入

'''
我调你,你调我的情况

A:模块A
def a():
    c()

C: 模块C

def c():
    a()

'''

 

在大型python项目中,由于架构不当,可能造成互相调用的情况导致程序不能正常运行。

可以通过把导模块操作放入函数体内,需要使用时再导包,使另一模块需要使用的方法成功加载内存即可。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值