Zanurkuj w Pythonie/Abstrakcyjne źródła wejścia: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
m deamerykanizacja pisowni |
m Poprawionych kilka drobnych błędów stylistycznych |
||
Linia 160:
# Funkcja <code>openAnything</code> przyjmuje pojedynczy argument, <code>source</code>, i zwraca ''obiekt plikopodobny''. <code>source</code> jest łańcuchem znaków o różnym charakterze. Może się odnosić do adresu URL (np. <code><nowiki>'http://slashdot.org/slashdot.rdf'</nowiki></code>), może być globalną lub lokalną ścieżką do pliku (np. <code>'binary.xml'</code>), czy też łańcuchem znaków przechowującym dokument XML, który ma zostać sparsowany.
# Najpierw sprawdzamy, czy <code>source</code> jest URL-em. Robimy to brutalnie: próbujemy otworzyć to jako URL i cicho pomijamy błędy spowodowane próbą otworzenia czegoś, co nie jest URL-em. Jest to właściwie eleganckie w tym sensie, że jeśli <code>urllib</code> będzie kiedyś obsługiwał nowe typy URL-i, nasz program także je obsłuży i to bez konieczności zmiany kodu. Jeśli <code>urllib</code> jest w stanie otworzyć <code>source</code>, to <code>return</code>
#
# W tym miejscu zakładamy, że <code>source</code> jest łańcuchem znaków, który przechowuje dokument XML (ponieważ nic innego nie zadziałało), dlatego wykorzystujemy <code>StringIO</code>, aby utworzyć ''obiekt plikopodobny'' i zwracamy go. (Tak naprawdę, ponieważ wykorzystujemy funkcję <code>str</code>, <code>source</code> nie musi być nawet łańcuchem znaków; może być
}}
|