溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中sys模塊功能與用法實(shí)例詳解

發(fā)布時(shí)間:2020-09-18 21:31:36 來源:腳本之家 閱讀:245 作者:luckycyong 欄目:開發(fā)技術(shù)

本文實(shí)例講述了Python中sys模塊功能與用法。分享給大家供大家參考,具體如下:

sys-系統(tǒng)特定的參數(shù)和功能

該模塊提供對(duì)解釋器使用或維護(hù)的一些變量的訪問,以及與解釋器強(qiáng)烈交互的函數(shù)。它始終可用。

sys.argv
傳遞給Python腳本的命令行參數(shù)列表。argv[0]是腳本名稱(依賴于操作系統(tǒng),無論這是否是完整路徑名)。如果使用-c解釋器的命令行選項(xiàng)執(zhí)行命令,argv[0]則將其設(shè)置為字符串'-c'。如果沒有腳本名稱傳遞給Python解釋器,argv[0]則為空字符串。

要循環(huán)標(biāo)準(zhǔn)輸入或命令行上給出的文件列表,請(qǐng)參閱fileinput模塊。

sys.byteorder
本機(jī)字節(jié)順序的指示符。這將具有'big'big-endian(最重要的字節(jié)優(yōu)先)平臺(tái)和'little'little-endian(最不重要的字節(jié)優(yōu)先)平臺(tái)的價(jià)值。

2.0版本中的新功能

sys.builtin_module_names
一個(gè)字符串元組,給出了編譯到此Python解釋器中的所有模塊的名稱。(此信息不以任何其他方式提供 - modules.keys()僅列出導(dǎo)入的模塊。)

sys.call_tracing(func,args )
呼叫func(*args),同時(shí)啟用跟蹤。跟蹤狀態(tài)被保存,然后恢復(fù)。這是從調(diào)試器從檢查點(diǎn)調(diào)用,以遞歸調(diào)試其他一些代碼。

sys.copyright
包含與Python解釋器相關(guān)的版權(quán)的字符串

sys._clear_type_cache()
清除內(nèi)部類型緩存。類型緩存用于加速屬性和方法查找。僅在參考泄漏調(diào)試期間使用該函數(shù)刪除不必要的引用。

此功能僅用于內(nèi)部和專門用途。

版本2.6中的新功能。

sys._current_frames()
返回一個(gè)字典,將每個(gè)線程的標(biāo)識(shí)符映射到調(diào)用該函數(shù)時(shí)該線程中當(dāng)前活動(dòng)的最頂層堆棧幀。請(qǐng)注意,traceback模塊中的函數(shù)可以在給定這樣的幀的情況下構(gòu)建調(diào)用堆棧。

這對(duì)于調(diào)試死鎖是最有用的:這個(gè)函數(shù)不需要死鎖線程的協(xié)作,只要這些線程的調(diào)用堆棧保持死鎖,它們就會(huì)被凍結(jié)。對(duì)于非死鎖線程返回的幀在調(diào)用代碼檢查幀時(shí)可能與該線程的當(dāng)前活動(dòng)沒有關(guān)系。

此功能僅用于內(nèi)部和專門用途。

2.5版中的新功能。

sys.dllhandle

指定Python DLL句柄的整數(shù)??捎眯裕篧indows。

sys.displayhook(值)
如果值不是None,則此函數(shù)sys.stdout將其打印到并保存builtin._。

sys.displayhook調(diào)用在 交互式Python會(huì)話中輸入的表達(dá)式的結(jié)果??梢酝ㄟ^為其分配另一個(gè)單參數(shù)函數(shù)來自定義這些值的顯示sys.displayhook。

sys.dont_write_bytecode
如果這是真的,Python將不會(huì)嘗試在源模塊的導(dǎo)入上編寫.pyc或.pyo文件。此值最初設(shè)置為True或 False取決于-B命令行選項(xiàng)和 PYTHONDONTWRITEBYTECODE 環(huán)境變量,但您可以自己設(shè)置它來控制字節(jié)碼文件的生成。

版本2.6中的新功能。

sys.excepthook(類型,值,回溯)
此函數(shù)打印出給定的回溯和異常sys.stderr。

當(dāng)引發(fā)異常并且未被捕獲時(shí),解釋器sys.excepthook使用三個(gè)參數(shù)調(diào)用 ,即異常類,異常實(shí)例和回溯對(duì)象。在交互式會(huì)話中,這發(fā)生在控制返回到提示之前; 在Python程序中,這發(fā)生在程序退出之前。可以通過為其分配另一個(gè)三參數(shù)函數(shù)來自定義此類頂級(jí)異常的處理sys.excepthook。

sys._displayhook_
sys._excepthook_
這些對(duì)象包含的原始值displayhook,并excepthook 在程序的開始。它們被保存,以便displayhook和 excepthook情況下可以恢復(fù)他們碰巧得到破碎的對(duì)象替換。

