官术网_书友最值得收藏!

2.8 模塊:倉庫

模塊就像倉庫一樣,將實現不同功能的函數封裝在內。因此,在調用模塊內的函數時,需要導入模塊,如2.7節中提到的floor函數,它被封裝在math模塊中。圖2-16中給出了導入math模塊,以及調用math模塊中的floor函數向下取整、調用ceil函數向上取整、調用sqrt函數開平方的方法。

圖2-16 導入math模塊以及調用math模塊中函數的方法

由此可見,Python可以使用import命令導入模塊,然后以模塊.函數(module.function)的模式調用模塊中的函數。

至此,作者認為已經足夠幸運在每一次的展示中都能成功獲得結果,這或許與作者具有一定的編程基礎有關。但若你完全沒有編程基礎,可能會出現不同的錯誤。因此,在這里作者認為引入一定的錯誤示例,對于初學者或是有一定編程基礎的讀者來說并非壞事。當沒有導入模塊就調用模塊中的函數,或者導入了模塊但調用時忘記書寫模塊前綴時,會發生如圖2-17所示的錯誤。如果你在運行類似程序時發生這種錯誤,只要認真閱讀本節前面部分內容,就能找到解決方法。

(a)math模塊未導入

(b)未書寫math模塊前綴

圖2-17 調用sqrt函數出錯

另外一種調用模塊中函數的方式是“from 模塊(module) import 函數(function)”,這樣導入模塊后,調用該模塊中的函數時直接使用函數的名稱,無須指定模塊前綴,示例如

>>> from math import sqrt
>>> sqrt(16)
4.0

對于兩種導入方式,作者更推薦使用前者,這是因為不同的模塊中存在同名函數,如果使用“from 模塊(module) import 函數(function)”的方式導入模塊,則無法調用其他模塊中存在沖突的同名函數。以sqrt函數為例,sqrt函數的入參(輸入參數)應為非負實數,當調用sqrt函數并且它的入參不為實數時,Python IDLE會報錯。然而在諸多學科中需要引入復數,在復數域內進行開平方的運算。為此Python引入了cmath模塊,其中的sqrt函數可以處理復數域內的開平方運算。圖2-18展示了調用math模塊中sqrt函數與cmath模塊中sqrt函數對-1進行開平方的計算結果。

(a)調用math模塊中的sqrt函數

(b)調用cmath模塊中的sqrt函數

圖2-18 分別調用math和cmath模塊中的sqrt函數

調用cmath模塊中的sqrt函數獲得的結果為1j,其中j代表虛數單位。在本書中,不對復數以及虛數做過多介紹。由此可見,使用import導入模塊的方式更適合復雜的程序,即實際工程或科學計算中具有一定規模的程序。

主站蜘蛛池模板: 莱西市| 祥云县| 绥江县| 江门市| 九台市| 安溪县| 湖南省| 通山县| 浏阳市| 诏安县| 湖州市| 项城市| 平远县| 射洪县| 昆明市| 华池县| 兴义市| 浦北县| 遂平县| 获嘉县| 湖南省| 元氏县| 门头沟区| 尚志市| 昌平区| 额尔古纳市| 扬中市| 嵊泗县| 南皮县| 海口市| 肇东市| 宜宾市| 科技| 府谷县| 乐陵市| 定州市| 石台县| 潼南县| 孟村| 获嘉县| 黄浦区|