funkcioj
Ĝis nun, ni skribis nian tutan kodon en la app.py, sed dum niaj programoj kreskas, ni bezonas pli bonan manieron organizi nian kodon. Ni devas disigi nian kodon en pli malgrandajn, pli regeblajn, kaj pli konserveblajn pecojn, kiujn ni nomas funkcioj. La funkcio estas ujo por kelkaj linioj de kodo, kiuj plenumas specifan taskon.
Ekzemple, vi jam lernis pri kelkaj enkonstruitaj funkcioj en Python print()
kaj input()
. Ĉiu funkcio havas celon kaj scias kiel plenumi specifan taskon. Do, kiam ni konstruas grandajn kompleksajn programojn, ni devas dividi nian kodon en pli malgrandajn reuzeblajn pecojn, te funkciojn.
Ni komprenu ĉi tiun koncepton konstruante programon por presi salutmesaĝon.
print('Hi there!')
print('Welcome aboard!')
Ĉi tie ni havas simplan programon kun nur du linioj de kodo. Nun, ni diru, ni bezonos ilin en aliaj programoj por meti ilin en funkcion, kiun ni povas reuzi.
Permesu al mi enkonduki rezervitan ŝlosilvorton def
en Python, kiu estas mallonga por difini kaj estas uzata por difini funkcion.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Nun ĉi tiu bloko de kodo difinos funkcion "greet_user
” kun la linioj de kodoj post tio. Kiam ajn ĉi tiu funkcio estas vokita, ĉi tiuj du linioj estos ekzekutitaj. Ni uzu ĉi tion:
print('start')
greet_user()
print('finish')
La programo estas ekzekutita sinsekve, tio signifas, ke vi devus difini funkcion antaŭ ol voki ĝin en la programo.
parametroj
La difinitaj funkcioj funkcias iomete malsame ol la enkonstruitaj funkcioj de Python. Ekzemple, en la kazo de print()
funkcio, ĝi bezonas iujn informojn, kiujn ni volas presi, sed nia saluta funkcio ne prenas ajnajn informojn. Ĉu ne estus pli agrable, se vi povus pasigi la nomon de la uzanto ĉi tie kaj tiam, anstataŭ diri "saluton", vi povus presi la nomon de la uzanto?
Vi povas fari tion aldonante la parametrojn ene de la krampo de la difinita funkcio. Lasu min montri al vi:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Nun la "name
” ene de la krampo agos kiel loka variablo kaj ni povas pasi la nomon de la uzanto kiam oni vokas ĝin.
greet_user('Shahbaz')
Nun la nomo parametro estas agordita al "Shahbaz
”. Ni ŝanĝu la programon por uzi ĝin.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Grava afero noti estas ke la "nomo" en la unua linio estas nomita Parametro dum la nomo provizita t.e. Shahbaz estas nomita argumento.
Ni iru antaŭen kaj rulu ĉi tiun programon.
Do kun ĉi tiuj parametroj, ni povas ricevi informojn en niaj funkcioj.
Nun, ni faru ion interesan. Ni diru, ke vi volas aldoni alian nomon al la salutmesaĝo. Ĝi estas simpla.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Nun rimarku, ke kiam funkcio havas parametron, ni estas devigataj pasi valoron por tiu parametro. Se vi forigas la nomon de la funkcio kaj rulas la programon, ni ricevos eraron. Vi ankaŭ povas uzi plurajn parametrojn en ununura funkcio, apartigitaj per komo.
Ekzemple, greet_user(first_name, last_name):
. Argumentoj ankaŭ estos formatitaj simile.
Ŝlosilvortoj Argumentoj
Ĝis nun, ni lernis ke kiam ajn ni difinas parametrojn por niaj funkcioj ni ĉiam devus provizi valorojn alie ni ricevos eraron. En la lasta programo, la argumentoj 'Shahbaz'
kaj 'Bhatti'
estas nomitaj poziciaj argumentoj, kio signifas, ke ilia pozicio aŭ ordo gravas en la programo.
En Python, ni havas alian specon de argumentoj nomataj ŝlosilvortaj argumentoj, por kiuj la pozicio ne gravas. Lasu min montri al vi kiel ili funkcias.
Rigardu la lastan programon. Ni povas modifi ĝin jene:
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')
Nun la first_name
kaj last_name
estas la ŝlosilvorto-parametroj. Vi povas ŝanĝi iliajn lokojn kaj la rezulto estos la sama.
Nun tio ne signifas, ke ni ĉiam uzu ŝlosilvortajn argumentojn. Plej ofte ni uzas poziciajn argumentojn, sed en certaj situacioj, ĉi tiuj ŝlosilvortaj argumentoj helpas nin plibonigi la legeblecon de nia kodo.
Estas unu plia afero, kiun vi devas scii pri ŝlosilvortoj. La ŝlosilvortoj ĉiam devas veni post poziciaj argumentoj.
Revena Deklaro
Ĝis nun ni lernis kiel krei funkciojn kaj sendi al ili informojn uzante iliajn parametrojn. Nun ni lernu kiel krei funkciojn, kiuj redonas valorojn. Ĉi tio estas precipe utila se vi faras ian kalkulon kaj vi volas redoni la rezulton al kiu ajn uzas vian funkcion. Lasu min montri al vi.
Ni difinu funkcion, kiu kalkulos la kvadraton de nombro.
def square(number):
return number*number
Ni uzis la returnan deklaron por redoni ĉi tiun nombron ekster la funkcio. Nun, se ni nomas ĉi tiun funkcion, ĝi resendas valoron same kiel la input()
funkcio. Ni presi ĝin sur la terminalo.
Vi povas argumenti, ke la sama rezulto povas esti akirita sen uzi la revenan deklaron. Ni kontrolu ĝin.
Ni vidas du aferojn, la numeron 9, kaj neniun. Kio okazas ĉi tie?
Kiam la Python-interpretilo plenumas ĉi tiun kodon, unue ĝi vokos la kvadratan funkcion kaj la kontrolo moviĝas al la funkcio. Ĉi tie ni kalkulas la kvadraton de ĉi tiu donita nombro kaj poste presi ĝin sur la terminalo.
Nun, defaŭlte, ĉiuj funkcioj redonas la valoron none. Do se ni ne havas revenan deklaron ĉi tie, defaŭlte Python resendas neniun. Neniu estas objekto, kiu reprezentas la foreston de valoro. Ĝi estas kvazaŭ nenio aŭ nulo en C, C++, Java kaj Javascript.
Envolviĝu!
Mi esperas, ke vi komprenis la gravecon de funkcioj.
Ili estas signifa aspekto de Python-lernado se vi planas verki grandajn kaj kompleksajn programojn dum via kodiga kariero.
Lasi Respondon