Python 何时(以及为什么)从“ConfigParser”插值中删除了“名称”魔术变量?
在Python2.7中,ConfigParser.ConfigParser将模式Python 何时(以及为什么)从“ConfigParser”插值中删除了“名称”魔术变量?,python,python-2.7,python-3.x,backwards-compatibility,configparser,Python,Python 2.7,Python 3.x,Backwards Compatibility,Configparser,在Python2.7中,ConfigParser.ConfigParser将模式%(\uuuu name\uuuu)插入为节的名称 在Python 3.6(以及3.3)中,configparser.configparser在与InterpolationMissingOptionError异常相同的插值中失败 插值的行为何时发生了变化?决策的基本原理是什么(因为它会损害向后兼容性) 与此相反,我不是在问如何在Python 3.x中获得插值。在Python 3.2中,旧类(实现了\uuu name\
%(\uuuu name\uuuu)插入为节的名称
在Python 3.6(以及3.3)中,configparser.configparser
在与InterpolationMissingOptionError
异常相同的插值中失败
插值的行为何时发生了变化?决策的基本原理是什么(因为它会损害向后兼容性)
与此相反,我不是在问如何在Python 3.x中获得插值。在Python 3.2中,旧类(实现了\uuu name\uuuu
插值)被删除并替换为以前的类。从:
对configparser模块进行了修改,以提高默认解析器及其支持的INI语法的可用性和可预测性。旧的ConfigParser类被删除,取而代之的是SafeConfigParser,它已被重命名为ConfigParser
详细动机似乎在以下章节中描述:
我想总结一下关于\uu name\uuu
行为的所有奇怪的事情,
解析器实例的每个部分中都有一个特殊的键
每个部分都有一个特殊的\uuuu name\uuuu
键
除了DEFAULTSECT
\uuuu name\uuuu
为从文件读取的每个节设置键
而不是通过add_section()
添加时
如果\uuuu name\uuuu
确实存在,则它在解析器.options('section')中不可见。
但是它在这里是可见的:parser.has_option('section','uu_name_u')==True
并且可以通过parser.get('section','uuuuu name')
并且可以通过parser.set('section'、'uuuuuu name'、'uuuuuu'、'ANY VALUE')进行更改。
可由解析器删除。删除选项('section','uuuuu name')
即使值由parser.set()
更改,也不会使用parser.write()
所有这些看起来都不像是一个特别完整的功能
它在最初创建时定义良好。或者,它可能已经腐烂了
随着时间的推移,现在没有人在使用它。不管怎样,我
无法使用当前的
实施它没有任何内部用途,只有
实际获取它的方法是parser.get('section','uuuuu name')
返回“section”。就像它变得毫无用处一样。属于
当然,可以使用内部解析器
语法分析器的结构,但这是错误的
我只想删除所有提到的特殊\uuuu名称\uuuuu
键
configparser.py。这里不关心向后兼容性,因为
在这种情况下,我们有一个概念,是如此破碎,你不能
实际使用它
作为对引用语句的注释,而不是对答案的注释:我发现\uuu name\uuu
键在插值中很有用(与[DEFAULT]
部分中的模式相结合)。