为什么(例如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的文档: <!> quot;当键是简单的字符串时,有时使用关键字参数更容易指定对:<!> quot;

dict(sape=4139, guido=4127, jack=4098)
有帮助吗?

解决方案

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

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

其他提示

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

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中为HTTP请求   QUOT <!>; <!> /应用/ C / F QUOT;被映射到一个调用   文件中的函数f()(控制器)   应用程序中的c.py <!>“app <!>”;该   file c.py是用Python编写的。该   函数f()的输出可以是a   string(在这种情况下返回),   或一组变量(实现为   一本蟒蛇字典)。在后者   case变量被渲染成   HTML文件由c / f.html编写,称为   图。

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

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

然后这些都在模板语法中工作:

d.color d['color'] o.color o['color']
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top