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

Usunięta treść Dodana treść
m Update syntaxhighlight tags - remove use of deprecated <source> tags
Linia 4:
 
Pamiętasz <code>locals</code>? Pierwszy raz mogliśmy ją zobaczyć tutaj:
<sourcesyntaxhighlight 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())</sourcesyntaxhighlight>
 
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=
<sourcesyntaxhighlight lang="python"> if __name__ == "__main__":
for k, v in globals().items(): #(1)
print k, "=", v</sourcesyntaxhighlight>
 
# 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=
<sourcesyntaxhighlight lang="python"> def foo(arg):
x = 1
print locals() #(1)
Linia 95:
foo(3)
globals()["z"] = 8 #(4)
print "z=",z #(5)</sourcesyntaxhighlight>
 
# 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.