我們經常會在别人的腳本或者項目的入口文件裡看到第一行是下面這樣
#!/usr/bin/python
或者這樣
#!/usr/bin/env python
那麼他們有什麼用呢?
要理解它,得把這一行語句拆成兩部分。
第一部分是 #!
第二部分是 /usr/bin/python
或者 /usr/bin/env python
關于 #!
這個符号,其實它是有名字的,叫做 Shebang
或者Sha-bang
,有的翻譯組将它譯作 釋伴
,即“解釋伴随行”的簡稱,同時又是Shebang的音譯。
Shebang通常出現在類Unix系統的腳本中第一行,作為前兩個字符。在Shebang之後,可以有一個或數個空白字符,後接解釋器的絕對路徑,用于指明執行這個腳本文件的解釋器。
那麼加和不加有什麼區别呢?
如果不加 #!
的話,你每次執行這個腳本時,都得這樣 python xx.py
,
有沒有一種方式?可以省去每次都加 python
呢?
當然有,你可以文件頭裡加上#!/usr/bin/python
,那麼當這個文件有可執行權限 時,隻直接寫這個腳本文件,就像下面這樣。
明白了這個後,再來看看 !/usr/bin/env python
這個 又是什麼意思 ?
當我執行 env python
時,自動進入了 python console 的模式。
這是為什麼?和 直接執行 python 好像沒什麼區别呀
當你執行 env python
時,它其實會去 env | grep PATH
裡(也就是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin )這幾個路徑裡去依次查找名為python的可執行文件。
找到一個就直接執行,上面我們的 python 路徑是在 /usr/bin/python
裡,在 PATH
列表裡倒數第二個目錄下,所以當我在 /usr/local/sbin
下創建一個名字也為 python 的可執行文件時,就會執行 /usr/bin/python
了。
具體演示過程,你可以看下面。
那麼對于這兩者,我們應該使用哪個呢?
個人感覺應該優先使用 #!/usr/bin/env python
,因為不是所有的機器的 python 解釋器都是 /usr/bin/python
。
本人原創的 《PyCharm 中文指南》一書前段時間一經發布,就火爆了整個 Python 圈,發布僅一天的時間,下載量就突破了 1000 ,并且在當天就在 Github 上就收獲了數百的 star,截至目前,下載量已經破萬。
這本書一共将近 200 頁,内含大量的圖解,制作之精良,值得每個 Python 工程師 人手一份。
為方便你下載,我将這本書上傳到 百度網盤上了,點贊 轉發 本篇文章後可自行獲取。
鍊接:https:///s/1-NzATHFtaTV1MQzek70iUQ
密碼:mft3
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!