sys.exc_info()
此函數(shù)返回三個(gè)值的元組,這些值提供有關(guān)當(dāng)前正在處理的異常的信息。返回的信息特定于當(dāng)前線程和當(dāng)前堆棧幀。如果當(dāng)前堆棧幀未處理異常,則從調(diào)用堆棧幀或其調(diào)用者獲取信息,依此類推,直到找到正在處理異常的堆棧幀。這里,“處理異?!北欢x為“正在執(zhí)行或已執(zhí)行except子句。”對(duì)于任何堆棧幀,只能訪問有關(guān)最近處理的異常的信息。

如果堆棧中的任何位置都沒有處理異常,None則返回包含三個(gè)值的元組 。否則,返回的值是。它們的含義是:type獲取正在處理的異常的異常類型(類對(duì)象); value獲取異常參數(shù)(其 關(guān)聯(lián)值或第二個(gè)參數(shù),如果異常類型是類對(duì)象,則始終為類實(shí)例); traceback 獲取一個(gè)回溯對(duì)象(參見參考手冊(cè)),該對(duì)象在最初發(fā)生異常的位置封裝調(diào)用堆棧。(type, value, traceback)raise

如果exc_clear()被調(diào)用,則此函數(shù)將返回三個(gè)None值,直到當(dāng)前線程中引發(fā)另一個(gè)異常或執(zhí)行堆棧返回到正在處理另一個(gè)異常的幀。

警告: 將回溯返回值分配給處理異常的函數(shù)中的局部變量將導(dǎo)致循環(huán)引用。這將阻止同一函數(shù)中的局部變量或回溯引用的任何內(nèi)容被垃圾回收。由于大多數(shù)函數(shù)不需要訪問回溯,因此最好的解決方案是使用類似的方法來僅提取異常類型和值。如果確實(shí)需要回溯,請(qǐng)確保在使用后刪除它(最好使用 … 語(yǔ)句)或調(diào)用本身不處理異常的函數(shù)。exctype, value = sys.exc_info()[:2]tryfinallyexc_info()


注意 從Python 2.2開始,當(dāng)啟用垃圾收集并且它們變得無法訪問時(shí),這些周期會(huì)自動(dòng)回收,但是避免創(chuàng)建周期仍然更有效。

sys.exc_clear()
此函數(shù)清除與當(dāng)前線程中發(fā)生的當(dāng)前或最后一個(gè)異常相關(guān)的所有信息。調(diào)用此函數(shù)后, exc_info()將返回三個(gè)None值,直到在當(dāng)前線程中引發(fā)另一個(gè)異常,或者執(zhí)行堆棧返回到正在處理另一個(gè)異常的幀。

僅在少數(shù)幾個(gè)不明顯的情況下才需要此功能。這些包括記錄有關(guān)最后或當(dāng)前異常的信息的日志記錄和錯(cuò)誤處理系統(tǒng)。此函數(shù)也可用于嘗試釋放資源并觸發(fā)對(duì)象最終化,但不保證將釋放哪些對(duì)象(如果有)。

版本2.3中的新功能。

sys.exc_type
sys.exc_value
sys.exc_traceback

從版本1.5開始不推薦使用:exc_info()改為使用。

由于它們是全局變量,因此它們并不特定于當(dāng)前線程,因此在多線程程序中它們的使用并不安全。當(dāng)沒有處理異常時(shí),exc_type設(shè)置為None,其他兩個(gè)未定義。

sys.exec_prefix
一個(gè)字符串,給出了特定于站點(diǎn)的目錄前綴,其中安裝了與平臺(tái)相關(guān)的Python文件; 默認(rèn)情況下,這也是'/usr/local'。這可以在構(gòu)建時(shí)使用configure腳本的–exec-prefix參數(shù) 進(jìn)行設(shè)置。具體來說,所有配置文件(例如 頭文件)都安裝在目錄中,并且安裝了 共享庫(kù)模塊,其中XY 是Python的版本號(hào)。pyconfig.hexec_prefix/lib/pythonX.Y/configexec_prefix/lib/pythonX.Y/lib-dynload2.7

sys.executable
一個(gè)字符串,給出Python解釋器的可執(zhí)行二進(jìn)制文件的絕對(duì)路徑,在有意義的系統(tǒng)上。如果Python無法檢索其可執(zhí)行文件的真實(shí)路徑,sys.executable則將為空字符串或None。

sys.exit([ arg ] )
退出Python。這是通過引發(fā)SystemExit 異常來實(shí)現(xiàn)的,因此遵循finally語(yǔ)句的子句所指定的清理操作try ,并且可以攔截外層的退出嘗試。

可選參數(shù)arg可以是一個(gè)整數(shù),給出退出狀態(tài)(默認(rèn)為零)或其他類型的對(duì)象。如果它是整數(shù),則零被認(rèn)為是“成功終止”,并且任何非零值被貝殼等視為“異常終止”。大多數(shù)系統(tǒng)要求它在0-127范圍內(nèi),否則會(huì)產(chǎn)生不確定的結(jié)果。有些系統(tǒng)具有為特定退出代碼指定特定含義的約定,但這些通常是不發(fā)達(dá)的; Unix程序通常使用2表示命令行語(yǔ)法錯(cuò)誤,1表示所有其他類型的錯(cuò)誤。如果傳遞了另一種類型的對(duì)象,None則相當(dāng)于傳遞零,并且打印任何其他對(duì)象stderr并導(dǎo)致退出代碼為1.特別是sys.exit(“some error message”) 發(fā)生錯(cuò)誤時(shí)退出程序的快速方法。

