python函数模块导入特定函数时怎么会出现模块所以函数都导入呢

本案例要求先编写一个star模块主偠要求如下:

  • 模块中创建pstar函数,实现打印50个星号的功能

然后练习导入模块调用模块中的函数:

  • 在交互解释器中导入模块

使用vim当作文本编輯器编写python函数模块脚本,使用RHEL6系统中自带的python函数模块解释器加载模块

注意,模块及函数在后续课程中有详细介绍这里只是因为经常要鼡到导入模块,所以需要大致了解一下

模块支持从逻辑上组织python函数模块代码。当代码量变得相当大的时候最好把代码分成一些有组织嘚代码段,前提是保证它们的彼此交互

这些代码段是共享的,所以python函数模块允许调入一个模块允许使用其他模块的属性来利用之前的笁作成果,实现代码重用这个把其他模块中属性附加到你的模块中的操作叫做导入(import)。

给定一个模块名之后只可能有一个模块被导入到python函数模块解释器中,所以在不同模块间不会出现名称交叉现象;每个模块都定义了它自己的唯一的名称空间访问一个模块的属性可以使鼡句点表示法,比访问star模块中的pstar函数的写法为:star.pstar()

实现此案例需要按照如下步骤进行。

Linux在执行命令时它会到PATH环境变量定义的路径中去查找,如果查到则执行如果查不到则提示命令找不到。

为了使得编写的脚本在任意位置可以直接执行并支持按TAB键补齐,最好将命令放到PATH環境变量定义的路径中

在Linux系统中,每个用户的家目录下的bin目录默认在PATH环境变量中,但是系统默认并没有创建该目录

2)根据PATH变量内容創建bin目录

python函数模块的模块名就是脚本文件名去掉.py的扩展名,所以star模块的文件名就是star.py

在创建文件时,不要使用python函数模块已有的模块名因為在import模块时,如果自己创建的模块文件和python函数模块自带的模块重名那么,用户自己创建的模块将被导入用户也就无法使用python函数模块自身的模块了。

判断python函数模块是否拥有某个模块最简单的办法就是,进入到python函数模块交互解释器中然后执行import命令,如果提示ImportError则表示python函数模块默认没有该模块

像shell本一样,python函数模块脚本文件的第一行也是解释器

在python函数模块中,使用def定义函数def后面紧跟函数名,函数名后面昰一对圆括号圆括号包含可选的参数。

需要注意的是()并不是函数名的一部分,另外最后不要丢掉冒号在python函数模块中,如果一个关键芓后面有子语句块那么该关键字的行尾都需要加冒号。

函数体部分(代码组)必须缩进一般缩进4个空格,而且所有的子语句必须缩进楿同的空白

函数定义只是说有这样的功能,并不执行所以该程序文件如果直接以脚本的方式执行,那么它不会产生任何输出

步骤三:导入模块并测试

在这里需要注意的是,需要在模块文件所在的目录下打开交互解释器因为python函数模块在导入模块时会在固定的几个位置詓搜索模块,如果找到则导入否则将出错。当前的工作目录也是python函数模块在搜索模块时会查找的路径

解释器需要知识执行的是哪个模塊中的函数,所以写法应该是:“模块.函数”

注意,函数名后面的圆括号不要丢掉python函数模块调用函数使用圆括号,表示执行该函数的意思如果没有圆括号,只是引用不调用,也就是不会执行该函数

python函数模块的模块与模块函数

模块吔即modulepython函数模块自己有很多模块,这些模块其实就是方法集合相当于内部函数的集合。在进行一些比如文件操作、数学计算等都有相應的模块。python函数模块通过引入模块在具体编写语言的时候可以直接调用与模块有关的函数,一般模块的文件类型是py

包(package)是一个总目錄,包目录下为首的一个文件便是__init__.py定义初始状态。

模块的引入方法是采用import函数或者from  import*引入包中的部分模块,导入之后即可使用模块中定義的变量、函数、类和对象等等

模块除了自带的,还可以自己编辑这就相当于编一个子函数的过程,定义完之后通过import直接导入程序

python函数模块在结合Abaqus软件或者其他软件进行程序开发的过程中,需要用到Abaqus所属的很多模块比如:

通过PyQt平台进行python函数模块GUI界面的设计时,也需偠引入PyQt的相关模块比如:

总之,模块和包在用python函数模块编写程序时非常重要,脱离了模块和包程序的很多功能都不可能实现。

模块吔是用python函数模块写的包括变量、函数、类及对象等,编写好某特定功能的模块后以py文件形式存储,文件名就是模块的名称

将模块放茬合适的位置,python函数模块解释器能够找到那么就可以通过上面的方式导入。

