في هذا الثريد سأشرح python namespace and scopes
قبل نبدأ نشرح, لازم نعرف ماهو الـ name بالنسبة للبايثون؟
والجواب باختصار الـ name عبارة عن identifier نقدر عن طريقه نحدد object, ولا تنسى إن كل شيء في البايثون عبارة عن object!!
سواء كان class,method,variable...
@PrograminLovers
قبل نبدأ نشرح, لازم نعرف ماهو الـ name بالنسبة للبايثون؟
والجواب باختصار الـ name عبارة عن identifier نقدر عن طريقه نحدد object, ولا تنسى إن كل شيء في البايثون عبارة عن object!!
سواء كان class,method,variable...
@PrograminLovers
وبالمناسبة, البعض قد يتسائل: لو كانت الFunctions كائنات أو objects فما هو نوعها؟
الجواب :هي من نوع function.
وهذا المقال يشرح الfunction في البايثون ويوضح مفهوم الـfirst-class functions , والذي يسمح للدوال بأن يكون لها attributes وأن تمرر as return value
medium.com
الجواب :هي من نوع function.
وهذا المقال يشرح الfunction في البايثون ويوضح مفهوم الـfirst-class functions , والذي يسمح للدوال بأن يكون لها attributes وأن تمرر as return value
medium.com
بالتالي الآن نستطيع أن نقول بأن الname في البايثون ما هو إلا reference ويشير إلى memory address ل object معين.
الآن بقي أن نفهم ماهو الـ name space؟
في الحقيقة هو عبارة عن مجموعة من الأسماء تشير إلى كائنات collection of names mapped to objects. أو بعبارة أخرى كأنه dictionary.
الآن بقي أن نفهم ماهو الـ name space؟
في الحقيقة هو عبارة عن مجموعة من الأسماء تشير إلى كائنات collection of names mapped to objects. أو بعبارة أخرى كأنه dictionary.
أما بالنسبة لnamespaces الأخرى, ففي الواقع كلما ننشأ أو نستورد modulo أو class يقوم بإنشاء global namespace جديد خاص به, أما الlocal namespace فينشأ عند استدعاء الfunctions.
باختصار, عندما ننشأ متغير (فرضًا x) داخل function فيكون هذا المتغير local ولا يمكن استعماله إلا داخل الدالة.
وحتى نكون صورة أوضح فالمتغير يكون local داخل الـblock الذي أنشأ فيه, فقد يكون if statements, Loop, function..
وحتى نكون صورة أوضح فالمتغير يكون local داخل الـblock الذي أنشأ فيه, فقد يكون if statements, Loop, function..
طبعًا هذه مالم يتم تعريف المتغير على أنه nonlocal أو global.
جاري تحميل الاقتراحات...