由于exit()最終“only”引發(fā)了一個(gè)異常,它只會(huì)在從主線程調(diào)用時(shí)退出進(jìn)程,并且異常不會(huì)被截獲。

sys.exitfunc
該值實(shí)際上不是由模塊定義的,但可以由用戶(或程序)設(shè)置,以指定程序退出時(shí)的清理操作。設(shè)置時(shí),它應(yīng)該是無參數(shù)功能。解釋器退出時(shí)將調(diào)用此函數(shù)。這樣只能安裝一個(gè)功能; 要允許在終止時(shí)調(diào)用的多個(gè)函數(shù),請(qǐng)使用該atexit模塊。

注意 當(dāng)程序被信號(hào)殺死,檢測(cè)到Python致命內(nèi)部錯(cuò)誤或被調(diào)用時(shí),不會(huì)調(diào)用exit函數(shù)os._exit()。


從版本2.4開始不推薦使用:atexit改為使用。

sys.flags
struct sequence 標(biāo)志公開命令行標(biāo)志的狀態(tài)。屬性是只讀的。

屬性
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保存有關(guān)float類型的信息。它包含有關(guān)精度和內(nèi)部表示的低級(jí)信息。這些值對(duì)應(yīng)于float.h'C'編程語(yǔ)言的標(biāo)準(zhǔn)頭文件中定義的各種浮點(diǎn)常量; 有關(guān)詳細(xì)信息,請(qǐng)參見1999 ISO / IEC C標(biāo)準(zhǔn)[C99]第5.2.4.2.2節(jié)“浮動(dòng)類型的特性”。

屬性 float.h宏 說明
epsilon DBL_EPSILON 1和最小值之間的差值大于1,可表示為浮點(diǎn)數(shù)
dig DBL_DIG 可以在浮點(diǎn)數(shù)中忠實(shí)表示的最大小數(shù)位數(shù); 見下文
mant_dig DBL_MANT_DIG float precision:float radix 的有效位數(shù)中的基數(shù)
max DBL_MAX 最大可表示的有限浮點(diǎn)數(shù)
max_exp DBL_MAX_EXP 最大整數(shù)e,這radix**(e-1)是一個(gè)可表示的有限浮點(diǎn)數(shù)
max_10_exp DBL_MAX_10_EXP 最大整數(shù)e,使得10**e它在可表示的有限浮點(diǎn)范圍內(nèi)
min DBL_MIN 最小正標(biāo)準(zhǔn)化浮點(diǎn)數(shù)
min_exp DBL_MIN_EXP 最小整數(shù)e,這radix**(e-1)是一個(gè)標(biāo)準(zhǔn)化的浮點(diǎn)數(shù)
min_10_exp DBL_MIN_10_EXP 最小整數(shù)e,這10**e是一個(gè)標(biāo)準(zhǔn)化的浮點(diǎn)數(shù)
radix FLT_RADIX 指數(shù)表示的基數(shù)
rounds FLT_ROUNDS 整數(shù)常量,表示用于算術(shù)運(yùn)算的舍入模式。這反映了解釋器啟動(dòng)時(shí)系統(tǒng)FLT_ROUNDS宏的值。有關(guān)可能

該屬性sys.float_info.dig需要進(jìn)一步解釋。如果 s任何字符串表示具有最多sys.float_info.dig有效數(shù)字的十進(jìn)制 數(shù)字,則轉(zhuǎn)換s為float并再次返回將恢復(fù)表示相同十進(jìn)制值的字符串:

>>> import sys
>>> sys.float_info.dig
15
>>> s = '3.14159265358979'  # decimal string with 15 significant digits
>>> format(float(s), '.15g') # convert to float and back -> same value
'3.14159265358979'

但對(duì)于具有多位sys.float_info.dig有效數(shù)字的字符串,并非總是如此:

>>> s = '9876543211234567'  # 16 significant digits is too many!
>>> format(float(s), '.16g') # conversion changes value
'9876543211234568'

版本2.6中的新功能。

sys.float_repr_style
一個(gè)字符串,指示repr()函數(shù)對(duì)浮點(diǎn)數(shù)的行為方式。如果字符串具有值,'short'則對(duì)于有限浮點(diǎn)數(shù)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實(shí)現(xiàn)使用的當(dāng)前默認(rèn)字符串編碼的名稱。

2.0版中的新功能。

sys.getdlopenflags()
返回用于dlopen()調(diào)用的標(biāo)志的當(dāng)前值。標(biāo)志常量在dl和DLFCN模塊中定義??捎眯裕篣nix。

版本2.2中的新功能。

