পাইথনের eval() মেথড একটি এক্সপ্রেশন স্ট্রিংকে পাইথন এক্সপ্রেশন হিসেবে পার্স করে এবং তারপর প্রোগ্রামের ভিতরে সেই এক্সপ্রেশনটি রান করে।
সিনট্যাক্স
eval(expression, globals=None, locals=None)
প্যারামিটার
- expression: বাধ্যতামূলক স্ট্রিং প্যারামিটার, যা পার্স এবং এক্সিকিউট হবে।
- globals: অপশনাল ডিকশনারি, এক্সিকিউটেবল এক্সপ্রেশন স্পেসিফাই করতে ব্যবহৃত হয়। না দিলে স্ট্যান্ডার্ড বিল্ট-ইন মেথডস (
'__builtins__':None) উপলব্ধ থাকে। - locals: অপশনাল, লোকাল ভেরিয়েবল এবং মেথড স্পেসিফাই করতে ব্যবহৃত হয়।
সহজ eval() উদাহরণ
str1 = 'Hello'
print(eval('str1 == "Hello"'))
print(eval('str1 + ", Python"'))
আউটপুট
True Hello, Python
ইউজার ইনপুট দিয়ে eval()
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() globals এবং locals
গ্লোবাল এবং লোকাল স্কোপে কী ফাংশন ও ভেরিয়েবল আছে সেটা জানার জন্য:
from math import *
def square_root(n):
return sqrt(n)
print('List of Global symbols:\n', globals())
print('\nList of Local symbols:\n', locals())
print('\nList of names in current local scope:\n', dir())
খালি globals দিয়ে eval()
>>> print(eval('dir()', {}))
['__builtins__']
সীমিত ফাংশন অ্যাক্সেস দিয়ে eval()
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
সুরক্ষা সতর্কতা: eval() অনবিশ্বস্ত ইনপুটের সাথে ব্যবহার করা নিরাপদ নয় কারণ এটি যেকোনো পাইথন কোড এক্সিকিউট করতে পারে। প্রোডাকশন কোডে এটা এড়িয়ে চলা ভালো।