Python代码中“# -*- coding: utf-8 -*-”的作用及正确的位置

2023-10-27

语句:

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

的作用是告诉Python解释器和IDE,我这个文件中的内容你们该以什么样的编码进行读取和保存。

在Python 3中,默认是以“utf-8”对代码内容进行读取和保存的。

语句

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

的具体作用通过下面这个例子来说明。

现在有一个文件,名字叫AAA.py,我们把其编码从UFT-8改为ANSI,如下图所示,
在这里插入图片描述
在这里插入图片描述
改为ANSI编码后我们运行这个py文件,运行结果如下图所示:
在这里插入图片描述
上面这句报错我复制如下:
SyntaxError: Non-UTF-8 code starting with ‘\xe7’ in file E:\Project\PycharmProjects\P-001\Files\P-001\current\AAA.py on line 2, but no encoding declared。
意思是解释器发现这个文件并不是UTF-8的编码类型,UTF-8的编码类型的文件会以 ‘\xe7’ 开头,但它没有以 ‘\xe7’ 开头,所以它并不是UTF-8编码类型的文件。如果不是UTF-8编码类型的文件,那就需要在文件的首行声明一下这个文件的编码类型,但是很遗憾,解释器没有发现类似于

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

的说明语句。

我们在文件的首行加上下面这条语句:

# -*- coding: ANSI -*-

即将文件内容改成下面这样:

# -*- coding: ANSI -*-

str1 = '昊虹图像算法'

再运行就不会报上面的错误了,因为我虽然文件的编码为ANSI,不是Python3默认的UTF-8,但我用语句

# -*- coding: ANSI -*-

声明了我的文件编码类型,所以就不会报上面的错误了。

总结一下:
语句:

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

用于向Python3解释器声明源代码文件所用的编码类型,Python3默认就是将文件按utf-8进行读取和保存的,所以当文件的编码为utf-8时,其实这句话没必要写。
当文件的编码不为utf-8时,比如为ANSI编码时,我们可以用下面这条语句告诉Python3解释器编码类型为ANSI,

# -*- coding: ANSI -*-

从其作用来看,显然这条语句应该是放置于代码的头一行,否则就起不了作用的,因为Python3解释器在解释其内容时首先要知道编码类型嘛。

