Ποια είναι η διαφορά μεταξύ exec () και eval () στην Python;


Απάντηση 1:

Πρώτα απ 'όλα, το eval είναι σύντομο για την αξιολόγηση (μια απλή έκφραση) .Exec είναι σύντομη για εκτέλεση (μια δήλωση του κώδικα Python).

Μια έκφραση αξιολογείται σε Python παρόμοια με την αξιολόγηση μιας μαθηματικής έκφρασης. Η Python ερμηνεύει την έκφραση με βάση ορισμένους κανόνες και στη συνέχεια επιστρέφει μια τιμή. Στην Python, μια έκφραση μπορεί να είναι οποιαδήποτε τιμή που θα μπορούσε να αντιστοιχιστεί σε μια μεταβλητή. Το Eval παίρνει μία μόνο έκφραση ως είσοδο, αξιολογεί την έκφραση σύμφωνα με τους κανόνες της Python και επιστρέφει την προκύπτουσα τιμή.

Το Eval σας επιτρέπει επίσης να παρέχετε πρόσθετες πληροφορίες για να κλειδώσετε τις λειτουργίες που επιτρέπεται να καλούνται. Είναι δύσκολο να κλειδώσετε τα πράγματα κάτω όταν δημιουργείτε δυναμικό κώδικα, οπότε πιθανώς θα πρέπει να περιορίσετε τυχόν επικλήσεις που θα μπορούσαν να χρησιμοποιηθούν άσχημα επιτρέποντας μόνο την πρόσβαση σε μόνο τη λειτουργικότητα που γνωρίζετε ότι χρειάζεστε πραγματικά.

Όταν παρέχετε εισροή στο eval, δεν χρειάζεται να δώσετε στο eval μια συμβολοσειρά. Μπορείτε να δώσετε είσοδο eval bytecode που μόλις συντάξατε από μια συμβολοσειρά και θα αξιολογήσει τον bytecode ως έκφραση και θα επιστρέψει την τιμή.

Το Exec δεν θα σας δώσει αξία επιστροφής. Το Exec παίρνει μια σειρά εντολών python και τις εκτελεί. Δεν επιστρέφει πάντα τίποτα. Αλλά εκτελεί οποιοδήποτε κώδικα python μπορεί να εκτελέσει, όχι μόνο τι μπορείτε να εκχωρήσετε σε μια μεταβλητή. Αν δεν ενδιαφέρεστε για την τιμή επιστροφής, τότε μπορείτε να χρησιμοποιήσετε το exec από οτιδήποτε μπορείτε να βάλετε σε ένα πρόγραμμα python που μπορείτε να βάλετε στο exec. Υπάρχουν πολλά πράγματα που μπορείτε να βάλετε σε ένα πρόγραμμα python που δεν μπορείτε να εκχωρήσετε σε μια μεταβλητή. Αυτά είναι τα πράγματα που δεν μπορείτε να δώσετε ως είσοδο eval.