成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[零基礎(chǔ)學(xué)python]Import 模塊

yankeys / 1065人閱讀

摘要:認識模塊對于模塊,在前面的一些舉例中,已經(jīng)涉及到了,比如曾經(jīng)有過獲取隨機數(shù)模塊。這張圖列出了很少一部分存在這個目錄中的模塊文件。的標準庫是的一個組成部分,也是為的利器,可以讓編程事半功倍。這就是基本的模塊方法。

認識模塊

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

  

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語句的文件

模塊名就是文件名(不要擴展名.py)

那么,那個import random的文件在哪里呢?

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

>>> help(random)

然后就出現(xiàn):

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

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

標準庫

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

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

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

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

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

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

舉例:

>>> import sys  #導(dǎo)入了標準庫sys
>>> dir(sys)    #如果不到網(wǎng)頁上看,用這種方法可以查看這個標準庫提供的各種方法(函數(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) 
[GCC 4.6.3]"

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

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

自己編寫模塊

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

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

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

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

#!/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)的化,注意路徑,如果遇到問題,可以暫時擱置,看下文)。

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

在交互模式下,仿照對標準庫模塊的操作方式:

>>> 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)容中自己寫的。

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

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

>>> mmmm.my_name

>>> mmmm.pythoner

當然,跟操作標準庫一樣,一樣能夠使用help()來看看這些屬性的具體內(nèi)容:

>>> 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)用呢?這樣即可:

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

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

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

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

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

>>> 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進來,用這個方法,也可以只import一部分,如同:

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/37411.html

相關(guān)文章

  • [基礎(chǔ)學(xué)python]模塊的加載

    摘要:找到模塊文件之后,將其編譯成字節(jié)碼,就是那個文件里面的關(guān)于字節(jié)碼,下面會介紹,請繼續(xù)閱讀。當然,如果根本就沒有找到同名的源文件,只有字節(jié)碼文件,那么就只能運行這個了。執(zhí)行就是前面已經(jīng)編譯的模塊字節(jié)碼文件,順理成章要執(zhí)行了。 不管是用import還是用from mmmm import *的方式導(dǎo)入模塊,當程序運行之后,回頭在看那個存儲著mmmm.py文件的目錄中(關(guān)于mmmm.py文件可...

    tinylcy 評論0 收藏0
  • [基礎(chǔ)學(xué)python]啰嗦的除法

    摘要:補充一個資料,供有興趣的朋友閱讀浮點數(shù)算法爭議和限制說明以上除法規(guī)則,是針對,在中,將和等同起來了。比如下面的例子不啰嗦了,實驗一個注意了,引用了一個模塊之后,再做除法,就不管什么情況,都是得到浮點數(shù)的結(jié)果了。 除法啰嗦的,不僅是python。 整數(shù)除以整數(shù) 看官請在啟動idle之后,練習(xí)下面的運算: >>> 2/5 0 >>> 2.0/5 0.4 >>> 2/5.0 0.4 >...

    james 評論0 收藏0
  • [基礎(chǔ)學(xué)Python]正規(guī)地說一句話

    摘要:語句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個元素。與配合使用處理在程序運行中出現(xiàn)的異常情況。表示此行為空,不運行任何操作。在迭代器函數(shù)內(nèi)使用,用于返回一個元素。恭請到上瀏覽及時更新的教程零基礎(chǔ)學(xué) 小孩子剛剛開始學(xué)說話的時候,常常是一個字一個字地開始學(xué),比如學(xué)說餃子,對他/她來講,似乎有點難度,大人也聰明,于是就簡化了,用餃餃來代替,其實就是讓孩子學(xué)會一個字就能表達。當然...

    Freeman 評論0 收藏0
  • [基礎(chǔ)學(xué)python]重回函數(shù)

    摘要:函數(shù)的基本結(jié)構(gòu)中的函數(shù)基本結(jié)構(gòu)函數(shù)名參數(shù)列表語句幾點說明函數(shù)名的命名規(guī)則要符合中的命名要求。在中,將這種依賴關(guān)系,稱之為多態(tài)。不要期待在原處修改的函數(shù)會返回結(jié)果比如一定要之用括號調(diào)用函數(shù)不要在導(dǎo)入和重載中使用擴展名或路徑。 在本教程的開始部分,就已經(jīng)引入了函數(shù)的概念:《永遠強大的函數(shù)》,之所以那時候就提到函數(shù),是因為我覺得函數(shù)之重要,遠遠超過一般。這里,重回函數(shù),一是復(fù)習(xí),二是要在已經(jīng)...

    dmlllll 評論0 收藏0
  • [基礎(chǔ)學(xué)python]Hello,第一個網(wǎng)頁分析

    摘要:的非阻塞單線程的特點在這個模塊中體現(xiàn)。還有一個模塊引入,是用完成的這兩句就顯示了所謂命令行解析模塊的用途了。表示可以接收來自的請求了。以上把一個簡單的剖析。 As he walked by the sea of Galilee, he saw two brothers, Simon, who is called Peter, and Andrew his brother, cas...

    Steve_Wang_ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<