首页 > 解决方案 > 这个 Python 函数中的 f 字符串是如何工作的?

问题描述

嗨,我在某个网站的某个地方找到了以下功能,但有几个问题。该函数返回由星号组成的 n 行菱形。

  1. 这是一个串联的for循环吗?这是你能做的吗?
  2. 那个 f-string 中发生了什么?如何'':*<{line*2+1}工作?
def diamond(n):
    result = ""
    for line in list(range(n)) + list(reversed(range(n-1))):
        result += f"{'': <{n - line - 1}} {'':*<{line*2+1}}\n"

    return result

标签: pythonpython-3.xf-stringpep

解决方案


关于迭代:是的,它迭代两个范围的串联,但这不是最优化的方法。使用itertools.chain()看起来是一个更好的选择。

对于格式化部分:f"{'':*<{n}}"字面意思是“将空字符串右填充到字符*长度n”。换句话说,这是一种神秘的说法'*' * n

更一般地说,后面的一切都在格式规范 mini-language:中定义格式。

总的来说,这是一段相当糟糕的代码,不要拿它作为例子。


推荐阅读