将各种数量的参数转换为字符串?

Convert various number of arguments into a string?

我有以下从可变大小参数创建名称的函数:

def create_name(*argv):
    """Create a name from passed arguments."""
    return f"%s" % "_".join(str(arg) for arg in argv)

当 运行 pylint 时,我收到以下警告。

 W1309: Using an f-string that does not have any interpolated variables (f-string-without-interpolation)

只是想知道是否可以进行任何改进来解决此警告。

你的表情f"%s" % "_".join(str(arg) for arg in argv)分解成这样:

  • f"%s" 使用 % 运算符
  • 格式化为 "_".join(str(arg) for arg in argv)
  • f"%s" 又是一个内插字符串,但由于其中没有 {},所以没有对其进行任何操作,因此 "%s" 将实现相同的效果
  • 使用 %"%s" 格式化为另一个字符串只会让您再次获得相同的字符串,因此整个表达式可能只是 "_".join(str(arg) for arg in argv)

所以,这些都有效:

return "_".join(str(arg) for arg in argv)
return "%s" % "_".join(str(arg) for arg in argv)
return f'{"_".join(str(arg) for arg in argv)}'

但没有理由不使用第一个,其余的只是增加了复杂性而没有功能。

具体来说,您收到该警告是因为 Python 中的内插字符串(或 'f-strings')期望替换 {} 中的表达式,但您的 f 字符串没有任何,所以 pylint 告诉你你可以删除 f。因为您的 f 字符串“没有任何内插变量”。