Python基础补课一 开头注释

#!/usr/bin/python

or

#!/usr/bin/env python

"#!"符号并不是Python 专属,它实际上是类Unix系统中通用的,并且有一个名字叫做“Shebang”。

它的作用是指定将要执行的脚本的解释器,也就是说它规定了接下来的所有代码要由谁来解释。例如,#!/bin/sh 的意思就是用sh shell来执行这个脚本。假如一个脚本连带它的地址叫做path/to/script,而它的第一行写着#!/bin/sh,那么相当于直接在命令行直接输入/bin/sh path/to/script,path/to/script在这里作为/bin/sh 的第一个参数。

Shebang的格式如下:

#!interpreter [optional-arg]

interpreter 是一个绝对地址,指向一个可执行的程序,optional-arg 是一个可选的参数,就如#!/usr/bin/env python中所示,python在这里是env的参数,env在环境变量中寻找名叫python的程序,然后用它来执行某个第一行写了这段代码的程序。另外,"#!"符号后面也可以加空格,不影响它的功能。

显然,#!/usr/bin/env python的写法要比#!/usr/bin/python更有通用性。

除此之外,单独的"#"符号更一般的功能是把整行代码作为注释。在类Unix 系统中,"#!"是个例外,它不被看做注释,而在Windows 系统中没有Shebang 的概念,就算把#和!写在一起,也是会被看成注释。所以在Windows 系统中这行代码其实是没有用的。

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

这是Python特有的表达方式。类似于Shebang,这段代码前面虽然有注释符号"#",但是却有着特定的功能。它的作用是声明所在的Python文件使用哪种编码方式。

默认的编码方是ASCII码

这个声明需要满足如下正则表达式:

^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)

所以实际上一般见到的那种写法只是为了好看。#coding=utf-8和#encoding:utf-8等等写法也都是可以识别的。

另外,就像"#!"要写在第一行,编码声明也规定要写在第一行(当第一行没有Shebang 时)或第二行。

· 以上规定来自于PEP(Python Enhancement Proposals),PEP 是由Python 社区提议和维护的,可以看作是Python 的编码规范。著名的提案有建议Python编程样式的PEP8。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171209G0GZMB00?refer=cp_1026

相关快讯

扫码关注云+社区