杂谈 · 2020年4月14日 2

python脚本中常见开头:#!/usr/bin/python # -*- coding: UTF-8 -*-

说来有些不好意思,我用了py这么久,至今也不清楚这个常见的脚本开头是什么意思,如下:

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

在我的工作和学习中,感觉是否要加这个代码都不是特别重要,对结果影响不太大,这玩意看着就像个注释…实际上在特定场合有一定的作用。以下:

#!/usr/bin/Python
指定用什么解释器运行脚本以及解释器所在的位置

# -*- coding: utf-8 -*-
用来指定文件编码为utf-8的

那这是什么意思呢,我们可以来测试一下:

#这是一个hello world!脚本
def hw():
      print ('hello world')
    
if __name__ == "__main__":
   hw()

我在vscode中运行,直接得出hello world这没有什么问题;

同样的话,在终端中用

python hw.py

运行起来也是一点问题没有,所以有什么用呢?我们换一种形式:

./hw.py # 在终端中输入
# 会提示出错,文件无可执行权限:
-bash: ./hw.py: Permission denied

# 我们先将文件设为可执行:
chmod +x hw.py
# 孜孜不倦的继续运行:
./hw.py
# 出现以下提示:
./hw.py: line 1: syntax error near unexpected token `('
./hw.py: line 1: `def hw():'
# 因为我们的系统默认该脚本是shell脚本,把它当shell语句执行...

# 但是当我们在前面加上
#!/usr/bin/python
# 申明l这是个python脚本,要用python解释器来运行:
./test.py
# 输出:
hello, world
# 这就是第一行的作用

关于第二行,我也去官网查了一下,蛮有意思的;由于字符编码默认是使用ASCII编码去处理;如果你没声明编码,但是文件中又包含非ASCII编码的字符的话,python解析器去解析的 python 文件,自然就会报错了。

这里第二行的作用就是规定编码形式

其使用要求就是:必须放在python文件的第一行或第二行;

关于语法,百度、官网都有现成的样式,我就也不搬运过来了。

以上