您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

python首行代码import *,from * import * 解析

时间:2019-12-23 13:14:42  来源:  作者:

Python代码,一般第一行代码都是import *或from * import *,作用是导入功能模块,然后利用模块内的函数编写代码,减少大量的代码编写时间,是python的一大特色。但是,在实际写码过程中,初学者往往因对import * 处于一知半解,导致经常出现一些莫名其妙的问题,严重影响学习心情和效果。本文特对此进行详细解读,帮助避坑。

python首行代码import *,from * import * 解析

导入的是什么?

用import *导入时,*代表的是模块,也就是说,import导入的是模块,不是包、类、函数

用from * import *时,第一个*代表的也是模块,第二个*代表的则是模块内的类或函数。意思是从模块里导入其中的某个函数或类。具体下面有详解。

什么叫模块

模块是含有类或函数的py文件,也就是说,我们写的每一个py文件,都是模块。只不过专门的模块文件里面必须有函数或类,而我们一般写的py文件,是直接写功能代码,不一定需要有函数或类。举个例子:

不含函数直接写功能代码的Py文件:

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导入后就可使用。

python首行代码import *,from * import * 解析

3、第三方库:有很多功能强大的模块函数,没有在标准库里,比如操作excel用到的openpyxl模块。这时用import导入时,会提示找不到这个模块文件。需要将其提前下载安装到lib文件夹里,然后再导入。下载方法为:打开cmd,输入pip install openpyxl,回车即可。

4、自己写的py文件模块:自己写的含有def 函数的py文件,可作为模块导入使用。前面的含有打印函数的试验.py文件,就是使用自建模块的例子。

import试验试验.打印()

模块导入顺序

我们知道,python标准库里有很多模块文件,比如下面的这个文件:

python首行代码import *,from * import * 解析

其实这是我自建的一个模块文件,功能是拆分合并excel文件。导入该功能模块后,拆分或合并excel文件的代码为:

importcfjoinimporttkinter.filedialogasaif__name__=="__main__":ff=a.askopenfilenames(filetypes=[('excel文件','.xlsx')])cfjoin.breakfile(ff)#拆分选中的excel文件

在运行时,上面的代码有时候可以,有时候却报错,对新手来说,这是很费解的。但其实,问题很简单。检查一下,是不是运行的Py文件所在文件夹里是否也存在一个与导入的模块文件同名的cfjoin.py文件,如果有,而且这个文件里的内容与lib文件夹里的cfjoin.py内容不同。则运行时会报错,如果没有、或者与lib文件夹里的cfjoin.py完全相同,则运行正常。这就是模块导入顺序造成的问题。

python导入模块时,不是直接从lib库里导入,而是先从当前py文件所在文件夹里找需要导入的模块文件,找到后则导入使用;如果没找到,再到lib文件夹里找,如果还没找到,则提示未找到。如果当前文件夹下某个py文件名正好与lib库里的模块文件同名,则会导入当前文件夹下的py文件而不是导入lib库里的模块文件,导致出错。避免的方法就是将自己写的py文件取名不要与一些常用lib库模块文件同名。

另外,python导入模块时只从当前文件夹下和lib库里导入,如果模块文件放在其他位置,则会提示找不到模块。移到当前文件夹或lib库中任何一个位置就可以了,如果是成熟的py功能文件,最好放在lib库里,可以避免编辑器误报错误。

比如,我上面的cfjoin.py文件,如果我将其放在当前文件夹下,删掉lib库里的该文件,上面的拆分excel表格代码运行功能没任何问题,但编辑器里会报错:

python首行代码import *,from * import * 解析

虽然是误报错,但对强迫症患者来说,看到那些黄波浪号会很不好受。这时,我们将cfjoin.py文件移到lib库里就可以了。

本文就介绍到这,感觉还有点作用的,敬请转发收藏点赞!



Tags:python   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  Tags: python  点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  Tags: python  点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  Tags: python  点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  Tags: python  点击:(4)  评论:(0)  加入收藏
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Tags: python  点击:(6)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  Tags: python  点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  Tags: python  点击:(9)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  Tags: python  点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  Tags: python  点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  Tags: python  点击:(5)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(9)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条