لماذا بايثون الأطر العودة القواميس من تحكم ؟

StackOverflow https://stackoverflow.com/questions/634024

  •  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>

من PHP إلى web2py :

<اقتباس فقرة>   

في web2py طلب HTTP ل   "/ التطبيق / ج / و" تم تعيينها إلى دعوة ل   وو وظيفة () في ملف (وحدة تحكم)   c.py في "التطبيق" التطبيق. ال   هو مكتوب c.py الملف في بيثون. ال   إخراج و () وظيفة يمكن أن يكون   سلسلة (في هذه الحالة فإنه يتم إرجاعها)،   أو مجموعة من المتغيرات (كما نفذت   قاموس الثعبان). في الأخير   حالة يتم تقديم المتغيرات في   HTML بواسطة ملف ج / f.html، ودعا   الرأي.

والشيء الجميل هو أن محرك قالب مثل Jinja2 يعامل كائن وديكت بالمثل، إذا كان الأمر كذلك:

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

وبعد ذلك كل هذه الأعمال في بناء الجملة قالب:

d.color d['color'] o.color o['color']
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top