ahmed1990 نشر 21 سبتمبر 2015 أرسل تقرير نشر 21 سبتمبر 2015 قمت اليوم بالإطلاع على عدة مشاريع مكتوبة بلغة البايثون 3، ووجدت شيء غريب وهو وضع * أو ** أمام معامل في الدالة كما في المثال التالي:def foo(param1, *param2): def bar(param1, **param2): فما معنى هذه النجوم ؟ وما الفرق بينها ؟ اقتباس
0 هشام رزق الله نشر 21 سبتمبر 2015 أرسل تقرير نشر 21 سبتمبر 2015 الفرق أن **name تستقبل قاموس يحتوي على جميع مفاتيح المعاملات بينما *name تستقبل tuple يحتوي على المعاملات، فمثلا لنفترض أن لدينا الدالة التالية:def cheeseshop(kind, *arguments, **keywords): print("-- Do you have any", kind, "?") print("-- I'm sorry, we're all out of", kind) for arg in arguments: print(arg) print("-" * 40) keys = sorted(keywords.keys()) for kw in keys: print(kw, ":", keywords[kw])وقمنا باستدعائها على الشكل التالي:cheeseshop("Limburger", "It's very runny, sir.", "It's really very, VERY runny, sir.", shopkeeper="Michael Palin", client="John Cleese", sketch="Cheese Shop Sketch")فسوف تقوم بطباعة التالي:-- Do you have any Limburger ?-- I'm sorry, we're all out of Limburger It's very runny, sir. It's really very, VERY runny, sir. ---------------------------------------- client : John Cleese shopkeeper : Michael Palin sketch : Cheese Shop Sketch لاحظ أننا قد قمنا بفرز القاموس عن طريق sorted وإذا لم تقم بهذا فسوف تنتج مشاكل في الترتيب ولاحظ أيضا أنه يجب وضع *name قبل **name.للمزيد من المعلومات أنصحك بزيارة التوثيق الرسمي اقتباس
السؤال
ahmed1990
قمت اليوم بالإطلاع على عدة مشاريع مكتوبة بلغة البايثون 3، ووجدت شيء غريب وهو وضع * أو ** أمام معامل في الدالة كما في المثال التالي:
فما معنى هذه النجوم ؟ وما الفرق بينها ؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.