Swyddogaethau
Hyd yn hyn, rydym wedi bod yn ysgrifennu ein holl god yn yr app.py, ond wrth i'n rhaglenni dyfu, mae angen ffordd well o drefnu ein cod. Mae angen i ni rannu ein cod yn ddarnau llai, mwy hylaw, a mwy cynaliadwy yr ydym yn eu galw'n swyddogaethau. Mae'r swyddogaeth yn gynhwysydd ar gyfer ychydig linellau o god sy'n cyflawni tasg benodol.
Er enghraifft, rydych chi eisoes wedi dysgu am ychydig o swyddogaethau adeiledig yn Python print()
ac input()
. Mae gan bob swyddogaeth bwrpas ac mae'n gwybod sut i gyflawni tasg benodol. Felly, pan fyddwn yn adeiladu rhaglenni cymhleth mawr, dylem rannu ein cod yn ddarnau llai y gellir eu hailddefnyddio, hy swyddogaethau.
Gadewch inni ddeall y cysyniad hwn trwy adeiladu rhaglen ar gyfer argraffu neges gyfarch.
print('Hi there!')
print('Welcome aboard!')
Yma mae gennym raglen syml gyda dim ond dwy linell o god. Nawr, gadewch i ni ddweud, rydym yn mynd i fod eu hangen mewn rhaglenni eraill i'w rhoi mewn swyddogaeth y gallwn ei hailddefnyddio.
Gadewch imi gyflwyno allweddair neilltuedig def
yn Python, sy'n fyr ar gyfer diffinio ac a ddefnyddir ar gyfer diffinio swyddogaeth.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Nawr bydd y bloc cod hwn yn diffinio swyddogaeth “greet_user
” gyda'r llinellau codau ar ôl hynny. Pryd bynnag y gelwir y swyddogaeth hon, bydd y ddwy linell hyn yn cael eu gweithredu. Gadewch i ni ddefnyddio hyn:
print('start')
greet_user()
print('finish')
Gweithredir y rhaglen yn olynol, sy'n golygu y byddai'n rhaid i chi ddiffinio swyddogaeth cyn ei galw yn y rhaglen.
paramedrau
Mae'r swyddogaethau diffiniedig yn gweithio ychydig yn wahanol na swyddogaethau adeiledig Python. Er enghraifft, yn achos print()
swyddogaeth, mae'n cymryd rhywfaint o wybodaeth yr ydym am ei hargraffu, ond nid yw ein swyddogaeth cyfarch yn cymryd unrhyw wybodaeth. Oni fyddai'n brafiach pe baech chi'n gallu pasio enw'r defnyddiwr yma ac yn y man, yn lle dweud “helo”, gallech chi argraffu enw'r defnyddiwr?
Gallwch wneud hyn trwy ychwanegu'r paramedrau y tu mewn i gromfachau'r swyddogaeth ddiffiniedig. Gadewch imi ddangos i chi:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Nawr mae'r “name
” bydd y tu mewn i'r cromfachau yn gweithredu fel newidyn lleol a gallwn basio enw'r defnyddiwr wrth ei alw.
greet_user('Shahbaz')
Nawr mae'r paramedr enw wedi'i osod i "Shahbaz
”. Gadewch i ni newid y rhaglen i wneud defnydd ohoni.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Peth pwysig i'w nodi yw bod yr “enw” yn y llinell gyntaf yn cael ei alw'n Baramedr tra bod yr enw a roddir hy Shahbaz yn cael ei alw'n ddadl.
Gadewch i ni fynd ymlaen a rhedeg y rhaglen hon.
Felly gyda'r paramedrau hyn, gallwn dderbyn gwybodaeth yn ein swyddogaethau.
Nawr, gadewch i ni wneud rhywbeth diddorol. Gadewch i ni ddweud eich bod am ychwanegu enw arall at y neges gyfarch. Mae'n syml.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Nawr sylwch, pan fydd gan ffwythiant baramedr, mae'n rhaid i ni basio gwerth ar gyfer y paramedr hwnnw. Os byddwch yn tynnu'r enw o'r swyddogaeth ac yn rhedeg y rhaglen, byddwn yn cael gwall. Gallwch hefyd ddefnyddio paramedrau lluosog mewn un swyddogaeth, wedi'u gwahanu gan goma.
Er enghraifft, greet_user(first_name, last_name):
. Bydd dadleuon hefyd yn cael eu fformatio yn yr un modd.
Dadleuon Allweddair
Hyd yn hyn, rydym wedi dysgu pryd bynnag y byddwn yn diffinio paramedrau ar gyfer ein swyddogaethau y dylem bob amser gyflenwi gwerthoedd fel arall byddwn yn cael gwall. Yn y rhaglen ddiwethaf, mae'r dadleuon 'Shahbaz'
ac 'Bhatti'
yn cael eu galw'n ddadleuon lleoliadol, sy'n golygu bod eu safle neu drefn yn bwysig yn y rhaglen.
Yn Python, mae gennym fath arall o ddadl a elwir yn ddadleuon allweddair, nad yw'r sefyllfa o bwys ar eu cyfer. Gadewch imi ddangos i chi sut maen nhw'n gweithio.
Edrychwch ar y rhaglen ddiwethaf. Gallwn ei addasu fel hyn:
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')
Nawr y first_name
ac last_name
yw'r paramedrau allweddair. Gallwch chi newid eu lleoedd a bydd y canlyniad yr un peth.
Nawr nid yw hynny'n golygu y dylem bob amser ddefnyddio dadleuon allweddair. Y rhan fwyaf o'r amser rydym yn defnyddio dadleuon lleoliadol, ond mewn rhai sefyllfaoedd, mae'r dadleuon allweddair hyn yn ein helpu i wella darllenadwyedd ein cod.
Mae un peth arall y mae angen i chi ei wybod am ddadleuon allweddair. Dylai'r dadleuon allweddair ddod ar ôl dadleuon lleoliadol bob amser.
Datganiad Dychwelyd
Hyd yn hyn rydym wedi dysgu sut i greu swyddogaethau ac anfon gwybodaeth atynt gan ddefnyddio eu paramedrau. Nawr, gadewch i ni ddysgu sut i greu swyddogaethau sy'n dychwelyd gwerthoedd. Mae hyn yn arbennig o ddefnyddiol os ydych chi'n gwneud rhyw fath o gyfrifiadau a'ch bod am ddychwelyd y canlyniad i bwy bynnag sy'n defnyddio'ch swyddogaeth. Gadewch i mi ddangos i chi.
Gadewch i ni ddiffinio ffwythiant a fydd yn cyfrifo sgwâr rhif.
def square(number):
return number*number
Rydym wedi defnyddio'r datganiad dychwelyd i ddychwelyd y rhif hwn y tu allan i'r swyddogaeth. Nawr, os ydym yn galw'r swyddogaeth hon, mae'n dychwelyd gwerth yn union fel y input()
swyddogaeth. Gadewch i ni ei argraffu ar y derfynell.
Gallwch ddadlau y gellir cael yr un canlyniad heb ddefnyddio'r datganiad dychwelyd. Gadewch i ni edrych arno.
Gwelwn ddau beth, y rhif 9, a dim. Beth sy'n digwydd yma?
Pan fydd y dehonglydd Python yn gweithredu'r cod hwn, yn gyntaf bydd yn galw'r swyddogaeth sgwâr ac mae'r rheolaeth yn symud i'r swyddogaeth. Yma rydyn ni'n cyfrifo sgwâr y rhif penodol hwn ac yna'n ei argraffu ar y derfynell.
Nawr, yn ddiofyn, mae pob swyddogaeth yn dychwelyd y gwerth dim. Felly os nad oes gennym ddatganiad dychwelyd yma, yn ddiofyn nid yw Python yn dychwelyd dim. Nid oes yr un yn wrthrych sy'n cynrychioli absenoldeb gwerth. Mae fel dim byd neu null yn C, C++, Java a Javascript.
Amlapio!
Gobeithio eich bod wedi deall pwysigrwydd swyddogaethau.
Maent yn agwedd arwyddocaol ar ddysgu Python os ydych yn bwriadu ysgrifennu rhaglenni mawr a chymhleth yn ystod eich gyrfa codio.
Gadael ymateb