欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

跟老齊學(xué)Python之Import 模塊

 更新時(shí)間:2014年10月13日 11:04:21   投稿:hebedich  
本文主要講解了基本的import模塊方法,首先從模塊的定義入手,接著講訴如何自己編寫模塊,非常簡(jiǎn)單實(shí)用,有需要的朋友可以參考下

認(rèn)識(shí)模塊

對(duì)于模塊,在前面的一些舉例中,已經(jīng)涉及到了,比如曾經(jīng)有過:import random (獲取隨機(jī)數(shù)模塊)。為了能夠?qū)δK有一個(gè)清晰的了解,首先要看看什么模塊,這里選取官方文檔中對(duì)它的定義:

復(fù)制代碼 代碼如下:

A module is a file containing Python definitions and statements. The file name is the module name with the suffix .py appended. Within a module, the module's name (as a string) is available as the value of the global variable name.
 

都是洋碼子,翻譯一下不?不!還是只說要點(diǎn):
 •模塊就是一個(gè)含有python語(yǔ)句的文件
 •模塊名就是文件名(不要擴(kuò)展名.py)
 
那么,那個(gè)import random的文件在哪里呢?

用曾經(jīng)講過的那個(gè)法寶:help()函數(shù)看看:

復(fù)制代碼 代碼如下:

>>> help(random)

 然后就出現(xiàn):

復(fù)制代碼 代碼如下:

NAME
    random - Random variable generators.

FILE
    /usr/local/lib/python2.7/random.py

MODULE DOCS
    http://docs.python.org/library/random

DESCRIPTION
    ...

 這里非常明顯的告訴我們,random模塊的文件就是: /usr/local/lib/python2.7/random.py(注意:這個(gè)地址是我的計(jì)算機(jī)中的地址,可能跟看官的不一樣,特別是如果看官用的是windows,肯定跟我這個(gè)不一樣了。)

看官這時(shí)候可能有疑問了,import是怎么找到那個(gè)文件的?類似文件怎么寫?不用著急,這些我都會(huì)一一道來。

標(biāo)準(zhǔn)庫(kù)

看了前面的random這個(gè)例子,看官可能立刻想到一個(gè)問題:是不是已經(jīng)有人把很多常用的功能都寫成模塊了?然后使用者只需要用類似方法調(diào)用即可。的確是,比如上面顯示的,就不是某個(gè)程序員在使用的時(shí)候自己編寫的,而是在安裝python的時(shí)候,就被安裝在了計(jì)算機(jī)里面。觀察那個(gè)文件存儲(chǔ)地址,就知道了。

我根據(jù)上面得到的地址,列出/usr/local/lib/python2.7/里面的文件,這些文件就是類似random的模塊,由于是python安裝就有的,算是標(biāo)配吧,給它們一個(gè)名字“標(biāo)準(zhǔn)模塊庫(kù)”,簡(jiǎn)稱“標(biāo)準(zhǔn)庫(kù)”。

這張圖列出了很少一部分存在這個(gè)目錄中的模塊文件。

Python的標(biāo)準(zhǔn)庫(kù)(standard library)是Python的一個(gè)組成部分,也是Python為的利器,可以讓編程事半功倍。

如果看官有時(shí)間,請(qǐng)經(jīng)常訪問:https://docs.python.org/2/library/,這里列出了所有標(biāo)準(zhǔn)庫(kù)的使用方法。

有一點(diǎn),請(qǐng)看官特別注意,對(duì)于標(biāo)準(zhǔn)庫(kù)而言,由于內(nèi)容太多,恐怕是記不住的。也不用可以的去記憶,只需要知道有這么一個(gè)東西。如果在編寫程序的時(shí)候,一定要想到,對(duì)于某個(gè)東西,是不是會(huì)有標(biāo)準(zhǔn)庫(kù)支持呢?然后就到google或者上面給出的地址上搜索。

舉例:

復(fù)制代碼 代碼如下:

