Python3-使用模塊

Python本身就內(nèi)置了很多非常有用的模塊,只要安裝完畢,這些模塊就可以立刻使用逗鸣。

我們以內(nèi)建的sys模塊為例枝嘶,編寫一個hello的模塊:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

__author__ = 'Michael Liao'

import sys

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()

第1行和第2行是標(biāo)準(zhǔn)注釋帘饶,第1行注釋可以讓這個hello.py文件直接在Unix/Linux/Mac上運(yùn)行,第2行注釋表示.py文件本身使用標(biāo)準(zhǔn)UTF-8編碼群扶;

第4行是一個字符串及刻,表示模塊的文檔注釋镀裤,任何模塊代碼的第一個字符串都被視為模塊的文檔注釋;

第6行使用author變量把作者寫進(jìn)去缴饭,這樣當(dāng)你公開源代碼后別人就可以瞻仰你的大名暑劝;

以上就是Python模塊的標(biāo)準(zhǔn)文件模板,當(dāng)然也可以全部刪掉不寫颗搂,但是担猛,按標(biāo)準(zhǔn)辦事肯定沒錯石洗。

后面開始就是真正的代碼部分窄赋。

你可能注意到了,使用sys模塊的第一步寒随,就是導(dǎo)入該模塊:

import sys

導(dǎo)入sys模塊后卖丸,我們就有了變量sys指向該模塊纺且,利用sys這個變量,就可以訪問sys模塊的所有功能稍浆。

sys模塊有一個argv變量载碌,用list存儲了命令行的所有參數(shù)。argv至少有一個元素衅枫,因為第一個參數(shù)永遠(yuǎn)是該.py文件的名稱嫁艇,例如:

運(yùn)行python3 hello.py獲得的sys.argv就是['hello.py'];

運(yùn)行python3 hello.py Michael獲得的sys.argv就是['hello.py', 'Michael]弦撩。

最后步咪,注意到這兩行代碼:

if __name__=='__main__':
    test()

當(dāng)我們在命令行運(yùn)行hello模塊文件時,Python解釋器把一個特殊變量name置為main益楼,而如果在其他地方導(dǎo)入該hello模塊時猾漫,if判斷將失敗,因此感凤,這種if測試可以讓一個模塊通過命令行運(yùn)行時執(zhí)行一些額外的代碼悯周,最常見的就是運(yùn)行測試。

我們可以用命令行運(yùn)行hello.py看看效果:

$ python3 hello.py
Hello, world!
$ python hello.py Michael
Hello, Michael!

如果啟動Python交互環(huán)境陪竿,再導(dǎo)入hello模塊:

$ python3
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
>>>

導(dǎo)入時禽翼,沒有打印Hello, word!,因為沒有執(zhí)行test()函數(shù)族跛。

調(diào)用hello.test()時闰挡,才能打印出Hello, word!:

>>> hello.test()
Hello, world!

作用域

在一個模塊中,我們可能會定義很多函數(shù)和變量礁哄,但有的函數(shù)和變量我們希望給別人使用长酗,有的函數(shù)和變量我們希望僅僅在模塊內(nèi)部使用。在Python中姐仅,是通過_前綴來實現(xiàn)的花枫。

正常的函數(shù)和變量名是公開的(public),可以被直接引用掏膏,比如:abc劳翰,x123,PI等馒疹;

類似xxx這樣的變量是特殊變量佳簸,可以被直接引用,但是有特殊用途颖变,比如上面的author生均,name就是特殊變量,hello模塊定義的文檔注釋也可以用特殊變量doc訪問腥刹,我們自己的變量一般不要用這種變量名马胧;

類似_xxx和__xxx這樣的函數(shù)或變量就是非公開的(private),不應(yīng)該被直接引用衔峰,比如_abc佩脊,__abc等;

之所以我們說垫卤,private函數(shù)和變量“不應(yīng)該”被直接引用威彰,而不是“不能”被直接引用,是因為Python并沒有一種方法可以完全限制訪問private函數(shù)或變量穴肘,但是歇盼,從編程習(xí)慣上不應(yīng)該引用private函數(shù)或變量。

private函數(shù)或變量不應(yīng)該被別人引用评抚,那它們有什么用呢豹缀?請看例子:

def _private_1(name):
    return 'Hello, %s' % name

def _private_2(name):
    return 'Hi, %s' % name

def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)

我們在模塊里公開greeting()函數(shù),而把內(nèi)部邏輯用private函數(shù)隱藏起來了慨代,這樣耿眉,調(diào)用greeting()函數(shù)不用關(guān)心內(nèi)部的private函數(shù)細(xì)節(jié),這也是一種非常有用的代碼封裝和抽象的方法鱼响,即:

外部不需要引用的函數(shù)全部定義成private鸣剪,只有外部需要引用的函數(shù)才定義為public。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丈积,一起剝皮案震驚了整個濱河市筐骇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌江滨,老刑警劉巖铛纬,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唬滑,居然都是意外死亡告唆,警方通過查閱死者的電腦和手機(jī)棺弊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來擒悬,“玉大人模她,你說我怎么就攤上這事《粒” “怎么了侈净?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長僧凤。 經(jīng)常有香客問我畜侦,道長,這世上最難降的妖魔是什么躯保? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任旋膳,我火速辦了婚禮,結(jié)果婚禮上途事,老公的妹妹穿的比我還像新娘溺忧。我一直安慰自己,他們只是感情好盯孙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布鲁森。 她就那樣靜靜地躺著,像睡著了一般振惰。 火紅的嫁衣襯著肌膚如雪歌溉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天骑晶,我揣著相機(jī)與錄音痛垛,去河邊找鬼。 笑死桶蛔,一個胖子當(dāng)著我的面吹牛匙头,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仔雷,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼蹂析,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碟婆?” 一聲冷哼從身側(cè)響起电抚,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎竖共,沒想到半個月后蝙叛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡公给,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年借帘,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜘渣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡肺然,死狀恐怖蔫缸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狰挡,我是刑警寧澤捂龄,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布释涛,位于F島的核電站加叁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唇撬。R本人自食惡果不足惜它匕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窖认。 院中可真熱鬧豫柬,春花似錦、人聲如沸扑浸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喝噪。三九已至础嫡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酝惧,已是汗流浹背榴鼎。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晚唇,地道東北人巫财。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像哩陕,于是被迫代替她去往敵國和親平项。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一悍及、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,746評論 0 10
  • 模塊 在計算機(jī)程序的開發(fā)過程中葵礼,隨著程序代碼越寫越多,在一個文件里代碼就會越來越長并鸵,越來越不容易維護(hù)鸳粉。 為了編寫可...
    蓓蓓的萬能男友閱讀 238評論 0 0
  • 一、模塊介紹 在計算機(jī)程序的開發(fā)過程中园担,隨著程序代碼越寫越多届谈,在一個文件里代碼就會越來越長枯夜,越來越不容易維護(hù)。 為...
    祐吢房_2c9a閱讀 345評論 1 1
  • 夕陽西下 露出羞紅了的姑娘的臉 窗外粼粼紅葉 泛著落霞的余暉 浸透我心中無盡的期許 灰蒙蒙的天空 終究要被那無盡的...
    纖人淚閱讀 361評論 2 1
  • 種植作物和喂養(yǎng)孩子一個樣
    七星代閱讀 158評論 0 0