функцыі
Да гэтага часу мы пісалі ўвесь наш код у app.py, але па меры росту нашых праграм нам патрэбны лепшы спосаб арганізаваць наш код. Нам трэба разбіць наш код на меншыя, больш зручныя і абслугоўваемыя кавалкі, якія мы называем функцыямі. Функцыя ўяўляе сабой кантэйнер для некалькіх радкоў кода, якія выконваюць пэўную задачу.
Напрыклад, вы ўжо даведаліся аб некалькіх убудаваных функцыях у Python print()
і input()
. Кожная функцыя мае прызначэнне і ведае, як выканаць пэўную задачу. Такім чынам, калі мы ствараем вялікія складаныя праграмы, мы павінны разбіць наш код на меншыя шматразовыя кавалкі, г.зн. функцыі.
Давайце разбярэмся ў гэтай канцэпцыі, стварыўшы праграму для друку прывітальнага паведамлення.
print('Hi there!')
print('Welcome aboard!')
Тут у нас простая праграма з двума радкамі кода. Зараз, дапусцім, яны нам спатрэбяцца ў іншых праграмах, каб змясціць іх у функцыі, якія мы можам выкарыстоўваць паўторна.
Дазвольце мне прадставіць зарэзерваванае ключавое слова def
у Python, што з'яўляецца скарачэннем ад define і выкарыстоўваецца для вызначэння функцыі.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Цяпер гэты блок кода будзе вызначаць функцыю "greet_user
» з радкамі кодаў пасля гэтага. Кожны раз, калі гэтая функцыя выклікаецца, гэтыя два радкі будуць выкананы. Давайце выкарыстоўваць гэта:
print('start')
greet_user()
print('finish')
Праграма выконваецца паслядоўна, гэта значыць, што вам трэба будзе вызначыць функцыю перад тым, як выклікаць яе ў праграме.
параметры
Вызначаныя функцыі працуюць крыху інакш, чым убудаваныя функцыі Python. Напрыклад, у выпадку з print()
функцыя, яна прымае некаторую інфармацыю, якую мы хочам надрукаваць, але наша функцыя greet не прымае ніякай інфармацыі. Ці не было б прыемней, калі б вы маглі перадаць імя карыстальніка сюды, а затым, замест таго, каб сказаць «прывітанне», вы маглі б надрукаваць імя карыстальніка?
Вы можаце зрабіць гэта, дадаўшы параметры ўнутры дужак вызначанай функцыі. Дазвольце мне паказаць вам:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Цяпер "name
” у дужках будзе дзейнічаць як лакальная зменная, і мы можам перадаць імя карыстальніка пры яе выкліку.
greet_user('Shahbaz')
Цяпер параметр імя ўсталяваны ў "Shahbaz
». Давайце зменім праграму, каб выкарыстоўваць яе.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Важна адзначыць, што «імя» ў першым радку называецца параметрам, у той час як дадзенае імя, напрыклад, Шахбаз, называецца аргументам.
Давайце запусцім гэтую праграму.
Такім чынам, з гэтымі параметрамі мы можам атрымліваць інфармацыю ў нашых функцыях.
Зараз давайце зробім нешта цікавае. Дапусцім, вы хочаце дадаць яшчэ адно імя ў прывітальнае паведамленне. Гэта проста.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Цяпер звярніце ўвагу, што калі функцыя мае параметр, мы абавязаны перадаць значэнне для гэтага параметру. Калі вы выдаліце назву з функцыі і запусціце праграму, мы атрымаем памылку. Вы таксама можаце выкарыстоўваць некалькі параметраў у адной функцыі, падзеленых коскай.
Напрыклад, greet_user(first_name, last_name):
. Аргументы таксама будуць адфарматаваны аналагічным чынам.
Аргументы ключавых слоў
Да гэтага часу мы даведаліся, што кожны раз, калі мы вызначаем параметры для нашых функцый, мы заўсёды павінны падаваць значэнні, інакш мы атрымаем памылку. У апошняй праграме аргументы 'Shahbaz'
і 'Bhatti'
называюцца пазіцыйнымі аргументамі, што азначае, што іх становішча або парадак маюць значэнне ў праграме.
У Python ёсць іншы від аргументаў, які называецца аргументамі ключавых слоў, для якіх пазіцыя не мае значэння. Дазвольце мне паказаць вам, як яны працуюць.
Паглядзіце апошнюю праграму. Мы можам змяніць гэта так:
def greet_user(first_name, last_name):
print(f'Hi {first_name} {last_name}')
print('Welcome aboard!')
print('start')
greet_user(first_name='Shahbaz', last_name='Bhatti')
print('finish')
цяпер first_name
і last_name
гэта параметры ключавых слоў. Вы можаце памяняць іх месцамі, і вынік будзе той жа.
Гэта не значыць, што мы заўсёды павінны выкарыстоўваць ключавыя аргументы. Большую частку часу мы выкарыстоўваем пазіцыйныя аргументы, але ў пэўных сітуацыях гэтыя ключавыя словы дапамагаюць нам палепшыць чытальнасць нашага кода.
Ёсць яшчэ адна рэч, якую вам трэба ведаць аб аргументах ключавых слоў. Ключавыя аргументы заўсёды павінны ісці пасля пазіцыйных аргументаў.
Заява аб вяртанні
Да гэтага часу мы навучыліся ствараць функцыі і адпраўляць ім інфармацыю з дапамогай іх параметраў. Зараз давайце даведаемся, як ствараць функцыі, якія вяртаюць значэнні. Гэта асабліва карысна, калі вы робіце нейкія разлікі і хочаце вярнуць вынік таму, хто выкарыстоўвае вашу функцыю. Дазвольце мне паказаць вам.
Давайце вызначым функцыю, якая будзе вылічваць квадрат ліку.
def square(number):
return number*number
Мы выкарыстоўвалі аператар return, каб вярнуць гэты лік па-за функцыяй. Цяпер, калі мы выклікаем гэтую функцыю, яна вяртае значэнне, падобнае на input()
функцыя. Раздрукуем яго на тэрмінале.
Вы можаце сцвярджаць, што той жа вынік можа быць атрыманы без выкарыстання аператара return. Давайце праверым.
Мы бачым дзве рэчы, лічбу 9 і ніводнай. Што тут адбываецца?
Калі інтэрпрэтатар Python выконвае гэты код, спачатку ён выклікае квадратную функцыю, і элемент кіравання пераходзіць да функцыі. Тут мы разлічваем квадрат гэтага зададзенага ліку, а потым друкуем яго на тэрмінале.
Цяпер па змаўчанні ўсе функцыі вяртаюць значэнне none. Такім чынам, калі ў нас няма аператара return, па змаўчанні Python не вяртае яго. None - гэта аб'ект, які адлюстроўвае адсутнасць значэння. Гэта як нічога або нуль у C, C++, Java і Javascript.
Хутацца!
Спадзяюся, вы зразумелі важнасць функцый.
Яны з'яўляюцца важным аспектам вывучэння Python, калі вы плануеце пісаць вялікія і складаныя праграмы падчас сваёй кар'еры кадзіравання.
Пакінуць каментар