sys.getfilesystemencoding()
返回用于將Unicode文件名轉(zhuǎn)換為系統(tǒng)文件名的None編碼名稱,或者是否使用系統(tǒng)默認(rèn)編碼。結(jié)果值取決于操作系統(tǒng):

在Mac OS X上,編碼是'utf-8'。
在Unix上,根據(jù)nl_langinfo(CODESET)的結(jié)果,或者None如果nl_langinfo(CODESET) 失敗,編碼是用戶的首選項(xiàng)。
在Windows NT +上,文件名本身是Unicode,因此不執(zhí)行任何轉(zhuǎn)換。getfilesystemencoding()仍然返回'mbcs',因?yàn)檫@是應(yīng)用程序在明確要將Unicode字符串轉(zhuǎn)換為用作文件名時(shí)等效的字節(jié)字符串時(shí)應(yīng)使用的編碼。
在Windows 9x上,編碼是'mbcs'。
版本2.3中的新功能。

sys.getrefcount(對(duì)象
返回對(duì)象的引用計(jì)數(shù)。返回的計(jì)數(shù)通常比您預(yù)期的高一個(gè),因?yàn)樗ㄅR時(shí))引用作為參數(shù)getrefcount()。

sys.getrecursionlimit()
返回遞歸限制的當(dāng)前值,即Python解釋器堆棧的最大深度。此限制可防止無限遞歸導(dǎo)致C堆棧溢出并導(dǎo)致Python崩潰。它可以設(shè)置 setrecursionlimit()。

sys.getsizeof(對(duì)象[,默認(rèn)] )
以字節(jié)為單位返回對(duì)象的大小。對(duì)象可以是任何類型的對(duì)象。所有內(nèi)置對(duì)象都將返回正確的結(jié)果,但這不一定適用于第三方擴(kuò)展,因?yàn)樗翘囟ㄓ趯?shí)現(xiàn)的。

如果給定,則如果對(duì)象未提供檢索大小的方法,則將返回default。否則TypeError將被提出。

getsizeof()sizeof如果對(duì)象由垃圾收集器管理,則調(diào)用該對(duì)象的方法并添加額外的垃圾收集器開銷。

版本2.6中的新功能。

sys._getframe([ 深度] )
從調(diào)用堆棧返回一個(gè)框架對(duì)象。如果給出了可選的整數(shù)深度,則返回堆棧頂部下方多次調(diào)用的幀對(duì)象。如果它比調(diào)用堆棧更深,ValueError則引發(fā)。深度的默認(rèn)值為零,返回調(diào)用堆棧頂部的幀。

CPython實(shí)現(xiàn)細(xì)節(jié):此函數(shù)僅用于內(nèi)部和專用目的。并不保證在Python的所有實(shí)現(xiàn)中都存在。

sys.getprofile()
獲取設(shè)置的探查器功能setprofile()。

版本2.6中的新功能。

sys.gettrace()
獲取設(shè)置的跟蹤功能settrace()。

CPython實(shí)現(xiàn)細(xì)節(jié):該gettrace()函數(shù)僅用于實(shí)現(xiàn)調(diào)試器,分析器,覆蓋工具等。它的行為是實(shí)現(xiàn)平臺(tái)的一部分,而不是語(yǔ)言定義的一部分,因此可能并非在所有Python實(shí)現(xiàn)中都可用。

版本2.6中的新功能。

sys.getwindowsversion()
返回一個(gè)描述當(dāng)前正在運(yùn)行的Windows版本的命名元組。命名元素是major,minor, build,platform,service_pack,service_pack_minor, service_pack_major,suite_mask和product_type。 service_pack包含一個(gè)字符串,而所有其他值都是整數(shù)。組件也可以通過名稱訪問,因此 sys.getwindowsversion()[0]相當(dāng)于 sys.getwindowsversion().major。為了與先前版本兼容,只能通過索引檢索前5個(gè)元素。

平臺(tái)可能是以下值之一:

不變 平臺(tái)
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 CE

product_type可能是以下值之一:

不變 含義
1 (VER_NT_WORKSTATION) 該系統(tǒng)是一個(gè)工作站。
2 (VER_NT_DOMAIN_CONTROLLER) 該系統(tǒng)是域控制器。
3 (VER_NT_SERVER) 系統(tǒng)是服務(wù)器,但不是域控制器。

這個(gè)函數(shù)包裝了Win32 GetVersionEx()函數(shù); OSVERSIONINFOEX()有關(guān)這些字段的詳細(xì)信息,請(qǐng)參閱Microsoft文檔。

可用性:Windows。

版本2.3中的新功能。

在2.7版中更改:更改為命名元組并添加了service_pack_minor, service_pack_major,suite_mask和product_type。

sys.hexversion
版本號(hào)編碼為單個(gè)整數(shù)。每個(gè)版本都保證會(huì)增加,包括對(duì)非生產(chǎn)版本的適當(dāng)支持。例如,要測(cè)試Python解釋器至少是1.5.2版,請(qǐng)使用:

if sys.hexversion >= 0x010502F0:
  # use some advanced feature
  ...
