最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python程序設(shè)計入門(4)模塊和包

 更新時間:2014年06月16日 09:43:07   投稿:shichen2014  
Python語言功能非常強(qiáng)大,除了類之外,還有模塊和包的概念,這有點(diǎn)像perl,本文主要介紹了包和模塊,需要的朋友可以參考下

Python語言功能非常強(qiáng)大,除了類之外,還有模塊和包的概念,這有點(diǎn)像perl,此處簡單說說包和模塊。

一、Python中的模塊

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

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

1、import 模塊名(實(shí)際是對應(yīng)的就是 文件名.py )

2、模塊名 = __import__("模塊文件名(不帶擴(kuò)展名)")

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

例如:

復(fù)制代碼 代碼如下:
test.py
# -*- coding: gb18030 -*-
#引入模塊
import test_mod

#調(diào)用模塊里的函數(shù)
test_mod.my_func()

#調(diào)用模塊里的類
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! '

調(diào)用模塊里的函數(shù)或類一定要用 “模塊名.類名|函數(shù)名” 的方式。

正是因?yàn)檫@種特性,python里很多 os.xx 、 sys.xx 之類的語法,但它不一定是對象(對象和非對象之間顯得極混亂,或者可以認(rèn)為模塊也是一個對象吧,只是比較特殊),這是python語言的一個嚴(yán)重的缺點(diǎn),不過當(dāng)你習(xí)慣這些的時候,就比較容易讀懂python的腳本了。

sys 和 os 是 python 里最常用的模塊,需要了解一下它們。

二、Python中的包

包實(shí)際上就是對一系列模塊的封裝,以防止模塊名之間發(fā)生沖突,對于一個標(biāo)準(zhǔn)的python程序,通常的結(jié)構(gòu)為:

復(fù)制代碼 代碼如下:
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
        .......

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

在有__version__、__all__、__path__ 三個特殊變量,可以指定,也可以讓這文件為空。

調(diào)用包里的類或函數(shù)的方法是:

包名.子包名.類名|函數(shù)名 

這實(shí)際上就相當(dāng)于C++或C#里的名字空間。

在調(diào)用包時,需要注冊目錄和具體模塊的調(diào)用方法

如,要調(diào)用 son_mod_1_1.py

那么就是:

復(fù)制代碼 代碼如下:
appname.son_pack1.son_mod_1_1

此外還有一種方法是用  form 關(guān)鍵字,方法為:

復(fù)制代碼 代碼如下:
from appname.son_pack1 import son_mod_1_1

如果要喜引入 appname.son_pack1 里的所有模塊,那么為:

復(fù)制代碼 代碼如下:
from appname.son_pack1 import *


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

復(fù)制代碼 代碼如下:
__all__ = ["son_mod_1_1", "son_mod_1_2"]

相關(guān)文章

最新評論

比如县| 大洼县| 临海市| 桂阳县| 雷波县| 开阳县| 日土县| 罗源县| 罗田县| 定安县| 昭苏县| 秀山| 平凉市| 肇源县| 巴彦淖尔市| 施秉县| 合水县| 石柱| 高陵县| 宜兰县| 西藏| 大厂| 渑池县| 佛冈县| 濮阳市| 屏南县| 台北县| 商城县| 阜城县| 成安县| 西乌珠穆沁旗| 邹平县| 刚察县| 阳谷县| 洛隆县| 牡丹江市| 迁西县| 华容县| 陈巴尔虎旗| 阳曲县| 岳西县|