今天我们来初步认识下import,同时区分一下模块、包、库的概念。
先来认识一个名词:模块(module)。
模块在本质上是一个.py文件,引入模块,也就是引入了一段Python代码到你的程序中。编程时,适当代码分离会显得程序结构比较清晰,更重要的是可以实现代码复用。系统内置模块或者第三方模块,也是提供给我们来复用的,只不过人家的代码更加成熟、稳定。
既然本质都是一样的,我们就自己来写一个py文件,给另一个py调用。
例如:如果我们写一个文件读写模块filePro.py,里面就一个函数pf。(请大家不要过于拘泥于里面具体的代码,我只是举个例子,顺手写了一点,主要看它如何被引入调用,真正的模块多数是用面向对象来写的 )。
于是在main.py中就可以这样来引入使用:
或者使用from引入,干脆别名都不用写:
但是平常尽量不要import *,这样把py所有代码都引入了,会减慢运行速度,我们可以针对性的引入要使用的变量、函数等。
设想一下,如果我们积累了几百个py文件供我们调用,我们在使用的时候,总不能一锅粥里去挑吧?估计命名再准确也得眼晕了。那能不能和电脑处理文件一样,建立文件夹来分类、分级管理呢?当然可以,于是就有了所谓“包”(package)的概念。
我们同样也自己实验一下。比如我们还有个文件叫dirPro.py,是用来处理文件夹的,里面有个判断文件是否存在的功能。
假定我认为,它和刚才的文件处理是有一定关系的,属于我写的同一类模块,那就可以扔到一个文件夹里去,作为同一个包里的文件。
于是就有了接下来的目录结构:
我们只要在file文件夹里建立一个__init__.py文件(空):
就可以愉快的调用了:
当然,真正系统内置或第三方的包,绝不是这么简单,它的init文件里会有一些说明信息。而且那些包,都是添加到一个默认的Python能的搜索位置。具体是哪里呢?我们打开python安装的位置去找找呗,看到lib文件夹了吗?打开看一下,是不是似曾相
没错这些就是系统内置的包或模块,而第三方下载的包或者模块(一般都是包,毕竟是全世界都在用的功能,一个模块很难满足),都在这里面的site-package里面:
好了,是时候梳理一下概念了:
Python的模块,就是一个.py文件。
Python的包,就是一个文件夹,里面是同一系列的模块集合。
Python的库,是对模块和包的一个统称。严格来说是从其它语言习惯性转过来的一个笼统的叫法。
顺便,回顾下import的写法吧:
引入模块:import random 用法如 random.randint(1,10)
引入模块并起别名:import turtle as t 用法如 t.forward(50)
引入模块中的对象:
from random import randint 这样直接randint(1,10)就行
from random import * 同上,但浪费加载时间
import random.randint 这样直接引入模块.对象是错误的
引入包里的模块:
import pygame.locals
from pygame import locals
引入包里的模块里的对象:
from pygame.locals import *
怎么样,大家是不是对“Python的库的引入”这一部分有一点清晰的认识了呢?有时候,对于程序的写法,真的不是“记住就行”就真的行了,最好能了解一下背后的机制,才能真正做到“它强任它强,清风拂山岗”。
python培训:http://www.baizhiedu.com/python2019、、