相关疑难解决方法(0)

Python字符串格式:%vs. .format

Python 2.6引入了该str.format()方法,其语法与现有%运算符略有不同.哪种情况更好,哪种情况更好?

  1. 以下使用每种方法并具有相同的结果,那么有什么区别?

    #!/usr/bin/python
    sub1 = "python string!"
    sub2 = "an arg"
    
    a = "i am a %s" % sub1
    b = "i am a {0}".format(sub1)
    
    c = "with %(kwarg)s!" % {'kwarg':sub2}
    d = "with {kwarg}!".format(kwarg=sub2)
    
    print a    # "i am a python string!"
    print b    # "i am a python string!"
    print c    # "with an arg!"
    print d    # "with an arg!"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 此外,何时在Python中发生字符串格式化?例如,如果我的日志记录级别设置为HIGH,我仍然会执行以下%操作吗?如果是这样,有没有办法避免这种情况?

    log.debug("some debug info: %s" % some_info)
    
    Run Code Online (Sandbox Code Playgroud)

python performance logging string-formatting

1323
推荐指数
15
解决办法
96万
查看次数

如何在Python中格式化具有可变位数的数字?

假设我想在前面显示带有可变数量的填充零的数字123.

例如,如果我想以5位数显示它,我会有数字= 5给我:

00123
Run Code Online (Sandbox Code Playgroud)

如果我想以6位数显示它,我会有数字= 6给出:

000123
Run Code Online (Sandbox Code Playgroud)

我将如何在Python中执行此操作?

python string string-formatting number-formatting

57
推荐指数
6
解决办法
6万
查看次数

unittest.mock:声明方法参数的部分匹配

Rubyist在这里编写Python.我有一些看起来像这样的代码:

result = database.Query('complicated sql with an id: %s' % id)
Run Code Online (Sandbox Code Playgroud)

database.Query被模拟了,我想测试ID是否被正确注入而不将整个SQL语句硬编码到我的测试中.在Ruby/RR中,我会这样做:

mock(database).query(/#{id}/)
Run Code Online (Sandbox Code Playgroud)

但是我无法在unittest.mock中看到像这样设置'选择性模拟'的方法,至少没有一些毛茸茸的side_effect逻辑.所以我尝试在断言中使用正则表达式:

with patch(database) as MockDatabase:
  instance = MockDatabase.return_value
  ...
  instance.Query.assert_called_once_with(re.compile("%s" % id))
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.这种方法确实有效,但它很难看:

with patch(database) as MockDatabase:
  instance = MockDatabase.return_value
  ...
  self.assertIn(id, instance.Query.call_args[0][0])
Run Code Online (Sandbox Code Playgroud)

好主意?

python unit-testing mocking

41
推荐指数
3
解决办法
1万
查看次数