第一章 文字 文字常量和模板 模板

2021-09-10 06:01:29 字數 1536 閱讀 9100

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...