目录

  • 模块和包
  • 1. 什么叫模块
  • 2. 自定义模块
  • 3. 以主程序的形式执行
  • 4. Python中的包
  • 5. 第三方模块的安装与使用


模块和包

1. 什么叫模块

  1. 模块英文为Modules
  2. 函数与模块的关系:一个模块中可以包含N多个函数
  3. 在Python中一个扩展名为.py的文件就是一个模块
  4. 使用模块的好处:
    (1)方便其他程序和脚本的导入并使用
    (2)避免函数名和变量名冲突
    (3)提高代码的可维护性
    (4)提高代码的可重用性

2. 自定义模块

创建模块

新建一个.py文件,名称尽量不要与Python自带的标准模块名称相同。

导入模块
import 模块名称 [as 别名] (导入模块中的所有)

导入其他人的模块:

import math  # 关于数学运算的一个模块
print(id(math))
print(type(math))
print(math.pi)
print('--------------------------')
print(dir(math))
print(math.pow(2,3),type(math.pow(2,3)))
print(math.ceil(9.001))
print(math.floor(9.999))

from 模块名称 import 函数/变量/类 (导入模块中的部分)

from math import pi
print(pi)

导入自己的模块:
calc模块:

def add(a,b):
    return a+b

def div(a,b):
    return a/b
# 导入自己的模块
import calc
print(calc.add(2,3))

from calc import add
print(add(10,20))

3. 以主程序的形式执行

在每个模块的定义中都包括一个记录模块名称的变量_name_,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其他程序中执行,那么它可能在解释器的顶级模块中执行。顶级模块的_name_变量的值为_main_

if name ==‘main’:
pass

例如:
calc2.py

def add(a,b):
    return a+b

if __name__ == '__main__':
        print(add(10,20))  # 只有当点击运行calc2时才会执行运算

调用calc2模块:此时不会输出30

# 以主程序的形式执行
import calc2
print(calc2.add(100,200))

4. Python中的包

包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下。

作用:

  1. 代码规范
  2. 避免模块名称冲突

模块与包的区别:

  1. 包含__init__.py文件的目录称为包
  2. 目录里通常不包含__init__.py文件

包的导入:
import 包名.模块名

'''包'''
'''导入Package1包'''
import Package1.module_A as ma  # ma是Package1.module_A这个模块的别名
# print(Package1.module_A.a)
print(ma.a)

# 在导入带有包的模块时,注意事项:
import Package1
import calc
# 使用import进行导入时,只能跟包名或者模块名

from Package1 import module_A
from Package1.module_A import a
# 使用from...import可以导入包、模块、函数、变量等

Python中常用的内置模块:

模块名

描述

sys

与Python解释器及其环境操作相关的标准库

time

提供与时间相关的各种函数的标准库

os

提供了访问操作系统服务功能的标准库

calendar

提供与日期相关的各种操作的标准库

urllib

用于读取来自网上(服务器)的数据标准库

json

用于使用JSON序列化和反序列化对象

re

用于在字符串中执行正则表达式匹配和替换

math

提供标准算术运算函数的标准库

decimal

用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算

logging

提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能

import sys
print(sys.getsizeof(24))
print(sys.getsizeof(True))

import time
print(time.time())
print(time.localtime())

import urllib.request
print(urllib.request.urlopen('http://www.baidu.com').read())

from decimal import Decimal
print(Decimal(3)+Decimal(3))

5. 第三方模块的安装与使用

第三方模块的安装:

pip install 模块名

第三方模块的使用:

import 模块名

import schedule

def job():
    print('哈哈')
schedule.every(3).seconds.do(job)
while True:
    schedule.run_pending()
    time.sleep(1)