Python模塊導入


一、任務描述

  本實驗任務主要對Python模塊進行一些基本操作,通過完成本實驗任務,要求學生熟練掌握Python的模塊,並對Python模塊的基本操作進行整理並填寫工作任務報告。

二、任務目標

1、掌握Python模塊

三、任務環境

Ubuntu16.04、Python2.7

四、任務分析

  模塊(module)是Python中非常重要的一個概念,模塊其實就是一些函數和類的集合文件,它能實現一些相應的功能,當我們需要使用這些功能的時候,直接把相應的模塊導入到我們的程序中,我們就可以使用了。這類似於C語言中的include頭文件,Python中我們用import導入我們需要的模塊。

五、任務實施

步驟1、環境准備

  右擊Ubuntu操作系統桌面,從彈出菜單中選擇【Open in Terminal】命令 打開終端。

  通過【cd /home】切換到home目錄下。【ls】查看該目錄下的所有內容。

 

圖1 切換目錄

  【mkdir module】在home目錄下創建module文件夾。

圖2 創建文件夾

步驟2、搜索路徑

  當導入一個模塊,Python 解析器對模塊位置的搜索順序是:

  1、當前目錄

  2、如果不在當前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個目錄。

  3、如果都找不到,Python會察看默認路徑。UNIX下,默認路徑一般為/usr/local/lib/python/。

  模塊搜索路徑存儲在 system 模塊的 sys.path 變量中。變量里包含當前目錄,PYTHONPATH和由安裝過程決定的默認目錄。

  【cd module】切換到module目錄下,【ipython】切換到ipython的解釋器。

圖3 ipython解釋器

  用import導入需要的模塊。類似於頭文件,模塊也是需要系統的搜索路徑的,下面的命令即是系統默認的搜索路徑,當導入一個模塊時,系統就會在下面的路徑列表中搜索相應的文件。

圖4 導入模塊

  假如沒有搜到相應內容就會報錯。

圖5 導入模塊

步驟3、模塊導入

  【vim module1.py】回車后創建並編輯名為module1的Python文件

圖6 創建Python文件

  回車后進入編輯框內,按鍵盤【i】進入編輯狀態,輸入如下程序。

  定義全局變量age,定義sayHello()函數,在主函數內調用sayHello()方法。

圖7 編輯Python文件

  編輯完畢后,按【esc】退出編輯狀態,【:wq】保存並退出編輯框,在退出后的窗口內輸入【ipython】切換到ipython的解釋器。

圖8 ipython解釋器

  【import module1】導入新建的Python模塊。一個模塊只會被導入一次,不管你執行了多少次import。這樣可以防止導入模塊被一遍又一遍地執行。

  【module1.age】調用模塊內的變量。

  【module1.sayHello()】調用模塊內的函數。

圖9 調用模塊

  通過【exit()】退出ipython解釋器,再次通過【ipython】進入ipython解釋器。輸入如下程序。

  【from module1 import *】 把一個模塊的所有內容全都導入到當前的命名空間,一次性導入。

圖10 導入模塊

  也可以從模塊中導入一個指定的部分到當前命名空間中。

  注意兩種方法的不同。 From 並沒有把sayHello()函數 引進來,所以當前namespace沒有sayHello()這個name。所以報錯。

圖11 導入模塊

步驟4、命令空間

  命名空間是一個包含了變量名稱們(鍵)和它們各自相應的對象們(值)的字典。也就是可以把一個namespace理解為一個字典,實際上很多當前的Python實現namespace就是用的字典。各個命名空間是獨立的,沒有任何關系的,所以一個命名空間中不能有重名,但不同的命名空間可以有重名並且沒有任何影響。

  【vim module2.py】回車后創建並編輯名為module2的Python文件

圖12 創建Python文件

  回車后進入編輯框內,按鍵盤【i】進入編輯狀態,輸入如下程序。

  global Money 的表達式會告訴 Python, Money 是一個全局變量,這樣 Python 就不會在局部命名空間里尋找這個變量了。

圖13 編輯Python文件

  編輯完畢后,按【esc】退出編輯狀態,【:wq】保存並退出編輯框。【ipython】進入ipython解釋器。

  一個模塊的name space是這個module被import的時候創建的。每個module都有一個_name_的attribute,用來表示當前module的名字。

  dir() 函數一個排好序的字符串列表,內容是一個模塊里定義過的名字。

圖14 dir()函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM