1.1 Lista popularnych funkcji wbudowanych
Znamy już wiele funkcji wbudowanych, ale chciałbym opowiedzieć o kilku innych, które będą przydatne w najbliższym czasie:
id()
hash()
dir()
Poniżej trochę więcej o nich:
Funkcja id()
Funkcja id()
zwraca unikalny identyfikator obiektu (liczbę). Ten identyfikator jest liczbą całkowitą i pozostaje unikalny dla obiektu przez cały czas jego istnienia. Zazwyczaj identyfikator odpowiada adresowi obiektu w pamięci, choć nie jest to zagwarantowane w specyfikacji Pythona.
Unikalny identyfikator obiektu można użyć do lepszego zrozumienia wielu operacji, na przykład, aby zrozumieć, gdzie obiekty się duplikują, a gdzie mamy referencje do tego samego obiektu. Różne obiekty będą miały różne identyfikatory, ale referencje do tego samego obiektu pokażą ten sam identyfikator.
Można stosować podczas debugowania programu i zrozumienia, jak Python zarządza obiektami w pamięci.
a = [1, 2, 3]
b = a
print(id(a)) # Zwraca identyfikator obiektu 'a'
print(id(b)) # Zwraca ten sam identyfikator, bo 'b' odnosi się do tego samego obiektu
Funkcja hash()
Funkcja hash()
zwraca wartość hasha (liczbę) dla podanego obiektu, jeśli jest on hashowalny. Obiekty hashowalne w Pythonie muszą być niemutowalne i mieć stałą wartość hasha przez cały czas ich istnienia.
Przykłady takich obiektów to liczby, napisy i krotki (jeśli wszystkie ich elementy są również hashowalne). Wartości hash są używane w słownikach i zbiorach do szybkiego wyszukiwania. Wykorzystuje się je do optymalizacji wyszukiwania i przechowywania danych, gdzie konieczne są szybkie sprawdzenia równości i unikalności.
print(hash("hello")) # Zwraca wartość hasha dla napisu "hello"
print(hash(42)) # Zwraca wartość hasha dla liczby 42
print(hash((1, 2, 3))) # Zwraca wartość hasha dla krotki (1, 2, 3)
Ważne!
Wartości hash obiektów niemutowalnych pozostają stałe przez cały czas ich istnienia. Jednak obiekty mutowalne, takie jak listy i słowniki, nie są hashowalne i nie mogą być używane jako klucze w słownikach lub elementy zbiorów.
Funkcja dir()
Funkcja dir()
zwraca listę atrybutów i metod obiektu. Jeśli obiekt nie jest podany, dir()
zwraca listę nazw w bieżącej lokalnej przestrzeni nazw. Ta funkcja jest użyteczna do badania struktury obiektów i ich atrybutów.
Jest używana do uzyskania listy wszystkich atrybutów i metod obiektu, co pomaga lepiej zrozumieć jego strukturę i dostępne funkcje. Często stosowana do debugowania i badania obiektów, zwłaszcza gdy dokumentacja jest ograniczona lub niedostępna.
class MyClass:
def __init__(self):
self.name = "Alice"
def greet(self):
print("Hello, " + self.name)
obj = MyClass()
print(dir(obj)) # Wyświetla listę atrybutów i metod obiektu 'obj'
print(dir()) # Wyświetla listę nazw w bieżącej lokalnej przestrzeni nazw
1.2 Praca z kolekcjami
Jest jeszcze kilka przydatnych funkcji do pracy z kolekcjami. Może były wspomniane w wcześniejszych wykładach, ale teraz chcę przyjrzeć się im trochę bliżej.
zip()
min()
max()
sum()
count()
Funkcja zip()
Funkcja zip()
łączy kilka iterowalnych obiektów (np. listy, krotki, napisy) i zwraca iterator krotek. Każda krotka zawiera elementy zebrane z pozycji o tym samym indeksie we wszystkich iterowalnych obiektach.
Często używana do łączenia danych z kilku iterowalnych obiektów, umożliwiając łatwe iterowanie po nich jednocześnie. Również do tworzenia słowników z dwóch list — jednej dla kluczy, drugiej dla wartości.
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined)) # Wyjście: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
Funkcja max()
Funkcja max()
zwraca największy element z podanego iterowalnego obiektu lub z kilku podanych argumentów. Można także podać funkcję klucza do określenia reguły porównania.
numbers = [1, 2, 3, 4, 5]
print(max(numbers)) # Wyjście: 5
# Z funkcją klucza
words = ["apple", "banana", "cherry"]
print(max(words, key=len)) # Wyjście: 'banana'
Funkcja min()
Funkcja min()
zwraca najmniejszy element z podanego iterowalnego obiektu lub z kilku podanych argumentów. Można także podać funkcję klucza do określenia reguły porównania.
numbers = [1, 2, 3, 4, 5]
print(min(numbers)) # Wyjście: 1
# Z funkcją klucza
words = ["apple", "banana", "cherry"]
print(min(words, key=len)) # Wyjście: 'apple'
Funkcja count()
Funkcja count()
jest używana do zliczania liczby wystąpień elementu w iterowalnym obiekcie, takim jak lista lub napis. Jest wywoływana na liście, kolekcji lub iteratorze.
numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2)) # Wyjście: 3
text = "hello world"
print(text.count("o")) # Wyjście: 2
Funkcja sum()
Funkcja sum()
zwraca sumę wszystkich elementów iterowalnego obiektu. Opcjonalnie można podać wartość początkową, która zostanie dodana do sumy.
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # Wyjście: 15
# Z wartością początkową
print(sum(numbers, 10)) # Wyjście: 25
1.3 Wykonywanie kodu
I jeszcze dwie funkcje, które mogą być przydatne dla Ciebie jako początkującego:
eval()
exec()
Mają one potężne możliwości, ale wymagają ostrożnego użycia ze względu na potencjalne ryzyka bezpieczeństwa. Oto szczegółowa informacja o każdej z tych funkcji:
Funkcja eval()
Funkcja eval(expression)
przyjmuje napis i wykonuje go jako wyrażenie w Pythonie. Zwraca wynik wykonania tego wyrażenia. Używana do obliczania wyrażeń stringowych jako kodu Pythona.
Przykłady:
x = 10
result = eval("x + 5")
print(result) # Wyjście: 15
Funkcja exec()
Funkcja exec()
przyjmuje napis i wykonuje go jako kod Pythona. W przeciwieństwie do eval()
, która wykonuje tylko wyrażenia, exec()
może wykonywać dowolne instrukcje Pythona, w tym definicje funkcji, pętle i importowanie modułów. Ta funkcja nie zwraca wartości.
Używana do wykonywania dynamicznych skryptów i definiowania nowych funkcji lub klas w czasie wykonywania programu.
code = """
def greet(name):
print(f"Hello, {name}!")
greet("Alice")
"""
exec(code)
# Wyjście: Hello, Alice!
Ważne!
Podobnie jak eval()
, exec()
może być niebezpieczna przy używaniu z niezaufanymi danymi wejściowymi. Bądź ostrożny i unikaj używania exec()
do uruchamiania kodu na produkcji.
GO TO FULL VERSION