1. 程式人生 > >關於Python指令碼開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定

關於Python指令碼開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定

#!/usr/bin/python

是用來說明指令碼語言是python的

是要用/usr/bin下面的程式(工具)python,這個直譯器,來解釋python指令碼,來執行python指令碼的。

# -*- coding: utf-8 -*-

是用來指定檔案編碼為utf-8的

詳情可以參考:

在此,詳細的(主要是翻譯)解釋一下,為何要加這個編碼宣告,以及如何新增編碼宣告:

使用檔案編碼宣告以前所遇到的問題

Python 2.1中,想要輸入Unicode字元,只能用基於Latin-1的"unicode-escape"的方式輸入 -> 對於其他非Latin-1的國家和使用者,想要輸入Unicode字元,就顯得很繁瑣,不方便。

希望是:

程式設計人員,根據自己的喜好和需要,以任意編碼方式輸入字串,都可以,這樣才正常。

建議選用的方案

所以,才有人給Python官方建議,所以才有此PEP 0263。

此建議就是:

允許在Python檔案中,通過檔案開始處的,放在註釋中的,字串形式的,宣告,宣告自己的python檔案,用何種編碼。

由此,需要很多地方做相應的改動,尤其是Python檔案的解析器,可以識別此種檔案編碼宣告。

具體如何宣告python檔案編碼?

上面已經說了,是,檔案開始處的,放在註釋中的,字串形式的,宣告。

那具體如何宣告,以什麼樣的格式去宣告呢?

其實就是,你之前就見過的,這種:

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

對此格式的詳細解釋是:

  1. 如果沒有此檔案編碼型別的宣告,則python預設以ASCII編碼去處理
    • 如果你沒宣告編碼,但是檔案中又包含非ASCII編碼的字元的話,python解析器去解析的python檔案,自然就會報錯了。
  2. 必須放在python檔案的第一行或第二行
  3. 支援的格式,可以有三種:
    1. 帶等於號的: ?
      1 # coding=<encoding name>
    2. 最常見的,帶冒號的(大多數編輯器都可以正確識別的): ?
      1 2 #!/usr/bin/python # -*- coding: <encoding name> -*-
    3. vim的: ?
      1 2 #!/usr/bin/python # vim: set fileencoding=<encoding name> :
  4. 更加精確的解釋是: