模块:在程序设计中,为完成某一功能所需的一段程序或子程序;或指能由编译程序、装配程序等处理的独立程序单位。
在我们编程的时候我们如果将所有的文件都放在那个py文件中,我们的py文件会很大,这样也很不好维护。
所以我们会把他们分成各个模块。
并且,如果我们在写程序的时候我们可能会多次使用到同一个变量,如果他们放在同一个模块当中,就会出问题,但是如果我们将他们放在不同的文件当中,就不会出问题。
#a.util x = a def fn(x) #b.util x = b def fn(x)
类似于这样的,就不会出现问题。
同时由于python是一种新型语言,它的模块在一直更新,这个时候,很可能会出现,两个人写了拥有相同的名字的模块,这个时候如果我们引用的话,就会报错,所以Python为了解决这个问题,就出现了包的概念:
当我们在写完一个模块之后我们会把它保存在一个包当中,这个时候如果我们引用的话就会代带着包一起去引用,这个时候就不会出问题。
#原文件名:a.util,在math包下 from A import a.util print (a.util.fn(x)) #在biology包下的a.util from B import a.util print (a.util.fn(x))
上面的from...import就是导入模块的意思
#导入模块的方式 1.import 模块 这种方式,是讲模块的所有的方法,全都引用进来。 2.from 模块 import 方法名 这种方法是将这个模块里面的几个方法引用进来。 3.from 模块 import 方法名 as 别名 这种是为了防止我们在引用方法的时候,其他的模块也有类似的同名的方法,这是一种处理的方法。
在我们进行导入模块的时候,如果该模块不存在,系统就会报错
Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named something
如上,由于python是动态语言,是解释执行的,但是为了能够将代码的运行速度变快的话我们就需要用其他的语言来进行编写,再来导入。
try: from cStringIO import StringIO except ImportError: from StringIO import StringIO
这上面的模块就是两个具有相同功能的模块,但是StringIO使用python语言写的,cStringIO是使用c语言写的。
try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句
Python的新版本会引入新的功能,但是,实际上这些功能在上一个老版本中就已经存在了。要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。
>>> from __future__ import division >>> print 10 / 3 3.3333333333333335