بايثون3 مِن مدارس w3-29Python Modules
اقتبس من ابراهيم حمادة في 26 أبريل، 2021, 11:47 متنويه:
لِأن التاب لا تظهر على الصفحة, و هي شيء مهم جدا في الإزاحة في كود بايثون
لذلك فإننا سنستبدل التاب بالكلمة 'tab' على هذه الصفحة
و مِن الأفضل إذا شئت أن تنسخ أي كود, أن تأخذه مِن الملف النصي, أو الملفات المُرفقة.
الوحدات في بايثون(Python Modules)
يمكن أن نسميها وحدة أو مكتبة, فكلاهما يؤديان نفس المعنىما هي الوحدة(module)؟
ضع في اعتبارك أن الوحدة النمطية هي نفسها مكتبة تحتوي على كود بلغةْ بايثون.
ملف يحتوي على مجموعة من الوظائف التي تريد تضمينها في التطبيق الخاص بك.إنشاء وحدة نمطية(module)
لإنشاء وحدة نمطية فقط قم بحفظ التعليمات البرمجية أو الكود الذي تريده في ملف مع إمتداد .py:
مثال
احفظ هذا الكود في ملف اسمه mymodule.py
def greeting(name):
tab print("Hello, " + name)
استخدام الوحدة النمطية
الآن يمكننا استخدام المكتبة أو الوحدة التي أنشأناها للتو ، باستخدام عبارةْ الاستيراد import:
مثال
استيراد الوحدة النمطية المسماة mymodule، و استدعاء دالة greeting الموجودة فيها:
import mymodulemymodule.greeting("Jonathan")
ستكون النتيجة:
Hello, Jonathan
تشغيل المثال » مِن مُجَلَّد module1
ملاحظة: عند استخدام وظيفة من وحدة نمطية، استخدم الأسلوب: module_name.function_name .المتغيرات في الوحدة(module)
يمكن أن تحتوي الوحدة النمطية على وظائف ، كما سَبَقَ و رأينا بالفعل .
ولكن أيضًا يمكن أن تحتوي على متغيرات من جميع الأنواع (مصفوفات ، قواميس ، كائنات ، إلخ):
مثال
احفظ هذا الكود في الملف mymodule.py
person1 = {
tab "name": "John",
tab "age": 36,
tab "country": "Norway"
}
مثال
استيراد الوحدة المسماة mymodule ، والوصول إلى قاموس person1:
import mymodulea = mymodule.person1["age"]
print(a)ستكون النتيجة:
36
تشغيل المثال » مِن مُجَلَّد module2تسمية الوحدة النمطية
يمكنك تسمية ملف الوحدة ما تريد ، ولكن يجب أن يكون إمتداد الملف هو .pyإعادة تسمية وحدة نمطية
يمكنك إنشاء اسم مستعار عند استيراد الوحدة النمطية باستخدام الكلمة الرئيسية as:
مثال
إنشاء اسم مستعار للوحدة mymodule يُسمى mx:
import mymodule as mxa = mx.person1["age"]
print(a)ستكون النتيجة:
36
تشغيل المثال » مِن مُجَلَّد module3الوحدات المُتضمَنة أو المدمجة(Built-in Modules)
هناك العديد من الوحدات المدمجة في بيثون ، والتي يمكنك استيرادها وقتما تشاء.
مثال
استيراد واستخدام وحدة platform
import platformx = platform.system()
print(x)النتيجة:
Windows
جربها بنفسك مِن ملف module4.pyاستخدام الوظيفة dir ()
هناك وظيفة مدمجة لسَرد جميع أسماء الوظائف (أو أسماء المتغيرات) في أي وحدة نمطية. ألا و هي وظيفة dir ():
مثال
سرد كافة الأسماء المعرفة التي تنتمي إلى الوحدة النمطية platform:
import platformx = dir(platform)
print(x)النتيجة:
['DEV_NULL', '_UNIXCONFDIR', '_WIN32_CLIENT_RELEASES', '_WIN32_SERVER_RELEASES', '__builtins__', '__cached__', '__copyri
ght__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', '_comparable_version'
, '_component_re', '_default_architecture', '_dist_try_harder', '_follow_symlinks', '_ironpython26_sys_version_parser',
'_ironpython_sys_version_parser', '_java_getprop', '_libc_search', '_linux_distribution', '_lsb_release_version', '_mac_
ver_xml', '_node', '_norm_version', '_parse_release_file', '_platform', '_platform_cache', '_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', '_ver_stages', 'architecture', 'collecti
ons', 'dist', 'java_ver', 'libc_ver', 'linux_distribution', 'mac_ver', 'machine', 'node', 'os', 'platform', 'popen', 'pr
ocessor', 'python_branch', 'python_build', 'python_compiler', 'python_implementation', 'python_revision', 'python_versio
n', 'python_version_tuple', 're', 'release', 'subprocess', 'sys', 'system', 'system_alias', 'uname', 'uname_result', 've
rsion', 'warnings', 'win32_ver']
جربها بنفسك مِن ملف module5.py
ملاحظة: يمكن استخدام الوظيفة dir() على جميع الوحدات ، وكذلك تلك التي تقوم بإنشائها بنفسك.الاستيراد من الوحدة النمطية
يمكنك اختيار استيراد أجزاء فقط من وحدة نمطية، باستخدام الكلمة from.
مثال
الوحدة المسماة mymodule لها وظيفة واحدة وقاموس واحد:
def greeting(name):
tab print("Hello, " + name)person1 = {
tab "name": "John",
tab "age": 36,
tab "country": "Norway"
}
مثال
استيراد القاموس person1 فقط من الوحدة النمطية:
from mymodule import person1print (person1["age"])
ستكون النتيجة:
36
تشغيل المثال » مِن مُجَلَّد module6
ملاحظة: عند الاستيراد باستخدام الكلمة الأساسية from لا تستخدم اسم الوحدة النمطية عند الإشارة إلى عناصر في الوحدة النمطية.
يعني: person1["age"] ، وليس mymodule.person1["age"]اختبر نفسك مع التمارين
التمرين:
ما هو الأسلوب الصحيح لاستيراد وحدة نمطية تسمى "mymodule"؟
... mymoduleالإجابة :
import mymoduleالدرس مع الملفات المُرفقة:
https://www.dropbox.com/s/ajbktm6h1g48br7/29Python%20Modules.zip?dl=1
تنويه:
لِأن التاب لا تظهر على الصفحة, و هي شيء مهم جدا في الإزاحة في كود بايثون
لذلك فإننا سنستبدل التاب بالكلمة 'tab' على هذه الصفحة
و مِن الأفضل إذا شئت أن تنسخ أي كود, أن تأخذه مِن الملف النصي, أو الملفات المُرفقة.
الوحدات في بايثون(Python Modules)
يمكن أن نسميها وحدة أو مكتبة, فكلاهما يؤديان نفس المعنى
ما هي الوحدة(module)؟
ضع في اعتبارك أن الوحدة النمطية هي نفسها مكتبة تحتوي على كود بلغةْ بايثون.
ملف يحتوي على مجموعة من الوظائف التي تريد تضمينها في التطبيق الخاص بك.
إنشاء وحدة نمطية(module)
لإنشاء وحدة نمطية فقط قم بحفظ التعليمات البرمجية أو الكود الذي تريده في ملف مع إمتداد .py:
مثال
احفظ هذا الكود في ملف اسمه mymodule.py
def greeting(name):
tab print("Hello, " + name)
استخدام الوحدة النمطية
الآن يمكننا استخدام المكتبة أو الوحدة التي أنشأناها للتو ، باستخدام عبارةْ الاستيراد import:
مثال
استيراد الوحدة النمطية المسماة mymodule، و استدعاء دالة greeting الموجودة فيها:
import mymodule
mymodule.greeting("Jonathan")
ستكون النتيجة:
Hello, Jonathan
تشغيل المثال » مِن مُجَلَّد module1
ملاحظة: عند استخدام وظيفة من وحدة نمطية، استخدم الأسلوب: module_name.function_name .
المتغيرات في الوحدة(module)
يمكن أن تحتوي الوحدة النمطية على وظائف ، كما سَبَقَ و رأينا بالفعل .
ولكن أيضًا يمكن أن تحتوي على متغيرات من جميع الأنواع (مصفوفات ، قواميس ، كائنات ، إلخ):
مثال
احفظ هذا الكود في الملف mymodule.py
person1 = {
tab "name": "John",
tab "age": 36,
tab "country": "Norway"
}
مثال
استيراد الوحدة المسماة mymodule ، والوصول إلى قاموس person1:
import mymodule
a = mymodule.person1["age"]
print(a)
ستكون النتيجة:
36
تشغيل المثال » مِن مُجَلَّد module2
تسمية الوحدة النمطية
يمكنك تسمية ملف الوحدة ما تريد ، ولكن يجب أن يكون إمتداد الملف هو .py
إعادة تسمية وحدة نمطية
يمكنك إنشاء اسم مستعار عند استيراد الوحدة النمطية باستخدام الكلمة الرئيسية as:
مثال
إنشاء اسم مستعار للوحدة mymodule يُسمى mx:
import mymodule as mx
a = mx.person1["age"]
print(a)
ستكون النتيجة:
36
تشغيل المثال » مِن مُجَلَّد module3
الوحدات المُتضمَنة أو المدمجة(Built-in Modules)
هناك العديد من الوحدات المدمجة في بيثون ، والتي يمكنك استيرادها وقتما تشاء.
مثال
استيراد واستخدام وحدة platform
import platform
x = platform.system()
print(x)
النتيجة:
Windows
جربها بنفسك مِن ملف module4.py
استخدام الوظيفة dir ()
هناك وظيفة مدمجة لسَرد جميع أسماء الوظائف (أو أسماء المتغيرات) في أي وحدة نمطية. ألا و هي وظيفة dir ():
مثال
سرد كافة الأسماء المعرفة التي تنتمي إلى الوحدة النمطية platform:
import platform
x = dir(platform)
print(x)
النتيجة:
['DEV_NULL', '_UNIXCONFDIR', '_WIN32_CLIENT_RELEASES', '_WIN32_SERVER_RELEASES', '__builtins__', '__cached__', '__copyri
ght__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', '_comparable_version'
, '_component_re', '_default_architecture', '_dist_try_harder', '_follow_symlinks', '_ironpython26_sys_version_parser',
'_ironpython_sys_version_parser', '_java_getprop', '_libc_search', '_linux_distribution', '_lsb_release_version', '_mac_
ver_xml', '_node', '_norm_version', '_parse_release_file', '_platform', '_platform_cache', '_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', '_ver_stages', 'architecture', 'collecti
ons', 'dist', 'java_ver', 'libc_ver', 'linux_distribution', 'mac_ver', 'machine', 'node', 'os', 'platform', 'popen', 'pr
ocessor', 'python_branch', 'python_build', 'python_compiler', 'python_implementation', 'python_revision', 'python_versio
n', 'python_version_tuple', 're', 'release', 'subprocess', 'sys', 'system', 'system_alias', 'uname', 'uname_result', 've
rsion', 'warnings', 'win32_ver']
جربها بنفسك مِن ملف module5.py
ملاحظة: يمكن استخدام الوظيفة dir() على جميع الوحدات ، وكذلك تلك التي تقوم بإنشائها بنفسك.
الاستيراد من الوحدة النمطية
يمكنك اختيار استيراد أجزاء فقط من وحدة نمطية، باستخدام الكلمة from.
مثال
الوحدة المسماة mymodule لها وظيفة واحدة وقاموس واحد:
def greeting(name):
tab print("Hello, " + name)
person1 = {
tab "name": "John",
tab "age": 36,
tab "country": "Norway"
}
مثال
استيراد القاموس person1 فقط من الوحدة النمطية:
from mymodule import person1
print (person1["age"])
ستكون النتيجة:
36
تشغيل المثال » مِن مُجَلَّد module6
ملاحظة: عند الاستيراد باستخدام الكلمة الأساسية from لا تستخدم اسم الوحدة النمطية عند الإشارة إلى عناصر في الوحدة النمطية.
يعني: person1["age"] ، وليس mymodule.person1["age"]
اختبر نفسك مع التمارين
التمرين:
ما هو الأسلوب الصحيح لاستيراد وحدة نمطية تسمى "mymodule"؟
... mymodule
الإجابة :
import mymodule
الدرس مع الملفات المُرفقة:
https://www.dropbox.com/s/ajbktm6h1g48br7/29Python%20Modules.zip?dl=1