1.1 Список популярних вбудованих функцій
Ми з вами вже знайомі з багатьма вбудованими функціями, але хотілося б розказати про ще декілька, які будуть вам корисні найближчим часом:
id()hash()dir()
Нижче трохи про них детальніше:
Функція id()
Функція id() повертає унікальний ідентифікатор об'єкта (число). Цей ідентифікатор є цілим числом і залишається унікальним для об'єкта протягом його існування. Зазвичай ідентифікатор відповідає адресі об'єкта в пам'яті, хоча це не гарантується в специфікації Python.
Унікальний ідентифікатор об'єкта можна використовувати для кращого розуміння багатьох операцій, наприклад, щоб краще зрозуміти, де об'єкти дублюються, а де у нас посилання на один і той же об'єкт. Однакові об'єкти матимуть різні ідентифікатори, але посилання на той самий об'єкт покажуть один і той же ідентифікатор.
Можна застосовувати під час відладки програми та розуміння того, як Python керує об'єктами в пам'яті.
a = [1, 2, 3]
b = a
print(id(a)) # Виводить ідентифікатор об'єкта 'a'
print(id(b)) # Виводить той самий ідентифікатор, оскільки 'b' посилається на той самий об'єкт
Функція hash()
Функція hash() повертає хеш-значення (число) для зазначеного об'єкта, якщо він хешуємих. Хешуємі об'єкти у Python повинні бути незмінними та мати постійне значення хешу протягом їх життєвого циклу.
Приклади таких об'єктів включають числа, рядки та кортежі (якщо всі їх елементи також хешуємі). Хеш-значення використовуються у словниках та множинах для швидкого пошуку. Використовується для оптимізації пошуку і зберігання даних, де необхідні швидкі перевірки рівності та унікальності.
print(hash("hello")) # Повертає хеш-значення рядка "hello"
print(hash(42)) # Повертає хеш-значення числа 42
print(hash((1, 2, 3))) # Повертає хеш-значення кортежа (1, 2, 3)
Важливо! Хеш-значення незмінних об'єктів залишаються постійними протягом їх життєвого циклу. Проте змінні об'єкти, такі як списки та словники, не є хешуємі та не можуть використовуватися як ключі у словниках або елементи множин.
Функція dir()
Функція dir() повертає список атрибутів і методів об'єкта. Якщо об'єкт не вказано, dir() повертає список імен у поточній локальній області видимості. Ця функція корисна для вивчення структури об'єктів і їх атрибутів.
Використовується для отримання списку всіх атрибутів і методів об'єкта, що допомагає краще зрозуміти його структуру та доступні функції. Часто використовується для відладки та вивчення об'єктів, особливо коли документація обмежена або недоступна.
class MyClass:
def __init__(self):
self.name = "Alice"
def greet(self):
print("Hello, " + self.name)
obj = MyClass()
print(dir(obj)) # Виводить список атрибутів та методів об'єкта 'obj'
print(dir()) # Виводить список імен у поточній локальній області видимості
1.2 Робота з колекціями
Є ще декілька корисних функцій для роботи з колекціями. Можливо, вони згадувались у попередніх лекціях, але зараз я хочу торкнутися їх трохи детальніше.
zip()min()max()sum()count()
Функція zip()
Функція zip() об'єднує декілька ітерованих об'єктів (наприклад, списки, кортежі, рядки) та повертає ітератор кортежів. Кожен кортеж містить елементи, зібрані з позицій з однаковим індексом з усіх ітерованих об'єктів.
Часто використовується для об'єднання даних з декількох ітерованих об'єктів, дозволяючи легко ітерувати по ним одночасно. А також для створення словників з двох списків — один для ключів, інший для значень.
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined)) # Вивід: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
Функція max()
Функція max() повертає найбільший елемент з переданого ітерованого об'єкту або з декількох переданих аргументів. Можна також вказати ключову функцію для визначення правила порівняння.
numbers = [1, 2, 3, 4, 5]
print(max(numbers)) # Вивід: 5
# З ключовою функцією
words = ["apple", "banana", "cherry"]
print(max(words, key=len)) # Вивід: 'banana'
Функція min()
Функція min() повертає найменший елемент з переданого ітерованого об'єкту або з декількох переданих аргументів. Можна також вказати ключову функцію для визначення правила порівняння.
numbers = [1, 2, 3, 4, 5]
print(min(numbers)) # Вивід: 1
# З ключовою функцією
words = ["apple", "banana", "cherry"]
print(min(words, key=len)) # Вивід: 'apple'
Функція count()
Функція count() використовується для підрахунку кількості входжень елемента в ітерованому об'єкті, такому як список або рядок. Викликається у списку, колекції або ітератора.
numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2)) # Вивід: 3
text = "hello world"
print(text.count("o")) # Вивід: 2
Функція sum()
Функція sum() повертає суму всіх елементів ітерованого об'єкту. Опціонально можна вказати початкове значення, яке буде додане до суми.
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # Вивід: 15
# З початковим значенням
print(sum(numbers, 10)) # Вивід: 25
1.3 Виконання коду
І ще дві функції, які можуть бути корисні вам як новачку:
eval()exec()
Вони мають потужні можливості, але вимагають обережного використання через потенційні ризики безпеки. Ось детальна інформація про кожну з цих функцій:
Функція eval(expression)
Функція eval() приймає рядок і виконує його як вираз Python. Вона повертає результат виконання цього виразу. Використовується для обчислення рядкових виразів як коду Python.
Приклади:
x = 10
result = eval("x + 5")
print(result) # Вивід: 15
Функція exec()
Функція exec() приймає рядок і виконує його як код Python. На відміну від eval(), яка виконує лише вирази, exec() може виконувати будь-які інструкції Python, включаючи визначення функцій, цикли та імпорт модулів. Ця функція не повертає значення.
Використовується для виконання динамічних скриптів та визначення нових функцій або класів під час виконання програми.
code = """
def greet(name):
print(f"Hello, {name}!")
greet("Alice")
"""
exec(code)
# Вивід: Hello, Alice!
Важливо! Як і eval(), exec() може бути небезпечним при використанні з недовіреними вхідними даними. Будьте обережні та уникайте використання exec() для виконання коду на production.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