python 中 importlib.reload(sys) 的作用

本文解析了Python 2.x中使用reload(sys)设置默认编码为UTF-8的方法及其历史背景,并介绍了Python 3.x版本中默认编码已更改为UTF-8的情况。此外,还提供了检查Python默认编码方式的代码。
部署运行你感兴趣的模型镜像

1. reload(sys)的历史原因        

        在python2.x版本中,python默认的编码方式是ASCII编码,当程序中出现非ASCII编码时,程序会报错:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)

因为,此时python无法处理非ASCII编码的程序。

        解决这个问题的方法是修改python的默认编码方式,具体方式是,在脚本头部中添加以下代码:

import sys 
reload(sys)   # 加载python编译系统
sys.setdefaultencoding(‘utf8’)  # 把python的默认编码方式修改为“utf-8”方式

2. reload(sys)的应用现状

        以上是python2的写法,在python3中这个需要已经不存在了,因为python3已经不存在这个问题了:在Python2.x中由于str和byte之间没有明显区别,经常要依赖于defaultencoding来做转换;而在python3中有了明确的str和byte类型区别,从一种类型转换成另一种类型要显式指定encoding。换句话说,python2.x默认使用的是ASCII编码,而python3.X已经默认使用“utf-8”编码了。

        但是,即便如此,为了保险起见,或者习惯的原因,很多程序员在python3.x编程中,仍旧保留了 reload(sys)的习惯,不过命令的使用方式发生了变化,变成了以下模式:

import importlib,sys
importlib.reload(sys)

3. 如何查看python默认的编码方式

方法:

import sys
sys.getdefaultencoding()  

在我的python3.8中的结果: 

(base_env) PS D:\code\project> python
Python 3.8.15 (default, Nov 24 2022, 14:38:14) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>>   

由上可见,python3.8的默认编码方式已经是“utf-8”了。 

参考:

Python: 为什么需要reload(sys)后设置编码 - 简书

python 中的reload(sys)_小小小丸子儿的博客-优快云博客_reload(sys)

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值