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

محتاج مساعدة بخصوص بعض المكتبات

مغلقمُجاب
بدأه HaCkEr-NiNjA في 9 مارس 2013 · 1 رد · 1,261 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم


 


شباب ارجو ان تشرحو لي عمل المكتبات التالية :


 


__builtin__   __future__   __main__.


 


وايضا اذا كان ممكن شرح عمل __init__


 


وجزاكم الله خيرا


لا إله إلا الله محمد رسول الله عليه الصلاة والسلام

سبحانك اللهم وبحمدك اشهد ان لا إله إلا انت استغفرك واتوب اليك

EIR8Q.jpg

 

بإذن الله سأتعلم python و php ولو نصف كل لغة

 

 

#2 أفضل إجابة

__builtin__ تتعامل معها يومياً وتحوي الوظائف والدوال وأنواع البيانات الأساسية في بايثون:

>>> import __builtin__
>>>
>>> dir(__builtin__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarnin
g', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'Floatin
gPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'Indentat
ionError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError',
'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWar
ning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'Syntax
Error', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocal
Error', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'Unicod
eWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__debu
g__', '__doc__', '__import__', '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring'
, 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'cmp', 'coerce',
'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval
', 'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasa
ttr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'le
n', 'license', 'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct',
'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr'
, 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', '
tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']
>>>

فائدتها أنها تتيح لك تجاول المشكلة التي ستحصل لو استخدمت اسم تستخدمه بايثون. مثلاً هنا أنشأت دالة اسمها xrange:

>>> def xrange():
...     print 'Range??'
...
>>>

لو حاولت استدعاء xrange تلك الخاصة بالمدى لن تعمل، سيعتقد مفسر بايثون أنك تريد الدالة التي أنشأتها قبل قليل:

>>> for i in xrange(0, 3):
...     print i
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: xrange() takes no arguments (2 given)
>>>

الحل أن تستخدم __builtin__.xrange لتجاوز هذه المشكلة:

>>> for i in __builtin__.xrange(0, 3):
...     print i
...
0
1
2
>>>


__future__ تحتوي وظائف ستضاف في اصدارات لاحقة من بايثون لكنها متوفرة في اصدارك:

>>> import __future__
>>>
>>> dir(__future__)
['CO_FUTURE_ABSOLUTE_IMPORT', 'CO_FUTURE_DIVISION', 'CO_FUTURE_PRINT_FUNCTION', 'CO_FUTURE_UNICODE_L
ITERALS', 'CO_FUTURE_WITH_STATEMENT', 'CO_GENERATOR_ALLOWED', 'CO_NESTED', '_Feature', '__all__', '_
_builtins__', '__doc__', '__file__', '__name__', '__package__', 'absolute_import', 'all_feature_name
s', 'division', 'generators', 'nested_scopes', 'print_function', 'unicode_literals', 'with_statement
']
>>>

يمكنك معرفة متى أضيفت الخاصية هكذا، سنجرب print_function:

>>> __future__.print_function
_Feature((2, 6, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 65536)
>>>

أضيفت في الأصدار 2.6.0 الأولي وستعتمد في 3.0. مثلاً لنجربها:

>>> print 'Hey!'
Hey!
>>>
>>> from __future__ import print_function
>>>
>>> print 'Hey!'
  File "<stdin>", line 1
    print 'Hey!'
               ^
SyntaxError: invalid syntax
>>> print('Hey!')
Hey!
>>>

في البداية طبعت print القديمة النصّ 'Hey!' وبعدما استوردنا print_function لم تعد تطبع حتى تضيف أقواس، دالة. في بايثون 3 لم تعد print "جملة statement"، مثلها مثل if\else\while بل أصبحت دالة.

__main__ اسم للوحدة الرئيسية في البرنامج، ملف الـpy الذي يبدأ منه برنامجك. بايثون لاتوجد بها دالة رئيسية تضمن أن البرنامج مبدوء من ملف الـpy الصحيح مثلها مثل لغات كـc\c++\java وغيرها. لذا فالأغلبية يستخدمونها كدالة رئيسية هكذا:

#!pythonif __name__ == '__main__':    print 'start ...'


بالنسبة لـ__init__ فهو البناء في بايثون. لما تنشيء class وتريد تمرير متغيرات للكائن الذي أنشأته منه فستحتاج لـ__init__:

>>> class Window(object):
...     def __init__(self, height, width):
...             self.height = height
...             self.width  = width
...
>>> 
>>> window = Window(400, 600) # هنا يأتي دورها لما تنشيء الكائن
>>>
>>> print window.height
400
>>> print window.width
600
>>>

إطلع على البرمجة الكائنية OOP لمبرمج Python الحديث إذا أردت معرفة المزيد حولها وحول البرمجة الكائنية.

تم تعديل هذه المشاركة بواسطة Mr.B في 9 مارس 2013 في 17:53

2

هذا الموضوع مغلق.

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