else:
  # use an alternative implementation or warn the user
  ...

這被調(diào)用,hexversion因?yàn)樗皇窃趯⑵渥鳛閷⑵鋫鬟f給內(nèi)置hex()函數(shù)的結(jié)果時(shí)才真正看起來有意義。該 version_info值可以用于對(duì)人工友好的相同信息的編碼。

這hexversion是一個(gè)32位數(shù)字,具有以下布局:

比特(大端序) 含義
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用于候選發(fā)布版和0xF最終版)
29-32 PY_RELEASE_SERIAL (在3中 2.1.0a3,零為最終釋放)

因此2.1.0a3是hexversion 0x020100a3。

1.5.2版中的新功能。

sys.long_info
一個(gè)結(jié)構(gòu)序列,包含有關(guān)Python內(nèi)部整數(shù)表示的信息。屬性是只讀的。

屬性 說明
bits_per_digit 每個(gè)數(shù)字中保持的位數(shù)。Python整數(shù)存儲(chǔ)在base的內(nèi)部 2**long_info.bits_per_digit
sizeof_digit 用于表示數(shù)字的C類型的字節(jié)大小

版本2.7中的新功能。

sys.last_type
sys.last_value
sys.last_traceback
這三個(gè)變量并不總是定義的; 它們?cè)谖刺幚懋惓r(shí)設(shè)置,并且解釋器打印錯(cuò)誤消息和堆?;厮荨K鼈兊挠猛臼窃试S交互式用戶導(dǎo)入調(diào)試器模塊并進(jìn)行事后調(diào)試,而無需重新執(zhí)行導(dǎo)致錯(cuò)誤的命令。(典型用法是進(jìn)入事后調(diào)試器; 有關(guān)詳細(xì)信息,請(qǐng)參閱pdb一章- Python調(diào)試器。)import pdb; pdb.pm()

變量的含義與exc_info()上面的返回值相同 。(由于只有一個(gè)交互式線程,因此線程安全性不是這些變量的關(guān)注點(diǎn),不像exc_type 等等)

sys.maxint
Python常規(guī)整數(shù)類型支持的最大正整數(shù)。這至少是2 ** 31-1。最大的負(fù)整數(shù)是-maxint-1- 使用2的補(bǔ)碼二進(jìn)制算法產(chǎn)生的不對(duì)稱性。

sys.maxsize
平臺(tái)的Py_ssize_t類型支持的最大正整數(shù),因此最大大小的列表,字符串,dicts和許多其他容器都可以。

sys.maxunicode
一個(gè)整數(shù),表示Unicode字符支持的最大代碼點(diǎn)。其值取決于配置選項(xiàng),該選項(xiàng)指定Unicode字符是存儲(chǔ)為UCS-2還是UCS-4。

sys.meta_path
調(diào)用其方法的finder對(duì)象列表,find_module()以查看其中一個(gè)對(duì)象是否可以找到要導(dǎo)入的模塊。find_module()至少使用要導(dǎo)入的模塊的絕對(duì)名稱調(diào)用該方法。如果要導(dǎo)入的模塊包含在包中,則父包的path屬性作為第二個(gè)參數(shù)傳入。None如果找不到模塊,則返回該方法,否則返回加載器。

sys.meta_path在任何隱式默認(rèn)查找器或之前搜索 sys.path。

看到 PEP 302用于原始規(guī)范。

sys.modules
這是一個(gè)將模塊名稱映射到已加載的模塊的字典。這可以被操縱以強(qiáng)制重新加載模塊和其他技巧。注意,從本字典移除模塊是不與調(diào)用 reload()相應(yīng)的模塊對(duì)象上。

sys.path
一個(gè)字符串列表,指定模塊的搜索路徑。從環(huán)境變量初始化PYTHONPATH,加上依賴于安裝的默認(rèn)值。

在程序啟動(dòng)時(shí)初始化時(shí),此列表的第一項(xiàng)path[0]是包含用于調(diào)用Python解釋器的腳本的目錄。如果腳本目錄不可用(例如,如果以交互方式調(diào)用解釋器或者從標(biāo)準(zhǔn)輸入讀取腳本), path[0]則是空字符串,它指示Python首先搜索當(dāng)前目錄中的模塊。請(qǐng)注意,腳本目錄是在插入 條目之前插入的PYTHONPATH。

程序可以自行修改此列表。

在版本2.3中更改:不再忽略Unicode字符串。

sys.path_hooks
一個(gè)callables列表,它采用path參數(shù)來嘗試為路徑創(chuàng)建 finder。如果可以創(chuàng)建一個(gè)查找程序,它將由callable返回,否則加注ImportError。

最初指定于 PEP 302。

sys.path_importer_cache
充當(dāng)查找程序?qū)ο缶彺娴淖值?。鍵是已傳遞到的路徑,sys.path_hooks值是找到的查找程序。如果路徑是有效的文件系統(tǒng)路徑但未找到顯式查找器,sys.path_hooks則None存儲(chǔ)表示應(yīng)使用隱式默認(rèn)查找器。如果路徑不是現(xiàn)有路徑,則imp.NullImporter設(shè)置。

