কম্পিউটার

পাইথনে eval পদ্ধতি?


পাইথন ইভাল() পদ্ধতিটি একটি এক্সপ্রেশন স্ট্রিংকে পাইথন এক্সপ্রেশন হিসাবে পার্স করার জন্য ব্যবহৃত হয় এবং তারপর প্রোগ্রামের মধ্যে পাইথন এক্সপ্রেশন চালায়।

সিনট্যাক্স

সাধারণ পাইথন ইভাল() পদ্ধতির সিনট্যাক্স হল,

eval(expression, globals=None, locals=None)

কোথায়:

  • অভিব্যক্তি :প্রয়োজনীয় স্ট্রিং প্যারামিটার, এটি হল এক্সপ্রেশন স্ট্রিংটি পার্স করা এবং পাইথন এক্সপ্রেশন হিসাবে কার্যকর করা হচ্ছে।

  • গ্লোবাল :ঐচ্ছিক প্যারামিটার হল একটি অভিধান যা এক্সিকিউট করার জন্য উপলব্ধ এক্সপ্রেশন নির্দিষ্ট করতে ব্যবহৃত হয়। যদি স্পষ্টভাবে উল্লেখ না করা হয়, স্ট্যান্ডার্ড বিল্ট-ইন পদ্ধতি পাওয়া যায় যেমন ‘__builtins__’:কোনো উপাদান নেই।

  • স্থানীয়রা :ঐচ্ছিক প্যারামিটার, স্থানীয় ভেরিয়েবল এবং eval() ফাংশনের জন্য উপলব্ধ পদ্ধতি নির্দিষ্ট করতে ব্যবহৃত হয়।

এখন eval() পদ্ধতিটি আরও ভালভাবে বোঝার জন্য, বিভিন্ন উদাহরণের মাধ্যমে এটি বোঝা যাক।

সরল eval() পদ্ধতি

str1 = 'Hello'
print(eval('str1 =="Hello"'))
print(eval('str1 + ", Python"'))

আউটপুট

True
Hello, Python

ইউজার ইনপুট সহ পাইথন ইভাল() পদ্ধতি

from math import *
for l in range(1,3):
   func = input("Enter Math Function to Evaluate:\n")
   try:
      print(eval(func))
      except Exception as ex:
      print(ex)
      break
print('Done')

আউটপুট

Enter Math Function to Evaluate:
abs(-42)
42
Enter Math Function to Evaluate:
max(12, 3, 4 , 2, 17)
17
Done

পাইথন ইভাল() গ্লোবাল এবং স্থানীয়

eval() পদ্ধতিতে আমাদের কোন ফাংশনগুলি পাস করতে হবে তা বোঝার আগে, চলুন সমস্ত ফাংশন এবং ভেরিয়েবলের তালিকাটি গ্লোবাল এবং লোকাল স্কোপে উপস্থিত রয়েছে।

from math import *
def square_root(n):
   return sqrt(n)
# Print current global symbol table as a dictionary
print('List of Global symbols:\n',globals())
#Print current local symbol table as a dictionary
print('\nList of Local symbols:\n',locals())
#print list of names in the current local scope
print('\nList of names in current local scope:\n',dir())

আউটপুট

List of Global symbols:
{'__name__': '__main__',
'__doc__': None,
'__package__': None,
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__spec__': None, '__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>,
'__file__': 'C:/Python/Python361/eval_example1.py',
'acos': <built-in function acos>,
'acosh': <built-in function acosh>,
'asin': <built-in function asin>,
'asinh': <built-in function asinh>,
'atan': <built-in function atan>,
'atan2': <built-in function atan2>,
'atanh': <built-in function atanh>,
'ceil': <built-in function ceil>,
'copysign': <built-in function copysign>,
'cos': <built-in function cos>,
'cosh': <built-in function cosh>,
'degrees': <built-in function degrees>,
'erf': <built-in function erf>,
'erfc': <built-in function erfc>,
'exp': <built-in function exp>,
'expm1': <built-in function expm1>,
'fabs': <built-in function fabs>,
'factorial': <built-in function factorial>,
'floor': <built-in function floor>,
'fmod': <built-in function fmod>,
'frexp': <built-in function frexp>,
'fsum': <built-in function fsum>,
'gamma': <built-in function gamma>,
'gcd': <built-in function gcd>,
'hypot': <built-in function hypot>,
'isclose': <built-in function isclose>,
'isfinite': <built-in function isfinite>,
'isinf': <built-in function isinf>,
'isnan': <built-in function isnan>,
'ldexp': <built-in function ldexp>,
'lgamma': <built-in function lgamma>,
'log': <built-in function log>,
'log1p': <built-in function log1p>,
'log10': <built-in function log10>,
'log2': <built-in function log2>,
'modf': <built-in function modf>,
'pow': <built-in function pow>,
'radians': <built-in function radians>,
'sin': <built-in function sin>,
'sinh': <built-in function sinh>,
'sqrt': <built-in function sqrt>,
'tan': <built-in function tan>,
'tanh': <built-in function tanh>,
'trunc': <built-in function trunc>,
'pi': 3.141592653589793,
'e': 2.718281828459045,
'tau': 6.283185307179586,
'inf': inf,
'nan': nan,
'square_root': <function square_root at 0x055246F0>
}

