Zanurkuj w Pythonie/Formatowanie napisów w oparciu o słowniki: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Nie podano opisu zmian
Linia 26:
|8.14|Formatowanie napisu w {{Python/Src|BaseHTMLProcessor.py}}
|tekst=
<sourcesyntaxhighlight lang="python">
def handle_comment(self, text):
self.pieces.append("<!--%(text)s-->" % locals()) #(1)</sourcesyntaxhighlight>
 
# Formatowanie za pomocą słowników jest powszechnie używane z wbudowaną funkcją <code>locals</code>. Oznacza to, że możemy wykorzystywać nazwy zmiennych lokalnych wewnątrz napisu formatującego (w tym przypadku <code>text</code>, który został przykazany jako argument do metody klasy) i każda nazwa zmiennej zostanie zastąpiona jej wartością. Jeśli <code>text</code> przechowuje wartość <code>'Początek stopki'</code>, formatowany napis <code><nowiki>"<!--%(text)s-->" % locals()</nowiki></code> zostanie wygenerowany jako <code><nowiki>'<!--Początek stopki-->'</nowiki></code>.
Linia 36:
|8.15|Więcej formatowania opartego na słownikach
|tekst=
<sourcesyntaxhighlight lang="python"> def unknown_starttag(self, tag, attrs):
strattrs = "".join([' %s="%s"' % (key, value) for key, value in attrs]) #(1)
self.pieces.append("<%(tag)s%(strattrs)s>" % locals()) #(2)</sourcesyntaxhighlight>
 
# Kiedy metoda ta zostaje wywołana, <code>attrs</code> jest listą krotek postaci klucz/wartość, podobnie jak zwrócona wartość [[../Odwzorowywanie listy#przy-3.28|metody słownika <code>items</code>]], a to oznacza, że możemy wykorzystać [[../Deklarowanie zmiennych#Wielozmienne przypisania|wielozmienne przypisanie]], aby wykonać na niej iterację. Powinniśmy już być zaznajomieni z tymi operacjami, ale występuje ich tutaj sporo, więc prześledźmy je po kolei: