La Substitution de Variable en Python
Alors je travaille avec Web.py et j'ai code suivant:
check = db.select('querycode', where='id=$id', vars=locals())[0]
Qui fonctionne très bien, il remplace $id avec la variable. Mais dans cette ligne il ne fonctionne pas:
web.sendmail('[email protected]', "[email protected]", 'Subject', 'Hello $name')
Que dois-je mal et comment cela pourrait-il fonctionner. Aussi ai-je eu le concept: Un signe $remplace la variable?
Le
vars=locals()
bits est une bonne indication de ce qui se passe dans le premier exemple est fait à l'intérieur db.select
plutôt que Python transformer les cordes avant de les transmettre. Dans ce cas, il est fait par la base de données, pour des raisons de sécurité - il aide à protéger contre le Injection SQL - et cette caractéristique en fait pas être mis en œuvre de façon sécuritaire à l'Python (niveau de la sécurité repose sur le fait de donner la db quelque chose de plus structuré qu'une longue chaîne de caractères).OriginalL'auteur yrk | 2014-06-27
Vous devez vous connecter pour publier un commentaire.
Python n'a pas en général de faire de PHP interpolation de variable.
Ce que vous voyez dans la première instruction est une caractéristique particulière de
db.select
qui récupère les valeurs des variables de variables locales dans le contexte de l'appelant.Si vous souhaitez remplacer dans la variable dans la deuxième ligne, vous devrez le faire manuellement avec l'une des façons Python fournit. Voici une telle façon.
Voici une autre manière.
La première option est documentée dans Chaîne d'opérations de mise en forme.
Consultez la documentation de
str.format
et Format De La Syntaxe De La Chaîne De pour plus de détails sur la deuxième option.Pour la première méthode (ancienne) oui, mais pour la deuxième (plus récente) méthode non.
J'ai ajouté quelques liens vers de la documentation pour vous de parcourir sur chacune de ces méthodes.
OriginalL'auteur merlin2011
@merlin2011 de répondre à l'explique mieux.
Mais juste pour compléter, car vous êtes en essayant de substituer par le nom de la variable, python prend également en charge le formulaire ci-dessous de "substitution" (ou mise en forme de chaîne):
Ou de limiter l'espace de noms:
MODIFIER
Depuis python 3.6, la substitution de variable est un fait en natif à l'aide de f-chaînes. E. g.,
OriginalL'auteur shx2