List of Local symbols:
{'__name__': '__main__', '__doc__': None,
'__package__': None,
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__spec__': None, '__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>,
'__file__': 'C:/Python/Python361/eval_example1.py',
'acos': <built-in function acos>,
'acosh': <built-in function acosh>,
'asin': <built-in function asin>,
'asinh': <built-in function asinh>,
'atan': <built-in function atan>,
'atan2': <built-in function atan2>,
'atanh': <built-in function atanh>,
'ceil': <built-in function ceil>,
'copysign': <built-in function copysign>,
'cos': <built-in function cos>,
'cosh': <built-in function cosh>,
'degrees': <built-in function degrees>,
'erf': <built-in function erf>,
'erfc': <built-in function erfc>,
'exp': <built-in function exp>,
'expm1': <built-in function expm1>,
'fabs': <built-in function fabs>,
'factorial': <built-in function factorial>,
'floor': <built-in function floor>,
'fmod': <built-in function fmod>,
'frexp': <built-in function frexp>,
'fsum': <built-in function fsum>,
'gamma': <built-in function gamma>,
'gcd': <built-in function gcd>,
'hypot': <built-in function hypot>,
'isclose': <built-in function isclose>,
'isfinite': <built-in function isfinite>,
'isinf': <built-in function isinf>,
'isnan': <built-in function isnan>,
'ldexp': <built-in function ldexp>,
'lgamma': <built-in function lgamma>,
'log': <built-in function log>,
'log1p': <built-in function log1p>,
'log10': <built-in function log10>,
'log2': <built-in function log2>,
'modf': <built-in function modf>,
'pow': <built-in function pow>,
'radians': <built-in function radians>,
'sin': <built-in function sin>,
'sinh': <built-in function sinh>,
'sqrt': <built-in function sqrt>,
'tan': <built-in function tan>,
'tanh': <built-in function tanh>,
'trunc': <built-in function trunc>,
'pi': 3.141592653589793,
'e': 2.718281828459045,
'tau': 6.283185307179586,
'inf': inf,
'nan': nan,
'square_root': <function square_root at 0x055246F0>
}

List of names in current local scope:
['__annotations__',
'__builtins__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'acos', 'acosh',
'asin', 'asinh',
'atan', 'atan2', 'atanh',
'ceil', 'copysign', 'cos',
'cosh', 'degrees', 'e',
'erf', 'erfc', 'exp',
'expm1', 'fabs',
'factorial', 'floor',
'fmod', 'frexp', 'fsum',
'gamma', 'gcd', 'hypot',
'inf', 'isclose', 'isfinite',
'isinf', 'isnan', 'ldexp',
'lgamma', 'log', 'log10',
'log1p', 'log2', 'modf', 'nan',
'pi', 'pow', 'radians', 'sin',
'sinh', 'sqrt', 'square_root',
'tan', 'tanh', 'tau', 'trunc'
]

নীচে আমরা দেখতে পাচ্ছি, আমরা eval ফাংশনে খালি অভিধান হিসাবে গ্লোবাল মান নির্দিষ্ট করতে পারি:

>>> print(eval('dir()', {}))
['__builtins__']

আসুন আরেকটি উদাহরণ দেখি যেখানে আমরা গণিত মডিউল থেকে শুধুমাত্র কয়েকটি পদ্ধতিতে অ্যাক্সেসের অনুমতি দিচ্ছি।

from math import *
for l in range(1, 4):
   func = input("Enter Math Function to Evaluate.\nAllowed Functions are: abs(x) and pow(x,y):\n")
   try:
      print(eval(func, {'absolute': abs, 'pow': pow}))
      except Exception as ex:
      print(ex)
      break
print('Done')

আউটপুট

Enter Math Function to Evaluate.
Allowed Functions are: abs(x) and pow(x,y):
abs(-74)
74
Enter Math Function to Evaluate.
Allowed Functions are: abs(x) and pow(x,y):
pow(2,7)
128.0
Enter Math Function to Evaluate.
Allowed Functions are: abs(x) and pow(x,y):
sqrt(47)
name 'sqrt' is not defined
Done

  1. Python Tkinter-এ বাইন্ডিং ফাংশন

  2. পাইথনে issubset() ফাংশন

  3. ইন্টারসেকশন() ফাংশন পাইথন

  4. কিভাবে আমরা একটি পাইথন ফাংশন ওভারলোড করতে পারি?