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。

本文来自企鹅号 - Arkh媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏瓜大三哥

Yaffs_guts

Yaffs_guts ? 1.Chunk的读写擦除 2.文件地址映射 3.文件系统对象 1.Chunk的读写擦除 我们知道,NAND Flash的基本擦除单位是...

19610
来自专栏简书专栏

基于Pyecharts的词云图实战

标题中的英文首字母大写比较规范,但在python实际使用中均为小写。 本文的写作内容是将25000条评论当中的热词提取出来,并制作词云图 开发环境是jupy...

3923
来自专栏Ryan Miao

java并发编程实践学习(2)--对象的组合

先验条件(Precondition):某些方法包含基于状态的先验条件。例如,不能从空队列中移除一个元素,在删除元素前队列必须处于非空状态。基于状态的先验条件的操...

35314
来自专栏编程

pythonic之路(二)

pythonic之路(二) 十、多用生成器和生成器表达式 至于什么是生成器,可参看我的另一篇文章迭代对象、迭代器、生成器浅析 如果需要迭代处理的序列包含了无限的...

1826
来自专栏马涛涛的专栏

模块化、闭包与立即执行函数的使用、MVC里的V和C

将js分成不同的几个模块后,然后使用文件引入,但是会出现问题:如果使用var 声明变量,那么就会成为全局变量,这样容易覆盖.

821
来自专栏kalifaの日々

GCJ 2008Round1AA 菜鸟踩坑(C++)

踩到的坑: 不同于POJ,GCJ有两个测试用例的文档,供你在本地得到输出,我开始的时候下载文档之后直接把文档中的数据复制出来,运行代码时贴上去,也就是,从标准输...

2585
来自专栏后台全栈之路

图文并茂解释内存池原理

在 C 语言的动态申请内存技术中,相比起 alloc/free 系统调用,内存池(memory pool)优点很多。

6686
来自专栏黑泽君的专栏

Linux的头文件和C/C++的头文件

=============================================================================

1362
来自专栏刺客博客

(转载)Linux之sed匹配第N个进行替换

1.4K4
来自专栏Golang语言社区

游戏服务器之内存数据库redis客户端应用(上)

本文主要介绍游戏服务器的对redis的应用。介绍下redis c++客户端的一些使用。 存储结构设计: (1)装备道具的redis存储结构为例(Hashes存储...

4328

扫码关注云+社区