五、python模塊以及包

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

1 模塊的寫法:

  1. 創建一個.py文件,該文件中包含函數與變量。
  2. 使用撰寫python解釋器本身的本地語言來編寫模塊。比如使用C代碼編寫python模塊,并且在編譯后,可以通過標準的python解釋器在你的python代碼中使用它們。

2 使用標準庫模塊例子sys 模塊包含了與 Python 解釋器及其環境相關的功能,也就是所謂的系統功能( 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'] 

分析:在這一案例中,由于其是一個內置模塊,因此 Python 知道應該在哪里找到它。如果它不是一個已編譯好的模塊,即用 Python 編寫的模塊,那么 Python 解釋器將從它的sys.path 變量所提供的目錄中進行搜索。如果找到了對應模塊,則該模塊中的語句將開始運行,并能夠為你所使用。

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

3 .pyc文件?

  按字節碼編譯的文件。.pyc 文件在你下一次從其它不同的程序導入模塊時非常有用——它將更加快速,因為導入模塊時所需要的一部分處理工作已經完成了。同時,這些按字節碼編譯的文件是獨立于運行平臺的。

注意:這些 .pyc 文件通常會創建在與對應的 .py 文件所處的目錄中。如果 Python 沒有相應的權限對這一目錄進行寫入文件的操作,那么 .pyc 文件將不會被創建。

4 from..import語句。

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

?

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

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

?

5 模塊的__name__屬性

確定模塊是獨立運行的還是被導入進來運行 ,例如:

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

6 編寫自己的模塊

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

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

內置的 dir() 函數能夠返回由對象所定義的名稱列表 ,例如;

import sys
print(dir(sys))
#結果
['__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 包
變量通常位于函數內部,函數與全局變量通常位于模塊內部。如果你希望組織起這些模塊的話,應該怎么辦?這便是包

包是指一個包含模塊與一個特殊的 __init__.py 文件的文件夾,后者向 Python 表明這一文
件夾是特別的,因為其包含了 Python 模塊

?

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

?

轉載于:https://www.cnblogs.com/buptzlb/p/7538382.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253383.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253383.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253383.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jeecg選擇按鈕帶入其他單據值

前端的標簽 <input class"inputxt" id"fshimian" name"fshimian" ignore"ignore" datatype"*" value"${shizhePage.fshimian}" /> <t:choose hiddenName"fshimian" hiddenid"fname"…

alsa編程

alsa 編程 分類&#xff1a; linux 2012-08-18 20:13 124人閱讀 評論(0) 收藏 舉報 編程parametersbufferloopsaccessplayback轉載自&#xff1a;http://blog.csdn.net/spygg/article/details/7824750 ALSA(Advanced Linux Sound Architecture)是由內核驅動,標準的API庫和一系…

Fiddler4入門——手機抓包

一、下載工具包 百度搜索”fiddler 下載“ &#xff0c;安裝最新版本 下載的軟件安裝包為“fiddler_4.6.20171.26113_setup.exe”格式&#xff0c;雙擊安裝。安裝成功&#xff0c;在“開始”-“所有程序”&#xff0c;就會看見這樣的圖標&#xff0c;若是常用的話&#xff0c;也…

Node.js Performance

https://blog.risingstack.com/node-js-performance-monitoring-with-prometheus/轉載于:https://www.cnblogs.com/skating/p/7544838.html

(五)DOM4j進行XML文件的解析及生成

DOM4j本身還是需要使用SAX建立解析器&#xff0c;然后通過文檔依次找到根節點&#xff0c;再通過根節點查找每一個節點的內容. 1.寫操作 import java.io.File;import java.io.FileOutputStream;import java.util.Iterator; import org.dom4j.Document;import org.dom4j.Documen…

Linux系統基礎.作業

要求以root用戶登錄系統&#xff0c;右擊桌面打開終端&#xff0c;查看當前登陸Linux系統所使用的用戶名 查看哪些用戶在系統上工作 修改當前時間為2018年8月26號11:28 查看2015年10月份日歷 使用兩種方法查看ls命令的使用說明 清除屏幕 ctrlL使用“useradd tom”命令新建tom用…

Alsa中PCM參數設置

分類&#xff1a; LINUX 1) PCM設備的句柄.2) 指定同時可供回放或截獲的PCM流的方向3) 提供一些關于我們想要使用的設置選項的信息,比如緩沖區大小,采樣率,PCM數據格式等4) 檢查硬件是否支持設置選項.4.1) 初始化PCM變量4.2) 分配hwparams結構4.3) 打開PCM設備4.4) 以聲卡的全部…

java5

java基礎&#xff08;五&#xff09;命名規則&#xff1a; 名字中只能包含->字母、_、數字、$&#xff0c;且開頭不能為數字包名必須都小寫文件名首字母和后面英文文件單詞首字母都要大寫變量和方法名 首字母小寫&#xff0c;后面英文單詞首字母大寫java中的方法&#xff1a…

最新歷史版本 :H.265

原來對264有深入的研究&#xff0c;現在想詳細了解下265啦&#xff0c;愿265盡快廣泛的使用起來&#xff0c;人們可以享受無處不在的視覺盛宴。 H.265是ITU-T VCEG 繼H.264之后所制定的新的視頻編碼標準。H.265標準圍繞著現有的視頻編碼標準H.264&#xff0c;保留原來的某些技術…

凱撒密碼、GDP格式化輸出、99乘法表

1.愷撒密碼的編碼 sinput(請輸入明文:) print(密文為:) for i in s:print(chr(ord(i)3),end)運行結果為&#xff1a; 2.國家名稱 GDP總量&#xff08;人民幣億元&#xff09; 中國 &#xffe5;765873.4375 澳大利亞 &#xffe5; 78312.4375 &#xff08;國家名稱左對齊&am…

【BZOJ3453】XLkxc [拉格朗日插值法]

XLkxc Time Limit: 20 Sec Memory Limit: 128 MB[Submit][Status][Discuss]Description 給定 k,a,n,d,p  f(i)1^k2^k3^k......i^k  g(x)f(1)f(2)f(3)....f(x)  求(g(a)g(ad)g(a2d)......g(and))mod p Input 第一行數據組數&#xff0c;(保證小于6)  以下每行四個整數 …

hive安裝

雷頓學院大數據雷頓學院大數據&#xff1a;http://www.leidun.site/hive安裝下載hivehttp://mirror.bit.edu.cn/apache/hive/下載后解壓配置命令將hive加入命令vim ~/.bash_profile添加如下命令export HIVE_HOME/usr/local/Cellar/hive/1.2.1/libexec保存文件mysql數據庫驅動cu…

JavaFX常用匯總

1. 描述備注 1.1 參考教程 博客 易百教程 JavaFX中國 1.5 安裝 a). 在線安裝e(fx)clipse插件 b). 下載安裝SceneBuilder c). eclipse重啟以后,windows->preference->javaFx->SceneBuilder executable選擇 上一步中安裝后的exe文件 2. 快速入門示例-MVC a). *.fxml文件…