>>> import sys  #導(dǎo)入了標(biāo)準(zhǔn)庫(kù)sys
>>> dir(sys)    #如果不到網(wǎng)頁(yè)上看,用這種方法可以查看這個(gè)標(biāo)準(zhǔn)庫(kù)提供的各種方法(函數(shù))
['__displayhook__', '__doc__', '__egginsert', '__excepthook__', '__name__', '__package__', '__plen', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'last_traceback', 'last_type', 'last_value', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']
>>> sys.platform    #比如這個(gè)
'linux2'
>>> sys.version     #還有這個(gè)
'2.7.6 (default, Nov 13 2013, 19:24:16) \n[GCC 4.6.3]'

>>> help(sys.stdin)     #這是查看某個(gè)模塊方法具體內(nèi)容的方式

 標(biāo)準(zhǔn)庫(kù),在編程中經(jīng)常用到。這里不贅述。只要看官能夠知道在哪里找、如何找所需要的標(biāo)準(zhǔn)庫(kù)即可。

自己編寫模塊

看官可能比較喜歡“自己動(dòng)手,豐衣足食”(雖然真的不一定是豐衣足食),在某些必要的時(shí)候,還真得自己動(dòng)手寫一些模塊。那么怎么編寫模塊呢?

前面已經(jīng)交代,模塊就是.py文件,所以,只要將某些語(yǔ)句寫到一個(gè).py文件中,它就是一個(gè)模塊了。沒有什么太多的秘密。

在某個(gè)目錄下面建立了一個(gè)文件,名稱是:mmmm.py,如下圖所示,然后編輯這個(gè)文件內(nèi)容。編輯好后保存。

代碼是文件內(nèi)容:

復(fù)制代碼 代碼如下:

 圖示是文件所在目錄,并且在該目錄下打開了python的交互模式(我這是在ubuntu下,看官是別的操作系統(tǒng)的化,注意路徑,如果遇到問題,可以暫時(shí)擱置,看下文)。

從圖中可以看出,當(dāng)前目錄中有這個(gè)文件:mmmm.py

在交互模式下,仿照對(duì)標(biāo)準(zhǔn)庫(kù)模塊的操作方式:

復(fù)制代碼 代碼如下:

>>> import mmmm
>>> dir(mmmm)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'my_name', 'pythoner', 'web']
>>> mmmm.__doc__    #這個(gè)是空的,正是,因?yàn)槲椅丛鴮戇^任何文檔說明
>>> mmmm.__name__   #名字
'mmmm'
>>> mmmm.__file__   #文件
'mmmm.py'

 再看后面的:my_name,pythoner,web,都是我在內(nèi)容中自己寫的。

復(fù)制代碼 代碼如下:

>>> mmmm.web
'https://qiwsir.github.io'

 web是模塊mmmm中的一個(gè)通過賦值語(yǔ)句建立的變量,在這里,它編程了mmmm的屬性,能夠通過點(diǎn)號(hào)運(yùn)算訪問,其實(shí)不僅僅是這類型的賦值,其它通過def,class等,都能做為mmmm模塊的屬性。

復(fù)制代碼 代碼如下:

>>> mmmm.my_name
<function my_name at 0xb74ceb54>
>>> mmmm.pythoner
<class mmmm.pythoner at 0xb73e6bcc>

 當(dāng)然,跟操作標(biāo)準(zhǔn)庫(kù)一樣,一樣能夠使用help()來看看這些屬性的具體內(nèi)容:

復(fù)制代碼 代碼如下:

>>> help(mmmm.my_name)

Help on function my_name in module mmmm:

my_name(name)

>>> help(mmmm.pythoner)

Help on class pythoner in module mmmm:

class pythoner
 |  Methods defined here:
 | 
 |  __init__(self, lang)
 | 
 |  programmer(self)

 怎么調(diào)用呢?這樣即可:

復(fù)制代碼 代碼如下:

>>> mmmm.my_name("qiwsir")
qiwsir

 當(dāng)調(diào)用模塊中的函數(shù)的時(shí)候,用模塊的名稱(import mmmm)+點(diǎn)號(hào)+函數(shù)(注意,函數(shù)后面要有括號(hào),如果有參數(shù),括號(hào)里面跟參數(shù)),即 module_name.funciton(*args)

復(fù)制代碼 代碼如下:

>>> py = mmmm.pythoner("c++")  
>>> py.programmer()
python programmer language is:  c++

 上面兩行,則是演示用綁定的方法調(diào)用模塊中的類以及類的實(shí)例方法。跟以往的相比較,似乎都是在前面多了一個(gè)mmmm.

如果感覺這個(gè)mmmm比較麻煩,可以用from,具體是這樣的:

復(fù)制代碼 代碼如下:

