Python文件头注释的含义,你肯定不懂
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:冰火梦幻 
本文档描述了Python语言文件头里典型注释的含义。
1. 指定解释器
不管在linux还是在windows下,要运行一个python文件(比如hello.py)的方式一般都是
python ./hello.py
- 1
然而,有一种方式可以直接运行hello.py文件,那就是直接在python文件开头指定所使用的python解释器。然后就可以直接用
./hello.py
- 1
运行了(当然得先chmod +x ./hello.py让这个文件有可执行权限)。
“在python文件开头指定解释器”的方式有两种。另外如果你python刚学不久,建议可以先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题多跟里面的人交流,进步更快哦!
1.1. 直接指定解释器路径
#!/usr/bin/python
- 1
上面这种方式,指定了必须用/usr/bin/python这个解释器来解释本python文件。
当然了,也可以写成
#!/usr/local/python3/bin/python3.4
- 1
只要那个路径下有python解释器。
1.2. 指定系统环境变量设定的解释器路径
#!/usr/bin/env python
- 1
而这种方式,指定了使用linux环境变量$PATH里某个路径下名为python的解释器来解释本python文件。
(注意到开头/usr/bin/env是linux里读写环境变量的一个程序)
如果环境变量$PATH的内容是/usr/bin:/usr/local/bin:/usr/local/python3/bin,那么上面的注释就意味着会依序寻找这些路径:
1. /usr/bin/python
2. /usr/local/bin/python
3. /usr/local/python3/bin/python
第一个存在的路径,就会作为python解释器使用。
当然,如果写成这样
#!/usr/bin/env python3
- 1
那么查找解释器的路径顺序就会变成
1. /usr/bin/python3
2. /usr/local/bin/python3
3. /usr/local/python3/bin/python3
2. 标明本py文件的编码类型
前置知识:文本文件保存在硬盘上时,是需要按照一定编码规则来保存的。比如GBK、UTF-8、UCS2之类。而文本编辑器、阅读器、浏览器打开硬盘上的文本文件时,需要知道这个文本文件的编码规则。
以下是正文——
python文件第二行一般是下面两种之一:
# -*- coding: utf-8 -*-
- 1
或者
# coding: utf-8
- 1
这一行的意思是:告诉python解释器,这个文件是以UTF-8方式编码存储的。其实类似文本文件开头的BOM。
对于全文都是ASCII编码的py文件而言,这行注释一般没用,因为ASCII字符在绝大多数编码存储方式中都是相同的(除了UCS2这种)。但是,如果代码中出现了明文的中文、日文之类非ASCII的字符(作为字符串常量或注释),他们在不同编码存储方式下,在硬盘上的字节流是不同的。
例如下面这段python代码
s = "函数"
- 1
在硬盘上保存时会这样
| 编码 | 字节流 |
|---|---|
| GBK | 73 20 3D 20 22 BA AF CA FD 22 |
| UTF-8 | 73 20 3D 20 22 E5 87 BD E6 95 B0 22 |
(注意到除了两个汉字,其他字符对应的字节都是一样的,比如最后那个0x22表示最后那个双引号)
如果不告诉Python解释器如何理解这个py文件,就会出现乱码。
比如,如果py文件实际上是以UTF-8方式存储的(就是表格第二行),但python解释器却以GBK编码存储去理解它,那么这段代码会被理解为
s = "鍑芥暟"
- 1
那么用
print(s)
- 1
打印字符串时,就会看到乱码文字了。 另外如果你python刚学不久,建议可以先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题多跟里面的人交流,进步更快哦!
综上,为了让python解释器在解释py文件时能正确理解这个py文件里的非ASCII字符,就需要
Python文件头注释的含义,你肯定不懂的更多相关文章
- pycharm新建py文件时,自动补充文件头注释信息
步骤: 1.File -->Settings 2.选择 File and Code Templates -> Files -> Python Script 文件头注释信息代码样式: ...
- goland 文件头注释
打开GoLand的setting选项 依次选择Editor,CodeStyle ,File and Code Templates ,Go File 根据自己需要添加即可 /* @Time : ${DA ...
- VA中用文件头注释和函数头注释Suggestions
写C++代码,不能不用VA,这里贴两个我最常用的注释Suggestions. [1.File Header 文件头注释] /*** @file $FILE_BASE$.$FILE_EXT$* ...
- Vim 自动文件头注释与模板定义
Vim 自动文件头注释与模板定义 在vim的配置文件.vimrc添加一些配置可以实现创建新文件时自动添加文件头注释,输入特定命令可以生成模板. 使用方法 插入模式输入模式输入seqlogic[Ente ...
- myeclipse中java文件头注释格式设置
转载:http://www.blogjava.net/yxhxj2006/archive/2014/01/14/408940.html myeclipse中java文件头注释格式设置 windows ...
- 使用korofileheader插件vs code添加文件头注释和函数注释
korofileheadervs code添加文件头注释和函数注释1.extensions搜索fileheader,安装koroFileHeader2.设置:edit=>perference=& ...
- vim创建程序文件自动添加头部注释/自动文件头注释与模板定义
Vim 自动文件头注释与模板定义 在vim的配置文件.vimrc添加一些配置可以实现创建新文件时自动添加文件头注释,输入特定命令可以生成模板. 使用方法 插入模式输入模式输入seqlogic[Ente ...
- IDEA 自定义文件头注释
什么是 IDEA 自定义文件头注释 IDEA 自定义文件头注释指的是创建 Java 类文件时,IDEA 可以自动设置文件头的注释信息,如下: 如何设置 IDEA 自定义文件头注释 打开 File-&g ...
- python文件头的#-*- coding: utf-8 -*- 的作用
这一句其实是告诉编辑器,我的代码使用的格式是utf-8,如果没有这句编辑器就会自动去识别代码的文件格式,如果发现文件格式不是utf-8,就有可能去将编码格式转换为utf-8,比如本来是gbk的,编辑器 ...
随机推荐
- Weblogic 12c 的 Apache HTTP Server 整合插件(Plug-In)下载地址
资料来源:到哪里下载Weblogic 12c 的Plug-In 为 Apache HTTP Server 摘录如下: 最新的Weblogic 12c不再为 Apache HTTP Server提供缺省 ...
- 大宇java面试系列(二):jvm组成部分
1. 说一下 JVM 的主要组成部分?及其作用? 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库接口(Na ...
- 从EFCore上下文的使用到深入剖析DI的生命周期最后实现自动属性注入
故事背景 最近在把自己的一个老项目从Framework迁移到.Net Core 3.0,数据访问这块选择的是EFCore+Mysql.使用EF的话不可避免要和DbContext打交道,在Core中的常 ...
- thinkphp5中取消了3.2版本中的单字母函数,初用tp5可能不大适应,下边给出两者的对应参照表,以便查阅。
3.2版本 5.0版本 C config E exception G debug L lang T 废除 I input N 废除 D model M db A controller R action ...
- [LC]237题 Delete Node in a Linked List (删除链表中的节点)(链表)
①中文题目 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入: hea ...
- Centos上通过shell脚本备份数据库
#!/bin/bash ds=`` list=`date +%Y`/`date +%m` dname="callme" eval "mkdir -p $list" ...
- 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建
准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: ...
- Unix, Linux以及NT内核和它们各自衍生的系统关系图
- 如何编译和使用自定义Qt动态链接库 | how to build and use user-defined qt library
本文首发于个人博客https://kezunlin.me/post/cf628dd8/,欢迎阅读! guide to build qt library and use in another proje ...
- H3C交换机、路由器 ssh登录配置
VLAN 10 创建vlan并配好ip inter vlan 10 ip add 20.1.1.1 24 qu ip route-static 0.0.0.0 0 20.1.1.254 写好静 ...