Python學習日誌之Python模組

來源:互聯網
上載者:User

標籤:import   python   模組   調用   

Python入門學習筆記之Python模組

Python模組:

一、認識Python模組

1.什麼是模組

    函數是可以實現一項或多項功能的一段程式。我們的模組是函數功能的擴充,模組是可以實現一項或多項功能的程式塊。從定義可以看出:函數是一段程式,模組是一項程式塊,也就是說函數,模組都是用來實現功能的,但是模組範圍要廣,在模組裡可以重用多個函數


2.如何匯入模組

    在Python程式中如果要使用某個模組,不能直接使用某個模組的功能。在模組使用之前,我們需要先匯入指定模組,只要匯入模組後我們才能使用

>>> import math>>> math.pi3.141592653589793>>>


3.sys系統內建模組

    在Python中有一些模組是不用我們去定義的,Python官方提供的內建的模組。這些模組伴隨這Python的安裝而產生,我們把這些模組叫做標準庫模組。標準庫模組是一類別模組,而不是一種模組,在標準庫模組中,也有非常多的模組,有的模組和電子郵件相關,有的和作業系統相關,還有的和系統功能相關,我們把標準庫中和系統相關的這些模組稱為sys模組

#執行個體:

>>> import sys>>> sys.version‘2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]‘>>> sys.executable‘D:\\Python27\\Python279\\pythonw.exe‘#當前運行檔案的位置>>> sys.getwindowsversion()sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack=‘Service Pack

1‘)#返回當前windows系統資訊

>>> sys.modules.keys()#查看已經匯入的模組關鍵字


二、位元組編譯

1.何為Python的.pyc檔案

    我們所說的.pyc檔案是以.pyc為尾碼名的這一類檔案。我們知道,由於我們電腦只認識二進位的機器語言,所以我們在執行Python模組的時候,有兩種執行方式:一種是將模組的內容編譯成二進位語言,然後執行這些二進位語言,另一種是執行對應模組裡面的二進位語言程式。第二種方式省略了編譯這一步,所以執行速度相對來說要快一些。而把模組編譯成二進位語言程式的這個過程叫做位元組編譯,這個過程會產生一個與編譯的模組對應的.pyc檔案,所以說.pyc檔案就是經過編譯後的模組對應的二進位檔案


2.位元組編譯和編譯的區別

位元組編譯:把模組編譯成二進位語言程式的這個過程

Python是一種解釋型語言,not編譯型語言,所以有人會說怎麼來的位元組編譯,其實Python中雖然出現了編譯這個過程,但是它和其他的編譯型語言不同的是,它的編譯是由解譯器完成的,畢竟每個程式想要執行都需要變成二進位的形式,編譯型語言是指軟體中有一個獨立的編譯模組去將程式編譯,而Python沒有,它有解譯器


3..pyc檔案的產生

   位元組編譯過程中會產生一個與編譯的模組對應的.pyc檔案,即.pyc檔案就是經過編譯後模組對應的二進位檔案。

有兩種.pyc產生的方式:

第一種:import

>>> import zipfile>>>

第二種:CMD命令列

通過輸入:cd: d:\Python27\Lib進入到lib檔案行,然後輸入:python -m compileall xmllib.py


4..pyc檔案的使用

    在Python中,.pyc檔案最大的一個作用就是加快了模組的運行速度(可以直接運行.pyc檔案,不需要編譯)。其實.pyc還有反編譯等進階功能


反編譯:把二進位檔案還原成源檔案


三、From...import詳解

    1.Python中陰道一個模組的方法就是使用import,但是import只是匯入了這個模組,而並沒有匯入我們模組的某個屬性和方法,而我們不僅要匯入一個模組,還要匯入模組中對應的一個功能,我們可以使用From...import語句

#執行個體:

>>> import sys>>> sys.version‘2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]‘>>> versionTraceback (most recent call last):  File "<pyshell#4>", line 1, in <module>    versionNameError: name ‘version‘ is not defined>>> from sys import version>>> version

‘2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]‘

>>> #直接調用version,沒有出現錯誤


2.使用from...import*

   在Python中是用from...import語句只能匯入一個模組的一個功能,如果我們要把這個模組的所有功能,也就是所有屬性和方法都到如的話,我們可以使用from...import*語句。

#執行個體:

>>> executableTraceback (most recent call last):  File "<pyshell#9>", line 1, in <module>    executableNameError: name ‘executable‘ is not defined>>> #executable是sys的另外一個功能,用於查看目前的目錄>>> from sys import *>>> executable‘D:\\Python27\\Python279\\pythonw.exe‘


四、認識__name__屬性

1.認識主模組

    在Python函數中,如果一個函數調用其他函數完成一項功能,我們稱這個函數為主函數,如果一個函數沒有調用其他函數,我們稱這種函數為非主函數。模組也是類似的,如果一個模組被直接使用,而沒有被別人調用,我們稱之為主模組,如果一個模組被別人調用,我們稱之為非主模組


2.認識_name_屬性

#首先我們分別看一下這個模組在不同情境中的__name__的值

print __name__

#輸出結果:

_main_#主模組


區分是否主模組,就看自己調用還是被別人調用


