python 文件开头两行注释解释

less than 1 minute read

Published:

常见 python 文件的前两行都会写上如下两行代码, 下面分别解释这两条语句的意义。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

或者

#!/usr/bin/python
# -*- coding:utf-8 -*-

#!/usr/bin/python#!/usr/bin/env python

Linux 系统

Linux 系统根据文件开头(首行)的标记来判断文件类型,通过文件所指定的程序来运行。

#!/usr/bin/python

是告诉操作系统调用 /usr/bin 下的 python 解释器来执行这个脚本。例如,我们编写了 hello.py 脚本,执行时需要输入命令:python hello.py。因为有了这行声明,就可以直接用 ./hellp.py 来执行了,在这之前需要给脚本设置可执行权限 chmod +x hello.py

#!/usr/bin/env python

是为了防止没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作,推荐这种写法。

Windows 系统

Windows 系统用文件名的后缀(扩展名)来判断文件类型,只要是 .py 后缀的就关联到 python 程序去执行。因此,#!/usr/bin/python#!/usr/bin/env python 在 Window 系统下相当于普通的注释,并没有意义。

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

2.x 版本的 py 文件一般默认的是 ASCII 码,如果文件里有中文,运行时会出现乱码,注释是中文也不行。因此,需要把文件编码类型改为 utf-8 的类型,输入 # -*- coding:utf-8 -*- 之后会把文件编码强制转换为 utf-8。

3.x 版本的 py 文件的默认编码为 Unicode,也就是说不用进行编码声明,可以直接使用中文了。

参考资料及致谢

python文件开头两行#!/usr/bin/python和# -- coding:utf-8 --解释以及Pycharm自动创建py文件头部信息