Skip to content

Ś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

  1. Enumerate: zwraca sekwencję krotek (klucz, wartość), gdzie klucz jest indeksem bieżącego elementu.

    for key, val in enumerate(collection):
  2. Sorted: wykonuje operację sortowania na wszystkich obiektach iterowalnych.

    sorted([2, 1, 3]) => [1, 2, 3]
  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'), (..), ..]
  4. Reversed: zwraca odwrócony iterator.

    list(reversed(range(10)))

Kontrola i przepływ (Control Flow)

  1. 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
  2. Powszechne zastosowanie operatora for:

    for element in iterator :
  3. „pass” – nic nie robi, zazwyczaj używane jako instrukcja pusta.

  4. Wyrażenie trójelementowe (Ternary expression)

    value = true-expr if condition else false-expr
  5. Nie ma instrukcji switch/case, używa się zamiast tego if/elif.

Programowanie obiektowe (OOP)

  1. „object” jest podstawą wszystkich typów Pythona.

  2. 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.

  3. 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')
  4. 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

  1. Forma podstawowa
try:
    ..
except ValueError as e:
    print(e)
except (TypeError, AnotherError):
    ..
except:
    ..
finally:
    ..
  1. 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.

  1. 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)
  2. Wyrażenia słownikowe (Dictionary Comprehension):

    {key-expr : value-expr for value in collection if condition}
  3. Wyrażenia zbiorowe (Set Comprehension): Tak samo jak wyrażenia listowe, tylko z użyciem {} zamiast [].

  4. Zagnieżdżone wyrażenia listowe:

    Forma podstawowa:

    [expr for val in collection for innerVal in val if condition]