检查是否从格式字符串中提供值

所以基本上我有一个格式字符串 fmt 其中 format 方法将在另一个我无法控制的模块中被调用。

在这个格式字符串中,我想选择性地包含一个字段,如果它是作为格式方法的参数提供的,否则我想把它排除在外。

就像这样。

fmt = 'Optional value: {value if wasPassed("value") else ""}'
fmt.format(value = "foo") #Should return 'Optional value: foo'
fmt.format() #Should return 'Optional value: ' and not throw a Key error

由于我无法访问 “format “的调用,我想在字符串中解决这个问题,为了方便起见,我把它作为一个格式字符串传递给日志模块,但我真的很想有一个通用的解决方案来解决上述问题。

在特定的使用情况下,我可以传递一个自定义的格式化器给记录器,但这个问题的真正目的是在要格式化的字符串的表达式中解决这个问题。如果这是不可能的,我也希望得到一个说明原因的答案,这样我就可以停止在错误的树上吠叫,而只是使用一个自定义格式化器)。

解决方案:

假设你可以控制模块何时使用参数,你可以写一个 “包装 “函数,比如说

def myformat(fmt, arg=""):
    module.method(fmt, arg)

或者像这里的递归方法(基于捕获和处理KeyError)可能是所有可能的方法(基于 文件),因为你无法访问方法的内部。https:/stackoverflow.coma568959287224691。

虽然我在使用这个方法时会很小心,特别是它不会适用于更复杂的模块方法,这可能会在下一次迭代时造成副作用(或者只是简单地将一个字符串打印两次而不是一次)。

以上是作为一个一般性的回答,而对于这个问题的日志方面的具体回答,我们很可能(假设没有其他可能的方法)需要知道你使用的是什么模块。

给TA打赏
共{{data.count}}人
人已打赏
未分类

Shell+Python文件读写问题的并行化

2022-9-8 23:17:39

未分类

Vue.js:有没有办法让@submit.prevent出现在一个项目的所有表单上?

2022-9-8 23:17:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索