Python第一行:编码声明

Python第一行是声明编码,这个声明的写法有如下几种:

首先推荐用如下写法:

#!/usr/bin/python
# -- coding: --

Python源码的头文件中要声明编码方式,如果你不只是会用到ascii码,你会看到五花八门的头文件申明,那么如何申明才是有效的呢?

#coding=utf-8

#coding:utf-8

#-- coding:utf-8 --

其实你可以参照官方文本http://www.python.org/dev/peps/pep-0263/的解释

如果不想读英文的话,可以参考如下的译文:

概要:
这个PEP的目的是介绍在一个Python源文件中如何声明编码的语法。随后Python解释器会在解释文件的时候用到这些编码信息。最显著的是源文件中对Unicode的解释,使得在一个能识别Unicode的编辑器中使用如FUT-8编码成为可能

怎么声明呢?
如果在Python中我们并没有声明别的编码方式,Python2是以ASCII编码作为标准编码方式的;Python3是以Unicode为编码标准。
为了定义源文件的编码方式,一个头声明应当被放在这个文件的第一行或者是第二行例如:

#coding=
或者(使用流行编辑器中的格式化方式)

#!/usr/bin/python

#-- coding: --
或者
#!/usr/bin/python

#vim: set fileencoding= :
不管怎么样,这些在第一行或者第二行的声明都要符合正则表达式

“coding[:=]\s*([-\w.]+)”
所以我们就可以知道为什么使用冒号或者等号都可以了,如果声明的编码python不能识别就会报错。如下给出一些样例,这些样例足以说明所有申明的方式了。

1. With interpreter binary and using Emacs style file encoding
   comment:

      #!/usr/bin/python
      # -*- coding: latin-1 -*-
      import os, sys
      ...

      #!/usr/bin/python
      # -*- coding: iso-8859-15 -*-
      import os, sys
      ...

      #!/usr/bin/python
      # -*- coding: ascii -*-
      import os, sys
      ...

2. Without interpreter line, using plain text:

      # This Python file uses the following encoding: utf-8
      import os, sys
      ...

3. Text editors might have different ways of defining the file's
   encoding, e.g.

      #!/usr/local/bin/python
      # coding: latin-1
      import os, sys
      ...

4. Without encoding comment, Python's parser will assume ASCII
   text:

      #!/usr/local/bin/python
      import os, sys
      ...

5. Encoding comments which don't work:

   Missing "coding:" prefix:

      #!/usr/local/bin/python
      # latin-1
      import os, sys
      ...

   Encoding comment not on line 1 or 2:

      #!/usr/local/bin/python
      #
      # -*- coding: latin-1 -*-
      import os, sys
      ...

   Unsupported encoding:

      #!/usr/local/bin/python
      # -*- coding: utf-42 -*-
      import os, sys
      ...

你可能感兴趣的:(Python便签,Python编码声明,Python头文件)