Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 何时(以及为什么)从“ConfigParser”插值中删除了“名称”魔术变量?_Python_Python 2.7_Python 3.x_Backwards Compatibility_Configparser - Fatal编程技术网

Python 何时(以及为什么)从“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\

在Python2.7中,ConfigParser.ConfigParser将模式
%(\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]
    部分中的模式相结合)。