为什么Python的框架会从控制器返回字典?
-
10-07-2019 - |
题
为什么(例如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>
在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']
不隶属于 StackOverflow