python format de la chaîne de l'appel d'une fonction

Est-il un moyen de formater avec le nouveau format de la syntaxe d'une chaîne à partir d'un appel de fonction? par exemple:

"my request url was {0.get_full_path()}".format(request)

donc, il appelle la fonction get_full_path fonction à l'intérieur de la chaîne et non pas comme un paramètre dans la fonction format.

EDIT:
Voici un autre exemple qui va probablement montrer ma frustration, c'est ce que je voudrais:

"{0.full_name()} {0.full_last_name()} and my nick name is {0.full_nick_name()}".format(user)

c'est ce que je veux éviter:

"{0} and {1} and my nick name is {2}".format(user.full_name(), user.full_last_name(), user.full_nick_name())
  • Non, vous ne pouvez pas. Quelle différence y a-il si faire "my request url was {0}".format(request.get_full_path())?
  • Par curiosité: pourquoi avez-vous besoin de quelque chose comme ça?
  • ce que je veux éviter, c'est quelque chose comme ceci: "my request url was {0} and my post was {1}".format(request.get_full_path(), request.POST). Je veux utiliser le même objet qu'une seule fois
  • Ce qui est mauvais sur l'utilisation d'un même objet deux fois?
  • En fait, en faisant comme vous le souhaitez, vous utilisez toujours le même objet deux fois.
  • J'ai juste envie de plus d'une syntaxe où je n'ai pas pour ajouter l'objet même plus d'une fois dans le format args
  • C'est juste une référence. Vous pouvez attribuer la même valeur à l'autre, le nom court: r = request, et l'utilisation '...'.format(r.get_full_path(), r.POST)`. Il n'a pas beaucoup d'importance n'est ce pas? Mise en forme de chaîne vous donne quelques raccourcis pratiques, y compris l'indexation et l'attribut de l'accès, mais l'appel de fonction ne fait pas partie du format. Ce ne sont pas complets des expressions Python, ils ne devraient pas être.
  • aucune raison pourquoi ils ne devraient pas l'être? mon sauvage conjecture est que le format de la syntaxe prend les valeurs de l'objet __dict__ et c'est pourquoi ils ne peuvent pas appeler une fonction. mais ce n'est pas qu'il fait moins d'une douleur d'avoir à ajouter le même objet dans le args (au moins pour moi).
  • La chaîne de formatage est l'analyse d'une dédiée format. Il n'est pas régulier python analyseur de parser les références, donc ce ne sont pas des expressions Python. Il n'y a pas d'espace de noms, vous ne pouviez pas passer en arguments, si on peut appeler des fonctions, par exemple. L'attribut et le point d'accès est une commodité pour simplifier de nombreuses exigences de mise en forme, mais ce n'est pas (et ne le sera jamais) une pleine expression Python analyseur.
  • N'étant pas en mesure de dire que quelque chose n'a rien à voir avec accès à la __dict__ ou quoi que ce soit d'autre. Il utilise la norme de méthodes pour accéder à des attributs et des éléments.
  • Je vois, très intéressant. Merci pour ces commentaires 🙂
  • Notez qu'il existe deux réponses que maintenant donner de bonnes approches pour faire ce que tu voulais, et qui ont plus de voix que l'on a accepté la réponse. Vous pourriez voulez leur donner un peu de reconnaissance officielle.
  • merci pour les commentaires, ce que je cherchais ai implémenté en python 3.6 qui est très excitant.

InformationsquelleAutor Hassek | 2013-11-05