python文件开头含义


概要

常见到python文件开头两行都会写如下两行代码。本文解释这两行代码的含义。

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

或者

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

一、#!/usr/bin/env python 与 #!/usr/bin/python 的区别

1. Linux系统:

Linux系统,根据文件开头(首行)的标记来判断文件类型,通过文件所指定的程序来运行。#!/usr/bin/python是告诉操作系统调用/usr/bin下的python解释器来执行这个脚本。例如,我们编写了hello.py脚本,执行时需要输入命令:python hello.py。因为有了这行声明,就可以直接用./hellp.py 来执行了。
#!/usr/bin/env python是为了防止没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到环境变量设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作,推荐这种写法。

2. Windows系统

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

二、# -- coding:utf-8 --

1. 作用:

在Linux下指定文件的编码方式,用于支持中文。
* python2需要在首行写-*- coding:utf-8 -*-才能支持中文,python3开始默认支持中文了,就可以省去这行注释。python2中,不声明,默认ASCII码编码;python3中,不声明,默认Unicode编码。

如果是在windows的Python3下运行你的程序,你完全可以不去写前两行注释的,但是出于好习惯,也为了方便跨平台以及兼容,写一写还是好的。

2. 写法:

常用的看到过以下三种写法

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

其实这三种都可以,只要符合以下正则表达式:
"^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)"

这三种中经常使用的是#-*- coding:utf-8 -*-,这是因为Emacs等编辑器使用这种方式进行编码声明。这样写可以支持多种编辑器,移植性好。


References:
https://www.python.org/dev/peps/pep-0263/
https://blog.csdn.net/qq_36512295/article/details/89057856

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值