一般Python程序的文件开头会有这两行代码。
这里解释一下这两行代码的意义。
一、# coding=utf-8
或者
注意:# coding=utf-8 的 = 号两边不要空格。
- 作用:将编码格式改为utf-8格式
- 编码与编码格式:编码简单而言就是一种翻译的过程,将机器能够理解的语言转换为我们人类可以理解的语言,编码格式就是翻译的方式,根据对存储空间与编码效率的要求来选择不同的编码格式,常见的编码格式有:ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16 等。
- Python版本:Python2中默认的编码格式为ASCII码格式,Python3中默认的编码格式为UTF-8格式。
- 使用原因:再次绕回来,为什么要加上这句话呢。因为在ASCII码格式下不能出现中文字符(代码或注释都不可以),否则就会报错,只有在utf-8格式下才能正常编译运行。所以在Python2版本下,只要出现中文,一定要加上这句头部声明。
- 查看当前python环境下的默认编码格式:进入python后,在控制台下输入以下命令即可。
>>import sys
>>sys.getdefaultencoding()
//python2 为>>'ascii',python3 为>>'utf-8'
- 代码的可移植性:Python3的默认格式就是utf-8,这句话对它就没有意义了,但是考虑到代码的可移植性,还是建议编写时养成习惯,加上这句话。
二、#!/usr/bin/env python
或者
- 作用:用来指定本脚本用什么解释器来执行
- 代码可以被分为两个部分
- #!:叫做shebang或者sha-bang,有的翻译组将它译为 释伴,即“解释伴随行”的简称。后面可以加上一个或数个空白字符。
- /usr/bin/env python:解释器的绝对路径,用于指明执行这个脚本文件的解释器。
- 注意:这行代码只对 Linux/Unix 用户适用,其他环境下等同于注释。但是为了代码的可移植性,建议在编写程序的时候加上。
- #!/usr/bin/python和#!/usr/bin/env python的区别:
- #!/usr/bin/python:是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。
- #!/usr/bin/env python :这种用法是为了防止操作系统用户没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。
#!/usr/bin/python 相当于写死了 python 路径。 #!/usr/bin/env python 会去环境设置寻找 python 目录,可以增强代码的可移植性。
- 推荐写法:#!/usr/bin/env python
三、编译运行Python
方法和编译运行shell脚本类似
chmod u+x xxx.py
./xxx.py
- 方法二:直接告诉操作系统用python解释器来编译运行该程序(所以这种情况不加#!/usr/bin/env python也可以运行)
python xxx.py
四、结论
为了让Python程序在各种系统中,在包含有中文的情况下,可以顺利运行,加上下面的文件头部声明。
|