Alsa驅動分析(轉)

1. Abstract 2. Introduction 3. 音頻驅動框架介紹 3.1 音頻設備的注冊 3.2 音頻驅動的注冊 3.2.1 Probe函數的調用 3.2.2 Soc_probe函數 4. 通常的使用流程的分析 4.1.1 open過程介紹 4.1.2 snd_pcm_hw_params流程分析 4.1.3 …

bzoj2744[HEOI2012]朋友圈

題目鏈接&#xff1a;bzoj2744 題目大意&#xff1a; 兩個國家看成是AB兩國&#xff0c;現在是兩個國家的描述&#xff1a; 1.A國&#xff1a;每個人都有一個友善值&#xff0c;當兩個A國人的友善值a、b&#xff0c;如果a xor b mod 21&#xff0c;那么這兩個人都是朋友&#x…

Linux之父為過去的言行道歉,宣布離開社區反思

9月17日&#xff0c;Linux 4.19-rc4發布&#xff0c;成為Linux 4.19最新的開發測試內核。這是現階段一個相當常規的內核更新&#xff0c;但令人震驚的是&#xff0c;Linux之父Linus Torvalds宣布將暫時離開內核維護社區&#xff0c;Greg Kroah-Hartman將接管接下來的Linux 4.19…

[BZOJ] 1620: [Usaco2008 Nov]Time Management 時間管理

1620: [Usaco2008 Nov]Time Management 時間管理 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 850 Solved: 539[Submit][Status][Discuss]Description Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. He has N jobs con…

面試-接口和純虛類的區別

相關資料&#xff1a;1.https://zhidao.baidu.com/question/91157279.html 純虛類:1.一個子類只能繼承一個抽象類&#xff08;虛類&#xff09;。2.一個抽象類可以有構造方法。 3.一個抽象類中的方法不一定是抽象方法&#xff0c;即其中的方法可以有實現&#xff08;有方法體&a…

TCP研究

tcp協議本身是可靠的,并不等于應用程序用tcp發送數據就一定是可靠的.不管是否阻塞,send發送的大小,并不代表對端recv到多少的數據 在阻塞模式下, send函數的過程是將應用程序請求發送的數據拷貝到發送緩存中發送并得到確認后再返回.但由于發送緩存的存在,表現為:如果發送緩存大…

DDR工作原理

DDR SDRAM全稱為Double Data Rate SDRAM&#xff0c;中文名為“雙倍數據流SDRAM”。DDR SDRAM在原有的SDRAM的基礎上改進而來。也正因為如此&#xff0c;DDR能夠憑借著轉產成本優勢來打敗昔日的對手RDRAM&#xff0c;成為當今的主流。本文只著重講講DDR的原理和DDR SDRAM相對于…