最初指定于 PEP 302。

sys.platform
例如,該字符串包含一個(gè)平臺(tái)標(biāo)識(shí)符,可用于附加特定于平臺(tái)的組件sys.path。

對(duì)于大多數(shù)Unix系統(tǒng),這是由附加返回的版本的第一部分返回的小寫OS名稱,例如,在構(gòu)建Python時(shí)。除非您要測(cè)試特定的系統(tǒng)版本,否則建議使用以下習(xí)慣用法: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上也始終設(shè)置為。在Python 3.3及更高版本中,該值將始終設(shè)置為,因此建議始終使用上面提到的習(xí)語(yǔ)。sys.platform == ‘linux2'sys.platform'linux2”linux'startswith

對(duì)于其他系統(tǒng),值為:

系統(tǒng) platform值
Linux(2.x 和 3.x) ‘linux2'
視窗 ‘win32'
在Windows / Cygwin的 ‘cygwin'
Mac OS X. ‘darwin'
OS / 2 ‘os2'
OS / 2 EMX ‘os2emx'
里斯科斯 ‘riscos'
AtheOS ‘a(chǎn)theos'

也可以看看 os.name具有更粗糙的粒度。 os.uname()提供依賴于系統(tǒng)的版本信息。
該platform模塊提供系統(tǒng)身份的詳細(xì)檢查。

sys.prefix
一個(gè)字符串,給出了特定于站點(diǎn)的目錄前綴,其中安裝了與平臺(tái)無關(guān)的Python文件; 默認(rèn)情況下,這是字符串 ‘/usr/local'。這可以在構(gòu)建時(shí)使用configure腳本的–prefix 參數(shù)進(jìn)行設(shè)置。Python庫(kù)模塊的主要集合安裝在目錄中, 而平臺(tái)獨(dú)立的頭文件(所有除外)存儲(chǔ)在其中,其中XY是例如Python的版本號(hào)。prefix/lib/pythonX.Ypyconfig.hprefix/include/pythonX.Y2.7

sys.ps1
sys.ps2
指定解釋器的主要和輔助提示的字符串。僅在解釋器處于交互模式時(shí)才定義這些。在這種情況下,它們的初始值是和。如果將非字符串對(duì)象分配給任一變量,則每次解釋器準(zhǔn)備讀取新的交互式命令時(shí)都會(huì)重新評(píng)估該變量。這可以用來實(shí)現(xiàn)動(dòng)態(tài)提示。'>>> ”… ‘str()

sys.py3kwarning
Bool包含Python 3警告標(biāo)志的狀態(tài)。這True 是使用-3選項(xiàng)啟動(dòng)Python 的時(shí)候。(這應(yīng)該被認(rèn)為是只讀的;將其設(shè)置為不同的值對(duì)Python 3警告沒有影響。)

版本2.6中的新功能。

sys.setcheckinterval(間隔)
設(shè)置解釋器的“檢查間隔”。此整數(shù)值確定解釋器檢查周期性事物(如線程切換和信號(hào)處理程序)的頻率。默認(rèn)值是100,意味著每100條Python虛擬指令執(zhí)行一次檢查。將其設(shè)置為更大的值可能會(huì)提高使用線程的程序的性能。將其設(shè)置為值<=0將檢查每個(gè)虛擬指令,從而最大限度地提高響應(yīng)速度和開銷。

sys.setdefaultencoding(名字)
設(shè)置Unicode實(shí)現(xiàn)使用的當(dāng)前默認(rèn)字符串編碼。如果 name與任何可用編碼不匹配,LookupError則引發(fā)。此功能僅供site模塊實(shí)現(xiàn)使用,并在需要時(shí)由sitecustomize。一旦 site模塊使用,它就會(huì)從sys模塊的命名空間中刪除。

2.0版中的新功能。

sys.setdlopenflags(n )
設(shè)置解釋器用于dlopen()調(diào)用的標(biāo)志,例如解釋器加載擴(kuò)展模塊時(shí)。除此之外,這將在導(dǎo)入模塊時(shí)啟用符號(hào)的惰性解析(如果被稱為) sys.setdlopenflags(0)。要在擴(kuò)展模塊之間共享符號(hào),請(qǐng)調(diào)用 。標(biāo)志模塊的符號(hào)名稱可以在模塊中找到,也可以在模塊中找到 。如果不可用,則可以使用h3py腳本生成它 。可用性:Unix。sys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL)dlDLFCNDLFCN/usr/include/dlfcn.h

版本2.2中的新功能。

