14疤剑、模塊和包

含有模塊闷堡,模塊是一個(gè)一個(gè)py文件蹬挤,包中可以含有多個(gè)py文件,可以import 包名.模塊名倦零。

區(qū)分包和普通目錄:包下面必須有一__init.__.py文件吨悍,即使它是個(gè)空文件,每個(gè)包下邊需要有__init__.py文件育瓜,注意每層都要有!

14.1 python之導(dǎo)入模塊

要使用一個(gè)模塊恋脚,我們必須首先導(dǎo)入該模塊焰手。Python使用import語句導(dǎo)入一個(gè)模塊。例如船响,導(dǎo)入系統(tǒng)自帶的模塊math:

import math

你可以認(rèn)為math就是一個(gè)指向已導(dǎo)入模塊的變量躲履,通過該變量,我們可以訪問math模塊中所定義的所有公開的函數(shù)工猜、變量和類:

>>> math.pow(2, 0.5) # pow是函數(shù)

1.4142135623730951

>>> math.pi # pi是變量

3.141592653589793

如果我們只希望導(dǎo)入用到的math模塊的某幾個(gè)函數(shù)域慷,而不是所有函數(shù),可以用下面的語句:

from math import pow, sin, log

這樣犹褒,可以直接引用pow, sin, log?這3個(gè)函數(shù)弛针,但math的其他函數(shù)沒有導(dǎo)入進(jìn)來:

>>> pow(2, 10)

1024.0

>>> sin(3.14)

0.0015926529164868282

如果遇到名字沖突怎么辦削茁?比如math模塊有一個(gè)log函數(shù)掉房,logging模塊也有一個(gè)log函數(shù)慰丛,如果同時(shí)使用,如何解決名字沖突诅病?

如果使用import導(dǎo)入模塊名,由于必須通過模塊名引用函數(shù)名蝇棉,因此不存在沖突:

import math, logging

print math.log(10)# 調(diào)用的是math的log函數(shù)logging.

log(10, 'something')# 調(diào)用的是logging的log函數(shù)

如果使用 from...import 導(dǎo)入 log函數(shù)芥永,勢必引起沖突。這時(shí)板辽,可以給函數(shù)起個(gè)“別名”來避免沖突:

from math import log

from logging import log as logger# logging的log現(xiàn)在變成了logger

print log(10)# 調(diào)用的是math的log

logger(10, 'import from logging')# 調(diào)用的是logging的log.

14.2 python中動(dòng)態(tài)導(dǎo)入模塊

如果導(dǎo)入的模塊不存在棘催,Python解釋器會(huì)報(bào)ImportError?錯(cuò)誤,有的時(shí)候瓶您,兩個(gè)不同的模塊提供了相同的功能纲仍,比如StringIO?cStringIO?都提供了StringIO這個(gè)功能。這是因?yàn)镻ython是動(dòng)態(tài)語言夜赵,解釋執(zhí)行乡革,因此Python代碼運(yùn)行速度慢。

如果要提高Python代碼的運(yùn)行速度沸版,最簡單的方法是把某些關(guān)鍵函數(shù)用C語言重寫视粮,這樣就能大大提高執(zhí)行速度。同樣的功能蕾殴,StringIO?是純Python代碼編寫的岛啸,而cStringIO?部分函數(shù)是C 寫的茴肥,因此 cStringIO 運(yùn)行速度更快。

利用ImportError錯(cuò)誤瞬铸,我們經(jīng)常在Python中動(dòng)態(tài)導(dǎo)入模塊:

try:

? ? from cStringIO import StringIO

except ImportError:

? ? from StringIO import StringIO

上述代碼先嘗試從cStringIO導(dǎo)入芬首,如果失敗了(比如cStringIO沒有被安裝),再嘗試從StringIO導(dǎo)入赦政。這樣耀怜,如果cStringIO模塊存在,則我們將獲得更快的運(yùn)行速度掰派,如果cStringIO不存在左痢,則頂多代碼運(yùn)行速度會(huì)變慢,但不會(huì)影響代碼的正常執(zhí)行略步。

try?的作用是捕獲錯(cuò)誤定页,并在捕獲到指定錯(cuò)誤時(shí)執(zhí)行except?語句。

