包,模块

Date: 2019-05-27

Author: Sun

1. 包

包定义

含有__init__.py文件的目录我们称之为包;假如子目录中也有 __init__.py 那么它就是这个包的子包了。

包使用

​ 目录内的文件我们称之为模块,我们利用包和模块的目的是为了找到模块,也就是Python文件内的内容,主要是哪些内容,一般都是功能体、代码段比较封闭,主要有三个,一个是类、一个是函数,还有一个是变量对象。

如上图所示,common_lib目录下有一个__init__.py文件,所以被称为包。

而此包中有一个模块文件operation.py

使用包,只需要 from common_lib.operation import * 就可以使用此模块中的函数了。

import语句语法:

  1. 当使用from package import item时,item可以是package的子模块或子包,或是其他的定义在包中的名字(比如一个函数、类或变量)

    首先检查item是否定义在包中,不过没找到,就认为item是一个模块并尝试加载它,失败时会抛出一个ImportError异常。

  2. 当使用import item.subitem.subsubitem语法时,最后一个item之前的item必须是包,最后一个item可以是一个模块或包,但不能是类、函数和变量

  3. from pacakge import *

    如果包的__init__.py定义了一个名为__all__的列表变量,它包含的模块名字的列表将作为被导入的模块列表。

    如果没有定义__all__, 这条语句不会导入所有的package的子模块,它只保证包package被导入,然后导入定义在包中的所有名字。

​ 为了组织好模块,将多个模块分为一个包。包是python模块文件所在的目录,且该目录下必须存在__init__.py文件。

​ **每一个包目录下面都会有一个__init__.py的文件**,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。

2. 模块

模块是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码

模块分为三种:

  • 自定义模块
  • 内置标准模块 (os, sys,time)
  • 开源模块(第三方)

自定义模块

​ 如上述包common_lib中的operation.py就是一个自定义模块。

​ 模块导入

# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 9:54'

from common_lib.operation import *

​ 导入自定义模块时注意路径,查看库文件sys.path,sys.path.append('路径')添加自定义路径

内置标准模块

python提供了很多的内置标准模块,比如time模块,datetime模块,sys模块,pickle模块,hashlib模块等等。

下面以time模块为例

# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 18:35'

import time

#返回当前时间戳
print(time.time())
#返回当前时间
print(time.ctime())
#将时间戳转换为字符串
print(time.ctime(time.time()-86640))
#本地时间
print(time.localtime(time.time()-86400))
#与time.localtime()功能相反,将struct_time格式转回成时间戳格式
print(time.mktime(time.localtime()))
#将struct_time格式转成指定的字符串格式
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))
#将字符串格式转换成struct_time格式
print(time.strptime("2016-01-28","%Y-%m-%d"))
#休眠5s
time.sleep(5)

开源模块(第三方)

python语言有很多的开源框架提供的模块,比较有名的有:requests库,scrapy库模块等。

在python虚拟环境中安装requests库

pip install requests

下面以requests库模块为例:(下述代码可以暂时不考虑看懂。)

# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 18:35'
import requests

import re

res = requests.get(url='https://b.faloo.com/l/0/1.html?t=1&k=%CB%D9%B6%C8')

res_text=res.text

result=re.findall('\" title\"(.*?)\"><img',res_text,re.DOTALL)

print(result)

3. python库

​ 具有相关功能模块(包)的集合。这也是Python的一大特色之一,即具有强大的标准库、第三方库以及自定义模块。

猜你喜欢

转载自www.cnblogs.com/sunBinary/p/10934257.html