请教Python中my_format_1与my_format_2两个函数的差异
两个Python格式化函数的差异解析
核心差异:正则表达式编译的语法错误
my_format_2存在语法错误,直接导致函数无法运行,而my_format_1的写法是正确的,具体差异如下:
正则编译逻辑
my_format_1:先将正则模板片段拼接成完整的字符串(r"\{(" + inner_pattern + r")\}"),再传入re.compile()编译为合法的re.Pattern对象,逻辑正确。my_format_2:错误地将re.compile(r"\{(")返回的Pattern对象与字符串inner_pattern、r")\}"直接做加法运算。Python中Pattern对象和字符串不支持+操作,运行时会抛出TypeError: unsupported operand type(s) for +: 're.Pattern' and 'str'错误。
变量命名区别
两个函数存储编译后正则对象的变量名不同:my_format_1用pattern,my_format_2用_text_replacement_pattern,这只是命名风格差异,不影响功能(若后者正则编译写法正确的话)。
其余逻辑(包括替换函数repl的实现、模板替换逻辑)完全一致,没有差异。
内容的提问来源于stack exchange,提问作者Edamame
相关产品推荐
相关产品推荐

