Ściąga z języka Python
Python to wieloplatformowy język programowania komputerowego. Jest to obiektowy język o dynamicznym typowaniu, pierwotnie zaprojektowany do pisania skryptów automatyzacji (shell). Wraz z ciągłymi aktualizacjami wersji i dodawaniem nowych funkcji językowych, jest coraz szerzej stosowany do tworzenia niezależnych, dużych projektów.
Ogólne
- Python odróżnia wielkość liter
- Indeksowanie w Pythonie zaczyna się od 0
- Python używa białych znaków (tabulatorów lub spacji) do wcinania kodu, zamiast używać nawiasów klamrowych.
Pomoc (Help)
| Strona główna pomocy | help() |
| Pomoc dotycząca funkcji | help(str.replace) |
| Pomoc dotycząca modułów | help(re) |
Moduły (Biblioteki)
| Lista zawartości modułu | dir(module1) |
| Ładowanie modułu | import module1 * |
| Wywoływanie funkcji z modułu | module1.func1() |
Instrukcja import tworzy nową przestrzeń nazw i wykonuje wszystkie instrukcje w skojarzonym pliku .py w tej przestrzeni nazw. Jeśli chcesz załadować zawartość modułu do bieżącej przestrzeni nazw, użyj „from module1 import *”.
Typy skalarne
Sprawdzenie typu danych: type(variable)
Liczby całkowite (Integers)
int/long - Duże liczby całkowite są automatycznie konwertowane na długie liczby całkowite (long).
Liczby zmiennoprzecinkowe (Floats)
float - 64-bitowy, nie ma typu „double”.
Wartości logiczne (Booleans)
bool - Prawda (True) lub Fałsz (False).
Ciągi znaków (Strings)
str - Python 2.x domyślnie: ASCII; Python 3: Unicode.
- Ciągi znaków mogą być w cudzysłowie pojedynczym/podwójnym/potrójnym.
- Ciąg znaków jest sekwencją znaków, więc można go traktować jak każdą inną sekwencję.
- Znaki specjalne można reprezentować, poprzedzając je \ lub używając surowych ciągów (raw strings) zaczynających się od r.
str1 = r'this\f?ff' - Formatowanie ciągów znaków można osiągnąć na kilka sposobów.
template = '%.2f %s haha $%d' str1 = template % (4.88, 'hola', 2)
str(), bool(), int() i float() to również funkcje jawnej konwersji typów.
Wartość pusta (Null)
NoneType(None) - wartość „null” w Pythonie (istnieje tylko jedna instancja obiektu None).
- None nie jest słowem kluczowym zastrzeżonym, ale unikalną instancją klasy „NoneType”.
- None jest powszechną wartością domyślną dla opcjonalnych parametrów funkcji:
def func1(a, b, c = None) - Powszechne zastosowanie None:
if variable is None :
Data i godzina
datetime - wbudowany moduł Pythona „datetime” zapewnia typy „datetime”, „date”, „time” itp.
- „datetime” łączy informacje przechowywane w „date” i „time”.
Utwórz datetime z ciągu znaków dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’) Pobierz obiekt „date” dt1.date() Pobierz obiekt „time” dt1.time() Sformatuj datetime jako ciąg znaków dt1.strftime(’%m/%d/%Y %H:%M’) Zmień wartość pola dt2 = dt1.replace(minute = 0, second=30) Pobierz różnicę diff = dt1 - dt2 # diff jest obiektem „datetime.timedelta”
Struktury danych
Krotki (Tuples)
Krotka to sekwencja o stałej długości, której nie można modyfikować.
| Utwórz krotkę | tup1=4,5,6 or tup1 = (6,7,8) |
| Utwórz zagnieżdżoną krotkę | tup1 = (4,5,6), (7,8) |
| Konwertuj sekwencję lub iterator na krotkę | tuple([1, 0, 2]) |
| Połącz krotki | tup1 + tup2 |
| Rozpakuj krotkę | a, b, c = tup1 |
| Zamień zmienne | b, a = a, b |
Listy (Lists)
Lista to sekwencja o zmiennej długości, której elementy można modyfikować.
| Utwórz listę | list1 = [1, ‘a’, 3] or list1 = list(tup1) |
| Połącz listy | list1 + list2 or list1.extend(list2) |
| Dodaj do listy | list1.append(‘b’) |
| Wstaw w określonej pozycji | list1.insert(posIdx, ‘b’) |
| Usuń przez indeks | valueAtIdx = list1.pop(posIdx) |
| Usuń pierwszą wystąpienie wartości | list1.remove(‘a’) |
| Sprawdź, czy wartość istnieje | 3 in list1 => True |
| Sortuj listę | list1.sort() |
| Sortuj przy użyciu własnej funkcji | list1.sort(key = len) # sortuj według długości |
Uwaga:
- Indeks „początkowy” (start) jest wliczany, ale indeks „końcowy” (stop) – nie.
- start/stop można pominąć, domyślnie to odpowiednio początek/koniec.
Wycinanie (Slicing)
Typy sekwencyjne obejmują „str”, „array”, „tuple”, „list” itp.
list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]Słowniki (Hash)
| Utwórz słownik | dict1 ={‘key1’ :‘value1’, 2 :[3, 2]} |
| Konstruowanie słownika przez funkcję zip | dict(zip(keyList, valueList)) |
| Pobierz element | dict1[‘key1’] |
| Zmień/dodaj element | dict1[‘key1’] = ’newValue’ |
| Pobierz wartość, jeśli nie istnieje zwróć domyślną | dict1.get(‘key1’, defaultValue) |
| Sprawdź, czy klucz istnieje | ‘key1’ in dict1 |
| Usuń element | del dict1[‘key1’] |
| Pobierz listę kluczy | dict1.keys() |
| Pobierz listę wartości | dict1.values() |
| Aktualizuj wartości | dict1.update(dict2) # wartości dict1 zostają zastąpione przez dict2 |
Zbiory (Sets)
Zbiór to nieuporządkowana kolekcja unikalnych elementów.
| Utwórz zbiór | set([3, 6, 3]) or {3, 6, 3} |
| Sprawdź, czy jest podzbiorem | set1.issubset(set2) |
| Sprawdź, czy jest nadzbiorem | set1.issuperset(set2) |
| Sprawdź równość zbiorów | set1 == set2 |
| Suma (or) | set1 |
| Iloczyn (and) | set1 & set2 |
| Różnica | set1 - set2 |
| Różnica symetryczna (xor) | set1 ^ set2 |
Funkcje
-
Forma podstawowa
def func1(posArg1, keywordArg1 = 1, ..): -
Powszechne użycie „funkcji jako obiektów”:
def func1(ops = [str.strip, user_define_func, ..], ..): for function in ops: value = function(value) -
Wartości zwracane
- Jeśli na końcu funkcji nie ma instrukcji return, nie jest zwracana żadna wartość (None).
- Zwracanie wielu wartości poprzez obiekt krotki.
return (value1, value2) value1, value2 = func1(..) -
Funkcje anonimowe (Lambda)
lambda x : x * 2 # odpowiednik: # def func1(x) : return x * 2
Często używane funkcje
-
Enumerate: zwraca sekwencję krotek (klucz, wartość), gdzie klucz jest indeksem bieżącego elementu.
for key, val in enumerate(collection): -
Sorted: wykonuje operację sortowania na wszystkich obiektach iterowalnych.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip: pakuje odpowiednie elementy obiektów w krotki i zwraca listę złożoną z tych krotek.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed: zwraca odwrócony iterator.
list(reversed(range(10)))
Kontrola i przepływ (Control Flow)
-
Operatory warunków „if else”:
Sprawdź, czy dwie zmienne to ten sam obiekt var1 is var2 Sprawdź, czy dwie zmienne to różne obiekty var1 is not var2 Sprawdź, czy dwie zmienne mają tę samą wartość var1 == var2 -
Powszechne zastosowanie operatora for:
for element in iterator : -
„pass” – nic nie robi, zazwyczaj używane jako instrukcja pusta.
-
Wyrażenie trójelementowe (Ternary expression)
value = true-expr if condition else false-expr -
Nie ma instrukcji switch/case, używa się zamiast tego if/elif.
Programowanie obiektowe (OOP)
-
„object” jest podstawą wszystkich typów Pythona.
-
Wszystko (liczby, ciągi znaków, funkcje, klasy, moduły itp.) jest obiektem, a każdy obiekt ma swój „type”. Zmienne obiektowe to wskaźniki do ich lokalizacji w pamięci.
-
Podstawowa forma obiektu
class MyObject(object): # ‘self’ odpowiada ‘this’ w Javie/C++ def __init__(self, name): self.name = name def memberFunc1(self, arg1): .. @staticmethod def classFunc2(arg1): .. obj1 = MyObject('name1') obj1.memberFunc1('a') MyObject.classFunc2('b') -
Narzędzia interaktywne:
dir(variable1) # Lista wszystkich dostępnych metod obiektu
Operacje na ciągach znaków
Łączenie listy/krotki za pomocą separatora:
', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'Formatowanie ciągów znaków:
string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')Dzielenie ciągów znaków:
sep = '-'
stringList1 = string1.split(sep)Wycinanie ciągu znaków (slicing):
start = 1
string1[start:8]Wypełnianie ciągu znaków zerami (z-fill):
month = '5'
month.zfill(2) => '05'
month = '12'
month.zfill(2) => '12'Obsługa wyjątków
- Forma podstawowa
try:
..
except ValueError as e:
print(e)
except (TypeError, AnotherError):
..
except:
..
finally:
..- Ręczne zgłaszanie wyjątku
raise AssertionError # błąd asercji
raise SystemExit # żądanie wyjścia z programu
raise RuntimeError('Error message :..')Wyrażenia listowe, zbiorowe i słownikowe (Comprehensions)
Cukier składniowy sprawiający, że kod jest łatwiejszy do czytania i pisania.
-
Wyrażenia listowe (List Comprehension):
Zwięzłe tworzenie nowej listy poprzez filtrowanie elementów kolekcji i przekształcanie tych, które przeszły filtr, w jednym wyrażeniu.
Forma podstawowa:
[expr for val in collection if condition]Skrócona wersja dla:
result = [] for val in collection: if condition: result.append(expr) -
Wyrażenia słownikowe (Dictionary Comprehension):
{key-expr : value-expr for value in collection if condition} -
Wyrażenia zbiorowe (Set Comprehension): Tak samo jak wyrażenia listowe, tylko z użyciem {} zamiast [].
-
Zagnieżdżone wyrażenia listowe:
Forma podstawowa:
[expr for val in collection for innerVal in val if condition]