python HelloWorld 的 4 種姿勢,你知道幾種


安裝完 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 會有提示你)。

notepad 創建文件

python 是一個解釋器程序,它的能力就是 解釋執行 Python 代碼

所以我們可以把 Python 代碼作為參數傳遞給它。最常見的是傳一個文件給它:

python hello.py

比如剛才我們用記事本創建的 hello.py 文件:

pytho 執行腳本

這里的 .py 文件后綴不是必須的,就像記事本也不一定只能編輯 .txt 文件。帶上后綴只是方便操作系統和用戶識別這是一個 Python 源碼文件。

不帶參數執行 python,因為沒有內容可以解釋,就進入到了交互模式。

交互模式下,在提示符 >>> 后面等待用戶輸入,每輸入一句,就解釋執行一句。

交互模式下的 helloworld 大家肯定早已熟悉,這里就不充數了,改天再細聊 REPL

嚴格來說,沒有參數的意思並不是 沒有內容,而是表示 內容源 來自 標准輸入(stdin)。事實上,它等價於:

python -

用一個短杠做參數的時候表示標准輸入,這是 Linux 程序的慣例。所謂標准輸入,不熟悉操作系統的小伙伴姑且可以認為就是來自用戶輸入。而相對的,自然就有 標准輸出(stdout)。我們用 print() 函數就是把結果 打印 在標准輸出中。

stdoutstdin 可以用一道豎線 | 串聯起來形成 管道(pipe),所以可以寫出下面這種另類的 helloworld:

C:\Users\Davy>echo print('helloworld')|python
helloworld

helloworld 2

注意,在 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 打印幫助信息也是比較通用的做法:

python --help

以后遇到不熟悉的命令,都可以先執行 --help 試試。不過值得提醒的是, Windows 系統中的傳統命令是使用 /? 表示選項。

python 解釋器中還有以下選項比較有用:

-c 選項

-c cmd : program passed in as string

把程序以字符串的形式傳給解釋器,例如,helloworld 可以這樣寫:

C:\Users\Davy>python -c "print('helloworld')"
helloworld

helloworld 3

還可以是多行語句,中間用分號 ; 分隔就行了:

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

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 --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 解釋器的參數。

所以,在命令行中敲 pypython 的效果是一樣的(每次可以少敲 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)

安裝包的時候也是一樣的:

py -2 -m pip install

差點忘了,helloworld 的第 4 種姿勢: python -m hello

helloworld 4

小結

本文主要介紹 python 解釋器的基本用法,傳入代碼的四種方式:文件,字符串,stdin,module。同時介紹在 windows 下如何使用 py 啟動器運行不同版本的 python。


如果本文有幫助,不妨 點贊 + 關注,謝謝!


免責聲明!

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



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