• 0

ما الفرق بين eval وexec في بايثون؟

أُريد معرفة الفرق بين eval و exec، فهل هنالك شخص يمكنه مساعدتي لمعرفة الفرق بينهم، فأنا أحتاج إلى معادل ديناميكي لشيفرات برمجية للبايثون.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

إن exec كانت تعليمة برمجية في الإصدار الثاني من البايثون وأصبحت دالة في الإصدار الثالث منه، وهي تجمع (compiles) بشكل فوري المعادل للتعليمة برمجية أو مجموعة من التعليمات الموجودة في سلسلة نصية معينة، مثال لاستخدام exec:

exec('print(5)')           # prints 5.
# exec 'print 5'     if you use Python 2.x, nor the exec neither the print is a function there
exec('print(5)\nprint(6)')  # prints 5{newline}6.
exec('if True: print(6)')  # prints 6.
exec('5')                 # does nothing and returns nothing.

أما بالنسبة إلى eval فهي دالة مدمجة (وليست تعليمة برمجية)، وتقوم بمعادلة التعبير ومن ثم ستُرجع القيمة التي قام ذلك التعبير بإنتاجها كما يظهر في المثال التالي:

x = eval('5')              # x <- 5
x = eval('%d + 6' % x)     # x <- 11
x = eval('abs(%d)' % -100) # x <- 100
x = eval('x = 5')          # INVALID; assignment is not an expression.
x = eval('if 1: x = 4')    # INVALID; if is a statement, not an expression.


المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن