#template.py
import fileinput, re
field_pat = re.compile(r'\[(.+?)\]')
scope = {}
def replacement(match):
code = match.group(1)
try:
return str(eval(code, scope))
except SyntaxError:
exec code in scope
return
lines = []
for line in fileinput.input():
lines.append(line)
text = ''.join(lines)
print field_pat.sub(replacement, text)
#text.py
[x = 1]
[y = 2]
The sum of [x] and [y] is [x + y]
如果我在命令行中執行「蟒蛇template.py text.py」,如果將打印「1總和2是3'。在文件template.py中,replacement()是一個函數,爲什麼它是sub()函數的參數,並且它沒有參數?(它應該將一個匹配對象作爲參數)另外,什麼是範圍字典如果它是空的? 非常感謝!我不太理解這個模板函數在Python
pat_field.sub()中的替換函數確實有參數。它被稱爲「文本」。 –
感謝您的回覆!是的,我瞭解替換這裏用作一個字符串,並且該函數返回一個字符串。但是,如果函數沒有將匹配對象作爲參數,它如何返回一個字符串? –