欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統(tǒng) 1624 0

認(rèn)識模塊

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

復(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.
?

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

用曾經(jīng)講過的那個法寶: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(注意:這個地址是我的計算機(jī)中的地址,可能跟看官的不一樣,特別是如果看官用的是windows,肯定跟我這個不一樣了。)

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

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

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

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

跟老齊學(xué)Python之Import 模塊_第1張圖片

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

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

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

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

舉例:

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

>>> import sys? #導(dǎo)入了標(biāo)準(zhǔn)庫sys
>>> dir(sys)??? #如果不到網(wǎng)頁上看,用這種方法可以查看這個標(biāo)準(zhǔn)庫提供的各種方法(函數(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??? #比如這個
'linux2'
>>> sys.version???? #還有這個
'2.7.6 (default, Nov 13 2013, 19:24:16) \n[GCC 4.6.3]'

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

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

自己編寫模塊

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

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

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

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

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

#!/usr/bin/env python
#coding:utf-8

web = "https://qiwsir.github.io"

def my_name(name):
??? print name

class pythoner:
??? def __init__(self,lang):
??????? self.lang = lang
??? def programmer(self):
??????? print "python programmer language is: ",self.lang

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

跟老齊學(xué)Python之Import 模塊_第2張圖片

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

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

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

>>> import mmmm
>>> dir(mmmm)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'my_name', 'pythoner', 'web']
>>> mmmm.__doc__??? #這個是空的,正是,因為我未曾寫過任何文檔說明
>>> mmmm.__name__?? #名字
'mmmm'
>>> mmmm.__file__?? #文件
'mmmm.py'

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

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

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

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

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

>>> mmmm.my_name

>>> mmmm.pythoner

?當(dāng)然,跟操作標(biāo)準(zhǔn)庫一樣,一樣能夠使用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ù)的時候,用模塊的名稱(import mmmm)+點號+函數(shù)(注意,函數(shù)后面要有括號,如果有參數(shù),括號里面跟參數(shù)),即 module_name.funciton(*args)

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

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

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

如果感覺這個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了。兩種方式,哪個更好呢?沒有定論。看官在以后的實踐中體會,什么時候用什么方式。

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

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

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

?這就是基本的import模塊方法。看官的疑問,還要存著。且聽下回分解。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产一区二 | 国产福利不卡一区二区三区 | 国产综合在线视频 | 日日摸夜夜添夜夜添aa | 国产在线不卡一区 | 天天操操操操操操 | 狠狠插天天干 | 国产成人18黄网站免费 | 欧美偷拍自拍视频 | 香蕉视频在线观看视频 | 日本亚洲天堂网 | 亚洲狼人综合干 | 欧美亚洲高清 | 国产AV亚洲精品久久久久 | 久久大综合 | 亚洲精品自拍 | 最新中文在线视频 | 黄色毛片a | 99九九精品视频 | 亚洲电影一区二区三区 | 日本高清色www | 亚洲精品久久久久一区二区三 | 久久综合一区二区三区 | 欧美视频三区 | 免费在线观看www | 日韩欧美不卡在线 | 日本在线观看不卡 | 欧美亚洲激情视频 | 国产肝交视频在线观看 | 91偷拍精品一区二区三区 | 精品国产免费一区二区三区 | 欧美不卡 | 69av.com | 成人理论 | 久久精品99 | 在线亚洲成人 | 欧美日韩手机在线观看 | 国产精品18| 好吊妞gao988在线播放 | 日韩版码免费福利视频 | 欧美综合国产 |