1.1.2 模板
字串模板是pep292新增的部分,將作為內建拼接語法的替代做法。使用string.template拼接時,要在名字前加字首$來標識變數。或者,如果有必要區分變數和周圍的文字,可以使用大括號包圍變數。
下面這個例子對乙個簡單模板、使用%操作符的類似字串拼接以及使用str.format()的新格式化字串語法做了比較:
import string
values =
t = string.template(
"""varidable : $var
escape : $$
variable in text : $iable
""")
print
('template:'
,t.substitute(values)
)s =
"""variable:%(var)s
escape:%%
variable in text:%(var)siable
"""print
('interpolation:'
,s % values)
s ="""
variable:
escape:}
variable in text:iable
"""print
('format:'
,s.format
(**values)
)
在前兩種情況中,觸發字元($或%)要重複兩次來進行轉義。在格式化語法中,需要重複來轉義。
執行結果:
模板與字串拼接或格式化的乙個關鍵區別是,它不考慮引數的型別。值會轉換為字串,再將字串插入結果。這裡沒有提供格式化選項。例如,沒有辦法控制使用幾位有效數字來表示乙個浮點數。
不過,這也有乙個好處,通過使用safe_sunstitute()方法,就可以避免未能向模板提供所需的所有引數值時可能產生的異常。
import string
values =
t = string.template(
"$var is here but $missing is not provided"
)try
:print
('substitute() :'
,t.substitute(values)
)except keyerror as err:
print
('error:'
,str
(err)
)print
('safe_substitute():'
,t.safe_substitute(values)
)
由於values字典中沒有missing的值,所以substitute()會產生乙個keyerror.safe_substitute()則不同,它不會丟擲這個錯誤,而是會捕獲這個錯誤並保留文字中的變數表示式。 第一章 文字模式遊戲
第一章 文字模式遊戲 文字模式是字元狀態,也是 turbo c 的預設模式 textmode 能把螢幕設定為文字模式 void textmode int mode 1 mode 的值可用模式名 or等價的整數值 2 呼叫該函式後,螢幕復位,所有字元的屬性恢復為預設值 3 textmode c80 意...
第一章 函式模板
本章介紹函式模板。函式模板是代表一類函式的函式。函式模板提供能被呼叫不同型別的函式行為。一方面,函式模板代表一類函式的函式。大部分普通函式,除了函式的某些元素是左潛,一些元素是引數化,除此之外,開始乙個簡單的示例 1.1.1定義模板 下面的函式模板返回兩個值的最大值 templatet max t ...
C 提高程式設計 第一章 模板
模板就是建立通用的模具,大大提高復用性 c 另一種程式設計思想稱為泛型程式設計,主要利用的技術是模板 c 提高兩種模板機制 函式模板和類模板 模板不可直接使用,它只是乙個框架 模板的通用並不是萬能的 函式模板作用 建立乙個通用函式,其返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表 tem...