最后需要说明一点:
一个文档在Pycharm中打开,不管其之前的编码类型是什么,一旦发生内容上的修改,然后保存,那么编码类型都会被转化为UTF-8类型。所以在Pycharm环境下,如果我们习惯性地把文件作一个改动并保存,那么是不存在编码问题的,也就没有必要用本博文重点解释的编码声明语句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python代码中“# -*- coding: utf-8 -*-”的作用及正确的位置 的相关文章

  • Python3.8.1的安装和运行

    01Python 3 8 1的安装和运行 在Windows10系统下安装python 1 1访问www python org网站 在浏览器地址栏中输入www python org访问网站 1 2下载python版本 根据自己的需要或者喜好下
  • python基础常见的字符串格式写法以及字符串基础练习题及常见操作知识

    字符串格式化 格式化一 s 字符串占位符 d 整数占位符 u 无符号整形 f 浮点数字 格式化二 name 小帅 age 18 print 格式化方式一 欢迎大帅比 name 工作年限 str age print 格式化方式一 欢迎大帅比
  • Python基础系列2——Numpy数值计算及分析

    文章目录 1 实验内容 2 实验过程 2 1 numpy数组的建立 索引 计算 统计等 2 2 利用numpy对数据集 iris data 进行分析 3 实验结论及注意事项 1 实验内容 1 numpy数组的建立 索引 计算 统计等 2 利
  • 【python基础】猜数字游戏

    前言 相信很多人都玩过猜数字游戏 游戏规则也十分简单 还记得小时候我经常和朋友一起玩 我们在桌上摆放一些1 100以内的数字卡片 一个人随机抽取一张卡片 这里不许偷看卡片内容 首先这个人随机猜一个数字 然后其他人会告诉你猜大了还是猜小了 先
  • 浅拷贝和深拷贝: copy模块的copy()和deepcopy()函数(*^▽^*)

    我们在平时处理列表和字典的时候 有时候希望创建一个列表或者字典的副本拿出来使用 但是同时我们也不希望列表 字典 和其列表 字典 副本还保留着某种联系的时候 比如说我们在修改列表的时候副本也跟着同步被修改了 这是我们最不想看到的情况 这种情况
  • 自学笔记-Python基础09--第三方库的概念及操作

    库 具有相关功能模块的集合 python的一大特色就是拥有强大的库 库可以分为三种 1 标准库 python自带的 无需安装直接使用 2 第三方库 由他人提供的 使用时需要先安装 3 自定义库 自己写的模块 自己用 标准库 想看python
  • SQLAlchemy使用详细功能SqlHelper封装

    环境与版本 python 3 10 SQLAlchemy 2 0 9 网上好多sql语句查询相关的代码执行异常 不确定是否与版本有有关 说明 封装了比较实用的 复合唯一索引表的插入或更新 多条件查询 叠加条件查询 以及返回pandas Da
  • python爬虫对网页进行数据抓取

    1 拿到网页源代码 1 1 先看网址 和请求方式 1 2导入requests模块 1 3 发现爬不出来 是因为豆瓣做了伪装 1 3需要更换头部 1 4需要设置utf 8 要不然会乱码2 提取想要的数据 2 1 加载re模块 并且进行预加载
  • Python——os.mkdir()在指定路径下创建文件夹 + 路径的连接理解

    引子 我在用路径连接函数 os path join 时发现 其连接的各级目录必须首先存在 才可以连接 也即是说连接的各文件夹必须首先存在 因为个各层级的目录以文件夹的形式表现出来 基于此 我开始研究如何先在指定路径下创建文件夹 1 在指定路
  • 三、Python基础(高级变量类型篇)

    三 Python基础 高级变量类型篇 目录 三 Python基础 高级变量类型篇 一 列表 list 1 列表的定义 2 列表的常用方法和操作 对象 方法名 参数 3 for in对列表迭代遍历 4 利用 for in 的输出技巧 5 se
  • Python基础11 (End)

    Python基础11 End 学习11 第七章 模块 module 1 模块化 module 程序设计理念 1 Python 程序由模块组成 一个模块对应 python 源文件 一般后缀名是 py 2 模块由语句组成 运行 Python 程
  • Python中类成员变量与实例成员变量相互影响的原因超详细解释

    今天在看python学习手册时看到了两句话 一 第26章中 类对象提供默认行为 二 第26章中 实例对象是具体的元素 书中给的例子是这样的 但上网查了一下好像第二句话不是非常准确 如下面的文章 原文 https www jb51 net a
  • Python之sys模块详解

    sys模块 sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分 常见用法 sys argv 命令行参数List 第一个元素是程序本身路径 sys modules keys 返回所有已经导入的模块列表 sys exc
  • 进程,线程,协程总结

    进程 三种状态 就绪态 运行的条件都已经慢去 正在等在cpu执行 执行态 cpu正在执行其功能 等待态 等待某些 条件满足 例如一个程序sleep了 此时就处于等待态 生命周期 用户编写代码 代码本身是以进程运行的 启动程序 进入进程 就绪
  • Python-字典:键值对的魔法世界

    深入理解Python字典 键值对的魔法世界 在Python中 字典 Dictionary 是一种强大且常用的数据结构 它允许我们存储和组织键值对 Key Value 数据 与列表和元组不同 字典中的数据是无序的 但每个数据都与一个唯一的键相
  • 经典的python基础练习

    假设市面上有4种面值 硬币 20元 10元 5元 1元 输入一个钱数 能够使用最少的硬币凑成这个钱数 def mon money ss 0 0 0 0 coinKinds 20 10 5 1 for i in range len coinK
  • 本地docker搭建jupyter运行环境

    1 容器操作 1 拉取镜像 docker pull ubuntu 2 创建容器 创建容器时要先考虑好自己要开设几个端口 要提前指定好映射关系 docker run dit name LocalDocker p 3303 8888 p 330
  • 【Python】PyCharm中调用另一个文件的函数或类

    欢迎来到Python专栏 PyCharm中调用另一个文件的函数或类 o o 嗨 我是小夏与酒 博客主页 小夏与酒的博客 该系列文章专栏 Python学习专栏 文章作者技术和水平有限 如果文中出现错误 希望大家能指正 欢迎大家关注 目录 Py
  • python自学篇十五[Numpy——基础(一):(jupyter Notebook+Anaconda+conda+jupyter配置及简单操作 ]

    文章目录 概括 Numpy Scipy pandas matplotlib 一 Numpy 基础 1 jupyter Notebook 1 安装Anaconda 2 Anaconda是什么 1 Anaconda Navigator 2 Ju
  • mayavi TypeError: unsupported operand type(s) for -: ‘str‘ and ‘str‘

    目录 mayavi安装报错 模拟异常 TypeError unsupported operand type s for str and str 模拟异常 TypeError unsupported operand type s for st

随机推荐

  • requests上传和flask接收OpenCV的图片数据

    方式一 从本地读取到图片或帧 上传到flask服务器 客户端发送 def image post data type code type code area id area id 以文件的格式上传 节省传输时间 file file file
  • 腾讯云技术大牛教你,MySQL内核深度优化

    作者介绍 简怀兵 腾讯云数据库高级工程师 负责腾讯云CDB内核及基础设施建设 先后供职于Thomson Reuters和YY等公司 PTimeDB作者 曾获一项发明专利 从事MySQL内核开发工作8年 具有丰富的优化经验 在分布式存储等领域
  • main(int argc, char **argv)中argc和argv的具体含义,以及操作系统如何处理它们

    main int argc char argv 中argc和argv的具体含义 以及操作系统如何处理它们 请高手详细解释一下 谢谢 1 argc 参数的个数 argv 参数的字符串形式的数组 2 C C code int main int
  • 解决display:none

    selenium 解决页面元素display none的方法 在UI自动化测试中 有时候会遇到页面元素无法定位的问题 包括xpath等方法都无法定位 是因为前端元素被设置为不可见导致 这篇博客 介绍下如何通过JavaScript修改页面元素
  • 2019CISCN华中赛区分区赛部分wp

    pwn1 64位程序 只开启了NX 栈不可执行 保护 试着运行发现是一个菜单题 选项二 三没用 拖到IDA中查看 发现在encrypt选项中存在gets造成的栈溢出漏洞 不过输进去的字符串被分段异或了 我们可以先进行异或一下 然后在输入程序
  • 嵌入式C惯用法

    1 cpp里的c代码按照c的方式来编译和调用 时常在cpp的代码之中看到这样的代码 ifdef cplusplus extern C endif 一段代码 ifdef cplusplus endif 这样的代码到底是什么意思呢 首先 cpl
  • git for Linux 详细安装步骤 及 详细设置 ----git源码编译安装

    前记 git svn sourcetree gitee github gitlab gitblit gitbucket gitolite gogs 版本控制 仓库管理 系列工程笔记 Platform Ubuntu18 04 LTS Git
  • gulp-rev 和 rev-collector 控制版本总是上一个旧版本的bug原因

    原因是执行顺序的问题 css处理 gulp task css function return gulp src css path pipe stylus config stylus pipe autoprefixer config auto
  • Acwing - 131. 直方图中最大的矩形

    131 直方图中最大的矩形 AcWing题库 题目描述 tag 单调栈 直方图是由在公共基线处对齐的一系列矩形组成的多边形 矩形具有相等的宽度 但可以具有不同的高度 例如 图例左侧显示了由高度为 2 1 4 5 1 3 3 的矩形组成的直方
  • 2021年防关联浏览器哪个好(防关联测评)

    之前文章我已经介绍了防关联浏览器行业的隔离效果比较 这次专门为大家分享一下各个软件的售后客服专业度 软件操作界面易上手程度 以及相应时间方面的比较 作为一个付费用户 尤其是像我这种花了几万学习的亚马逊测评基础知识的同学 本身就没有什么电脑网
  • wifi 小米pro 驱动 黑苹果_macOS安装教程兼小米Pro安装过程记录

    引言 一直以来就想写个macOS的安装教程 可惜没有TransMac以及BIOS设置的截图 正好小米PRO黑苹果高级群的班长 原味菠萝最近一直在写小米Pro安装黑苹果的教程 由于他工作繁忙 一直也没有完稿 我就在他写作的基础上将这篇教程完善
  • Day 6 - 集合及字符串习题

    输入一个字符串 打印所有奇数位上的字符 下标是1 3 5 7 位上的字符 例如 输入 abcd1234 输出 bd24 s1 adkfuyhiwuhtshd print s1 1 2 输入用户名 判断用户名是否合法 用户名长度6 10位 u
  • 小白教程!x2m和x3m音频格式转换.mp3格式

    如果你下载的文件是一个 x2m或 x3m格式文件的 这种格式是经过加密处理的 正常情况下是无法进行格式转换的 不过这里也不是完全没有办法 今天就教你一个比较简单的x2m和x3m格式转换方法 这个格式转换方法需要借助一个小工具来实现 不过它并
  • 初识puppet!

    什么是puppet puppet是一个IT基础设施自动化管理工具 它能够帮助系统管理员管理基础设施的整个生命周期 供应 provisioning 配置 configuration 联动 orchestration 及报告 reporting
  • 创建网页实现上传文件(简明教程)

    在菜鸟教程中有文件和详细教程 链接 菜鸟教程 其中想要实现上传任意文件只需要将upload file php文件中的内容替换为以下代码
  • vsCode 调试c代码时 undefined reference to `WinMain‘

    编辑好的文件没有进行保存 或者是没有定义main函数 保存后执行即可 保存前 保存后 另外注意主函数main 拼写问题
  • 关于Class.forName()

    Class forName xxx 采用类加载机制 传入类的全路径名可以在程序运行的过程中动态地加载一个类 返回这个类的Class对象 这个对象对于任何一个类来说都是单例唯一的 通过这个Class对象利用反射进而可以创建这个类的实例 得到这
  • 【06】Vue_集成mavon-editor编辑器

    06 Vue 集成mavon editor编辑器 官网 https www npmjs com package mavon editor 文章目录 06 Vue 集成mavon editor编辑器 一 mavon editor 安装 二 项
  • OTDR曲线中的事件类型

    我们通过OTDR原理一文了解了反射 散射的原理 现在我们结合上图 形象的看下正常连接点的光反射OTDR图形是什么样子的 首先是UPC连接 大家都知道UPC连接的端面是超球面 即使再精密的端面连接也会有间隙 也就是会有空气 折射率肯定就会变化
  • Python代码中“# -*- coding: utf-8 -*-”的作用及正确的位置

    语句 coding utf 8 的作用是告诉Python解释器和IDE 我这个文件中的内容你们该以什么样的编码进行读取和保存 在Python 3中 默认是以 utf 8 对代码内容进行读取和保存的 语句 coding utf 8 的具体作用