Zanurkuj w Pythonie/Deklarowanie zmiennych: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m poprawa nawigacji
Piotr (dyskusja | edycje)
m poprawki
Linia 1:
{{Podświetl|py}}
== Deklarowanie zmiennych ==
 
PoznawszyWiemy już trochę słownikio słownikach, krotkikrotkach iczy listyo listach, przejdźmywięc wrócimy do przykładowego kodu przedstawionego w [[../Twój pierwszy program|rozdziale drugim]], -do <tt class="lang-none">odbchelper.py</tt>.
 
Podobnie jak większość języków Python posiada lokalne i globalne zmienne, choć nie są one wyraźnie deklarowane. Zmienne są tworzone, gdy przypisujemy im wartości. Są również automatycznie usuwane, kiedy wychodzą z zasięgu.
 
''' Przykład 3.17. Deklarowanie zmiennej ''myParams'' '''
 
Podobnie jak większość języków programowania Python posiada zarówno zmienne lokalne i globalne, choć nie deklarujemy w ich w jakiś wyraźny sposób. Zmienne zostają utworzone, gdy przypisujemy im pewne wartości. Natomiast kiedy zmienna wychodzi poza zasięg, zostanie automatycznie usunięta.
 
''' Przykład 3.17. Deklarowanie zmiennej ''<tt>myParams''</tt> '''
if __name__ == "__main__":
myParams = {"server":"mpilgrim", \
Linia 15 ⟶ 14:
}
 
ZauważmyZwróćmy uwagę na wcięcia. Instrukcje '''if'''warunkowe jako bloki kodu muszą być identyfikowane za pomocą wcięć, dokładniepodobnie jak funkcje.
 
WZauważmy przykładzieteż, tymże przypisaniedzięki dowykorzystaniu zmiennejbackslasha w(“<tt>\</tt>”) jednejmogliśmy linii,przypisanie zostałowartość zastąpionedo kilkomazmiennej liniamipodzielić przyna użyciukilka backslashylinii. (“\”),Backslashe którew Pythonie są specjalnymi znacznikamiznakami, oznaczającymiktóre umożliwiają kontynuację danej instrukcji w następnej linii.
 
{{Infobox|Kiedy polecenie zostanie podzielone na kilka linii za pomocą znaku kontynuacji ("<tt>\</tt>"), następna linia może zostać wcięta w dowolny sposób. Python nie weźmie tego wcięcia pod uwagę.}}
{{Infobox|
tekst=Kiedy polecenie jest dzielone na kilka linii za pomocą znacznika kontynuacji linii (“\”), kontynuowana linia może być wcięta w dowolny sposób; Python pominie te wcięcia i ich nie zastosuje. Jeśli twoje IDE automatycznie tworzy wcięcia w kontynuowanej linii, powinieneś to zaakceptować, chyba że to posunięcie nie zadziałało.}}
 
