Zanurkuj w Pythonie/locals i globals: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Nie podano opisu zmian
Beau (dyskusja | edycje)
drobne techniczne
Linia 4:
 
Pamiętasz <code>locals</code>? Pierwszy raz mogliśmy ją zobaczyć tutaj:
<source lang="python"> def unknown_starttag(self, tag, attrs):
strattrs = "".join([' %s="%s"' % (key, value) for key, value in attrs])
self.pieces.append("<%(tag)s%(strattrs)s>" % locals())</source>
 
Nie, czekaj, nie możesz jeszcze się uczyć o <code>locals</code>. Najpierw, musisz nauczyć się, czym są przestrzenie nazw. Przedstawimy teraz trochę suchego materiału, lecz ważnego, dlatego też zachowaj uwagę.
Linia 54:
|8.11|Wprowadzenie do <code>globals</code>
|tekst=
<source lang="python"> if __name__ == "__main__":
for k, v in globals().items(): #(1)
print k, "=", v</source>
 
# Na wypadek gdyby wydawało Ci się to straszne, to pamiętaj, że widzieliśmy to już wcześniej. Funkcja <code>globals</code> zwraca słownik, następnie [[../Pętla for#przy-6.10|iterujemy go]] wykorzystując metodę <code>items</code> i [[../Deklarowanie zmiennych#Wielozmienne przypisania|wielozmienne przypisanie]]. Jedyną nową rzeczą jest funkcja <code>globals</code>.
Linia 85:
|8.12|<code>locals</code> jest tylko do odczytu, a <code>globals</code> już nie
|tekst=
<source lang="python"> def foo(arg):
x = 1
print locals() #(1)
Linia 95:
foo(3)
globals()["z"] = 8 #(4)
print "z=",z #(5)</source>
 
# Ponieważ <code>foo</code> zostało wywołane z argumentem <code>3</code>, więc zostanie wypisane <code>{'arg': 3, 'x': 1}</code>. Nie powinno to być zaskoczeniem.
Linia 111:
[[../Formatowanie napisów w oparciu o słowniki/]]|
}}
{{Podświetl|py}}
</noinclude>