Вбудовані функції та довідка
Останнє оновлення 2025-04-03 | Редагувати цю сторінку
Огляд
Питання
- Як я можу використовувати вбудовані функції?
- Як я можу дізнатися, для чого вони призначені?
- Які помилки можуть виникнути в програмах?
Цілі
- Пояснення призначення функцій.
- Коректний виклик вбудованих функцій Python.
- Правильне використання вкладених вбудованих функцій.
- Використання довідки для відображення документації про вбудовані функції.
- Правильний опис ситуацій, в яких виникають помилки SyntaxError і NameError.
Використовуйте коментарі при створенні документації програм.
Функції можуть приймати нуль або більше аргументів.
- Ми вже знайомі з деякими функціями — тепер розглянемо їх докладніше.
- Аргумент - це значення, яке передається у функцію.
-
len
потребує тільки один аргумент. -
int
,str
таfloat
створюють нові значення з наявних. -
print
може приймати нуль або більше аргументів. -
print
без аргументів повертає порожній рядок.- Потрібно завжди використовувати дужки, навіть якщо вони порожні, щоб Python знав, що викликається функція.
ВИХІД
before
after
Кожна функція щось повертає.
- Кожен виклик функції дає певний результат.
- Якщо функція не має корисного результату для повернення, то вона
зазвичай повертає спеціальне значення
None
.None
- це об’єкт Python, який застосовується у будь-якому випадку, коли немає значення.
ВИХІД
example
result of print is None
Поширені вбудовані функції max
, min
та
round
.
- Використовуйте
max
, щоб знайти найбільше з одного або декількох значень. - Використовуйте
min
, щоб знайти найменше значення. - Обидві функції працюють як з рядками символів, так і з числами.
- Літери порівнюються у лексикографічному порядку, при цьому цифри “менші” ніж великі літери, а великі літери “менші” ніж малі.
ВИХІД
3
0
Функції працюють лише з певними аргументами (або комбінаціями аргументів).
-
max
таmin
мають приймати принаймні один аргумент.- “Найбільше значення з порожньої множини” - запит, який не має сенсу.
- Крім того, аргументи цих функцій мають бути порівнюваними.
ПОМИЛКА
TypeError Traceback (most recent call last)
<ipython-input-52-3f049acf3762> in <module>
----> 1 print(max(1, 'a'))
TypeError: '>' not supported between instances of 'str' and 'int'
Функції можуть мати значення за замовчуванням для певних аргументів.
-
round
округлює дійсне число. - За замовчуванням округлення відбувається до нуля знаків після точки.
ВИХІД
4
- Ми можемо вказати потрібну кількість десяткових знаків після крапки.
ВИХІД
3.7
Функції, приєднані до об’єктів, називаються методами
- Функції можуть набувати іншої форми, яка буде типовою для епізодів, пов’язаних з бібліотекою pandas.
- Методи мають такі дужки як функції, але з’являються в описі оператора після імені змінної.
- Деякі методи використовуються для внутрішніх операцій Python і відзначаються подвійними підкресленнями.
PYTHON
my_string = 'Hello world!' # створення об'єкта - рядка
print(len(my_string)) # функція len приймає рядок як аргумент і повертає довжину рядка
print(my_string.swapcase()) # виклик методу swapcase для об’єкта my_string
print(my_string.__len__()) # виклик внутрішнього методу __len__ для об’єкта my_string, який використовується функцією len(my_string)
ВИХІД
12
hELLO WORLD!
12
- Ви навіть можете побачити, як вони зв’язані. Вони працюють зліва направо.
PYTHON
print(my_string.isupper()) # Функція перевіряє, чи всі літери заглавні
print(my_string.upper()) # Функція перетворює всі літери на заглавні
print(my_string.upper().isupper()) # Тепер всі літери заглавні
ВИХІД
False
HELLO WORLD
True
Використовуйте вбудовану функцію help
, щоб отримати
довідку щодо функції.
- Кожна вбудована функція має онлайн-документацію.
ВИХІД
Файл допомоги щодо вбудованої функції round зі стандартної бібліотеки Python:
round(number, ndigits=None)
Round a number to a given precision in decimal digits.
The return value is an integer if ndigits is omitted or None. Otherwise
the return value has the same type as the number. ndigits may be negative.
Два шляхи отримання допомоги у Jupyter Notebook.
- Варіант 1: Помістіть курсор біля того місця, де функція викликається
в комірці (тобто біля назви функції або її параметрів),
- Утримуйте Shiftта натисніть Tab.
- Зробіть це кілька разів для розширення інформації, що повертається.
- Варіант 2: Введіть ім’я функції в комірці зі знаком питання після нього. Потім запустіть комірку.
Python повідомляє про синтаксичну помилку, коли він не може зрозуміти вихідний код програми.
- Він навіть не намагатиметься запустити програму, якщо її неможливо коректно прочитати.
ПОМИЛКА
File "<ipython-input-56-f42768451d55>", line 2
name = 'Feng
^
SyntaxError: EOL while scanning string literal
ПОМИЛКА
File "<ipython-input-57-ccc3df3cf902>", line 2
age = = 52
^
SyntaxError: invalid syntax
- Подивіться уважніше на повідомлення про помилку:
ПОМИЛКА
File "<ipython-input-6-d1cc229bf815>", line 1
print ("hello world"
^
SyntaxError: unexpected EOF while parsing
- Повідомлення вказує на проблему в першому рядку введеної програми
(“line 1”).
- У цьому випадку “ipython-input” у назві файлу повідомляє нам, що ми працюємо з IPython, тобто з інтерпретатором Python, який застосовується в Jupyter Notebook.
- Фрагмент
-6-
в назві файлу вказує на те, що помилка сталася в комірці 6. - Далі йде проблемний рядок коду, на що вказує символ
^
.
Python повідомляє про помилку виконання, коли щось йде не так під час виконання програми.
ПОМИЛКА
NameError Traceback (most recent call last)
<ipython-input-59-1214fb6c55fc> in <module>
1 age = 53
----> 2 remaining = 100 - aege # mis-spelled 'age'
NameError: name 'aege' is not defined
- Аналіз вихідного кода дозволяє виправити синтаксичні помилки, а на етапі компілювання можна виправити помилки виконання.
Порядок виконання операцій
Порядок виконання операцій:
1.1 * radiance = 1.1
1.1 - 0.5 = 0.6
min(radiance, 0.6) = 0.6
2.0 + 0.6 = 2.6
max(2.1, 2.6) = 2.6
На кінець,
radiance = 2.6
Знайдіть відмінності
- Подумайте, що виведе кожен з операторів
print
у наведеній нижче програмі. - Функція
max(len(rich), poor)
поверне відповідь або повідомлення про помилку? Якщо поверне відповідь, чи буде вона мати сенс?
ВИХІД
c
ВИХІД
tin
ВИХІД
4
max(len(rich), poor)
повертає TypeError. Помилка виникає
при виконанні max(4, 'tin')
тому що, як ми обговорювали
раніше, порівнювати рядок і ціле число не можна.
ПОМИЛКА
TypeError Traceback (most recent call last)
<ipython-input-65-bc82ad05177a> in <module>
----> 1 max(len(rich), poor)
TypeError: '>' not supported between instances of 'str' and 'int'
Чому ні?
Чому саме max
і min
не повертають
None
, коли вони викликаються без аргументів?
max
and min
повертають TypeErrors у цьому
випадку, тому що не було вказано правильну кількість параметрів. Якби
компілятор просто повернув None
, помилку було б набагато
важче відстежити, тому що це значення було б збережено в змінній і
використано пізніше в програмі.
Останній символ рядка
Якщо Python починає рахувати з нуля, та len
повертає
кількість символів у рядку, то який індекс отримає останній символ у
рядку name
? (Примітка: ми побачимо простіший спосіб зробити
це в подальшому епізоді)
name[len(name) - 1]
Вивчайте документацію Python!
Офіційна документація Python вочевидь є найповнішим джерелом інформації про мову. Вона доступна різними мовами та містить багато корисних ресурсів. Сторінка вбудованих функцій містить каталог усіх таких функцій, включаючи ті, про які ми вже говорили на цьому уроці. Деякі з них більш досконалі та на цей час зайві, але інші - дуже прості та корисні.
Ключові моменти
- Використовуйте коментарі при створенні документації програм.
- Функції можуть сприймати нуль або більше аргументів.
- Поширені вбудовані функції
max
,min
таround
. - Функції можуть працювати лише з певними аргументами (комбінаціями аргументів).
- Функції можуть мати значення за замовчуванням для певних аргументів.
- Використовуйте вбудовану функцію
help
, щоб отримати довідку щодо функції. - Є два шляхи отримання допомоги у Jupyter Notebook.
- Кожна функція щось повертає.
- Python повідомляє про синтаксичну помилку, коли він не може зрозуміти вихідний код програми.
- Python повідомляє про помилку виконання (runtime error), коли щось йде не так під час виконання програми.
- Якщо перечитаєте вихідний код, можна виправити синтаксичні помилки, а якщо відстежите дії інтерпретатора - помилки виконання.