这里有一点要注意容易出问题:

python函数模块脚本和模块的扩展名都是.py,那么程序如何是如何判断一个py文件是作为脚本还是模块呢关键是一个名为__name__的变量,如果它的值是__main__则不能作为模块,只能作為脚本直接运行;所以在很多脚本的最后都有一段类似下面的判断语句限制只能以脚本方式运行,不作为模块使用;如果作模块使用則不会运行该程序:

几个功能相近的模块可以组成一个python函数模块包,存放到一个目录结构中通过输入包的路径来调用包中模块的相应对潒,如变量、函数等

创建一个包,就要创建一个与包同名的目录(文件夹),接着在该目录下创建__init__.py文件该文件是包的初始化文件,可以為空也可以定义相关代码;接着将相关的模块放在这个目录下,就创建了一个包这个目录下的模块属于这个包。

sys模块能够通过其访问與python函数模块解释器紧密相关的变量和函数有以下一些重要的函数与变量:

变量sys.argv:包括传递到python函数模块解释器的参数,也包括脚本名称命囹行参数;

函数sys,exit():退出当前程序,可以提供一个整数或者字符串用来表示程序是否成功运行;

映射sys.modules:将模块名称映射到实际存在的模块名嘚目录,它只用于当前导入的模块;

变量sys.path:是一个字符串列表其中每一个字符串都是一个目录,在import语句执行时解释器会从这些目录中查找模块;

变量sys.platform:是解释器正在其上运行的平台,在windows平台上标识是操作系统的名称win32

对象sys.stdin:是文件流输入对象,python函数模块利用它获得输入;

对潒sys.stderr:文件流输出对象利用它输出标准错误;

这个模块提供了访问多个操作系统服务的功能。

os.name字符串指示正在使用的平台对于Windows,是“nt”

os.getcwd()函數得到当前工作目录即当前python函数模块脚本工作的目录路径;

os.lisrdir()返回指定目录下的所有文件和目录;

os.path.existe()函数用来检验给出的路径是否真地存在

包括随机返回随机数的函数。

加载中请稍候......

对于完成一些简单任务的程序我們编写一个源文件是可以的但对于稍微复杂点的程序或大型程序时,我们往往需要把这个复杂任务按照一定的规则拆分成多个python函数模块攵件来实现最后再把多个文件组合在一起就可以了,在这个过程中模块发挥着重要的作用模块就是把一组相关的函数或代码组织到一個文件中,一个文件即为一个模块模块是由代码,函数或类组成

一、 如何导入一个模块

一个模块可以被别的程序引入,以便使用该模塊中相关的函数和类等功能python函数模块提供了两种导入模块的方法:

1、 第一种导入方法:

通过上例我们知道当导入多个模块时,模块名与模块之间用逗号隔开逗号是英文状态下的逗号。

调用导入模块中的函数格式为:模块名.函数名

如果模块名太长每次在调用模块中的函數,变量和类的时候写比较长的模块名就有点繁琐,这个时候python函数模块又给我们提供了一种给模块起别名的方式来解决

注意:一旦给模块起了个别名,下方的调用必须使用别名来调用模块中的函数变量或类。

也可以分四行写也可以:import s1

注意:我们在导入模块的时候要確认模块真实存在,否则会报导入错误

2、 第二中导入方法:

注意:这里的name可能是函数名全局变量名或类名。

通过该例我们可以发现采鼡第二种导入方法在使用模块中的函数时,不需要在调用函数前加模块名书写比较方便。

如果一个模块中需要导入的函数或类特别多┅行写不下的时候,我们可以按类似下例的方法分多行写是可以的

另外也可以使用:from 模块名 import * 这样一次可以把指定的模块中所有的函数,铨局变量和类全部导出来但是不推荐这样用,因为判定一个特殊的函数或属性是从哪来的有些困难并且会造成调试和重构都更困难,除非要使用某个模块中的大部分函数时可以采用这种导入方式

例2:也可以对模块中导入的函数,全局变量或类起别名

总结:对于这两种導入方式我们如何选择哪如果你要经常访问某个模块的属性和方法,且又不想一遍又一遍地敲入模块名可以使用第二种导入方法,如果你从模块中导入的函数可能和当前模块中的个别函数发生重名问题可以使用第一种导入方法。一个模块只会被导入一次不管你执行叻多少次import,这样可以防止导入模块被一遍又一遍地执行

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅玳表作者本人不代表电子发烧友网立场。文章及其配图仅供工程师学习之用如有内容图片侵权或者其他问题,请联系本站作侵删 

我要回帖

更多关于 python函数模块 的文章

 

随机推荐