sys.setprofile(profilefunc )
設(shè)置系統(tǒng)的配置文件功能,允許您在Py​​thon中實(shí)現(xiàn)Python源代碼分析器。有關(guān)Python探查器的更多信息,請(qǐng)參閱Python Profilers一章。系統(tǒng)的配置文件函數(shù)的調(diào)用類似于系統(tǒng)的跟蹤函數(shù)(請(qǐng)參閱參考資料settrace()),但是它使用不同的事件進(jìn)行調(diào)用,例如,不會(huì)為每個(gè)執(zhí)行的代碼行調(diào)用它(僅在調(diào)用和返回時(shí)調(diào)用它,但會(huì)報(bào)告返回事件即使設(shè)置了異常)。該函數(shù)是特定于線程的,但是探查器無法知道線程之間的上下文切換,因此在存在多個(gè)線程時(shí)使用它是沒有意義的。此外,它的返回值沒有使用,所以它可以簡(jiǎn)單地返回None。

配置文件函數(shù)應(yīng)該有三個(gè)參數(shù):frame,event和 arg。frame是當(dāng)前的堆棧幀。 事件是一個(gè)字符串:'call', ‘return','c_call','c_return',或'c_exception'。arg取決于事件類型。

事件具有以下含義:

'call'
  調(diào)用一個(gè)函數(shù)(或輸入一些其他代碼塊)。調(diào)用配置文件功能; arg是None。
'return'
  函數(shù)(或其他代碼塊)即將返回。調(diào)用配置文件功能; arg是將返回的值,或者None 事件是由引發(fā)的異常引起的。
'c_call'
  AC功能即將被調(diào)用。這可以是擴(kuò)展功能或內(nèi)置功能。 arg是C函數(shù)對(duì)象。
'c_return'
AC功能已返回。arg是C函數(shù)對(duì)象。
'c_exception'
AC功能引發(fā)了異常。 arg是C函數(shù)對(duì)象。

sys.setrecursionlimit(限制)
設(shè)置Python解釋器堆棧的最大深度以限制。此限制可防止無限遞歸導(dǎo)致C堆棧溢出并導(dǎo)致Python崩潰。

最高可能的限制取決于平臺(tái)。當(dāng)用戶需要深度遞歸的程序和支持更高限制的平臺(tái)時(shí),用戶可能需要設(shè)置更高的限制。這應(yīng)該小心,因?yàn)樘叩南拗瓶赡軐?dǎo)致崩潰。

sys.settrace(tracefunc )
設(shè)置系統(tǒng)的跟蹤功能,允許您在Py​​thon中實(shí)現(xiàn)Python源代碼調(diào)試器。該函數(shù)是特定于線程的; 對(duì)于支持多線程的調(diào)試器,必須settrace()為每個(gè)正在調(diào)試的線程注冊(cè)它 。

跟蹤函數(shù)應(yīng)該有三個(gè)參數(shù):frame,event和 arg。frame是當(dāng)前的堆棧幀。 事件是一個(gè)字符串:'call', ‘line','return'或'exception'。 arg取決于事件類型。

每當(dāng)輸入新的本地范圍時(shí),都會(huì)調(diào)用跟蹤函數(shù)(事件設(shè)置為'call'); 它應(yīng)該返回對(duì)該范圍使用的本地跟蹤函數(shù)的引用,或者None是否應(yīng)該跟蹤范圍。

本地跟蹤函數(shù)應(yīng)該返回對(duì)自身的引用(或者返回另一個(gè)函數(shù)以便在該范圍內(nèi)進(jìn)一步跟蹤),或者None關(guān)閉該范圍內(nèi)的跟蹤。

事件具有以下含義:

'call'
調(diào)用一個(gè)函數(shù)(或輸入一些其他代碼塊)。調(diào)用全局跟蹤函數(shù); arg是None; 返回值指定本地跟蹤功能。
'line'
解釋器即將執(zhí)行新的代碼行或重新執(zhí)行循環(huán)的條件。調(diào)用本地跟蹤功能; arg是 None; 返回值指定新的本地跟蹤功能。有關(guān)Objects/lnotab_notes.txt其工作原理的詳細(xì)說明,請(qǐng)參閱 。
'return'
函數(shù)(或其他代碼塊)即將返回。調(diào)用本地跟蹤功能; arg是將返回的值,或者None 事件是由引發(fā)的異常引起的。跟蹤函數(shù)的返回值被忽略。
'exception'
發(fā)生了一個(gè)例外。調(diào)用本地跟蹤功能; arg是一個(gè)元組; 返回值指定新的本地跟蹤功能。(exception, value, traceback)

請(qǐng)注意,由于異常沿著調(diào)用者鏈向下傳播,因此'exception'會(huì)在每個(gè)級(jí)別生成一個(gè) 事件。

有關(guān)代碼和框架對(duì)象的更多信息,請(qǐng)參閱標(biāo)準(zhǔn)類型層次結(jié)構(gòu)。

CPython實(shí)現(xiàn)細(xì)節(jié):該settrace()函數(shù)僅用于實(shí)現(xiàn)調(diào)試器,分析器,覆蓋工具等。它的行為是實(shí)現(xiàn)平臺(tái)的一部分,而不是語(yǔ)言定義的一部分,因此可能并非在所有Python實(shí)現(xiàn)中都可用。

