Python文件頭注釋的含義,你肯定不懂


 

本文檔描述了Python語言文件頭里典型注釋的含義。

1. 指定解釋器

不管在linux還是在windows下,要運行一個python文件(比如hello.py)的方式一般都是

python ./hello.py
  • 1

然而,有一種方式可以直接運行hello.py文件,那就是直接在python文件開頭指定所使用的python解釋器。然后就可以直接用

./hello.py
  • 1

運行了(當然得先chmod +x ./hello.py讓這個文件有可執行權限)。

“在python文件開頭指定解釋器”的方式有兩種。另外如果你python剛學不久,建議可以先去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程項目可拿,不懂的問題多跟里面的人交流,進步更快哦!

1.1. 直接指定解釋器路徑

#!/usr/bin/python
  • 1

上面這種方式,指定了必須用/usr/bin/python這個解釋器來解釋本python文件。 
當然了,也可以寫成

#!/usr/local/python3/bin/python3.4
  • 1

只要那個路徑下有python解釋器。

1.2. 指定系統環境變量設定的解釋器路徑

#!/usr/bin/env python
  • 1

而這種方式,指定了使用linux環境變量$PATH里某個路徑下名為python的解釋器來解釋本python文件。 
(注意到開頭/usr/bin/env是linux里讀寫環境變量的一個程序) 
如果環境變量$PATH的內容是/usr/bin:/usr/local/bin:/usr/local/python3/bin,那么上面的注釋就意味着會依序尋找這些路徑: 
1. /usr/bin/python 
2. /usr/local/bin/python 
3. /usr/local/python3/bin/python 
第一個存在的路徑,就會作為python解釋器使用。 
當然,如果寫成這樣

#!/usr/bin/env python3
  • 1

那么查找解釋器的路徑順序就會變成 
1. /usr/bin/python3 
2. /usr/local/bin/python3 
3. /usr/local/python3/bin/python3

2. 標明本py文件的編碼類型

前置知識:文本文件保存在硬盤上時,是需要按照一定編碼規則來保存的。比如GBK、UTF-8、UCS2之類。而文本編輯器、閱讀器、瀏覽器打開硬盤上的文本文件時,需要知道這個文本文件的編碼規則。

以下是正文——

python文件第二行一般是下面兩種之一:

# -*- coding: utf-8 -*-
  • 1

或者

# coding: utf-8
  • 1

這一行的意思是:告訴python解釋器,這個文件是以UTF-8方式編碼存儲的。其實類似文本文件開頭的BOM。

對於全文都是ASCII編碼的py文件而言,這行注釋一般沒用,因為ASCII字符在絕大多數編碼存儲方式中都是相同的(除了UCS2這種)。但是,如果代碼中出現了明文的中文、日文之類非ASCII的字符(作為字符串常量或注釋),他們在不同編碼存儲方式下,在硬盤上的字節流是不同的。 
例如下面這段python代碼

s = "函數"
  • 1

在硬盤上保存時會這樣

編碼 字節流
GBK 73 20 3D 20 22 BA AF CA FD 22
UTF-8 73 20 3D 20 22 E5 87 BD E6 95 B0 22

(注意到除了兩個漢字,其他字符對應的字節都是一樣的,比如最后那個0x22表示最后那個雙引號) 
如果不告訴Python解釋器如何理解這個py文件,就會出現亂碼。 
比如,如果py文件實際上是以UTF-8方式存儲的(就是表格第二行),但python解釋器卻以GBK編碼存儲去理解它,那么這段代碼會被理解為

s = "鍑芥暟"
  • 1

那么用

print(s)
  • 1

打印字符串時,就會看到亂碼文字了。 另外如果你python剛學不久,建議可以先去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程項目可拿,不懂的問題多跟里面的人交流,進步更快哦!
綜上,為了讓python解釋器在解釋py文件時能正確理解這個py文件里的非ASCII字符,就需要


免責聲明!

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



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