簡體   English   中英

print和格式化的字符串文字之間有什么區別?

[英]What is the difference between print and formatted string literals?

當我們可以像第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

在第8-9行中看到的內容稱為格式化字符串文字或簡稱為f字符串 它們已在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字符串非常強大 能夠將整個表達式嵌入到字符串文字中是非常有用的功能,並且還可以使代碼更清晰簡潔。 當您開始編寫更多代碼並且代碼的用例變得不平凡時,這一點將變得非常清楚。

簡而言之,它們允許您格式化字符串。 如果您需要格式化,那么(例如)

print(f"hello {world}")

退貨

你好世界

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM