安裝完 Python 之后該干啥,當然是要 say HelloWorld 了。
python.exe
就是個普通程序
和其它所有命令一樣,在命令行中敲下 python
並回車的時候,操作系統去 PATH
路徑中搜索到了 python.exe
並執行。從這一點看,它和其它程序並沒有什么不同。比如說:notepad
會打開記事本,explorer
會打開資源管理器。
區別在於,python
是一個純粹的命令行程序,它沒有大家熟悉的窗口界面。
注意,可執行程序的
.exe
文件名后綴只是 Windows 系統下的命名風格,輸入命令的時候是省略的。並且在 Linux 系統中可執行文件都沒有.exe
后綴,python
的命令風格是偏 Linux 風格的,所以后面提到 python 的時候直接說python
而不是python.exe
。
python
的參數
執行命令行程序的時候,往往需要可以帶上 參數(argument)。例如:
單獨執行 notepad
,打開一個新的無標題記事本,而如果執行 notepad hello.py
,則會打開這個指定的文本文檔(當然,當前路徑下得有名為 hello.py
的文件,否則 notepad
會有提示你)。
python
是一個解釋器程序,它的能力就是 解釋執行 Python 代碼。
所以我們可以把 Python 代碼作為參數傳遞給它。最常見的是傳一個文件給它:
python hello.py
比如剛才我們用記事本創建的 hello.py
文件:
這里的
.py
文件后綴不是必須的,就像記事本也不一定只能編輯.txt
文件。帶上后綴只是方便操作系統和用戶識別這是一個 Python 源碼文件。
不帶參數執行 python
,因為沒有內容可以解釋,就進入到了交互模式。
交互模式下,在提示符 >>>
后面等待用戶輸入,每輸入一句,就解釋執行一句。
交互模式下的 helloworld 大家肯定早已熟悉,這里就不充數了,改天再細聊
REPL
!
嚴格來說,沒有參數的意思並不是 沒有內容,而是表示 內容源 來自 標准輸入(stdin)。事實上,它等價於:
python -
用一個短杠做參數的時候表示標准輸入,這是 Linux 程序的慣例。所謂標准輸入,不熟悉操作系統的小伙伴姑且可以認為就是來自用戶輸入。而相對的,自然就有 標准輸出(stdout)。我們用 print()
函數就是把結果 打印 在標准輸出中。
stdout
和 stdin
可以用一道豎線 |
串聯起來形成 管道(pipe),所以可以寫出下面這種另類的 helloworld:
C:\Users\Davy>echo print('helloworld')|python
helloworld
注意,在 windows 系統下,這里 echo
后面不能加引號,而在 Linux 系統中則必須加一層引號:
[root@davycloud ~]# echo print('helloworld')|python
-bash: syntax error near unexpected token `('
[root@davycloud ~]# echo "print('helloworld')"|python
helloworld
python
的選項
在 Python 安裝 文章中,我們用了 python --version
來測試 python 程序是否正常。
這種用 -
或 --
傳遞給程序的特殊參數稱之為 選項(option),一個中杠(也就是減號 -
) 后面跟一個字母,稱為 短選項,--
后面跟完整的單詞,稱為 長選項。
注意,選項是一種特殊格式的參數,在下面
py
的幫助信息中,就統稱是 args
有的選項只有短或長格式,有的選項既有短的,又有長的。例如 --version
對應的短選項是 -V
(大寫的 V)。
除了 --version
打印版本信息,還有通過 --help
或 -h
打印幫助信息也是比較通用的做法:
以后遇到不熟悉的命令,都可以先執行
--help
試試。不過值得提醒的是, Windows 系統中的傳統命令是使用/?
表示選項。
python 解釋器中還有以下選項比較有用:
-c
選項
-c cmd : program passed in as string
把程序以字符串的形式傳給解釋器,例如,helloworld 可以這樣寫:
C:\Users\Davy>python -c "print('helloworld')"
helloworld
還可以是多行語句,中間用分號 ;
分隔就行了:
C:\Users\Davy>python -c "import sys;print(sys.version)"
3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)]
-i
選項
-i : inspect interactively after running script
在執行完腳本后進入到交互模式。
這個選項在學習的情況下很有用,下面給大家舉個小例子。
比如學習到函數的時候,定義一個函數要寫多行語句,顯然寫在文件中比較合適。
但是隨后對這個函數的進行練習測試,如果你也寫在文件中,那么每次都要這樣:
編輯 - 保存 - 運行
每次運行都是從頭開始,這樣是比較麻煩的(因為麻煩所以沒有動圖了):
這時候就可以使用 python -i test.py
運行腳本,腳本運行結束后自動進入交互模式。此時腳本里定義的一切對象,仍然可以訪問。就好像是接在腳本后面繼續寫代碼一樣:
-m
選項
-m mod : run library module as a script
把模塊當作腳本來運行。
例如,著名的一行代碼啟動一個 HTTP 服務器:
python -m http.server
在安裝 Python 一文中已經和大家介紹過了,模塊所在的文件夾位置,所以上面命令也可以直接用運行腳本的方式:
python C:\Users\Davy\AppData\Local\Programs\Python\Python38\Lib\http\server.py
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
這里需要定位到 .py
文件的具體位置,這個在每個人的環境上都不一樣,顯然比使用 python -m module
麻煩多了。
這里可以看出,module
和在命令行中敲命令有異曲同工之妙,事實上,它們的原理也差不多。module
也需要有一個 path
變量,保存一個搜索路徑的列表。
這個 path
變量保存在 sys
模塊中:
python -c "import sys;print(sys.path)"
更多具體內容,后面學習到 module
相關內容的時候再詳細討論。
py.exe
的用法
在安裝完成后,我們使用 py --list
來顯示已安裝的 python
版本列表。這里簡單介紹下 py
命令的用法。
同樣地,用 -h
或 --help
來獲取幫助信息:
打印信息分為兩部分,前面是 py
自己的幫助信息,后面是 python
的幫助信息。
usage:
py [launcher-args] [python-args] script [script-args]
Launcher arguments:
-2 : Launch the latest Python 2.x version
-3 : Launch the latest Python 3.x version
-X.Y : Launch the specified Python version
The above all default to 64 bit if a matching 64 bit python is present.
-X.Y-32: Launch the specified 32bit Python version
-X-32 : Launch the latest 32bit Python X version
-X.Y-64: Launch the specified 64bit Python version
-X-64 : Launch the latest 64bit Python X version
-0 --list : List the available pythons
-0p --list-paths : List with paths
除了最下面我們已經見過的 -0
和 --list
,其它參數都是用來選擇 python 解釋器。不但能區分版本號,還能按 32 位 或 64 位選擇。值得注意的是,版本號只包括前兩位。
如果不帶選擇版本參數,實際對應默認的 python 解釋器。其它所有不是上面這些格式的參數,也作為 python 解釋器的參數。
所以,在命令行中敲 py
和 python
的效果是一樣的(每次可以少敲 4 次鍵了,效率大幅提升,✌️),即使帶上了版本參數,也很方便:
C:\Users\Davy>py -0
Installed Pythons found by py Launcher for Windows
-3.8-64 *
-2.7-64
C:\Users\Davy>py -2 --version
Python 2.7.17
C:\Users\Davy>py --version
Python 3.8.1
為了演示
py
的功能,特意又安裝了python 2.7
,並且這次沒有加入到PATH
問題來了,pip
這種放在 Script
中的命令怎么辦呢?
這種情況,結合使用前面介紹的 -m
選項就可以了:
C:\Users\Davy>py -2 -m pip --version
pip 19.2.3 from C:\Python27\lib\site-packages\pip (python 2.7)
安裝包的時候也是一樣的:
差點忘了,helloworld 的第 4 種姿勢: python -m hello
小結
本文主要介紹 python
解釋器的基本用法,傳入代碼的四種方式:文件,字符串,stdin,module。同時介紹在 windows 下如何使用 py
啟動器運行不同版本的 python。
如果本文有幫助,不妨 點贊 + 關注,謝謝!