Python日课-2.3-要不要coding声明
曾老师的 Python 课(链接可点击) 第一课的所有内容已经全部发布,包括课程 PPT、课程视频都可以免费获取,可以使用微信扫描下面的二维码进群获取。
这套课程有两条教学线:
现场教学,约两周一次,每次一小时,主要为实际案例的讲解。
微信群教学,每日一次,由易到难讲解 Python 知识点,Python 相关的小故事,业界八卦,IT 行业最新信息。
本文是 Python 日课 2021-01-12 的内容整理。
今天 SAGITEAM 的毕老板在公司群里面发了一段 Python 代码:
# -*- coding: UTF-8 -*-
# Filename : helloworld.py
# author by : caibi
# 该实例输出嘲讽!
print('不要这样,我们程序员不喜欢')
然后被程序员吐槽了:特别讨厌这种头部加 UTF-8 的东西。
图像 2: 特别讨厌头部加 UTF-8 的东西
如果大家经常阅读 Python 源码,可能也会看到类似的源码头部声明。那么问题来了:Python 源代码头部类似于
这样的声明是否需要呢?来看看 PEP 263 的内容:https://www.python.org/dev/peps/pep-0263/
在 Python2 中,默认的 Python 源码是使用 ASCII 编码保存的。但 ASCII 编码是不支持中文、日文、韩文字符的。因此我们需要将 Python 源码使用 UTF-8 编码来保存。这可能导致 Python 解密源码的时候出错。
因此, PEP 263 定义了在源码开头加入声明的方式来让 Python 解析器能识别 UTF-8 编码的源文件。
把下面内容放在源码开头就可以了
代表字符编码。比如 , 。# coding=<encoding name>
实际上,并不是必须遵循上面的格式,只要遵循下面的正则表达式,Python 就可以识别这行代码。
^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)
但是 Python3 已经默认使用 UTF-8 编码来保存源码,因此在 Python3 中不需要加入编码声明。
详见:PEP 3120 -- Using UTF-8 as the default source encoding :https://www.python.org/dev/peps/pep-3120/
曾老师的 Python 课全部课程使用 Python3 来讲解,而且代码仅支持 Python3,我们不需要这个编码声明。