gpt4 book ai didi

python - 为什么Python的pprint模块会检查sys.modules中的 `"区域设置?

转载 作者:行者123 更新时间:2023-12-01 05:18:58 25 4
gpt4 key购买 nike

我正在阅读Python的pprint模块,并注意到它的safe_repr在调用之前会检查sys.modules中是否有“locale” repr 上的 str 值:

def _safe_repr(object, context, maxlevels, level):
typ = type(object)
if typ is str:
if 'locale' not in _sys.modules: # <-------------------------------
return repr(object), True, False
if "'" in object and '"' not in object:
closure = '"'
quotes = {'"': '\\"'}
else:
closure = "'"
quotes = {"'": "\\'"}
qget = quotes.get
sio = _StringIO()
write = sio.write
for char in object:
if char.isalpha():
write(char)
else:
write(qget(char, repr(char)[1:-1]))
return ("%s%s%s" % (closure, sio.getvalue(), closure)), True, False

来源:https://github.com/python/cpython/blob/master/Lib/pprint.py#L315

在什么情况下区域设置会影响 repr(some_str) 的值?

最佳答案

参见this threadthis one在 Python-dev 邮件列表上。他们描述了一个问题,其中可打印非 ASCII 字符(例如重音字符)的系统上的用户希望 repr 按原样保留这些字符,而不是将它们显示为转义字节序列。

我实际上不确定这就是您提到的特定代码的原因,但它似乎是相关的。看起来奇怪的是 isalpha 也依赖于语言环境,所以我不确定它是如何(或是否)实际工作的。

关于python - 为什么Python的pprint模块会检查sys.modules中的 `"区域设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com