發表文章

目前顯示的是 1月, 2017的文章

[Python 3.6] 初探格式化字串實字 (Formatted string literals)

Formatted string literals ,我暫時翻譯成 格式化字串實字 ,是 Python 在 3.6版加入的新特色,這個功能源自於 PEP 中的 498號提案 ,而這個特色又被稱作 f-string ,讓我們來看看要怎麼使用吧: name = 'Sky' print(f'My name is {name}.') # 'My name is Sky.' 有看到單引號前的 f 嗎?那是表示這個字串中會包含需要被取代的部分(F 也可以),然後讓我們看看字串中間的 左大括號 ,這是取代欄位的開始,右大括號則是標示出了這個欄位的結束。 Replacement field  取代欄位 在這個欄位中,基本上可以放入任何 Python表示式,甚至包含 lambda 函式: myNumber = 5 print(f'''My number is a {(lambda n: "Lucky" if n % 3 == 0 else "Unlucky")(myNumber)} number.''') # My number is a # Unlucky number. 需要注意的是:lambda 主體需要以 ( ) 小括號包住,否則會引起 SyntaxError 例外;這裡同時展現了 f-string 另一個特色:可以像我們平常使用字串時那樣以三個引號表達多行字串,同樣地,任何空白字元都會被包起來,成為字串的一部分。 小問題 如果你寫了一行這樣的程式碼: print(f'"{" is a opening curly bracket.') # File "<stdin>", line 1 # SyntaxError: f-string: unterminated string 會發現說 引起了 SyntaxError 例外,為什麼呢? 應該很淺顯易懂,左大括號代表的是一個欄位的起點,所以上述的例子中,Python直譯器會找不到 代表結束的 右大括號。 那如果字串中需要一個真正的左 / 右大括號呢?  可以使用{{ 或 }},將