【问题标题】:What is the difference between print and formatted string literals?打印和格式化字符串文字有什么区别?
【发布时间】:2017-09-04 16:27:15
【问题描述】:

当我们可以像第 10 行一样使用print 时,使用代码(例如第 8 行和第 9 行)有什么意义?

my_name = 'Zed A. Shaw'
my_age = 35
my_height = 74
my_weight = 180
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'
print(f"Let's talk about {my_name}.") # Line 8
print(f"He's {my_height} inches tall.") # Line 9
print("He's", my_teeth, "pounds heavy.") # Line 10

【问题讨论】:

  • 对不起,我是新来的。
  • 而前两行是字符串插值的例子。它非常方便,但是这个例子太小了,好处不明显。
  • @Astolfo39 此处发布代码时的其他注意事项: 1. 不包括左侧的行号;它使人们更难运行您的代码。如果您需要指明行号,请使用注释。 2. 将代码缩进 4 个空格以正确格式化。请参阅我发布的修复代码。
  • 字符串格式化对于非平凡的情况相当强大,请参阅pyformat.info 的一些用途,但请注意您在此处使用的是 f 字符串,目前特定于 Python 3.6
  • @Carcigenicate 我在编写代码时需要缩进还是仅用于网站?当我在记事本中使用缩进时,终端会显示意外的缩进。我现在正在阅读的这本书的作者也是缩进的,所以当出现意外的缩进错误时,我真的很困惑。如果我删除所有缩进,一切都很好。

标签: python python-3.x format-string


【解决方案1】:

您在第 8-9 行看到的内容称为 格式化字符串文字 或简称为 f-strings。它们在 3.6 版中被添加到 Python 中,并在 PEP498 中进行了详细说明。它们基本上允许您将表达式直接嵌入字符串中。

如果我们可以使用第 10 行,那么使用第 8 行和第 9 行有什么意义?

那么,在正常调用print 时使用它们的意义是什么?在上面的例子中,不多。当您需要使用多个值格式化字符串时,就会显示出真正的好处。你可以直接使用变量名或在字符串中包含表达式,而不是做一堆字符串连接:

>>> a = 12
>>> b = 6
>>> f'The sum of 12 and 6 is: {a + b}'
'The sum of 12 and 6 is: 18'
>>> name = 'Bob'
>>> age = 32
>>> f'Hi. My name is {name} and my age is {age}'
'Hi. My name is Bob and my age is 32'
>>> def fib(n):
    if n <= 1:
        return 1
    return fib(n - 1) + fib(n - 2)

>>> f'The Fibonacci number of 10 is: {fib(10)}'
'The Fibonacci number of 10 is: 89'

虽然从上面的例子中可能很难看出,f-strings 非常强大。能够将整个表达式嵌入到字符串文字中是一个非常有用的功能,并且还可以使代码更加清晰和简洁。当您开始编写更多代码并且代码的用例变得不平凡时,这一点将变得非常清楚。

【讨论】:

    【解决方案2】:

    简而言之,它们允许您格式化字符串。如果您需要格式化,那么(例如)

    print(f"hello {world}")

    返回

    你好世界

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-07
      • 2011-11-13
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2019-06-13
      相关资源
      最近更新 更多