我經常看到以下模式,並想知道是否有避免重複的方法。字符串格式。從本地環境獲取關鍵字參數
life = 42
badger = some_function()
s = "({life}, {badger})".format(life=life,badger=badger)
局部變量通常具有與它們在字符串中的含義相對應的連貫名稱。我目前使用的更簡潔:
s = "({0}, {1})".format(life,badger)
該模板通常使用關鍵字更清晰。是否有一種通用/簡潔的方式來獲取格式以在包含函數的詞彙環境中查找關鍵字?
s = "({life}, {badger})".format(env())
謝謝!
'** locals()'是非常好的,thank you。在兩分鐘內四個很好的答案是相當了不起的 –
請記住'locals()'只提供一個本地範圍內的變量字典 - 如果你想從函數中調用它,那麼外部變量都不會實際上你需要創建一個結合了'globals()'和'locals()'的新字典來獲得'全範圍':'.format(** dict(globals(),** locals()) )'這時它開始變得笨重,內存效率低下,並且潛在的問題纏身了。我建議你擴展'string.Formatter'並實現你自己的範圍處理和按需請求值調用。 – zwer