ahmed1990 نشر 21 سبتمبر 2015 أرسل تقرير مشاركة نشر 21 سبتمبر 2015 قمت اليوم بالإطلاع على عدة مشاريع مكتوبة بلغة البايثون 3، ووجدت شيء غريب وهو وضع * أو ** أمام معامل في الدالة كما في المثال التالي:def foo(param1, *param2): def bar(param1, **param2): فما معنى هذه النجوم ؟ وما الفرق بينها ؟ اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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.للمزيد من المعلومات أنصحك بزيارة التوثيق الرسمي اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
ahmed1990
قمت اليوم بالإطلاع على عدة مشاريع مكتوبة بلغة البايثون 3، ووجدت شيء غريب وهو وضع * أو ** أمام معامل في الدالة كما في المثال التالي:
فما معنى هذه النجوم ؟ وما الفرق بينها ؟
رابط هذا التعليق
شارك على الشبكات الإجتماعية
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.