पायथन इवल () विधि का उपयोग एक अभिव्यक्ति स्ट्रिंग को पायथन अभिव्यक्ति के रूप में पार्स करने के लिए किया जाता है और फिर प्रोग्राम के भीतर पायथन अभिव्यक्ति चलाता है।
सिंटैक्स
सामान्य पायथन eval() विधि वाक्यविन्यास है,
eval(expression, globals=None, locals=None)
कहां:
-
अभिव्यक्ति :आवश्यक स्ट्रिंग पैरामीटर, यह अभिव्यक्ति स्ट्रिंग है जिसे पायथन अभिव्यक्ति के रूप में पार्स और निष्पादित किया जा रहा है।
-
वैश्विक :वैकल्पिक पैरामीटर एक शब्दकोश है जिसका उपयोग निष्पादित करने के लिए उपलब्ध अभिव्यक्तियों को निर्दिष्ट करने के लिए किया जाता है। यदि स्पष्ट रूप से उल्लेख नहीं किया गया है, तो मानक अंतर्निहित विधियां उपलब्ध हैं जैसे '__builtins__':कोई नहीं तत्व।
-
स्थानीय लोग :वैकल्पिक पैरामीटर, स्थानीय चर और eval() फ़ंक्शन के लिए उपलब्ध विधियों को निर्दिष्ट करने के लिए उपयोग किया जाता है।
अब eval () पद्धति को बेहतर ढंग से समझने के लिए, इसे विभिन्न उदाहरणों के माध्यम से समझते हैं।
सरल 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() वैश्विक और स्थानीय लोग
यह समझने से पहले कि हमें 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