首页 > 代码库 > 导入模块 和 包

导入模块 和 包

一 模块

模块一共三种:

    python标准库
    第三方模块
    应用程序自定义模块
技术分享  在cmd命令终端,查看命令os 来自第三方

技术分享   time模块来自第三方

 

 



模块两种执行方式:

1 用于启动执行

2 用于被调用执行

 



key:import module:

将执行文件(module)的目录路径插入到sys.path的第一个位置

import的两个过程:

技术分享

 





修改调用模块的名字:import logging as log

from 模块 import 变量名
from modname import name1[, name2[, ... nameN]]


二 包(package)

模块非常多,不好找,组织模块的方式:包

在python中,包可以理解成一个文件夹,但是没一个文件夹里必须要有
一个__init__文件

2.1 from  包  import   模块    #格式

但一个py文件和另一个要被引用的文件不在同级目录里,就用    from  包  import   模块 

 

#logger.py文件,,被引用的文件

import logging  #logging是第三方模块,
#from log import func

def get_logger():
logger=logging.getLogger()
fh=logging.FileHandler(‘log.txt‘)
logger.addHandler(fh)

return logger

print(‘ok‘)
get_logger()
技术分享

 



附上目录里面包和.py 文件的树状结构
技术分享

 



#bin是启动文件,要引用logger文件 ,不再同级别,就用from import 模块
#improt logger   #直接调用,不在同级目录下,就无法引用
#from import 模块 #引入模块
from log import logger #要用from 这种格式引用logger模块


logger_obj=logger.get_logger()
logger_obj.error(‘error‘)
 再调用sc_cal 模块的方法  ,模块名+方法(函数)   sc_cal.add()
技术分享

 

在哪个文件里运行,哪个文件就是启动文件,就会先从这个文件开始启动


如果bin的文件位置发生变动,就要再添加路径

技术分享

 



2.2 同级目录下的被调用模块之间的相互调用

2.3 if __name__==‘__main__‘:

这个表示执行的是此代码所在的文件。 如果这个文件是作为模块被其他文件调用,不会执行这里面的代码。 只有执行这个文件时, if 里面的语句才会被执行。 这个功能经常可以用于进行测试

1.python文件的后缀为.py;

2..py文件既可以用来直接执行,就像一个小程序一样,也可以用来作为模块被导入(比如360安全卫士,就是依靠一个个功能模块来实现的,好比360安全卫士本身框架是一个桌面,而上面的图标就是快捷方式,这些快捷方式所指向的就是这一个个功能模块)

3.在python中导入模块一般使用的是import

好了,在确定知道以上几点之后,就可以开始解释if __name__ == "__main__":这个语句了。

首先解释一下if,顾名思义,if就是如果的意思,在句子开始处加上if,就说明,这个句子是一个条件语句。学习if语句的使用是很简单的,当然想要真正灵活运用还需大量的实践。

接着是 __name__,__name__作为模块的内置属性,简单点说呢,就是.py文件的调用方式。

最后是__main__,刚才我也提过,.py文件有两种使用方式:作为模块被调用和直接使用。如果它等于"__main__"就表示是直接执行。

总结:在if __name__ == "__main__":之后的语句作为模块被调用的时候,语句之后的代码不执行;直接使用的时候,语句之后的代码执行。通常,此语句用于模块测试中使用。

 

 


2.4 from 包.包 import 模块
    from 包.包.模块 import 变量名字
    
2.5 __init__文件的作用

__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。

通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。





 

导入模块 和 包