MówiącŚciśle w skróciemówiąc, wyrażenia w nawiasach okrągłych, kwadratowych i klamrowych (patrzjak rozdział[[#Deklarowanie 1.1.1 Definiowaniezmiennych|definiowanie słowników]]) można podzielić mana wiele linii bez używania znacznikaznaku kontynuacji ("<tt>\</tt>"). Niektórzy zalecają dodawać backslashe nawet wtedy, gdy nie jest to konieczne,. Argumentują to twierdząctym, że kod staje się wtedy łatwiejszy do czytaniaczytelniejszy. Jest to jednak wyłącznie kwestia gustu.
 
Wcześniej nigdy nie deklarowaliśmy żadnej zmiennej '''o nazwie <tt>myParams'''</tt>, ale właśnie przypisaliśmy do niej wartość. Zachowanie to przypomina trochę VBScript bez instrukcji <tt class="lang-none">option explicit</tt>. Na szczęście, w przeciwieństwie do VBScript, Python nie pozwala odwoływać się do zmiennych, do których nie zostały wcześniej przypisane żadne wartości. Jeśli spróbujemy to zrobić, otrzymamyPython wyrzuci wyjątek.
 
=== Odwoływanie się do zmiennych ===
Linia 37 ⟶ 35:
1
 
Pewnego dnia będzieszKiedyś za to Pythonowibędziesz dziękować...
 
==== Przypisywanie wielu wartość za jednym razem ====
 
Jednym z lepszych Pythonowych skrótów wjest Pythonie jestjednoczesne przypisywanie wielukilku wartości do kilku zmiennych za jednym razem.
 
''' Przykład 3.19. PrzypisywanieJednoczesne przypisywanie wielu wartość za jednym razem wartości'''
 
>>> v = ('a', 'b', 'e')
Linia 54 ⟶ 52:
'e'
 
# <tt>v</tt> jest trójelementową krotką, a <tt>(x, y, z)</tt> jest krotką trzech zmiennych. Przypisując jedną krotkę do drugiej, przypisaliśmy każdą z wartości <tt>v</tt> do odpowiednich zmiennych (zachowywanaw jestodpowiedniej kolejnośćkolejności).
 
Może to zostać wykorzystane w wielu sytuacjach. CzęstoCzasami jestchcemy wygodnieprzypisać dopewnym odpowiednichzmiennym nazw przypisać odpowiednipewien zakres wartości np. od 1 do 10. W języku C możemy utworzyć typy wyliczeniowe (<tt class="lang-c">enum</tt>) poprzez ręczne utworzenie listy stałych i wartości jakie przechowują. Może to być totroche trochęnudną nudnei czasochłonną robotą, w szczególności gdy onewartościkolejnekolejnymi liczbami. W Pythonie możemy wykorzystać wbudowaną funkcję '''<tt>range'''</tt> i możliwość jednoczesnego przypisywania wartości do wielu zmiennych. W ten sposób szybkow łatwy sposób przypiszemy kolejne wartości do wielu zmiennych.
 
''' Przykład 3.20. Przypisywanie kolejnych wartości '''
 
>>> range(7) #(1)
[0, 1, 2, 3, 4, 5, 6]
Linia 70 ⟶ 67:
6
 
# Wbudowana funkcja '''<tt>range'''</tt> zwraca listę liczb całkowitych. W najprostszej formie, pobierafunkcja ta onabierze górną granicę i zwraca listę liczb od 0 do górnejpodanej granicy, wyłączając ją. (Jeśli chceszPonadto możesz także ustawić początkową wartość na inną niż <tt>0</tt>, a krok może być inny niż <tt>1</tt>. Aby otrzymać więcej szczegółów wykorzystaj '''instrukcję <tt>print range.__doc__'''</tt>.)
# <tt>PONIEDZIALEK</tt>, <tt>WTOREK</tt>, <tt>SRODA</tt>, <tt>CZWARTEK</tt>, <tt>PIATEK</tt>, <tt>SOBOTA</tt> i <tt>NIEDZIELA</tt> są zmiennymi, które zdefiniowaliśmy. (Ten przykład pochodzi z modułu kalendarza '''<tt>calendar''', oczywiście</tt>; zenazwy spolszczonymizostały nazwamispolszczone. Moduł ten umożliwia wyświetlanie kalendarzy, podobnie jak to robi Uniksowy program <tt class="lang-none">cal</tt>. Moduł '''<tt>calendar'''</tt> tworzyprzechowuje wdla formieodpowiednich liczbdni całkowitychtygodnia odpowiednie stałe dla dni tygodnia.)
# Teraz każda zmienna ma własną wartość: <tt>PONIEDZIALEK</tt> ma <tt>0</tt>, <tt>WTOREK</tt> wynosima <tt>1</tt> itd.
 
Wielozmienne przypisania mogąmożemy się przydaćwykorzystać przy tworzeniatworzeniu funkcji zwracających wiele wartości w krotcepostaci krotki. TakZwróconą zwróconąwartość wielozmiennąw wartośćtakiej traktowaćfunkcji możnamożemy potraktować jako krotkę, lubczy możnateż zwracaneprzypisać wartości przypisać do osobnych zmiennych. Wiele standardowych bibliotek tokorzysta wykorzystujez tej możliwości, w tym także moduł '''<tt>os'''</tt>, który omówimy w rozdziale zatytułowanym [[Python/Wyjątki i operacje na plikach|Wyjątkirozdziale i operacje na plikach6]].
 
===== Materiały dodatkowe =====
* [http://www.python.org/doc/current/ref/ Python Reference Manual] pokazuje przykłady, kiedy [http://www.python.org/doc/current/ref/implicit-joining.html można pominąć znak kontynuacji linii], a kiedy [http://www.python.org/doc/current/ref/explicit-joining.html musisz go wykorzystać].
* [http://www.ibiblio.org/obp/thinkCSpy/ How to Think Like a Computer Scientist] wyjaśnia, jak za pomocą wielozmiennych przypisań [http://www.ibiblio.org/obp/thinkCSpy/chap09.html zamienić wartości dwóch zmiennych].
 
Wielozmienne przypisania mogą się przydać przy tworzenia funkcji zwracających wiele wartości w krotce. Tak zwróconą wielozmienną wartość traktować można jako krotkę lub można zwracane wartości przypisać do osobnych zmiennych. Wiele standardowych bibliotek to wykorzystuje, w tym także moduł '''os''', który omówimy w rozdziale zatytułowanym [[Python/Wyjątki i operacje na plikach|Wyjątki i operacje na plikach]].
 
<noinclude>