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

安裝以後該幹啥了?固然是要 say HelloWorld 了。
python

python.exe 就是個普通程序

和其它全部命令同樣,在命令行中敲下 python 並回車的時候,操做系統去 PATH 路徑中搜索到了 python.exe 並執行。從這一點看,它和其它程序並無什麼不一樣。好比說:notepad 會打開記事本,explorer 會打開資源管理器。windows

區別在於,python 是一個純粹的命令行程序,它沒有你們熟悉的窗口界面。bash

注意,可執行程序的 .exe 文件名後綴只是 Windows 系統下的命名風格,輸入命令的時候是省略的。而且在 Linux 系統中可執行文件都沒有 .exe 後綴,python 的命令風格是偏 Linux 風格的,因此後面提到 python 的時候直接說 python 而不是 python.exe服務器

python 的參數

執行命令行程序的時候,每每須要能夠帶上 參數(argument)。例如:函數

單獨執行 notepad,打開一個新的無標題記事本,而若是執行 notepad hello.py,則會打開這個指定的文本文檔(固然,當前路徑下得有名爲 hello.py 的文件,不然 notepad 會有提示你)。post

notepad 建立文件
notepad 建立文件

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

因此咱們能夠把 Python 代碼做爲參數傳遞給它。最多見的是傳一個文件給它:測試

python hello.py
複製代碼

好比剛纔咱們用記事本建立的 hello.py 文件:ui

pytho 執行腳本
python 執行腳本 - helloworld 的第 1 種姿式

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

不帶參數執行 python,由於沒有內容能夠解釋,就進入到了交互模式。

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

交互模式下的 helloworld 你們確定早已熟悉,這裏就不充數了,改天再細聊 REPL

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

python -
複製代碼

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

stdoutstdin 能夠用一道豎線 | 串聯起來造成 管道(pipe),因此能夠寫出下面這種另類的 helloworld:

C:\Users\Davy>echo print('helloworld')|python
helloworld
複製代碼
helloworld 2
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
python --help

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

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

-c 選項

-c cmd : program passed in as string

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

C:\Users\Davy>python -c "print('helloworld')"
helloworld
複製代碼
helloworld 3
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
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 --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
py -2 -m pip install

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

helloworld 4
helloworld 4

小結

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



若是本文有幫助,不妨 點贊 + 關注,謝謝!

相關文章
相關標籤/搜索