Python代码,一般第一行代码都是import *或from * import *,作用是导入功能模块,然后利用模块内的函数编写代码,减少大量的代码编写时间,是python的一大特色 。但是,在实际写码过程中,初学者往往因对import * 处于一知半解,导致经常出现一些莫名其妙的问题,严重影响学习心情和效果 。本文特对此进行详细解读,帮助避坑 。
文章插图
导入的是什么?
用import *导入时,*代表的是模块,也就是说,import导入的是模块,不是包、类、函数 。
用from * import *时,第一个*代表的也是模块,第二个*代表的则是模块内的类或函数 。意思是从模块里导入其中的某个函数或类 。具体下面有详解 。
什么叫模块
模块是含有类或函数的py文件,也就是说,我们写的每一个py文件,都是模块 。只不过专门的模块文件里面必须有函数或类,而我们一般写的py文件,是直接写功能代码,不一定需要有函数或类 。举个例子:
不含函数直接写功能代码的Py文件:
【python首行代码import *,from * import * 解析】print('hellow')
运行结果:hellow
含函数的功能模块Py文件:
def打印():print('hellow')if__name__=="__main__":打印()
运行结果:hellow
其中,def 打印()就是定义名为“打印”的函数 。通过if __name__ == "__main__":在本模块文件内调用“打印”函数,执行函数内的“print('hellow')”代码 。为何要用if语句,本号在if name == main的作用文章里已经讲解,有疑问的可移步查看 。
将上面含函数的功能模块py文件取文件名为“试验”,保存后得到“试验.py”文件,就是一个可供其他py文件导入调用的模块 。调用方法为:
import试验试验.打印()
运行结果:hellow,注意调用是文件后缀.py不要写,只写文件名 。
另一种调用方法为:
from试验import打印打印()
运行结果:hellow,from 试验 import 打印:意思就是从“试验”模块文件里导入“打印”函数到本文件,导入后,就可直接使用函数名,函数名前面不加模块名 。
专门用作模块的py文件,一般没有if语句,只能被调用,独自不能运行 。比如上面的“试验.py”文件,如果我们删掉if语句,变成下面的代码:
def打印():print('hellow')
直接运行得不到hellow的结果,用上面的两个调用方法,则不受影响 。
什么叫函数
通过上面的例子,我们不仅知道了py文件都是模块文件,而且知道了在调用模块时,最终使用的是模块文件里的函数,比如上面案例里的“打印”就是函数 。所以,函数其实就是包含了具体功能代码,用def 函数名()定义的功能代码块 。
在模块导入方面,类的性质和函数是一样的,只不过类有其专有的属性和方法,此处不细讲 。
什么叫包
我们知道了import * 后面的 * 号代表的都是模块,但有时候我们会遇到这种用法:
importtkinter.filedialogtkinter.filedialog.askopenfilenames(filetypes=[('Excel文件','.xlsx')])
import后面代码的中间有个小点,这就是导入包内模块的用法:小黑点前面是包的名称,后面是包含在包内的模块名称 。
tkinter:就是一个功能包,包内含有多个子包或模块 。
filedialog:是包含在tkinter包内的其中一个模块 。
askopenfilenames:是包含在filedialog模块内的其中一个函数 。
初学者有时候依葫芦画瓢会弄成这种用法:
importfiledialog.askopenfilenames
这就是误将函数作为模块进行导入了,程序会报错 。如果真想导入askopenfilenames函数,可用form import用法,但注意,模块名必须带上包名,写成下面的样子:
formtkinter.filedialogimportaskopenfilenames
若漏了包名:formfiledialogimportaskopenfilenames,也会报错
了解这些概念和用法后,严格按这个用法,基本就没有问题了 。但有时也会遇到报错,这是因为模块导入顺序的问题 。
模块分类
python的模块函数分4类:
1、python自带函数:不需进行import导入可直接使用,比如print()函数,就是直接用 。
2、python标准函数库:安装Python时,会随带着安装一些标准函数,在python安装路径下的lib文件夹里,打开lib文件夹会发现很多py文件,这些就是标准函数,通过import导入后就可使用 。
文章插图
推荐阅读
- centos8使用python3自带的venv创建虚拟环境报错问题
- PHP实现短网址功能,附代码
- php代码怎么热更新,用实战操作教你,快收藏吧
- 程序员喜欢的5款最佳代码比较工具
- python用两种方法实现url短连接
- 牛逼了!Python代码补全利器,提高效率告别996
- 用Python搭建一个web框架-flask微框架
- 四款强大的PHP代码生成器
- 用Python构建阿隆策略
- Python自动化报错:IndentationError-unindent does not match