使用Python解釋器
1.1 Python安裝
從源碼編譯安裝python
./configure
make
make test
sudo make install
默認python解釋器安裝在/usr/local/bin/python3.8,可以將/usr/local/bin放到path搜索路徑中。
在windows系統上,python一般安裝在C:\Python38,在windows 命令行中,執行命令set path=%path%;C:\python38 將該路徑添加到path搜索路徑。
1.2 使用解釋器
在類linux系統中,在console控制臺輸入python3.8 即可運行,退出CTL+D(文件結束符)或者
quit()
在windows系統上,打開命令行輸入python即可運行,退出CTL+Z(文件結束符)或者quit()
解釋器的行編輯功能也包括交互式編輯,在支持 readline 的系統中,可以回看歷史命令,也有 Tab 代碼補全功能。檢查是否支持行編輯功能,在出現提示符后,CTL+P。如果
有‘嗶’的一聲或者出現一行字符串(如下圖),那么就是支持行編輯功能;
如果什么都沒出現或者顯示^P 那么不支持行編輯。只能用Backspace退格鍵從當前行刪除字符。
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
python -h 可以查看幫助信息
在標準輸入tty設備調用解釋器,他能交互式地讀取和執行命令,調用時如果提供文件名作參數或者有文件重定向到標準輸入,他會讀取和執行文件中的腳本。
python xxx.py --直接運行的方式啟動(此時腳本__name__為"
main
")
如果用python -c command [arg] … 調用,則執行命令command。由于 Python 代碼中經常會包含對終端來說比較特殊的字符,通常情況下都建議用英文單引號把 command 括起來。
這里的command是python 自己的command,不是linux的。
Python -m module [arg] …會執行module的源文件,這把python模塊當作腳本使用。
python -m xxx.py --以模塊的方式啟動(此時腳本的__name__屬性值依然不再是"
main
"而是"xxx")
在運行腳本的時候,有時可能也會需要在運行后進入交互模式。這種時候在文件參數前,加上選項 -i 就可以了。
1.2.1 傳入參數
解釋器會讀取命令行參數,轉化為字符串列表存入 sys 模塊中的 argv 變量中。執行命令 import sys 你可以導入這個模塊并訪問這個列表。這個列表最少也會有一個元素;如果沒有給定輸入參數,sys.argv[0]就是個空字符串。如果腳本名是標準輸入,sys.argv[0] 就是 ‘-’。使用 -c command 時,sys.argv[0] 就會是 ‘-c’。如果使用選項 -m module,sys.argv[0] 就是包含目錄的模塊全名。在 -c command 或 -m module 之后的選項不會被解釋器處理,而會直接留在 sys.argv 中給命令或模塊來處理。
cat module.py
#! /usr/bin/env python
- - coding: UTF-8 - -
import sys
print(sys.path)
print(sys.modules)
print(sys.argv[0], sys.argv[1])
通過以上執行方式發現:
第一種方法——直接運行腳本,當前腳本所在的路徑會加入到 sys.path 列表中,但是 sys.modules 字典中的 __main__的路徑不是絕對路徑,只是腳本名稱。
第二種方法——當做模塊方式運行,當前腳本所在的路徑不會加入到 sys.path 列表中,但是 sys.modules 字典中的
main
的路徑是絕對路徑,同時,還引入了 runpy 和 pkgutil 兩個模塊。
runpy 的用途:定位并執行該模塊。主要用途在于實現命令行 -m 執行 python 模塊的效果。
pkgutil 的用途:獲取包里面的所有模塊列表。pkgutil.get_data() 可讀取包內任何文件內容。
Python模塊的導入機制:
要理解模塊的導入機制,得理解幾個關鍵的名詞。sys.path -> sys.modules -> < module >.
dict
。
sys.path:是一個列表。保存著模塊的搜索路徑。如果路徑沒有存在與該列表中,可使用 sys.path.append() 導入。
sys.modules: 是一個字典。所有加載到內存中的模塊都存放在該字典中。當 import 一個模塊的時候,首先會在這個字典中查找是否已經加載了目標模塊。如果已加載,則將模塊的名字加入到正在調用 import 的模塊的 Local 命名空間(也就是< module >.
dict
)中。如果沒有,則從 sys.path 查找,找到后載入內存,并加入到 sys.modules 字典,名稱也將導入到當前模塊的 Local 命名空間。
1.2.2 交互模式
在終端(tty)輸入并執行指令時,解釋器是運行在 交互模式(interactive mode)。在這種模式中,它會顯示 主提示符(primary prompt),提示輸入下一條指令,通常用三個大于號(>>>)表示;連續輸入行的時候,它會顯示 次要提示符,默認是三個點(…)。
1.2.3 解釋器的運行環境(編碼格式)
源碼文件的字符編碼。
默認情況下,Python 源碼文件以 UTF-8 編碼方式處理。在這種編碼方式中,世界上大多數語言的字符都可以同時用于字符串字面值、變量或函數名稱以及注釋中——盡管標準庫中只用常規的 ASCII 字符作為變量或函數名,而且任何可移植的代碼都應該遵守此約定。要正確顯示這些字符,你的編輯器必須能識別 UTF-8 編碼,而且必須使用能支持打開的文件中所有字符的字體。
如果不使用默認編碼,要聲明文件所使用的編碼,文件的 第一 行要寫成特殊的注釋。
- - coding: encoding - -
Encoding可以是python支持的任意一種codecs。
關于 第一行 規則的一種例外情況是,源碼以 UNIX “shebang” 行 開頭。這種情況下,編碼聲明就要寫在文件的第二行。例如:
#!/usr/bin/env python3
- - coding: cp1252 - -
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