3.__name__屬性的使用

   在Python中有主模組和非主模組之分,那麼如何區分主模組和非主模組呢,如果一個模組的_name_屬性值是_main_,那麼說明這個模組是主模組,反之不是,其實我們可以把_name_看作一個變數,這個變數由sye系統給出,用於判斷一個模組是否是主模組

#執行個體

#其次我們看一下__name__屬性的常用情況,用來判斷是不是自己執行,還是被調用

#‘*‘coding=utf-8‘*‘#用來防止編碼錯誤if __name__=="__main__":#兩個底線    print "It‘s main"else:    print "It‘s not main"#輸出結果:>>> import lname_It‘s not main>>>


五、自訂模組

1.何為自訂模組

   Python中有許多模組,有的模組是不需要使用者自己去定義的去編寫的,Python在安裝的時候就內建的模組,這些模組是系統內建模組。而有一些模組剛好跟這種模組不同,它是需要我們自己去定義去編寫的模組,稱之為自訂模組


2.自訂模組使用詳解

(1).只要將自己編寫的Python程式(.py)儲存到Lib目錄下就可以了


(2).編寫代碼

      Ctrl+s儲存然後儲存到Lib就可以了

#執行個體:

建立程式,定義函數:

def add(i,j):    k=i+j    return kk=add(i,j)print k

痛點:參數傳遞,把參數傳遞到i,j

在函數之前加入初始化值:

i=0j=0def add(i,j):    k=i+j    return kk=add(i,j)print k

這樣文法和邏輯就不會出現錯誤

Crtl+s

然後開始傳遞參數:

>>> import add0>>> i=6>>> j=7>>> add.add (i,j)13>>>

或者在函數前先進行聲明後再儲存:

int iin jdef add(i,j):    k=i+j    return kk=add(i,j)print k

#輸出結果:

>>> import add>>> i=6>>> j=7>>> add.add (i,j)13>>>


六、dir函數

1.認識dir()函數

    Python中有非常多的模組,但是有時候我們會忘記一個模組有哪些功能,這時候,我們可以通過dir()函數來查看下指定模組的功能列表


#查看sys模組:

>

>> import sys  #先匯入>>> dir(sys)    #再查看[‘__displayhook__‘, ‘__doc__‘, ‘__excepthook__‘, ‘__name__‘, ‘__package__‘, ‘__stderr__‘, ‘__stdin__‘, ‘__stdout__‘, ‘_clear_type_cache‘, ‘_current_frames‘, ‘_getframe‘, ‘_mercurial‘, ‘api_version‘, ‘argv‘, ‘builtin_module_names‘, ‘byteorder‘, ‘call_tracing‘, ‘callstats‘, ‘copyright‘, ‘displayhook‘, ‘dllhandle‘, ‘dont_write_bytecode‘, ‘exc_clear‘, ‘exc_info‘, ‘exc_traceback‘, ‘exc_type‘, ‘exc_value‘, ‘excepthook‘, ‘exec_prefix‘, ‘executable‘, ‘exit‘, ‘flags‘, ‘float_info‘, ‘float_repr_style‘, ‘getcheckinterval‘, ‘getdefaultencoding‘, ‘getfilesystemencoding‘, ‘getprofile‘, ‘getrecursionlimit‘, ‘getrefcount‘, ‘getsizeof‘, ‘gettrace‘, ‘getwindowsversion‘, ‘hexversion‘, ‘long_info‘, ‘maxint‘, ‘maxsize‘, ‘maxunicode‘, ‘meta_path‘, ‘modules‘, ‘path‘, ‘path_hooks‘, ‘path_importer_cache‘, ‘platform‘, ‘prefix‘, ‘py3kwarning‘, ‘setcheckinterval‘, ‘setprofile‘, ‘setrecursionlimit‘, ‘settrace‘, ‘stderr‘, ‘stdin‘, ‘stdout‘, ‘subversion‘, ‘version‘, ‘version_info‘, ‘warnoptions‘, ‘winver‘]>>> sys.__doc__#可以進行查看


2.dir函數擴充詳解

#執行個體:

>>> d=[]>>> dir(d)[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__delitem__‘, ‘__delslice__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getslice__‘, ‘__gt__‘, ‘__hash__‘, ‘__iadd__‘, ‘__imul__‘, ‘__init__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__reversed__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__setitem__‘, ‘__setslice__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘append‘, ‘count‘, ‘extend‘, ‘index‘, ‘insert‘, ‘pop‘, ‘remove‘, ‘reverse‘, ‘sort‘]>>> c=[‘a‘,‘b‘]>>> dir(c)[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__delitem__‘, ‘__delslice__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getslice__‘, ‘__gt__‘, ‘__hash__‘, ‘__iadd__‘, ‘__imul__‘, ‘__init__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__reversed__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__setitem__‘, ‘__setslice__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘append‘, ‘count‘, ‘extend‘, ‘index‘, ‘insert‘, ‘pop‘, ‘remove‘, ‘reverse‘, ‘sort‘]>>> #傳回值一樣,dir返回的只有屬性,不區分資料>>> e=()>>> dir(e)[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getnewargs__‘, ‘__getslice__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘count‘, ‘index‘]>>>
















本文出自 “8626774” 部落格,請務必保留此出處http://8636774.blog.51cto.com/8626774/1677733

Python學習日誌之Python模組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.