2

为什么(例如 web2py)你从字典中的控制器返回数据而不是变量(参见 Rails)?

例如:

return dict(sape=4139, guido=4127, jack=4098)

而不是(Rails 就是这样做的)

@var1 = "jello" 
@var2 = "hihi"

使用字典比普通变量(速度方面/代码方面)有什么优势吗?

更新:上述方法实际上是创建字典的正确方法(至少在 Python 2.6.1 中)。另一种方式(很多人说它是正确的)

return {"var1": "jello", "var2": "hihi"} 

python框架没有大量使用。

来自Python 的文档:“当键是简单字符串时,有时使用关键字参数指定对更容易:”

dict(sape=4139, guido=4127, jack=4098)
4

3 回答 3

5

主要优点是这是 python 中返回 a) 多个值b) 为该值命名的唯一方法。其他选择是使用一个类(额外代码),返回一个元组(没有名字,所以你必须使用索引来访问这些值)或者只允许返回一个值,这可能意味着每个人都会返回一个字典,因为这是最简单的解决方案。

它还允许包装几种方法并加入/合并它们的结果。最后,它允许为每个调用轻松返回不同的值/名称对集,例如,省略可选值或返回额外的提示。

于 2009-03-11T11:13:09.513 回答
3

如果您愿意,可以使用局部变量:

def hello():
    var1 = "whatever you like"
    var2 = "another value"
    return locals() # or vars()

hello.html

<html><body>
 <p>var1 {{=var1}}</p>
 <p>var2 {{=var2}}</p>
</body></html>

从 PHP 到 web2py

在 web2py 中,对“/app/c/f”的 HTTP 请求被映射到对应用程序“app”中文件(控制器)c.py 中的函数 f() 的调用。文件 c.py 是用 Python 编写的。函数 f() 的输出可以是一个字符串(在这种情况下它被返回),或一组变量(实现为 python 字典)。在后一种情况下,变量通过文件 c/f.html(称为视图)呈现为 HTML。

于 2009-03-11T11:37:08.083 回答
-1

好消息是像 Jinja2 这样的模板引擎对对象和字典的处理方式类似,所以如果:

d = {'color': 'red'}
o = Color(red)

那么这些都在模板语法中起作用:

d.color d['color'] o.color o['color']
于 2009-03-11T11:19:50.840 回答