لماذا بايثون الأطر العودة القواميس من تحكم ؟
-
10-07-2019 - |
سؤال
لماذا (على سبيل المثال web2py) هل إرجاع البيانات من وحدة تحكم في القاموس بدلا من المتغيرات (انظر القضبان)?
على سبيل المثال:
return dict(sape=4139, guido=4127, jack=4098)
بدلا من (هذا هو الطريق القضبان لا)
@var1 = "jello"
@var2 = "hihi"
هل هناك أي ميزة استخدام القواميس أكثر من عادي المتغيرات (السرعة-الحكمة/رمز الحكمة)?
تحديث:الطريقة المذكورة أعلاه هي في الواقع الطريقة الصحيحة لإنشاء قاموس (على الأقل في بيثون 2.6.1).طريقة أخرى (أن العديد من الناس يقولون انها صحيحة)
return {"var1": "jello", "var2": "hihi"}
لا تستخدم الكثير من بيثون الأطر.
من بايثون الوثائق:"عندما مفاتيح بسيطة سلاسل بعض الأحيان أنه من الأسهل لتحديد أزواج باستخدام الكلمات الرئيسية الحجج:"
dict(sape=4139, guido=4127, jack=4098)
المحلول
والميزة الرئيسية هي أن هذا هو السبيل الوحيد في بيثون العودة) أكثر من قيمة واحدة و ب) أن تعطي قيمة اسم.الخيارات الأخرى استخدام فئة (رمز إضافية), العودة tuple (لا أسماء ، لذا يجب عليك استخدام المؤشرات للوصول إلى القيم) أو السماح بالعودة واحد فقط القيمة التي ربما تعني أن الجميع سيعود القاموس لأن هذا هو الحل الأكثر بسيطة.
كما يسمح التفاف العديد من الطرق والانضمام/دمج نتائجها.وأخيرا ، فإنه يسمح للعودة مجموعات مختلفة من قيمة/اسم أزواج لكل مكالمة بسهولة ، على سبيل المثال ، حذف اختياري القيم أو العودة تلميحات إضافية.
نصائح أخرى
ويمكنك استخدام المتغيرات المحلية إذا كنت ترغب:
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 ل "/ التطبيق / ج / و" تم تعيينها إلى دعوة ل وو وظيفة () في ملف (وحدة تحكم) c.py في "التطبيق" التطبيق. ال هو مكتوب c.py الملف في بيثون. ال إخراج و () وظيفة يمكن أن يكون سلسلة (في هذه الحالة فإنه يتم إرجاعها)، أو مجموعة من المتغيرات (كما نفذت قاموس الثعبان). في الأخير حالة يتم تقديم المتغيرات في HTML بواسطة ملف ج / f.html، ودعا الرأي.
اقتباس فقرة>والشيء الجميل هو أن محرك قالب مثل Jinja2 يعامل كائن وديكت بالمثل، إذا كان الأمر كذلك:
d = {'color': 'red'}
o = Color(red)
وبعد ذلك كل هذه الأعمال في بناء الجملة قالب:
d.color d['color'] o.color o['color']