14.3 python之使用__future__

Python的新版本會(huì)引入新的功能典徊,但是卒落,實(shí)際上這些功能在上一個(gè)老版本中就已經(jīng)存在了。要“試用”某一新的特性儡毕,就可以通過導(dǎo)入__future__模塊的某些功能來實(shí)現(xiàn)。

例如贾费,Python 2.7的整數(shù)除法運(yùn)算結(jié)果仍是整數(shù):

>>> 10 / 3

3

但是檐盟,Python 3.x已經(jīng)改進(jìn)了整數(shù)的除法運(yùn)算,“/”除將得到浮點(diǎn)數(shù)导犹,“//”除才仍是整數(shù):

>>> 10 / 3

3.3333333333333335

>>> 10 // 3

3

要在Python 2.7中引入3.x的除法規(guī)則羡忘,導(dǎo)入__future__division

>>> from __future__ import division

>>> print 10 / 3

3.3333333333333335

當(dāng)新版本的一個(gè)特性與舊版本不兼容時(shí),該特性將會(huì)在舊版本中添加到__future__中节猿,以便舊的代碼能在舊版本中測試新特性漫雕。

14.4 python安裝第三方模塊

python提供了兩種安裝第三方模塊的管理工具:

1.easy_install

2.pip (推薦)

CMD中輸入pip install xxx.py安裝第三方模塊xxx.py

pypi.python.org中查找下載第三方模塊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末太雨,一起剝皮案震驚了整個(gè)濱河市魁蒜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锥咸,老刑警劉巖铣减,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葫哗,死亡現(xiàn)場離奇詭異,居然都是意外死亡劣针,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門鸟廓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來引谜,“玉大人,你說我怎么就攤上這事员咽。” “怎么了契讲?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長滑频。 經(jīng)常有香客問我捡偏,道長,這世上最難降的妖魔是什么峡迷? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任银伟,我火速辦了婚禮,結(jié)果婚禮上凉当,老公的妹妹穿的比我還像新娘枣申。我一直安慰自己,他們只是感情好看杭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著楼雹,像睡著了一般模孩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贮缅,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天榨咐,我揣著相機(jī)與錄音,去河邊找鬼谴供。 笑死块茁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桂肌。 我是一名探鬼主播数焊,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼崎场!你這毒婦竟也來了佩耳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谭跨,失蹤者是張志新(化名)和其女友劉穎干厚,沒想到半個(gè)月后李滴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛮瞄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年所坯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裕坊。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡包竹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出籍凝,到底是詐尸還是另有隱情,我是刑警寧澤苗缩,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布饵蒂,位于F島的核電站,受9級特大地震影響酱讶,放射性物質(zhì)發(fā)生泄漏退盯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一泻肯、第九天 我趴在偏房一處隱蔽的房頂上張望渊迁。 院中可真熱鬧,春花似錦灶挟、人聲如沸琉朽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箱叁。三九已至,卻和暖如春惕医,著一層夾襖步出監(jiān)牢的瞬間耕漱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工抬伺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留螟够,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓峡钓,卻偏偏與公主長得像妓笙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子椒楣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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

  • Python進(jìn)階框架 希望大家喜歡给郊,點(diǎn)贊哦首先感謝廖雪峰老師對于該課程的講解 一、函數(shù)式編程 1.1 函數(shù)式編程簡...
    Gaolex閱讀 5,498評論 6 53
  • 教程地址:python進(jìn)階 - 慕課網(wǎng) python函數(shù)式編程 變量可以指向函數(shù): f = absprint(f)...
    竹口小生閱讀 555評論 0 2
  • 要點(diǎn): 函數(shù)式編程:注意不是“函數(shù)編程”捧灰,多了一個(gè)“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍钕拧傩浴?..
    victorsungo閱讀 1,504評論 0 6
  • pyton review 學(xué)習(xí)指南 https://www.zhihu.com/question/29138020...
    孫小二wuk閱讀 1,048評論 0 2
  • 上天是公平的统锤,它給每個(gè)人的終點(diǎn)都是死亡。上天又是不公平的炭庙,有的人一出生就在山頂了饲窿,有人是從半山腰開始爬,但還有許多...
    秦宛閱讀 216評論 4 1