日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

五、python模块以及包

發(fā)布時(shí)間:2023/12/13 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 五、python模块以及包 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

模塊:編寫的別的程序中重用一些代碼。

1 模塊的寫法:

  • 創(chuàng)建一個(gè).py文件,該文件中包含函數(shù)與變量。
  • 使用撰寫python解釋器本身的本地語言來編寫模塊。比如使用C代碼編寫python模塊,并且在編譯后,可以通過標(biāo)準(zhǔn)的python解釋器在你的python代碼中使用它們。
  • 2 使用標(biāo)準(zhǔn)庫模塊例子sys 模塊包含了與 Python 解釋器及其環(huán)境相關(guān)的功能,也就是所謂的系統(tǒng)功能( system),代碼如下:

    import sys print('The command line arguments are:') for i in sys.argv:print(i) print('\n\nThe PYTHONPATH is', sys.path, '\n') #程序輸出 The command line arguments are: F:/python/demo/test.pyThe PYTHONPATH is ['F:\\python\\demo', 'F:\\python\\demo', 'C:\\Windows\\system32\\python34.zip', 'I:\\Python34\\DLLs', 'I:\\Python34\\lib', 'I:\\Python34', 'I:\\Python34\\lib\\site-packages']

    分析:在這一案例中,由于其是一個(gè)內(nèi)置模塊,因此 Python 知道應(yīng)該在哪里找到它。如果它不是一個(gè)已編譯好的模塊,即用 Python 編寫的模塊,那么 Python 解釋器將從它的sys.path 變量所提供的目錄中進(jìn)行搜索。如果找到了對(duì)應(yīng)模塊,則該模塊中的語句將開始運(yùn)行,并能夠?yàn)槟闼褂谩?/strong>

    你可以直接導(dǎo)入位于當(dāng)前目錄的模塊。否則,你必須將你的模塊放置在sys.path 內(nèi)所列出的目錄中。另外要注意的是當(dāng)前目錄指的是程序啟動(dòng)的目錄。你可以通過運(yùn)行 import os;print(os.getcwd()) 來查看你的程序目前所處在的目錄。

    3 .pyc文件?

      按字節(jié)碼編譯的文件。.pyc 文件在你下一次從其它不同的程序?qū)肽K時(shí)非常有用——它將更加快速,因?yàn)閷?dǎo)入模塊時(shí)所需要的一部分處理工作已經(jīng)完成了。同時(shí),這些按字節(jié)碼編譯的文件是獨(dú)立于運(yùn)行平臺(tái)的。

    注意:這些 .pyc 文件通常會(huì)創(chuàng)建在與對(duì)應(yīng)的 .py 文件所處的目錄中。如果 Python 沒有相應(yīng)的權(quán)限對(duì)這一目錄進(jìn)行寫入文件的操作,那么 .pyc 文件將不會(huì)被創(chuàng)建。

    4 from..import語句。

  • 常規(guī)用法(包含從同級(jí).py文件中引入函數(shù)或者變量):
  • from math import sqrt print("Square root of 16 is", sqrt(16)) #結(jié)果輸出 Square root of 16 is 4.0

    ?

      2 從自定義包中引入包中.py的函數(shù):例如? from mypacket.hello import *

    from util import MongoUtil # from util.MongoUtil import *#如果是第一種方法,則使用MongoUtil內(nèi)部函數(shù)時(shí)候,需要MongoUtil.function() #如果用第二種方法,則不用加前綴,可以直接使用。

    ?

    5 模塊的__name__屬性

    確定模塊是獨(dú)立運(yùn)行的還是被導(dǎo)入進(jìn)來運(yùn)行 ,例如:

    #在test.py文件中寫入如下代碼: if __name__ == '__main__':print('This program is being run by itself') else:print('I am being imported from another module') #運(yùn)行以后輸出This program is being run by itself#在同一目錄下新建test2.py文件,輸入 import test #運(yùn)行以后輸出I am being imported from another module'

    6 編寫自己的模塊

    #在mymodule.py中寫入如下代碼 def say_hi(): print('Hi, this is mymodule speaking.') __version__ = '0.1'#另一個(gè)模塊mymodule_demo.py中寫入如下測(cè)試代碼:: import mymodulemymodule.say_hi() print('Version', mymodule.__version__)#另外一種導(dǎo)入方式 from mymodule import say_hi,__version__say_hi() print("version",__version__)

    注意:自己的模塊應(yīng)該放置于與其它我們即將導(dǎo)入這一模塊的程序相同的目錄下,或者放置在sys.path所列出的其中一個(gè)目錄下。
    7 dir函數(shù)

    內(nèi)置的 dir() 函數(shù)能夠返回由對(duì)象所定義的名稱列表 ,例如;

    import sys print(dir(sys)) #結(jié)果 ['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_getframe', '_home', '_mercurial', '_xoptions', 'api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions', 'winver']

    8 包
    變量通常位于函數(shù)內(nèi)部,函數(shù)與全局變量通常位于模塊內(nèi)部。如果你希望組織起這些模塊的話,應(yīng)該怎么辦?這便是包

    包是指一個(gè)包含模塊與一個(gè)特殊的 __init__.py 文件的文件夾,后者向 Python 表明這一文
    件夾是特別的,因?yàn)槠浒?Python 模塊

    ?

    注:參考《byte-of-python-chinese-edition》

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/buptzlb/p/7538382.html

    總結(jié)

    以上是生活随笔為你收集整理的五、python模块以及包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。