我最近決定開始使用.format()
而不是%
(請參閱this question)。相反,{0}
,{1}
語法的,我想知道如果下面是一個可接受的使用:這是一個可接受的方式來使用str.format()?
import os
def get_filename(player_name):
for ext in ('jpg', 'jpeg', 'png'):
filename = "data/avatars/{player_name}.{ext}".format(**locals())
if os.path.exists(filename):
return filename
return None
我喜歡它的粗獷 - 局部變量進入串 - 但我想知道是否有任何理由我不該做到以上。
如果字符串來自不受信任的來源,您可能不希望公開您的變量。但是,就這樣,沒有問題。 – JBernardo
如果你曾經,甚至可能會格式化不受信任的源提交的字符串,你絕對不想這樣做。除此之外,一些pythonistas不喜歡這種「隱含的而非明確的」 - 每當有人建議語言應該使這個更容易/更明顯時,郵件列表上有爭論 - 但其他人不同意,所以我會說這是一種風格尚未解決的問題。 – abarnert
我同意將本地人暴露給可能不可信任的來源。這就是說,我個人沒有在這種風格中使用'**'的問題。 –