כל מה שאתה צריך לדעת על Eval ב- Python



מאמר זה יספק לך ידע מפורט ומקיף על Eval ב- Python, חסרונות ושימושים בדוגמאות.

בכל מקום שתסתכל סביבך תמצא יישום שנבנה במיוחד כדי לענות על הצרכים שלך. למרות שישנן שפות תכנות רבות בהן ניתן להשתמש כדי לפתח יישומים אלה, רובן בנויות באמצעות . פייתון יחד עם התכונות הנהדרות שלו והרב-צדדיות המוגברת מביאים לשולחן הצעות ייחודיות אשר הן חזקות והן שימושיות ביותר בכל עת. במאמר זה ב- Eval ב- Python נדון בנקודות הבאות:

מה זה Eval בפייתון?

פונקציית ההערכה בפייתון היא אחת האפשרויות המעניינות ביותר שיש. יש שקוראים לזה פריצה ויש שקוראים לזה קיצור דרך, אך כך או כך תוכלו להשתמש בו, להפעלת תוכנית פייתון בתוך קוד פייתון. די מגניב נכון?





כשאתה משתמש בפונקציית הערוץ, אתה בעצם קורא למתורגמן לרוץ שנסגר בסוגריים של פונקציית הערב.

c ++ מיון מערך

PythonLogo- Eval ב- Pythonהתחביר לשימוש בפונקציית הערכות בפייתון הוא:



eval (ביטוי, גלובאלים = אין, מקומיים = אין)

בתחביר הנ'ל,

  1. ביטוי: זהו המחרוזת או פיסת הקוד המנותחים ומוערכים כביטוי פייתון בתוך תוכנית הפייתון עצמה.



  2. גלוֹבָּלִי: זה המילון שמשמש להגדרת כל השיטות הגלובליות הקיימות לביצוע הביטוי שהוזכר לעיל. זו ישות אופציונאלית והשימושים בה תלויים בצורך שלך.

  3. מקומיים: בדומה לגלובלים, זהו מילון נוסף המשמש לציון השיטות המקומיות הזמינות וכן משתנים.

כדי להבין טוב יותר את השימוש בפונקציה זו, עיין בדוגמה הבאה.

מייבוא ​​מתמטיקה * def secret_function (): return 'מפתח סודי הוא 1234' def function_creator (): ביטוי # שיש להעריך expr = raw_input ('הזן את הפונקציה (במונחים של x):') # משתנה המשמש בביטוי x = int (raw_input ('הזן את הערך של x:')) # הערכת ביטוי y = eval (expr) # הדפסת הדפס תוצאה מוערכת ('y = {}'. פורמט (y)) אם __name__ == '__main__': function_creator ()

בדוגמה שלעיל, function_creator היא פונקציה שתעריך את הביטויים המתמטיים שנוצרו על ידי המשתמש בעת ביצוע התוכנית.

תְפוּקָה:

הזן את הפונקציה (במונחים של x): x * (x + 1) * (x + 2)

הזן את הערך של x: 3

y = 60

אָנָלִיזָה

כעת לאחר שצפית בקוד המשותף לעיל, תן לנו לנתח אותו עוד קצת.

  1. הפונקציה לעיל תיקח כל משתנה בביטוי x כקלט שלו.

  2. לאחר הביצוע, המשתמש יתבקש להזין ערך עבור x, רק לאחר מכן תיוצר התוכנית.

  3. לבסוף, תוכנית פייתון תבצע את פונקציית ההערכה על ידי ניתוח ה-ביטויכוויכוח.

חסרונות של Eval

בדומה לפונקציות מובנות אחרות של Python, גם ל- eval יש כמה חסרונות שעלולים ליצור בעיה אם לא מתחשבים בה.

אם תסתכל על הדוגמה שלעיל, אחת הפגיעות העיקריות של הפונקציה, function_creator היא שהיא יכולה לחשוף את כל הערכים הנסתרים בתוך התוכנית וגם לקרוא לפונקציה מזיקה כהערכה כברירת מחדל תבצע כל מה שנמצא בסוגריים שלה.

