文章目录
第13章 模块的设计与应用13.1 将自建的函数存储在模块中13.1.1 准备工作13.1.2 创建函数内容的模块13.2 应用函数模块13.2.1 import 语句13.2.2 from ... import 语句13.2.3 from ... import * 语句13.3 随机数random模块13.3.1 randint()13.3.2 choice()13.3.3 shuffle()13.3.4 sample()13.4 时间time模块13.4.1 time()13.4.2 sleep()13.4.3 asctime()13.4.4 localtime()13.5 日期calendar模块13.5.1 isleap()13.5.2 month()13.5.3 calendar()第13章 模块的设计与应用
13.1 将自建的函数存储在模块中
一个大型程序通常是由许多的函数或类组成的,为了让程序的功能明确以及增强程序的可读性,我们可以将建立的函数或类存储成模块形式的独立文档,方便引用。
13.1.1 准备工作
假设有一个程序内容是制作冰淇淋与饮料的输出,如下所示。
def make_icecream(*toppings):# 列出制作冰淇淋的配料print("冰淇淋制作所需配料如下:")for topping in toppings:print("--- ", topping)def make_drink(size, drink, num):# 输入饮料规格(如小杯、中杯、大杯)与类型(如可乐、雪碧)print("需配送饮料:")print("%s %s x %d" % (drink, size, num))make_icecream('蓝莓酱')make_icecream('草莓酱', '巧克力')make_drink('大杯', '可乐', 2)
执行结果:
冰淇淋制作所需配料如下:--- 蓝莓酱冰淇淋制作所需配料如下:--- 草莓酱--- 巧克力需配送饮料:可乐 大杯 x 2
13.1.2 创建函数内容的模块
假设需要在其它程序中调用make_icecream()和make_drink(),此时可以将这两个函数创建成模块。模块的扩展名与Python程序文档一样,为.py。
将make_icecream()和make_drink()创建成一个模块,保存为makefood.py。
# makefood.pydef make_icecream(*toppings):# 列出制作冰淇淋的配料print("冰淇淋制作所需配料如下:")for topping in toppings:print("--- ", topping)def make_drink(size, drink, num):# 输入饮料规格(如小杯、中杯、大杯)与类型(如可乐、雪碧)print("需配送饮料:")print("%s %s x %d" % (drink, size, num))
13.2 应用函数模块
应用函数模块主要有以下几种方式:
导入模块 ==> import 语句导入模块内的函数 ==> from … import 语句导入模块内的所有函数 ==> from … import * 语句
13.2.1 import 语句
要导入创建的模块,只需在程序内执行import语句,语法如下:
import module# module为模块名称
程序中引用模块的函数语法为:模块名称.函数名。
程序实例:导入模块makefood.py。
import makefood# 导入模块mdkefood.py# 引用makefood.py中的方法makefood.make_icecream('蓝莓酱')makefood.make_icecream('草莓酱', '巧克力')makefood.make_drink('大杯', '可乐', 2)
执行结果:
冰淇淋制作所需配料如下:--- 蓝莓酱冰淇淋制作所需配料如下:--- 草莓酱--- 巧克力需配送饮料:可乐 大杯 x 2
13.2.2 from … import 语句
如果只是想要导入模块中的部分指定的函数,则可以使用from语句,语法如下:
from 模块名称 import 函数名称 # 导入多个函数时,函数名之间用“,”隔开
程序实例:
from makefood import make_icecream, make_drink # 导入模块makefood.py中的函数make_icecream()和make_drink()# 引用已导入的函数,可省略模块名称make_icecream('草莓酱')make_icecream('草莓酱', '巧克力')make_drink('中杯', '雪碧', 1)
执行结果:
冰淇淋制作所需配料如下:--- 草莓酱冰淇淋制作所需配料如下:--- 草莓酱--- 巧克力需配送饮料:雪碧 中杯 x 1
13.2.3 from … import * 语句
如果想要导入模块内的所有函数,可使用如下声明:
from 模块名称 import *
程序实例:
from makefood import * # 导入模块makefood.py中的所有函数# 引用已导入的函数,可省略模块名称make_icecream('草莓酱')make_icecream('草莓酱', '巧克力')make_drink('中杯', '啤酒', 1)
执行结果:
冰淇淋制作所需配料如下:--- 草莓酱冰淇淋制作所需配料如下:--- 草莓酱--- 巧克力需配送饮料:啤酒 中杯 x 1
13.3 随机数random模块
所谓的随机数是指平均散布在某区间的数字。
13.3.1 randint()
randint()方法可以随机产生指定区间内的整数,它的语法如下:
randint(min, max) # 产生min与max之间的整数值
程序实例:
import random # 导入模块randommin, max = 1, 10answer = random.randint(min, max) # 随机产生min与max之间的整数while True:num = int(input("猜一个1 ~ 10之间的整数:"))if num == answer:print("恭喜答对啦~~")breakelif num < answer:print("再大一点")else:print("再小一点")
执行结果:
13.3.2 choice()
choice()方法可以在一个列表中随机返回一个元素。
程序实例:
import random # 导入模块randomprizes = ['一等奖', '二等奖', '三等奖', '特等奖', '安慰奖']print("本次开奖结果:",random.choice(prizes))
执行结果:
13.3.3 shuffle()
shuffle()方法可以将列表元素重新排列。
程序实例:
import random # 导入模块randomcards = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']for i in range(5):random.shuffle(cards) # 将顺序打乱重新排列print(cards)
执行结果:
13.3.4 sample()
sample()的语法如下:
sample(name_list, num)# 随机返回列表name_list中的num个元素
程序实例:
import random # 导入模块randomlotterys = random.sample(range(1,50), 7) # 7组号码specialNum = lotterys.pop() # 特别号print("本期大乐透号码:", end="")for lottery in sorted(lotterys):print(lottery, end=" ")print("\n特别号:%d" % specialNum)
执行结果:
本期大乐透号码:11 14 41 43 46 47特别号:2
13.4 时间time模块
13.4.1 time()
time()方法可以返回自1970年1月1日0时0分0秒以来的秒数(时间戳)。
程序实例:
import random # 导入模块randomimport time # 导入模块timemin, max = 1, 10answer = random.randint(min, max) # 随机产生min与max之间的整数startTime = int(time.time()) # 起始秒数,时间戳while True:num = int(input("猜一个1 ~ 10之间的整数:"))if num == answer:print("恭喜答对啦~~")endTime = int(time.time()) # 结束秒数print("共耗时:", endTime - startTime, "秒")breakelif num < answer:print("再大一点")else:print("再小一点")
执行结果:
13.4.2 sleep()
sleep()方法可以让工作暂停,参数单位为秒。
程序实例:
import time# 导入模块timefruits = ['apple', 'banana', 'orange', 'peach', 'pear']for fruit in fruits:print(fruit, "当前时间戳:", int(time.time()))time.sleep(1) # 暂停1s
执行结果:
apple 当前时间戳: 1612153005banana 当前时间戳: 1612153006orange 当前时间戳: 1612153007peach 当前时间戳: 1612153008pear 当前时间戳: 1612153009
13.4.3 asctime()
asctime()方法会以可阅读方式列出当前系统时间。
程序实例:
import time # 导入模块timeprint(time.asctime()) # 列出当前系统时间
执行结果:
Mon Feb 1 12:19:18
13.4.4 localtime()
localtime()方法可以返回当前时间的结构数据,所返回的结构可以用索引方式获得个别内容。
程序实例:
import time # 导入模块timelocalTime = time.localtime()print(localTime) # 列出当前系统时间print(type(localTime))print("年份:", localTime[0])print("月份:", localTime[1])print("天数:", localTime[2])# 这个月的第几天print("时:", localTime[3])print("分:", localTime[4])print("秒:", localTime[5])print("星期几:", localTime[6]) # 0代表星期一,以此类推print("第几天:", localTime[7])# 该年份的第几天print("夏令时间:", localTime[8]) # 1代表是夏令时间,0代表不是
执行结果:
13.5 日期calendar模块
13.5.1 isleap()
isleap()方法可以判断所给出的年份是否为闰年,是则返回True,否则返回False。
程序实例:
import calendarprint("是否为闰年:", calendar.isleap())print("是否为闰年:", calendar.isleap())
执行结果:
是否为闰年: True是否为闰年: False
13.5.2 month()
month()方法完整的参数为:month(year,month),可以列出指定年份月份的月历。
程序实例:
import calendarprint(calendar.month(, 1)) # 列出1月份的月历
执行结果:
13.5.3 calendar()
calendar()方法完整的参数为:calendar(year),可以列出指定年份的年历。
程序实例:
import calendarprint(calendar.calendar())# 列出的年历
执行结果:
参考文章链接:
/python3/python3-module.html
往期文章:
《Python零基础快乐学习之旅》学习笔记2——认识变量与基本数学运算《Python零基础快乐学习之旅》学习笔记3——Python的基本数据类型《Python零基础快乐学习之旅》学习笔记4——基本输入与输出《Python零基础快乐学习之旅》学习笔记5——程序的流程控制使用if语句《Python零基础快乐学习之旅》学习笔记6——列表(list)《Python零基础快乐学习之旅》学习笔记7——循环设计《Python零基础快乐学习之旅》学习笔记8——元组(tuple)《Python零基础快乐学习之旅》学习笔记9——字典(dict)《Python零基础快乐学习之旅》学习笔记10——集合(set)《Python零基础快乐学习之旅》学习笔记11——函数设计《Python零基础快乐学习之旅》学习笔记12——类-面向对象