Python程式設計入門(4)模組和包

來源:互聯網
上載者:User
Python語言功能非常強大,除了類之外,還有模組和包的概念,這有點像perl,此處簡單說說包和模組。

一、Python中的模組

模組——其實就是我們說的庫(lib)的概念,不過它不僅只是可以包含一系列函數,也可以包含類,python裡是沒有像C語言之類,直接include某檔案的,包正是這種類似的東西。

Python 引入模組的方法有兩種:

1、import 模組名(實際是對應的就是 檔案名稱.py )

2、模組名 = __import__("模組檔案名稱(不帶副檔名)")

也可以" import 模組名 as 別名 "這樣用

例如:

代碼如下:

test.py
# -*- coding: gb18030 -*-
#引入模組
import test_mod

#調用模組裡的函數
test_mod.my_func()

#調用模組裡的類
tc = test_mod.test_cls()
tc.test_func()

test_mod.py源碼如下:
# -*- coding: gb18030 -*-

def my_func():
print 'I am a function in the module! '

class test_cls:
def test_func(self):
print 'I am a mothod in the class! '

調用模組裡的函數或類一定要用 “模組名.類名|函數名” 的方式。

正是因為這種特性,python裡很多 os.xx 、 sys.xx 之類的文法,但它不一定是對象(對象和非對象之間顯得極混亂,或者可以認為模組也是一個對象吧,只是比較特殊),這是python語言的一個嚴重的缺點,不過當你習慣這些的時候,就比較容易讀懂python的指令碼了。

sys 和 os 是 python 裡最常用的模組,需要瞭解一下它們。

二、Python中的包

包實際上就是對一系列模組的封裝,以防止模組名之間發生衝突,對於一個標準的python程式,通常的結構為:

代碼如下:

app.py
appname
__init__.py
son_pack1
__init__.py
son_mod_1_1.py
son_mod_1_2.py
son_pack2
__init__.py
son_mod_2_1.py
son_mod_2_2.py
son_mod_1.py
.......


如果學過Java就會明顯,這是一種按目錄來尋找檔案的方法,不過不同之處是每個目錄必須帶 __init__.py 否則將不會被識別為包的子目錄。

在有__version__、__all__、__path__ 三個特殊變數,可以指定,也可以讓這檔案為空白。

調用包裡的類或函數的方法是:

包名.子包名.類名|函數名

這實際上就相當於C++或C#裡的名字空間。

在調用包時,需要註冊目錄和具體模組的調用方法

如,要調用 son_mod_1_1.py

那麼就是:

代碼如下:

appname.son_pack1.son_mod_1_1

此外還有一種方法是用 form 關鍵字,方法為:

代碼如下:

from appname.son_pack1 import son_mod_1_1

如果要喜引入 appname.son_pack1 裡的所有模組,那麼為:

代碼如下:

from appname.son_pack1 import *


對於使用 import * 的情況,必須在 __init__.py 中用 __all__ 指明,如:

代碼如下:

__all__ = ["son_mod_1_1", "son_mod_1_2"]

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.