模塊:在程序設計中,為完成某一功能所需的一段程序或子程序;或指能由編譯程序、裝配程序等處理的獨立程序單位。
在我們編程的時候我們如果將所有的文件都放在那個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