כדי להבין זאת עוד, עיין בדוגמה הבאה.

קלט ממשתמש

הזן את הפונקציה (במונחים של x): secret_function ()

הזן את הערך של x: 0

תְפוּקָה:

y = המפתח הסודי הוא 1234

מצב מסוכן נוסף הנלווה לשימוש בפונקציית eval הוא ייבוא ​​מודול OS. כאשר ייבאת את מודול ה- os, הוא מאפשר לפייתון לקרוא ולכתוב את כל הקבצים הקיימים במערכת המקומית שלך ללא אימות מהמשתמש. במקרה כזה, אם אתה מקליד שגוי יחידשורת קוד, כל הקבצים המקוריים שלך עלולים להימחק.

הפיתרון לכל החסרונות הללו נעוץ בהגבלת היכולות של פונקציית ההערכה.

הפיכת Eval לבטוחה בפייתון

הערכה כברירת מחדל מגיעה עם אפשרות לנתח כל פונקציה שיש לה גישה אליה או כל מה שכבר הוגדר. זכור זאת בעת כתיבת הקוד שלך, יגביל את יכולות ההערכה במידה ניכרת ובכך יוודא כי שום דבר לא ישתבש.

כדי להבין עוד יותר את המושג הזה, עיין בדוגמה הבאה.

מייבוא ​​מתמטיקה * def secret_function (): return 'מפתח סודי הוא 1234' def function_creator (): ביטוי # שיש להעריך expr = raw_input ('הזן את הפונקציה (במונחים של x):') # משתנה המשמש בביטוי x = int (raw_input ('הזן את הערך של x:')) # משתנה עובר x במילון בטוח safe_dict ['x'] = x # הערכת ביטוי y = eval (expr, {'__builtins __': None}, safe_dict) # הדפסה הדפס תוצאה מוערכת ('y = {}'. פורמט (y)) אם __name__ == '__main__': # רשימה של שיטות בטוחות safe_list = ['acos', 'asin', 'atan', 'atan2', 'ceil ',' cos ',' cosh ',' מעלות ',' e ',' exp ',' fabs ',' רצפה ',' fmod ',' frexp ',' hypot ',' ldexp ',' log ', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] # יצירת מילון של שיטות בטוחות safe_dict = dict ([(k, מקומיים (). קבל (k, אף אחד)) עבור k ב- safe_list]) function_creator ()

קלט ממשתמש

הזן את הפונקציה (במונחים של x): secret_function ()

הזן את הערך של x: 0

תְפוּקָה:

NameError: השם 'secret_function' אינו מוגדר

כפי שאתה יכול לראות על ידי הגבלת הגישה של הערכות, הסיכויים לתפוקה שגויה שעלולה להתברר כמזיקה נשללו.

שימושים ב- Eval

כפי שהוסבר בסעיפים לעיל, בגלל כמה סיבות ביטחוניות לא נעשה שימוש נפוץ בהערכה. אך עם זאת, ישנם מקרי שימוש מסוימים שבהם שימוש בהערכה מתגלה כמועיל. חלק מהמשמעותיים שבהם הם.

  1. אם אתה רוצה שהמשתמש יזין סקריפטים משלו כדי לשנות את פלט התוכנית, השימוש בפונקציית eval יועיל כמועיל.

  2. בזמן כתיבת ביטויים לפיתרון שאילתות מתמטיות תוכלו להשתמש בערך מכיוון שזה הרבה יותר קל מאשר לכתוב מנתח ביטוי.

כעת, כשיודעים הכל על הערכות, אנו מקווים כי תשתמשו בו בתכנות היום יומיות תוך התחשבות ביתרונות ובחסרונות.

עם זאת, אנו מגיעים לסוף מאמר ה- Eval הזה בפייתון. כדי לקבל ידע מעמיק על Python יחד עם היישומים השונים שלו, אתה יכול לאימונים מקוונים חיים עם תמיכה 24/7 וגישה לכל החיים.

java מה עושה נספח לעשות

יש לך שאלה עבורנו? הזכר אותם בקטע ההערות של 'Eval in Python' ונחזור אליך.