>>> from mmmm import *
>>> my_name('qiwsir')
qiwsir
>>> web
'https://qiwsir.github.io'
>>> py = pythoner("c++")
>>> py.programmer()
python programmer language is:  c++

 這次不用總寫那么mmmm了。兩種方式,哪個(gè)更好呢?沒有定論。看官在以后的實(shí)踐中體會(huì),什么時(shí)候用什么方式。

上面用from mmmm import ,其中符號(hào),表示將所有的都import進(jìn)來,用這個(gè)方法,也可以只import一部分,如同:

復(fù)制代碼 代碼如下:

>>> from mmmm import my_name    #如果看官前面運(yùn)行了上述操作,需要關(guān)閉交互模式,
                                #再重啟,才能看到下面過程
>>> my_name("qiwsir")
qiwsir
>>> web                         #沒有import這個(gè),所以報(bào)錯(cuò)。
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'web' is not defined

 這就是基本的import模塊方法??垂俚囊蓡枺€要存著。且聽下回分解。

相關(guān)文章

  • Python 照片人物背景替換的實(shí)現(xiàn)方法

    Python 照片人物背景替換的實(shí)現(xiàn)方法

    本文主要介紹了如何通過Python實(shí)現(xiàn)照片中人物背景圖的替換,甚至可以精細(xì)到頭發(fā)絲,感興趣的小伙伴可以看看
    2021-11-11
  • python3中的函數(shù)與參數(shù)及空值問題

    python3中的函數(shù)與參數(shù)及空值問題

    這篇文章主要介紹了python3-函數(shù)與參數(shù)以及空值,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • Python數(shù)據(jù)結(jié)構(gòu)與算法中的隊(duì)列詳解(1)

    Python數(shù)據(jù)結(jié)構(gòu)與算法中的隊(duì)列詳解(1)

    這篇文章主要為大家詳細(xì)介紹了Python的隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • python字符串的拼接方法總結(jié)

    python字符串的拼接方法總結(jié)

    這篇文章主要介紹了python字符串的拼接方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python利用datetime模塊計(jì)算時(shí)間差

    python利用datetime模塊計(jì)算時(shí)間差

    python中通過datetime模塊可以很方便的計(jì)算兩個(gè)時(shí)間的差,datetime的時(shí)間差單位可以是天、小時(shí)、秒,甚至是微秒,下面我們就來詳細(xì)看下datetime的強(qiáng)大功能吧
    2015-08-08
  • Python字符串操作實(shí)戰(zhàn)之如何提取子字符串

    Python字符串操作實(shí)戰(zhàn)之如何提取子字符串

    這篇文章主要給大家介紹了關(guān)于Python字符串操作實(shí)戰(zhàn)之如何提取子字符串的相關(guān)資料,字符串是Python中最常用的數(shù)據(jù)類型,大家應(yīng)該都不陌生,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Python 字符串類型列表轉(zhuǎn)換成真正列表類型過程解析

    Python 字符串類型列表轉(zhuǎn)換成真正列表類型過程解析

    這篇文章主要介紹了Python 字符串類型列表轉(zhuǎn)換成真正列表類型過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python內(nèi)存泄漏和內(nèi)存溢出的解決方案

    Python內(nèi)存泄漏和內(nèi)存溢出的解決方案

    這篇文章主要介紹了Python內(nèi)存泄漏和內(nèi)存溢出的解決方案,幫助大家維護(hù)后臺(tái)進(jìn)程,感興趣的朋友可以了解下
    2020-09-09
  • Python列表list常用內(nèi)建函數(shù)實(shí)例小結(jié)

    Python列表list常用內(nèi)建函數(shù)實(shí)例小結(jié)

    這篇文章主要介紹了Python列表list常用內(nèi)建函數(shù),結(jié)合實(shí)例形式總結(jié)分析了Python列表list常見內(nèi)建函數(shù)的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • python實(shí)現(xiàn)批量監(jiān)控網(wǎng)站

    python實(shí)現(xiàn)批量監(jiān)控網(wǎng)站

    本文給大家分享的是一個(gè)非常實(shí)用的,python實(shí)現(xiàn)多網(wǎng)站的可用性監(jiān)控的腳本,并附上核心點(diǎn)解釋,有相同需求的小伙伴可以參考下
    2016-09-09

最新評(píng)論