CodeGym /Kursy /Python SELF PL /Funkcje wbudowane

Funkcje wbudowane

Python SELF PL
Poziom 13 , Lekcja 1
Dostępny

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.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION