Funktsioonid
Seni oleme kirjutanud kogu oma koodi faili app.py, kuid programmide kasvades vajame koodi paremaks korraldamiseks. Peame oma koodi jagama väiksemateks, paremini hallatavateks ja paremini hooldatavateks tükkideks, mida me nimetame funktsioonideks. Funktsioon on konteiner mõne koodirea jaoks, mis täidavad konkreetset ülesannet.
Näiteks olete juba õppinud tundma mõnda Pythoni sisseehitatud funktsiooni print()
ja input()
. Igal funktsioonil on eesmärk ja ta teab, kuidas konkreetset ülesannet täita. Seega, kui ehitame suuri keerulisi programme, peaksime oma koodi jagama väiksemateks korduvkasutatavateks tükkideks, st funktsioonideks.
Mõistkem seda kontseptsiooni, luues tervitussõnumi printimise programmi.
print('Hi there!')
print('Welcome aboard!')
Siin on meil lihtne programm, millel on ainult kaks koodirida. Oletame, et vajame neid teistes programmides, et panna need funktsiooni, mida saaksime uuesti kasutada.
Lubage mul tutvustada reserveeritud märksõna def
Pythonis, mis on lühend sõnadest define ja mida kasutatakse funktsiooni määratlemiseks.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Nüüd määratleb see koodiplokk funktsiooni "greet_user
” koos sellele järgnevate koodiridadega. Kui seda funktsiooni kutsutakse, käivitatakse need kaks rida. Kasutame seda:
print('start')
greet_user()
print('finish')
Programm käivitatakse järjestikku, mis tähendab, et enne selle kutsumist programmis peate funktsiooni määratlema.
parameetrid
Määratletud funktsioonid töötavad pisut teisiti kui Pythoni sisseehitatud funktsioonid. Näiteks juhul print()
funktsioon, võtab see teatud teavet, mida tahame printida, kuid meie tervitusfunktsioon ei võta teavet. Kas poleks toredam, kui saaksite kasutaja nime siia edasi anda ja siis "tere" asemel välja printida kasutaja nime?
Seda saate teha, lisades parameetrid defineeritud funktsiooni sulgudesse. Las ma näitan sulle:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Nüüd "name
Sulgudes olev ” toimib nagu kohalik muutuja ja me saame sellele helistamisel edastada kasutaja nime.
greet_user('Shahbaz')
Nüüd on nime parameeter seatud väärtusele "Shahbaz
”. Muudame programmi, et seda kasutada.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Oluline on märkida, et esimesel real olevat "nime" nimetatakse parameetriks, samas kui esitatud nime, st Shahbaz, nimetatakse argumendiks.
Lähme edasi ja käivitame selle programmi.
Nii et nende parameetritega saame oma funktsioonides teavet vastu võtta.
Nüüd teeme midagi huvitavat. Oletame, et soovite lisada tervitussõnumile teise nime. See on lihtne.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Pange tähele, et kui funktsioonil on parameeter, oleme kohustatud edastama selle parameetri väärtuse. Kui eemaldate funktsioonilt nime ja käivitate programmi, saame veateate. Samuti saate ühes funktsioonis kasutada mitut parameetrit, eraldades need komaga.
Näiteks greet_user(first_name, last_name):
. Argumendid vormistatakse samuti sarnaselt.
Märksõna argumendid
Siiani oleme õppinud, et kui me oma funktsioonide jaoks parameetreid määratleme, peaksime alati esitama väärtused, muidu saame vea. Viimases programmis argumendid 'Shahbaz'
ja 'Bhatti'
Neid nimetatakse positsiooniargumentideks, mis tähendab, et nende asukoht või järjestus on programmis oluline.
Pythonis on meil teist tüüpi argument, mida nimetatakse märksõnaargumentideks, mille puhul positsioon ei oma tähtsust. Las ma näitan teile, kuidas need töötavad.
Vaata viimast programmi. Saame seda muuta järgmiselt:
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')
Nüüd first_name
ja last_name
on märksõna parameetrid. Saate nende kohti vahetada ja tulemus on sama.
See ei tähenda, et peaksime alati kasutama märksõnaargumente. Enamasti kasutame positsiooniargumente, kuid teatud olukordades aitavad need märksõnaargumendid meil koodi loetavust parandada.
Märksõnaargumentide kohta peate teadma veel üht asja. Märksõna argumendid peaksid alati tulema pärast positsiooniargumente.
Tagastusavaldus
Siiani oleme õppinud, kuidas luua funktsioone ja saata neile teavet nende parameetrite abil. Nüüd õpime, kuidas luua väärtusi tagastavaid funktsioone. See on eriti kasulik, kui teete mingisuguseid arvutusi ja soovite tulemuse tagastada sellele, kes teie funktsiooni kasutab. Las ma näitan sulle.
Määratleme funktsiooni, mis arvutab arvu ruudu.
def square(number):
return number*number
Selle numbri tagastamiseks väljaspool funktsiooni oleme kasutanud return-lauset. Nüüd, kui me seda funktsiooni kutsume, tagastab see väärtuse nagu input()
funktsiooni. Prindime selle terminali.
Võite väita, et sama tulemuse saab ilma return-lauset kasutamata. Vaatame üle.
Näeme kahte asja, numbrit 9 ja mitte ühtegi. Mis siin toimub?
Kui Pythoni tõlk selle koodi käivitab, kutsub see kõigepealt välja ruudu funktsiooni ja juhtelement liigub funktsiooni juurde. Siin arvutame välja antud arvu ruudu ja trükime selle siis terminali.
Nüüd tagastavad kõik funktsioonid vaikimisi väärtuse none. Nii et kui meil siin tagastamislauset pole, ei tagasta Python vaikimisi ühtegi. Ükski pole objekt, mis tähistab väärtuse puudumist. See on nagu mitte midagi või null C, C++, Java ja Javascripti puhul.
Tõmba otsad kokku!
Loodan, et olete aru saanud funktsioonide tähtsusest.
Need on Pythoni õppimise oluline aspekt, kui kavatsete oma kodeerimiskarjääri jooksul kirjutada suuri ja keerulisi programme.
Jäta vastus