模块的定义
方式一:使用自己的模块
import语句
from … import … 语句
if __name__ == '__main__'
方式二:使用他人的模块
探究他人模块
自学模块
学习CSV模块
那什么是模块呢?
之前我们学过函数, 我们说函数就如同包裹,它封装了一段代码,可以实现所需功能。
后来我们学了类,我们发现,类比函数更强大,它封装了属性与方法,可以实现更多的功能。
今天我们学习一下模块,这个就是江湖中争夺的储物戒指,因为它比函数、类强大很多,能够封装更多的功能代码。用句专业术语来讲: 模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。也就是模块可以封装任何数据、代码。
在上节课中,我们编辑了一个名为readfile.py的文件,这个后缀名为.py的文件就是一个单独的模块。其实,在我们每次的教学课堂中,我们运行的代码也是运行在一个后缀为.py的文件上,只不过我们为了方便大家,隐藏了文件名字。
每一个后缀名为.py的文件都是模块。模块作用就是将数据、代码封装起来,以便再使用。模块不仅仅我们自己使用,也可以把它给别人使用,就像传递文件一样那么简单。好了,接下来,我们看一看模块使用的方式。
建立模块,就是建立.py文件。在其中一个.py文件中引入另一个.py文件。如下图:我们在main.py模块中引入mytest.py模块。
请你阅读main.py与mytest.py中的文件内容,并直接运行main.py文件。
这就是main.py文件引入了mytest.py模块,将mytest.py的内容输出出来了。就一句代码 import mytest,下面,我们先来看一看import这就是main.py文件引入了mytest.py模块,将mytest.py的内容输出出来了。就一句代码 import mytest,下面,我们先来看一看import
import语句可以导入一个模块,目的不仅仅是打印语句,更主要的是可以使用模块中的变量、函数与类。
def hello():
intro = "你好,我是驭风少年函数"
print("hello函数正在运行")
class Test:
strClass = "我是类,我是驭风少年"
def go(self):
print("类在运行")
print(strtest) #打印变量strtest
hello() #运行函数hello()
shaonian = Test() #Test类的实例化
print(shaonian.strClass) #打印实例属性
shaonian.go() #调用实例方法go方法
在这段代码中,赋值变量、定义函数、定义类、使用变量、调用函数、实例化对象都在一个文件中。我们通过使用模块,把赋值变量、定义函数、定义类放在mytest.py文件中,把使用变量、调用函数、实例化对象放在main.py文件中
import mytest #导入mytest模块
print(mytest.strtest) #打印mytest模块中变量strtest
mytest.hello() #运行mytest模块中函数hello()
shaonian = mytest.Test() #mytest模块中Test类的实例化
import还有另外一种用法,就是import…as… 先看一下下面例子。
如果你嫌mytest名字太长,就可以使用import…as…语句,可以将mytest的名字变成ts,这样在后面需要使用mytest模块名的地方,就可以换成ts名字使用。还有,当我们需要导入多个模块时,我们可以使用逗号,将模块名隔开。例如: import x,y,z 就是将X.py文件,Y.py文件,Z.py文件同时引入。好了,这就是import语句。下面我们来学习一下from…import语句。
from…import…语句可以将某一模块的部分代码导入到另一个模块中。
还是上面那个案例,我们来改造一下。
运行一下下面代码, 观察终端里的效果。我们将mytest.py文件中的变量与函数引导main.py中使用,这样使用时无需加入”模块名”前缀同样,我们这次引入变量与函数,我们可以将:
这就是from…import…语句的用法。
在讲if __name__ == '__main__'语句之前,先给大家介绍一下”程序的入口”。
Python与其他语言一样,程序都要有一个运行入口。当我们运行某个py文件时,就能启动整个程序。那么这个py文件就是程序的入口。
就像上面那个案例:
当然, 以后还会遇到更复杂的情况, 只有一个主模块,引入了其他多个模块。
当我们有很多py文件在一个程序中,但是你只能指定一个程序入口。这样你就需要使用if __name__ == '__main__':来指定某个py文件为程序入口。第一种情况:加上这一句代码,程序和原来一样:
这就是,当把mytest.py导入到main.py文件中,在mian.py中加入if __name__ == '__main__': 执行main.py, 程序正常执行。
运行first.py代码,你会发现,只能输出”我是a模块”。
这是因为,此时mian.py文件已经不再是程序的入口。main.py文件导入到了first.py文件中,first.py文件运行的时候,只会执行mian.py文件中本身代码,不会执行if __name__ == '__main__':后面的代码。总结下if __name__ == '__main__':语句的用法
好了,这就是如何使用我们自己的模块。接下来,我们学习下如何使用他人模块。
运行代码你会发现,先打印“hello”,延迟3秒后才打印“python”这就是time模块中的time.sleep(3)语句起作用了。你还使用过Python自带的random模块。运行一下下面代码,观察终端里的效果。
这就是我们之前使用Python自带的time与random模块的用法。Python世界中, 为我们提供了很多内置的模块; 也可以引入一些其他第三方的模块。使用其他第三方模块, 如爬虫模块, 数据分析模块, 会在其他课程中具体讲解。这节课, 我们来探究下Python的内置模块。们在Python环境中,找到了time.py文件中的代码:
代码很长很长, time.py文件中的结构如下:
我们可以看到我们经常使用的sleep()函数。
def sleep(secs: float) -> None: ...
secs:float 就决定了,需要延迟时间,也可以传入浮点数类型的数值。我们可以查看Python中所有内置模块的语法。
学习模块, 就是要学会模块的功能,也就是模块中的函数方法如何使用。
我们可以把time模块重点的功能内容做成笔记:
这就是time模块的内容。这是比较小的模块,知识点比较单一的模块,还可以自学;但是对于知识点比较复杂的庞大模块,就比较困难了。比如说数据分析的NumPy与pandas模块,这就需要进行系统学习的。好了, 接下来,带大家学习一个CSV模块。CSV是一种比较实用又简单的模块。学完CSV模块,就可以使用程序来处理excel表格了。
我们先在excel中新建一个excel表格, 但是要选择”CSV”格式. 我将这个文件保存成”mytest.csv”
在”mytest.csv”文件中,写下如下内容:
运行结束后, 我们看到终端输出的每一行信息都是一个列表 。
接下来我们看一下CSV文件的写入方法:
writer是实例化对象,writerow()是写入的方法,括号内的数据是列表形式。
运行一下下面代码,观察csv文件里的效果。
这就是csv文件的写入。好了, 这节课的内容就讲到这里了。我们今天学习了模块引入, 模块调用, 学习使用Python内置模块。内容很多, 大家要记得复哦。
我们下节课见。