Python3.7之sys模塊


sys.argv詳見python文件操作筆記

1.sys.version

獲取Python解釋程序的版本信息
import sys


pythonVersion = sys.version
print(pythonVersion)

'''
3.7.4 (default, Aug 13 2019, 15:17:50) 
[Clang 4.0.1 (tags/RELEASE_401/final)]
'''

2.sys.exit(n)

退出程序,正常退出時exit(0)

a = 2
if a == 1:
    sys.exit(0)
else:
    sys.exit(2)
'''
Process finished with exit code 2
'''

3.sys.platform

返回操作系統平台名稱
platformName = sys.platform
print(platformName)
'''
darwin
'''

為什么在Mac OS X上鍵入sys.platform時,輸出是“darwin”?

答:因為Mac OS X的核心是 the Darwin OS

從鏈接的WikiPedia頁面引用:

Darwin forms the core set of components upon which Mac OS X and iOS are based.

Python僅使用相同的平台標識符。

4.sys.modules

Python中所有加載到內存的模塊都放在sys.modules。

sys.modules是一個全局字典,字典sys.modules對於加載模塊起到了緩沖的作用,當import一個模塊時首先會在這個列表中查找是否已經加載了此模塊,如果加載了則只是將模塊的名字加入到正在調用import的模塊的Local名字空間中。當第二次再導入該模塊時,python會直接到字典中查找,從而加快了程序運行的速度。

模塊文件可以是py、pyc、pyd,找到后將模塊載入內存,並加入到sys.modules中,並將名稱導入到當前的Local名字空間

sys.modules[__name__]

A way to get a handle to the current running module in Python:

import sys

module = sys.modules[__name__]

it really only works if you are doing the whole sys.modules litany in the very module you want to get a handle to.

所以,getattr(sys.modules[__name__], func_name)的含義便是找到當前文件下名稱為func_name的對象(類對象或者函數對象)。

5.sys.path.append()

添加路徑,用於調用模塊

當我們導入一個模塊時:import xxx,默認情況下python解析器會搜索當前目錄、已安裝的內置模塊和第三方模塊,搜索路徑存放在sys模塊的path中:

import sys
print(sys.path)

'''
['/Users/xiexinran/Desktop/亂七八糟的.py', '/Users/xiexinran/Desktop/亂七八糟的.py', '/Users/xiexinran/anaconda3/lib/python37.zip', '/Users/xiexinran/anaconda3/lib/python3.7', '/Users/xiexinran/anaconda3/lib/python3.7/lib-dynload', '/Users/xiexinran/anaconda3/lib/python3.7/site-packages', '/Users/xiexinran/anaconda3/lib/python3.7/site-packages/aeosa']

Process finished with exit code 0
'''

sys.path 返回的是一個列表。

該路徑已經添加到系統的環境變量了,當我們要添加自己的搜索目錄時,可以通過列表的append()方法;

對於模塊和自己寫的腳本不在同一個目錄下,在腳本開頭加sys.path.append('xxx'):

這種方法是運行時修改,腳本運行后就會失效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM