الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح لاحد فقرات هذا الكود من فضلكم

بدأه hakp في 30 يونيو 2011 · 2 رد · 532 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم انا اخ جديد بينكم

الحقيقة اني اتعلم هذه الغة الرائعة

اريد شرح لبعض فقرات هذا الكود من فضلكم:

import platform 
for s in dir(platform): 
if not s.startswith("_"): #If it does not start with an underscore. 
f=getattr(platform, s)   #Fetch the attribute (should be a function..) 
try: 
print "[%s => %s]"%(s, f()) #Prints attr, returned value 
except: 
pass #Global catch for functions requires params(e.g popen).

في تعليمة برنت اشارة النسبة المؤية ما فائدتها ؟

حلقة فور لم افهم وظيفتها في هذا الكود

واشكركم مسبقا

قطرة ماء واحدة كافية ليستنتج العالم بالمنطق وجود محيط اطلسي او شلالات نياغارا من دون ان يكون قد رآها او سمع عنها من قبل

هكذا هي الحياة سلسلة ضخمة يكفي ادراك حلقة واحدة منها لتدركها كلها

#2

يعني أنه يحول القيمة إلى string (نص) ويعرضها.

والـfor هنا تمر على جميع قيم dir(platform) والتي هي جميع العناصر المحتواة في platform

تم تعديل هذه المشاركة بواسطة System Down في 30 يونيو 2011 في 01:41

1
#3

1- استدعاء الوحدة platform

>>> import platform

2- محتوى الوحدة

>>> dir(platform)
['DEV_NULL', '__builtins__', '__copyright__', '__doc__', '__file__', '__name__', '__package__', '__version__', '_abspath', '_architecture_split', '_bcd2str', '_default_architecture', '_dist_try_harder', '_follow_symlinks', '_ironpython_sys_version_parser', '_java_getprop', '_libc_search', '_lsb_release_version', '_mac_ver_gestalt', '_mac_ver_lookup', '_mac_ver_xml', '_node', '_norm_version', '_parse_release_file', '_platform', '_platform_cache', '_popen', '_pypy_sys_version_parser', '_release_filename', '_release_version', '_supported_dists', '_sys_version', '_sys_version_cache', '_sys_version_parser', '_syscmd_file', '_syscmd_uname', '_syscmd_ver', '_uname_cache', '_ver_output', '_win32_getvalue', 'architecture', 'dist', 'java_ver', 'libc_ver', 'linux_distribution', 'mac_ver', 'machine', 'node', 'os', 'platform', 'popen', 'processor', 'python_branch', 'python_build', 'python_compiler', 'python_implementation', 'python_revision', 'python_version', 'python_version_tuple', 're', 'release', 'string', 'sys', 'system', 'system_alias', 'uname', 'version', 'win32_ver']

3- لاحظ ان من القواعد المتعارف عليها في python ان اي مايبدأ ب _ فهو في الغالب ليس للإستخدام الخارجي فتقوم بإستثناء كل مايبدأ ب _

for s in dir(platform): 
if not s.startswith("_"): #If it does not start with an underscore.

4- الحصول على السمة او الدالة وهي مالايبدأ ب _ في هذا السياق

f=getattr(platform, s)

بإستخدام getattr وهنا تكون قيمة f هي السمة التي اسمها مخزن في s من الوحدة platform فإذا محتوي s قيمته dist فستكون f هي platform.dist

5-

try: 
print "[%s => %s]"%(s, f()) #Prints attr, returned value 
except: 
pass #Global catch for functions requires params(e.g popen).

تنقسم إلى

1- try/except block لأننا نفترض ان يمكن استدعاء اسمة مباشرة بلا معاملات متطلبة (فإذا مررنا على العنصر popen فسيحتاج متغيرات بلاقيم اساسية فلاتستطيع استدعائها داخل هذه ال loop

2- طباعة إسم العنصر المستدعى وناتج قيمته

هذا السطر

print "[%s => %s]"%(s, f())

مكافئ ل

print s, " ===> ", f()

فإستخدامك ل %s فقط لحجز مساحة داخل نص معين يتم استبدالها بناتج قيمة نصية من tuple تالية ففي الكود السابق ستجد معناها

اطبع [ ثم احجز مساحة لقيمة لانعرفها الآن ثم => ثم مساحة لقيمة اخرى لانعرفها الآن ثم اغلق القوس ]

فنجد اننا نحتاج لتحديد القيم التي تم حجز المكان لها وهي s (اسم العنصر) و عائد الدالة f

تسمى placeholder

http://en.wikipedia.org/wiki/Placeholder_%28Computing%29

3
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

مواضيع مشابهة