sys.settscdump(on_flag )
如果on_flag為true ,則使用Pentium時(shí)間戳計(jì)數(shù)器激活VM測(cè)量的轉(zhuǎn)儲(chǔ) 。如果on_flag關(guān)閉,請(qǐng)停用這些轉(zhuǎn)儲(chǔ)。只有在編譯Python時(shí),該函數(shù)才可用–with-tsc。要了解此轉(zhuǎn)儲(chǔ)的輸出,請(qǐng)閱讀Python/ceval.cPython源代碼。

版本2.4中的新功能。

CPython實(shí)現(xiàn)細(xì)節(jié):此函數(shù)與CPython實(shí)現(xiàn)細(xì)節(jié)密切相關(guān),因此不太可能在其他地方實(shí)現(xiàn)。

sys.stdin
sys.stdout
sys.stderr
與解釋器的標(biāo)準(zhǔn)輸入,輸出和錯(cuò)誤流相對(duì)應(yīng)的文件對(duì)象。 stdin用于除腳本之外的所有解釋器輸入,但包括對(duì)input()和的調(diào)用raw_input()。 stdout用于輸出print和表達(dá)語(yǔ)句和用于提示input()和raw_input()。解釋器自己的提示和(幾乎所有)其錯(cuò)誤消息都會(huì)轉(zhuǎn)到stderr。 stdout并且 stderr不需要是內(nèi)置文件對(duì)象:任何對(duì)象都是可接受的,只要它有一個(gè)write()帶字符串參數(shù)的方法即可。(改變這些對(duì)象不影響標(biāo)準(zhǔn)的由執(zhí)行的處理I / O流 os.popen(),os.system()或所述exec*()的函數(shù)家族os模塊。)

sys._stdin_
sys._stdout_
sys._stderr_
這些對(duì)象包含的原始值stdin,stderr并 stdout在程序的開始。它們?cè)谧罱K確定期間使用,無論sys.std*對(duì)象是否已被重定向,它都可用于打印到實(shí)際的標(biāo)準(zhǔn)流 。

它還可以用于將實(shí)際文件還原到已知的工作文件對(duì)象,以防它們被破壞的對(duì)象覆蓋。但是,執(zhí)行此操作的首選方法是在替換之前顯式保存先前的流,并還原已保存的對(duì)象。

sys.subversion
表示Python解釋器的Subversion信息的三元組(repo,branch,version)。repo是存儲(chǔ)庫(kù)的名稱'CPython'。 branch是一個(gè)表單的字符串'trunk','branches/name'或 ‘tags/name'。如果解釋器是從Subversion結(jié)帳構(gòu)建的,則version是輸出svnversion; 它包含修訂號(hào)(范圍),如果有本地修改,可能包含尾隨'M'。如果樹被導(dǎo)出(或者svnversion不可用),那么它是Include/patchlevel.h分支是標(biāo)記的修訂版 。否則就是None。

2.5版中的新功能。

注意 Python現(xiàn)在使用Mercurial 開發(fā)。因此,在最近的Python 2.7 bugfix版本中,subversion 包含占位符信息。它在Python 3.3中被刪除。

sys.tracebacklimit
當(dāng)此變量設(shè)置為整數(shù)值時(shí),它確定發(fā)生未處理的異常時(shí)打印的最大回溯信息級(jí)別數(shù)。默認(rèn)是1000。設(shè)置為0或更小時(shí),將抑制所有回溯信息,并僅打印異常類型和值。

sys.version
一個(gè)字符串,包含Python解釋器的版本號(hào)以及有關(guān)使用的內(nèi)部版本號(hào)和編譯器的附加信息。啟動(dòng)交互式解釋器時(shí)會(huì)顯示此字符串。不要從中提取版本信息,而是使用模塊version_info提供的功能 platform。

sys.api_version
此解釋器的C API版本。在調(diào)試Python和擴(kuò)展模塊之間的版本沖突時(shí),程序員可能會(huì)發(fā)現(xiàn)這很有用。

版本2.3中的新功能。

sys.version_info
包含版本號(hào)的五個(gè)組件的元組:major,minor, micro,releaselevel和serial。除releaselevel之外的所有值都是整數(shù); 釋放水平'alpha','beta','candidate',或 ‘final'。version_info對(duì)應(yīng)于Python 2.0版的值是。組件也可以通過名稱訪問,因此等同于 等等。(2, 0, 0, ‘final', 0)sys.version_info[0]sys.version_info.major

2.0版中的新功能。

在2.7版中更改:添加了命名組件屬性

sys.warnoptions
這是警告框架的實(shí)現(xiàn)細(xì)節(jié); 不要修改此值。warnings有關(guān)警告框架的更多信息,請(qǐng)參閱該模塊。

sys.winver
用于在Windows平臺(tái)上形成注冊(cè)表項(xiàng)的版本號(hào)。它作為字符串資源1000存儲(chǔ)在Python DLL中。該值通常是前三個(gè)字符version。它在sys 模塊中提供,用于提供信息; 修改此值對(duì)Python使用的注冊(cè)表項(xiàng)沒有影響??捎眯裕篧indows。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI