La fonction eval et la fonction exec sont l'une des fonctions intégrées. La chaîne de caractères donnée en argument peut être exécutée en tant qu'expression ou instruction.
Exécute l'expression saisie sous forme de chaîne de caractères dans l'argument. Le résultat de l'exécution est renvoyé comme valeur de retour.
ʻEval ("expression") ` └ Erreur s'il s'agit d'une phrase └ Abréviation pour évaluation
python
a = eval("5*2")
print(a)
#production
10
python
eval("print(5*2)")
print(eval("5*2"))
#production
10
10
Affectation de chaîne
l=[]
s=".extend('abc')"
#Aucun quota requis pour les chaînes
eval("l"+s)
print(l)
#production
['a', 'b', 'c']
Aucun quota n'est requis lorsque vous placez une variable chaîne dans l'argument de eval **.
Lorsque vous utilisez une chaîne de caractères, utilisez un symbole différent du symbole qui entoure le tout. ·"" dans:"' '" ·"' '"dans:"" ""
Utiliser des chaînes dans eval
a = eval("'aaa'")
b = eval('"bbb"')
print(a)
print(b)
#production
aaa
bbb
Le même symbole est une erreur
eval(""aaa"")
#production
SyntaxError: invalid syntax
--Lorsque vous entrez une phrase --Pour les chaînes sans caractères (valeurs numériques, etc.)
Si vous entrez une phrase
eval("a = 5*2")
#production
SyntaxError: invalid syntax
Autre que les chaînes de caractères
eval(5*2)
#production
TypeError: eval() arg 1 must be a string, bytes or code object
Autre que la chaîne de caractères (nom de clé spécifié)
eval(a=5)
#production
TypeError: eval() takes no keyword arguments
Exécute l'expression ou l'instruction de la chaîne de caractères saisie dans l'argument.
ʻExec ('instruction ou expression') ` └ Abréviation pour exécuter └ Il n'y a pas de valeur de retour pour exec lui-même
Entrez une déclaration dans l'argument
exec("a=5*2")
print(a)
#production
10
Utiliser des chaînes
exec("a = 'hello'")
print(a)
#production
hello
Plusieurs phrases
exec("a=2; b=5; c=a*b")
print(c)
#production
10
・ ";" Accepte le saut de ligne
Entrez une expression comme argument
l=[1,2,3]
exec("l.extend([4,5,6])")
print(l)
#production
[1, 2, 3, 4, 5, 6]
** (2) exec n'a pas de retour ** └ exec peut également prendre une expression comme argument comme eval. └ exec lui-même existe (retourne avec retour) └ eval lui-même n'existe pas (aucun)
exec lui-même n'a aucune valeur
exec("2+5") is None #True
eval("2+5") is None #False
Illustration
#Les expressions en exec peuvent être exécutées
exec("print(2*5)")
#exec lui-même n'a pas de valeur de retour(None)
print(exec("2*5"))
#production
10
None
`` '' 'Code (avec sauts de ligne)' '' ` └ Entourez de 3 points de quota └ Si vous commencez une nouvelle ligne immédiatement après '' ', la sortie sera également interrompue.
python
a='''
Bonjour,
Il fait beau aujourd'hui.
Quel temps fait-il là-bas?
'''
print(type(a))
print(a)
#production
<class 'str'>
Bonjour,
Il fait beau aujourd'hui.
Quel temps fait-il là-bas?
Vous pouvez utiliser des barres obliques inverses pour échapper aux sauts de ligne.
Évasion de rupture de ligne
a='''\
Bonjour,
Il fait beau aujourd'hui.\
Quel temps fait-il là-bas?
'''
print(a)
#production
Bonjour,
Il fait beau aujourd'hui. Quel temps fait-il là-bas?
python
a ='''
#Définition des fonctions
def hello_func(name):
print(f'Bonjour{name}M.')
#Exécution de la fonction
name="Todoroki"
hello_func(name)
'''
exec(a)
#production
Bonjour Todoroki
Parce que vous ne pouvez pas passer un argument à une fonction de chaîne dans exec Décrit entre guillemets triples jusqu'à l'exécution de la fonction.