Ta lekcja zawiera kilka faktów, dotyczących języka Python, które nie były uwzględnione we wcześniejszych lekcjach.
Opcje print
Do tej pory, jedynym sposobem na zobaczenie wydruku, było użycie funkcji print()
, która może drukować w jednej lini kilka pozycji oddzielonych spacjami. W rzeczywistości, print()
akceptuje argumenty z kilkoma słowami kluczowymi, które pozwalają, w zależności od potrzeb, modyfikować to zachowanie.
- Aby zmienić separator spację na inny łańcuch
S
, należy podać argumentsep = «S»
- Aby zastąpić znak "end-of-line" (koniec wiersza) innym łańcuchem
S
, należy dołączyć argumentend = «S»
Tą nową możliwość, słów kluczowych argumentów, najłatwiej przedstawić poprzez kilka przykładów.
Te słowa kluczowe argumentów muszą być podane na końcu listy argumentów albo wystąpi error. Jeśli używasz obu, możesz je podać w dowolnej kolejności.
Poprawne Nazwy Zmiennej/Funkcji
- Nazwy mogą zawierać litery, cyfry i znak podkreślenia (
_
). - Pierwszy znak w każdej nazwie musi być literą.
- Python odróżnia duże i małe litery.
Zatem my_3rd_int
jest prawidłową nazwą zmiennej, ale 3rd_int
nie.
Malejące pętle for
& inne gradacje
Przypomnijmy, że pokazaliśmy, jak pętle for
iterują rosnąco po liczbach:
Często istnieje potrzeba użycia pętli for
, która przechodzi przez numery w kolejności malejącej (od największej do najmniejszej). W tym celu w range
stosujemy trzeci argumentem nazywany step (krokiem):
Kiedy myślisz o zapisie range(0, 5)
, to jest on taki sam jak range(0, 5, 1)
: domyślny przyrost wynosi 1. W obu przypadkach należy pamiętać, że range(start, stop, step)
kończy działanie tuż przed osiągnięciem limitu wartości stop
. Więcej informacji można znaleźć w podręczniku Python manual.
Podobnie można użyć string[x:y:2]
, aby uzyskać łańcuch znaków x, x+2, x+4, ...
lub string[y:x:-1]
, aby uzyskać odwróconą część łańcucha (gdzie y
> x
).
Po pętli for
, kolejnym sposobem na osiągnięcie zmniejszającego się zakresu jest reversed(range(x, y))
, który zmienia się od y-1
do x
w porządku malejącym.
Pisanie Krótszego Kodu
Python daje mozliwość zapisu krótszego kodu na kilka sposobów; wprowadzimy kilka z nich tutaj.
Na tej stronie internetowej nie zawsze będziemy korzystać z tych możliwości, ponieważ użycie ich czasami sprawia, że kod jest trudniejszy do przeczytania. |
Operatory Przypisania
Python pozwala na zapis "x += 1
", który oznacza "dodać jeden do x
". Jest to więc równoważne zapisowi "x = x + 1
", jak pokazano poniżej:
Podobnie jest dla operatorów dzielenia całkowitego (//=
), modulo (%=
), potęgowania (**=
).
Bloki Wewnątrzliniowe
Widzieliśmy już kilka instrukcji, po których następuje wcięcie "bloków" kodu: for
, if
, else
, elif
, while
i def
, na przykład:
if x==y: «block» #indented, multilineW szczególnym przypadku, gdy
«block»
jest tylko jedną linijką, Python umożliwia następującą alternatywną składnię:
if x==y: «block» #single lineOto przykład:
Ma to jednak swoje granice: blok złożony z podwójnych (if
, for
, etc) nie może być używany jako blok wewnątrzliniowy. Na przykład if 2>1: if 4>3: print()
spowoduje syntax error (błąd składni).
Wielokrotne Przypisanie
Python umożliwia łączenie w jedną dwóch instrukcji przypisania:
Zauważ, że pozwala to rozwiązać nasze ćwiczenia wymiany, używając tylko jednej linii!
Łańcuch Porównań
Python umożliwia również łączenie kilku porównań w jedno:
v1 c1 v2 c2 v3 ...
, gdzie v
są wartościami a c
są porównaniami, jest taki sam jak (v1 c1 v2) and (v2 c2 v3) and...
Domyślne Wartości dla [:]
i range()
Gdy korzystasz z operatora podłańcucha [:]
, możesz pominąć jedną lub obydwie wartości początkową/końcową [:]. (Zobaczymy w następnej lekcji, że dotyczy to również list.) Domyślną wartością pierwszego indeksu jest 0
(początek łańcucha), a domyślną wartością ostatniego indeksu jest długość łańcucha. Podobnie range(n)
jest krótką formą range(0, n)
.
None
Niektóre funkcje zwracają wartość jako główny efekt, np. abs(x)
. Ale inne funkcje, takie jak print()
, jednak zwracają 'default' value None
:
Oto None
, które jest specjalną wartością używaną przez Pythona jako symbol zastępczy ogólnego przeznaczenia. Jeśli wywołasz type(None), dowiesz się, że None
ma nawet swój własny typ NoneType
. Skoro już jesteśmy przy tym temacie, spójrzmy, jaki jest typ zmiennej:
W następnym ćwiczeniu prosimy o uważne śledzenie wyników długiego polecenia z użyciem type
i print
.
print(type(print(type(type(print(print()))))))
składa się z 4 linii. Rozmieść je we właściwej kolejności.- None
- <class 'NoneType'>
- «blank line»
- <class 'type'>
Na razie to są wszystkie wskazówki. Jesteś gotowy, aby kontynuować następną lekcję!