Python中sys模塊功能與用法實例詳解
本文實例講述了Python中sys模塊功能與用法。分享給大家供大家參考,具體如下:
sys-系統特定的參數和功能該模塊提供對解釋器使用或維護的一些變量的訪問,以及與解釋器強烈交互的函數。它始終可用。
sys.argv 傳遞給Python腳本的命令行參數列表。argv[0]是腳本名稱(依賴于操作系統,無論這是否是完整路徑名)。如果使用-c解釋器的命令行選項執行命令,argv[0]則將其設置為字符串’-c’。如果沒有腳本名稱傳遞給Python解釋器,argv[0]則為空字符串。
要循環標準輸入或命令行上給出的文件列表,請參閱fileinput模塊。
sys.byteorder 本機字節順序的指示符。這將具有’big’big-endian(最重要的字節優先)平臺和’little’little-endian(最不重要的字節優先)平臺的價值。
2.0版本中的新功能
sys.builtin_module_names 一個字符串元組,給出了編譯到此Python解釋器中的所有模塊的名稱。(此信息不以任何其他方式提供 - modules.keys()僅列出導入的模塊。)
sys.call_tracing(func,args ) 呼叫func(*args),同時啟用跟蹤。跟蹤狀態被保存,然后恢復。這是從調試器從檢查點調用,以遞歸調試其他一些代碼。
sys.copyright 包含與Python解釋器相關的版權的字符串
sys._clear_type_cache() 清除內部類型緩存。類型緩存用于加速屬性和方法查找。僅在參考泄漏調試期間使用該函數刪除不必要的引用。
此功能僅用于內部和專門用途。
版本2.6中的新功能。
sys._current_frames() 返回一個字典,將每個線程的標識符映射到調用該函數時該線程中當前活動的最頂層堆棧幀。請注意,traceback模塊中的函數可以在給定這樣的幀的情況下構建調用堆棧。
這對于調試死鎖是最有用的:這個函數不需要死鎖線程的協作,只要這些線程的調用堆棧保持死鎖,它們就會被凍結。對于非死鎖線程返回的幀在調用代碼檢查幀時可能與該線程的當前活動沒有關系。
此功能僅用于內部和專門用途。
2.5版中的新功能。
sys.dllhandle
指定Python DLL句柄的整數。可用性:Windows。
sys.displayhook(值) 如果值不是None,則此函數sys.stdout將其打印到并保存builtin._。
sys.displayhook調用在 交互式Python會話中輸入的表達式的結果。可以通過為其分配另一個單參數函數來自定義這些值的顯示sys.displayhook。
sys.dont_write_bytecode 如果這是真的,Python將不會嘗試在源模塊的導入上編寫.pyc或.pyo文件。此值最初設置為True或 False取決于-B命令行選項和 PYTHONDONTWRITEBYTECODE 環境變量,但您可以自己設置它來控制字節碼文件的生成。
版本2.6中的新功能。
sys.excepthook(類型,值,回溯) 此函數打印出給定的回溯和異常sys.stderr。
當引發異常并且未被捕獲時,解釋器sys.excepthook使用三個參數調用 ,即異常類,異常實例和回溯對象。在交互式會話中,這發生在控制返回到提示之前; 在Python程序中,這發生在程序退出之前。可以通過為其分配另一個三參數函數來自定義此類頂級異常的處理sys.excepthook。
sys._displayhook_ sys._excepthook_ 這些對象包含的原始值displayhook,并excepthook 在程序的開始。它們被保存,以便displayhook和 excepthook情況下可以恢復他們碰巧得到破碎的對象替換。
sys.exc_info() 此函數返回三個值的元組,這些值提供有關當前正在處理的異常的信息。返回的信息特定于當前線程和當前堆棧幀。如果當前堆棧幀未處理異常,則從調用堆棧幀或其調用者獲取信息,依此類推,直到找到正在處理異常的堆棧幀。這里,“處理異常”被定義為“正在執行或已執行except子句。”對于任何堆棧幀,只能訪問有關最近處理的異常的信息。
如果堆棧中的任何位置都沒有處理異常,None則返回包含三個值的元組 。否則,返回的值是。它們的含義是:type獲取正在處理的異常的異常類型(類對象); value獲取異常參數(其 關聯值或第二個參數,如果異常類型是類對象,則始終為類實例); traceback 獲取一個回溯對象(參見參考手冊),該對象在最初發生異常的位置封裝調用堆棧。(type, value, traceback)raise
如果exc_clear()被調用,則此函數將返回三個None值,直到當前線程中引發另一個異常或執行堆棧返回到正在處理另一個異常的幀。
警告: 將回溯返回值分配給處理異常的函數中的局部變量將導致循環引用。這將阻止同一函數中的局部變量或回溯引用的任何內容被垃圾回收。由于大多數函數不需要訪問回溯,因此最好的解決方案是使用類似的方法來僅提取異常類型和值。如果確實需要回溯,請確保在使用后刪除它(最好使用 … 語句)或調用本身不處理異常的函數。exctype, value = sys.exc_info()[:2]tryfinallyexc_info()
注意 從Python 2.2開始,當啟用垃圾收集并且它們變得無法訪問時,這些周期會自動回收,但是避免創建周期仍然更有效。
sys.exc_clear() 此函數清除與當前線程中發生的當前或最后一個異常相關的所有信息。調用此函數后, exc_info()將返回三個None值,直到在當前線程中引發另一個異常,或者執行堆棧返回到正在處理另一個異常的幀。
僅在少數幾個不明顯的情況下才需要此功能。這些包括記錄有關最后或當前異常的信息的日志記錄和錯誤處理系統。此函數也可用于嘗試釋放資源并觸發對象最終化,但不保證將釋放哪些對象(如果有)。
版本2.3中的新功能。
sys.exc_type sys.exc_value sys.exc_traceback
從版本1.5開始不推薦使用:exc_info()改為使用。
由于它們是全局變量,因此它們并不特定于當前線程,因此在多線程程序中它們的使用并不安全。當沒有處理異常時,exc_type設置為None,其他兩個未定義。
sys.exec_prefix 一個字符串,給出了特定于站點的目錄前綴,其中安裝了與平臺相關的Python文件; 默認情況下,這也是’/usr/local’。這可以在構建時使用configure腳本的?exec-prefix參數 進行設置。具體來說,所有配置文件(例如 頭文件)都安裝在目錄中,并且安裝了 共享庫模塊,其中XY 是Python的版本號。pyconfig.hexec_prefix/lib/pythonX.Y/configexec_prefix/lib/pythonX.Y/lib-dynload2.7
sys.executable 一個字符串,給出Python解釋器的可執行二進制文件的絕對路徑,在有意義的系統上。如果Python無法檢索其可執行文件的真實路徑,sys.executable則將為空字符串或None。
sys.exit([ arg ] ) 退出Python。這是通過引發SystemExit 異常來實現的,因此遵循finally語句的子句所指定的清理操作try ,并且可以攔截外層的退出嘗試。
可選參數arg可以是一個整數,給出退出狀態(默認為零)或其他類型的對象。如果它是整數,則零被認為是“成功終止”,并且任何非零值被貝殼等視為“異常終止”。大多數系統要求它在0-127范圍內,否則會產生不確定的結果。有些系統具有為特定退出代碼指定特定含義的約定,但這些通常是不發達的; Unix程序通常使用2表示命令行語法錯誤,1表示所有其他類型的錯誤。如果傳遞了另一種類型的對象,None則相當于傳遞零,并且打印任何其他對象stderr并導致退出代碼為1.特別是sys.exit(“some error message”) 發生錯誤時退出程序的快速方法。
由于exit()最終“only”引發了一個異常,它只會在從主線程調用時退出進程,并且異常不會被截獲。
sys.exitfunc 該值實際上不是由模塊定義的,但可以由用戶(或程序)設置,以指定程序退出時的清理操作。設置時,它應該是無參數功能。解釋器退出時將調用此函數。這樣只能安裝一個功能; 要允許在終止時調用的多個函數,請使用該atexit模塊。
注意 當程序被信號殺死,檢測到Python致命內部錯誤或被調用時,不會調用exit函數os._exit()。
從版本2.4開始不推薦使用:atexit改為使用。
sys.flags struct sequence 標志公開命令行標志的狀態。屬性是只讀的。
屬性 旗 debug -d py3k_warning -3 division_warning -Q division_new -Qnew inspect -i interactive -i optimize -O 要么 -OO dont_write_bytecode -B no_user_site -s no_site -S ignore_environment -E tabcheck -t 要么 -tt verbose -v unicode -U bytes_warning -b hash_randomization -R版本2.6中的新功能。
在新版本2.7.3:該hash_randomization屬性。
sys.float_info structseq保存有關float類型的信息。它包含有關精度和內部表示的低級信息。這些值對應于float.h’C’編程語言的標準頭文件中定義的各種浮點常量; 有關詳細信息,請參見1999 ISO / IEC C標準[C99]第5.2.4.2.2節“浮動類型的特性”。
屬性 float.h宏 說明 epsilon DBL_EPSILON 1和最小值之間的差值大于1,可表示為浮點數 dig DBL_DIG 可以在浮點數中忠實表示的最大小數位數; 見下文 mant_dig DBL_MANT_DIG float precision:float radix 的有效位數中的基數 max DBL_MAX 最大可表示的有限浮點數 max_exp DBL_MAX_EXP 最大整數e,這radix**(e-1)是一個可表示的有限浮點數 max_10_exp DBL_MAX_10_EXP 最大整數e,使得10**e它在可表示的有限浮點范圍內 min DBL_MIN 最小正標準化浮點數 min_exp DBL_MIN_EXP 最小整數e,這radix**(e-1)是一個標準化的浮點數 min_10_exp DBL_MIN_10_EXP 最小整數e,這10**e是一個標準化的浮點數 radix FLT_RADIX 指數表示的基數 rounds FLT_ROUNDS 整數常量,表示用于算術運算的舍入模式。這反映了解釋器啟動時系統FLT_ROUNDS宏的值。有關可能該屬性sys.float_info.dig需要進一步解釋。如果 s任何字符串表示具有最多sys.float_info.dig有效數字的十進制 數字,則轉換s為float并再次返回將恢復表示相同十進制值的字符串:
>>> import sys>>> sys.float_info.dig15>>> s = ’3.14159265358979’ # decimal string with 15 significant digits>>> format(float(s), ’.15g’) # convert to float and back -> same value’3.14159265358979’
但對于具有多位sys.float_info.dig有效數字的字符串,并非總是如此:
>>> s = ’9876543211234567’ # 16 significant digits is too many!>>> format(float(s), ’.16g’) # conversion changes value’9876543211234568’
版本2.6中的新功能。
sys.float_repr_style 一個字符串,指示repr()函數對浮點數的行為方式。如果字符串具有值,’short’則對于有限浮點數x,repr(x)旨在生成具有該屬性的短字符串。這是Python 2.7及更高版本中的常見行為。否則,其值 和行為方式與2.7之前的Python版本相同。float(repr(x)) == xfloat_repr_style’legacy’repr(x)
版本2.7中的新功能。
sys.getcheckinterval() 返回口譯員的“檢查間隔”; 看setcheckinterval()。
版本2.3中的新功能。
sys.getdefaultencoding() 返回Unicode實現使用的當前默認字符串編碼的名稱。
2.0版中的新功能。
sys.getdlopenflags() 返回用于dlopen()調用的標志的當前值。標志常量在dl和DLFCN模塊中定義。可用性:Unix。
版本2.2中的新功能。
sys.getfilesystemencoding() 返回用于將Unicode文件名轉換為系統文件名的None編碼名稱,或者是否使用系統默認編碼。結果值取決于操作系統:
在Mac OS X上,編碼是’utf-8’。 在Unix上,根據nl_langinfo(CODESET)的結果,或者None如果nl_langinfo(CODESET) 失敗,編碼是用戶的首選項。 在Windows NT +上,文件名本身是Unicode,因此不執行任何轉換。getfilesystemencoding()仍然返回’mbcs’,因為這是應用程序在明確要將Unicode字符串轉換為用作文件名時等效的字節字符串時應使用的編碼。 在Windows 9x上,編碼是’mbcs’。 版本2.3中的新功能。
sys.getrefcount(對象) 返回對象的引用計數。返回的計數通常比您預期的高一個,因為它包含(臨時)引用作為參數getrefcount()。
sys.getrecursionlimit() 返回遞歸限制的當前值,即Python解釋器堆棧的最大深度。此限制可防止無限遞歸導致C堆棧溢出并導致Python崩潰。它可以設置 setrecursionlimit()。
sys.getsizeof(對象[,默認] ) 以字節為單位返回對象的大小。對象可以是任何類型的對象。所有內置對象都將返回正確的結果,但這不一定適用于第三方擴展,因為它是特定于實現的。
如果給定,則如果對象未提供檢索大小的方法,則將返回default。否則TypeError將被提出。
getsizeof()sizeof如果對象由垃圾收集器管理,則調用該對象的方法并添加額外的垃圾收集器開銷。
版本2.6中的新功能。
sys._getframe([ 深度] ) 從調用堆棧返回一個框架對象。如果給出了可選的整數深度,則返回堆棧頂部下方多次調用的幀對象。如果它比調用堆棧更深,ValueError則引發。深度的默認值為零,返回調用堆棧頂部的幀。
CPython實現細節:此函數僅用于內部和專用目的。并不保證在Python的所有實現中都存在。
sys.getprofile() 獲取設置的探查器功能setprofile()。
版本2.6中的新功能。
sys.gettrace() 獲取設置的跟蹤功能settrace()。
CPython實現細節:該gettrace()函數僅用于實現調試器,分析器,覆蓋工具等。它的行為是實現平臺的一部分,而不是語言定義的一部分,因此可能并非在所有Python實現中都可用。
版本2.6中的新功能。
sys.getwindowsversion() 返回一個描述當前正在運行的Windows版本的命名元組。命名元素是major,minor, build,platform,service_pack,service_pack_minor, service_pack_major,suite_mask和product_type。 service_pack包含一個字符串,而所有其他值都是整數。組件也可以通過名稱訪問,因此 sys.getwindowsversion()[0]相當于 sys.getwindowsversion().major。為了與先前版本兼容,只能通過索引檢索前5個元素。
平臺可能是以下值之一:
不變 平臺 0 (VER_PLATFORM_WIN32s) Windows 3.1上的Win32s 1 (VER_PLATFORM_WIN32_WINDOWS) Windows 95/98 / ME 2 (VER_PLATFORM_WIN32_NT) Windows NT / 2000 / XP / x64 3 (VER_PLATFORM_WIN32_CE) Windows CEproduct_type可能是以下值之一:
不變 含義 1 (VER_NT_WORKSTATION) 該系統是一個工作站。 2 (VER_NT_DOMAIN_CONTROLLER) 該系統是域控制器。 3 (VER_NT_SERVER) 系統是服務器,但不是域控制器。這個函數包裝了Win32 GetVersionEx()函數; OSVERSIONINFOEX()有關這些字段的詳細信息,請參閱Microsoft文檔。
可用性:Windows。
版本2.3中的新功能。
在2.7版中更改:更改為命名元組并添加了service_pack_minor, service_pack_major,suite_mask和product_type。
sys.hexversion 版本號編碼為單個整數。每個版本都保證會增加,包括對非生產版本的適當支持。例如,要測試Python解釋器至少是1.5.2版,請使用:
if sys.hexversion >= 0x010502F0: # use some advanced feature ...else: # use an alternative implementation or warn the user ...
這被調用,hexversion因為它只是在將其作為將其傳遞給內置hex()函數的結果時才真正看起來有意義。該 version_info值可以用于對人工友好的相同信息的編碼。
這hexversion是一個32位數字,具有以下布局:
比特(大端序) 含義 1-8 PY_MAJOR_VERSION (2在 2.1.0a3) 9-16 PY_MINOR_VERSION (1在 2.1.0a3) 17-24 PY_MICRO_VERSION (0在 2.1.0a3) 25-28 PY_RELEASE_LEVEL (0xA用于alpha, 0xB用于beta,0xC用于候選發布版和0xF最終版) 29-32 PY_RELEASE_SERIAL (在3中 2.1.0a3,零為最終釋放)因此2.1.0a3是hexversion 0x020100a3。
1.5.2版中的新功能。
sys.long_info 一個結構序列,包含有關Python內部整數表示的信息。屬性是只讀的。
屬性 說明 bits_per_digit 每個數字中保持的位數。Python整數存儲在base的內部 2**long_info.bits_per_digit sizeof_digit 用于表示數字的C類型的字節大小版本2.7中的新功能。
sys.last_type sys.last_value sys.last_traceback 這三個變量并不總是定義的; 它們在未處理異常時設置,并且解釋器打印錯誤消息和堆棧回溯。它們的用途是允許交互式用戶導入調試器模塊并進行事后調試,而無需重新執行導致錯誤的命令。(典型用法是進入事后調試器; 有關詳細信息,請參閱pdb一章- Python調試器。)import pdb; pdb.pm()
變量的含義與exc_info()上面的返回值相同 。(由于只有一個交互式線程,因此線程安全性不是這些變量的關注點,不像exc_type 等等)
sys.maxint Python常規整數類型支持的最大正整數。這至少是2 ** 31-1。最大的負整數是-maxint-1- 使用2的補碼二進制算法產生的不對稱性。
sys.maxsize 平臺的Py_ssize_t類型支持的最大正整數,因此最大大小的列表,字符串,dicts和許多其他容器都可以。
sys.maxunicode 一個整數,表示Unicode字符支持的最大代碼點。其值取決于配置選項,該選項指定Unicode字符是存儲為UCS-2還是UCS-4。
sys.meta_path 調用其方法的finder對象列表,find_module()以查看其中一個對象是否可以找到要導入的模塊。find_module()至少使用要導入的模塊的絕對名稱調用該方法。如果要導入的模塊包含在包中,則父包的path屬性作為第二個參數傳入。None如果找不到模塊,則返回該方法,否則返回加載器。
sys.meta_path在任何隱式默認查找器或之前搜索 sys.path。
看到 PEP 302用于原始規范。
sys.modules 這是一個將模塊名稱映射到已加載的模塊的字典。這可以被操縱以強制重新加載模塊和其他技巧。注意,從本字典移除模塊是不與調用 reload()相應的模塊對象上。
sys.path 一個字符串列表,指定模塊的搜索路徑。從環境變量初始化PYTHONPATH,加上依賴于安裝的默認值。
在程序啟動時初始化時,此列表的第一項path[0]是包含用于調用Python解釋器的腳本的目錄。如果腳本目錄不可用(例如,如果以交互方式調用解釋器或者從標準輸入讀取腳本), path[0]則是空字符串,它指示Python首先搜索當前目錄中的模塊。請注意,腳本目錄是在插入 條目之前插入的PYTHONPATH。
程序可以自行修改此列表。
在版本2.3中更改:不再忽略Unicode字符串。
sys.path_hooks 一個callables列表,它采用path參數來嘗試為路徑創建 finder。如果可以創建一個查找程序,它將由callable返回,否則加注ImportError。
最初指定于 PEP 302。
sys.path_importer_cache 充當查找程序對象緩存的字典。鍵是已傳遞到的路徑,sys.path_hooks值是找到的查找程序。如果路徑是有效的文件系統路徑但未找到顯式查找器,sys.path_hooks則None存儲表示應使用隱式默認查找器。如果路徑不是現有路徑,則imp.NullImporter設置。
最初指定于 PEP 302。
sys.platform 例如,該字符串包含一個平臺標識符,可用于附加特定于平臺的組件sys.path。
對于大多數Unix系統,這是由附加返回的版本的第一部分返回的小寫OS名稱,例如,在構建Python時。除非您要測試特定的系統版本,否則建議使用以下習慣用法:uname -suname -r’sunos5’
if sys.platform.startswith(’freebsd’): # FreeBSD-specific code here...elif sys.platform.startswith(’linux’): # Linux-specific code here...
版本2.7.3中更改:由于大量代碼檢查,并且Linux 2.x和3.x之間沒有必要的更改,因此即使在Linux 3.x上也始終設置為。在Python 3.3及更高版本中,該值將始終設置為,因此建議始終使用上面提到的習語。sys.platform == ‘linux2’sys.platform’linux2”linux’startswith
對于其他系統,值為:
系統 platform值 Linux(2.x 和 3.x) ‘linux2’ 視窗 ‘win32’ 在Windows / Cygwin的 ‘cygwin’ Mac OS X. ‘darwin’ OS / 2 ‘os2’ OS / 2 EMX ‘os2emx’ 里斯科斯 ‘riscos’ AtheOS ‘atheos’也可以看看 os.name具有更粗糙的粒度。 os.uname()提供依賴于系統的版本信息。 該platform模塊提供系統身份的詳細檢查。
sys.prefix 一個字符串,給出了特定于站點的目錄前綴,其中安裝了與平臺無關的Python文件; 默認情況下,這是字符串 ‘/usr/local’。這可以在構建時使用configure腳本的?prefix 參數進行設置。Python庫模塊的主要集合安裝在目錄中, 而平臺獨立的頭文件(所有除外)存儲在其中,其中XY是例如Python的版本號。prefix/lib/pythonX.Ypyconfig.hprefix/include/pythonX.Y2.7
sys.ps1 sys.ps2 指定解釋器的主要和輔助提示的字符串。僅在解釋器處于交互模式時才定義這些。在這種情況下,它們的初始值是和。如果將非字符串對象分配給任一變量,則每次解釋器準備讀取新的交互式命令時都會重新評估該變量。這可以用來實現動態提示。’>>> ”… ‘str()
sys.py3kwarning Bool包含Python 3警告標志的狀態。這True 是使用-3選項啟動Python 的時候。(這應該被認為是只讀的;將其設置為不同的值對Python 3警告沒有影響。)
版本2.6中的新功能。
sys.setcheckinterval(間隔) 設置解釋器的“檢查間隔”。此整數值確定解釋器檢查周期性事物(如線程切換和信號處理程序)的頻率。默認值是100,意味著每100條Python虛擬指令執行一次檢查。將其設置為更大的值可能會提高使用線程的程序的性能。將其設置為值<=0將檢查每個虛擬指令,從而最大限度地提高響應速度和開銷。
sys.setdefaultencoding(名字) 設置Unicode實現使用的當前默認字符串編碼。如果 name與任何可用編碼不匹配,LookupError則引發。此功能僅供site模塊實現使用,并在需要時由sitecustomize。一旦 site模塊使用,它就會從sys模塊的命名空間中刪除。
2.0版中的新功能。
sys.setdlopenflags(n ) 設置解釋器用于dlopen()調用的標志,例如解釋器加載擴展模塊時。除此之外,這將在導入模塊時啟用符號的惰性解析(如果被稱為) sys.setdlopenflags(0)。要在擴展模塊之間共享符號,請調用 。標志模塊的符號名稱可以在模塊中找到,也可以在模塊中找到 。如果不可用,則可以使用h2py腳本生成它 。可用性:Unix。sys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL)dlDLFCNDLFCN/usr/include/dlfcn.h
版本2.2中的新功能。
sys.setprofile(profilefunc ) 設置系統的配置文件功能,允許您在Python中實現Python源代碼分析器。有關Python探查器的更多信息,請參閱Python Profilers一章。系統的配置文件函數的調用類似于系統的跟蹤函數(請參閱參考資料settrace()),但是它使用不同的事件進行調用,例如,不會為每個執行的代碼行調用它(僅在調用和返回時調用它,但會報告返回事件即使設置了異常)。該函數是特定于線程的,但是探查器無法知道線程之間的上下文切換,因此在存在多個線程時使用它是沒有意義的。此外,它的返回值沒有使用,所以它可以簡單地返回None。
配置文件函數應該有三個參數:frame,event和 arg。frame是當前的堆棧幀。 事件是一個字符串:’call’, ‘return’,’c_call’,’c_return’,或’c_exception’。arg取決于事件類型。
事件具有以下含義:
’call’ 調用一個函數(或輸入一些其他代碼塊)。調用配置文件功能; arg是None。’return’ 函數(或其他代碼塊)即將返回。調用配置文件功能; arg是將返回的值,或者None 事件是由引發的異常引起的。’c_call’ AC功能即將被調用。這可以是擴展功能或內置功能。 arg是C函數對象。’c_return’AC功能已返回。arg是C函數對象。’c_exception’AC功能引發了異常。 arg是C函數對象。
sys.setrecursionlimit(限制) 設置Python解釋器堆棧的最大深度以限制。此限制可防止無限遞歸導致C堆棧溢出并導致Python崩潰。
最高可能的限制取決于平臺。當用戶需要深度遞歸的程序和支持更高限制的平臺時,用戶可能需要設置更高的限制。這應該小心,因為太高的限制可能導致崩潰。
sys.settrace(tracefunc ) 設置系統的跟蹤功能,允許您在Python中實現Python源代碼調試器。該函數是特定于線程的; 對于支持多線程的調試器,必須settrace()為每個正在調試的線程注冊它 。
跟蹤函數應該有三個參數:frame,event和 arg。frame是當前的堆棧幀。 事件是一個字符串:’call’, ‘line’,’return’或’exception’。 arg取決于事件類型。
每當輸入新的本地范圍時,都會調用跟蹤函數(事件設置為’call’); 它應該返回對該范圍使用的本地跟蹤函數的引用,或者None是否應該跟蹤范圍。
本地跟蹤函數應該返回對自身的引用(或者返回另一個函數以便在該范圍內進一步跟蹤),或者None關閉該范圍內的跟蹤。
事件具有以下含義:
’call’調用一個函數(或輸入一些其他代碼塊)。調用全局跟蹤函數; arg是None; 返回值指定本地跟蹤功能。’line’解釋器即將執行新的代碼行或重新執行循環的條件。調用本地跟蹤功能; arg是 None; 返回值指定新的本地跟蹤功能。有關Objects/lnotab_notes.txt其工作原理的詳細說明,請參閱 。’return’函數(或其他代碼塊)即將返回。調用本地跟蹤功能; arg是將返回的值,或者None 事件是由引發的異常引起的。跟蹤函數的返回值被忽略。’exception’發生了一個例外。調用本地跟蹤功能; arg是一個元組; 返回值指定新的本地跟蹤功能。(exception, value, traceback)
請注意,由于異常沿著調用者鏈向下傳播,因此’exception’會在每個級別生成一個 事件。
有關代碼和框架對象的更多信息,請參閱標準類型層次結構。
CPython實現細節:該settrace()函數僅用于實現調試器,分析器,覆蓋工具等。它的行為是實現平臺的一部分,而不是語言定義的一部分,因此可能并非在所有Python實現中都可用。
sys.settscdump(on_flag ) 如果on_flag為true ,則使用Pentium時間戳計數器激活VM測量的轉儲 。如果on_flag關閉,請停用這些轉儲。只有在編譯Python時,該函數才可用?with-tsc。要了解此轉儲的輸出,請閱讀Python/ceval.cPython源代碼。
版本2.4中的新功能。
CPython實現細節:此函數與CPython實現細節密切相關,因此不太可能在其他地方實現。
sys.stdin sys.stdout sys.stderr 與解釋器的標準輸入,輸出和錯誤流相對應的文件對象。 stdin用于除腳本之外的所有解釋器輸入,但包括對input()和的調用raw_input()。 stdout用于輸出print和表達語句和用于提示input()和raw_input()。解釋器自己的提示和(幾乎所有)其錯誤消息都會轉到stderr。 stdout并且 stderr不需要是內置文件對象:任何對象都是可接受的,只要它有一個write()帶字符串參數的方法即可。(改變這些對象不影響標準的由執行的處理I / O流 os.popen(),os.system()或所述exec*()的函數家族os模塊。)
sys._stdin_ sys._stdout_ sys._stderr_ 這些對象包含的原始值stdin,stderr并 stdout在程序的開始。它們在最終確定期間使用,無論sys.std*對象是否已被重定向,它都可用于打印到實際的標準流 。
它還可以用于將實際文件還原到已知的工作文件對象,以防它們被破壞的對象覆蓋。但是,執行此操作的首選方法是在替換之前顯式保存先前的流,并還原已保存的對象。
sys.subversion 表示Python解釋器的Subversion信息的三元組(repo,branch,version)。repo是存儲庫的名稱’CPython’。 branch是一個表單的字符串’trunk’,’branches/name’或 ‘tags/name’。如果解釋器是從Subversion結帳構建的,則version是輸出svnversion; 它包含修訂號(范圍),如果有本地修改,可能包含尾隨’M’。如果樹被導出(或者svnversion不可用),那么它是Include/patchlevel.h分支是標記的修訂版 。否則就是None。
2.5版中的新功能。
注意 Python現在使用Mercurial 開發。因此,在最近的Python 2.7 bugfix版本中,subversion 包含占位符信息。它在Python 3.3中被刪除。
sys.tracebacklimit 當此變量設置為整數值時,它確定發生未處理的異常時打印的最大回溯信息級別數。默認是1000。設置為0或更小時,將抑制所有回溯信息,并僅打印異常類型和值。
sys.version 一個字符串,包含Python解釋器的版本號以及有關使用的內部版本號和編譯器的附加信息。啟動交互式解釋器時會顯示此字符串。不要從中提取版本信息,而是使用模塊version_info提供的功能 platform。
sys.api_version 此解釋器的C API版本。在調試Python和擴展模塊之間的版本沖突時,程序員可能會發現這很有用。
版本2.3中的新功能。
sys.version_info 包含版本號的五個組件的元組:major,minor, micro,releaselevel和serial。除releaselevel之外的所有值都是整數; 釋放水平’alpha’,’beta’,’candidate’,或 ‘final’。version_info對應于Python 2.0版的值是。組件也可以通過名稱訪問,因此等同于 等等。(2, 0, 0, ‘final’, 0)sys.version_info[0]sys.version_info.major
2.0版中的新功能。
在2.7版中更改:添加了命名組件屬性
sys.warnoptions 這是警告框架的實現細節; 不要修改此值。warnings有關警告框架的更多信息,請參閱該模塊。
sys.winver 用于在Windows平臺上形成注冊表項的版本號。它作為字符串資源1000存儲在Python DLL中。該值通常是前三個字符version。它在sys 模塊中提供,用于提供信息; 修改此值對Python使用的注冊表項沒有影響。可用性:Windows。
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python函數使用技巧總結》、《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
相關文章: