所以我正在使用Web.py,我有以下代码:
check = db.select('querycode', where='id=$id', vars=locals())[0]
效果很好,它将$ id替换为变量。但是在这一行中它不起作用:
web.sendmail('[email protected]', "[email protected]", 'Subject', 'Hello $name')
我有什么错,怎么办?我是否也正确理解了这个概念:用$符号代替变量?
最佳答案
Python通常不执行PHP样式的变量插值。
您在第一条语句中看到的是db.select
的特殊功能,它在调用者的上下文中从局部变量中选择变量值。
如果要在第二行中替换变量,则必须使用Python提供的一种方法手动进行操作。这是一种这样的方式。
web.sendmail('[email protected]', "[email protected]", 'Subject', 'Hello %s' % name)
这是另一种方式。
web.sendmail('[email protected]', "[email protected]", 'Subject', 'Hello {0}'.format(name))
第一个选项记录在String Formatting operations中。
有关第二个选项的更多详细信息,请参见
str.format
和Format String Syntax的文档。