Pereiti prie turinio

Kaip veikia funkcija return Pythone?


Rekomenduojami pranešimai

Gal kas galėtu trumpai paaiškint kaip veikia funkcija return python'e, nes nelabai pagaunu. Tiesiog kur ir kam ji naudojama? Supratau tik tiek, kad ji iš dalies gali atstoti break, kai reik baigt ciklą, bet vis tiek iki galo neįkertu.

Redagavo SarasJ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip ir kiekvienoje programavimo kalboje, funkcijos išvedama reikšmė yra priskiriama kintamajam, kuriam priskiriama funkcija.

 

def f(x):



   print x




def g(x):

	return x




# Kuo jos skiriasi?

a = f(5)

# išspausdina 5

print a # None




a = g(5)

print a # 5

Redagavo aemdy
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gal kas galėtu trumpai paaiškint kaip veikia funkcija return python'e, nes nelabai pagaunu. Tiesiog kur ir kam ji naudojama? Supratau tik tiek, kad ji iš dalies gali atstoti break, kai reik baigt ciklą, bet vis tiek iki galo neįkertu.

return tiesiog gražina reikšme. Ne tik funkcijos cikle, jei tik pasimaišo return jis toliau funkcijoje kodo nebevykdis, o tik gražins nurodytą reikšmė. Paprastai funkcijos atlieka maža užduoti ty vienos skaičiuoja viena, kitos kita, trečios filtruoja ketvirtos atvaizduoja ir t.t. Kai paduoti parametrą funkcijai tu tikiesi jog funkcija 'sukramtys' tą parametrą ir išspaus resultatą. O išpjauna/atiduoda rezultatą būtent su return. Gavęs rezultatą gali toliau atlikti skaičiavimus, lyginimus ir tt. Greičiausiai manai jog ta pati galėtų ir print, bet print tiesiog išveda rezultatą į konsolės langą ir viskas, tiesiog atvaizduoja tai yra tu negalėsi nei palyginti nei įskaičiuoti rezultatą į kokią sumą, tiesiog bus rezultatas atspausdintas konsolės lange ir viskas.

 

elementari funkcijos abs() supaprastinta versija

 

def absoliuti_reiksme(reiksme):
   if (reiksme < 0):
       return (reiksme * (-1)) # toliau kodas nebevykdomas (rezultatą jau turim), gražinama teigiama reikšmė 
   else:
       return reiksme # šiuo atveju gražinom tai ką gavom, nes reikšmė ir taip buvo teigiama

Redagavo robotas86
Nuoroda į pranešimą
Dalintis kituose puslapiuose

return tiesiog gražina reikšme. Ne tik cikle bet ir funkcijoje, jei pasimaišo return jis toliau funkcijoje kodo nebevykdis, o tik gražins nurodytą reikšmė. Paprastai funkcijos atlieka maža užduoti ty vienos skaičiuoja viena, kitos kita, trečios filtruoja ketvirtos atvaizduoja ir t.t. Kai paduoti parametrą funkcijai tu tikiesi jog funkcija 'sukramtys' tą parametrą ir išspaus resultatą. O išpjauna/atiduoda rezultatą būtent su return. Gavęs rezultatą gali toliau atlikti skaičiavimus, lyginimus ir tt. Greičiausiai manai jog ta pati galėtų ir print, bet print tiesiog išveda rezultatą į konsolės langą ir viskas, tiesiog atvaizduoja tai yra tu negalėsi nei palyginti nei įskaičiuoti rezultatą į kokią sumą, tiesiog bus rezultatas atspausdintas konsolės lange ir viskas.

 

elementari funkcijos abs() supaprastinta versija

 

def absoliuti_reiksme(reiksme):
   if (reiksme < 0):
       return (reiksme * (-1)) # toliau kodas nebevykdomas (rezultatą jau turim), gražinama teigiama reikšmė 
   else:
       return reiksme # šiuo atveju gražinom tai ką gavom, nes reikšmė ir taip buvo teigiama

 

Visų pirma, tai if statement'as ar bus su return ar ne, jis vis tiek patikrina sąlygą, ir jei ji buvo TRUE, jis vygdo tai, kas nurodyta ir viskas, if'as pasibaigia, nes jis neveikia kaip ciklas. Antriausiai, tavo kodas ar taip ar taip grąžint tik teigiamą skaičių. Nežinau, ar tu čia pats padarei klaidą, ar norėjai taip (nors abejoju). Ir galiausiai, return statemento į loop'ą įkišt negalima, jei nori sustabdyt loop'ą, tam yra break.

Redagavo facis1
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Visų pirma, tai if statement'as ar bus su return ar ne, jis vis tiek patikrina sąlygą, ir jei ji buvo TRUE, jis vygdo tai, kas nurodyta ir viskas, if'as pasibaigia, nes jis neveikia kaip ciklas. Antriausiai, tavo kodas ar taip ar taip grąžint tik teigiamą skaičių. Nežinau, ar tu čia pats padarei klaidą, ar norėjai taip (nors abejoju). Ir galiausiai, return statemento į loop'ą įkišt negalima, jei nori sustabdyt loop'ą, tam yra break.

 

Kodėl negalima įkišti return į ciklą? Įkiši, kai tam tikra sąlyga atitinka, ir grąžini reikšmę, jei to reikia. Jeigu reikia, kad po ciklo kodas tebesivykdytų, tada darai break ir funkcija vykdoma toliau.

 

 

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kodėl negalima įkišti return į ciklą? Įkiši, kai tam tikra sąlyga atitinka, ir grąžini reikšmę, jei to reikia. Jeigu reikia, kad po ciklo kodas tebesivykdytų, tada darai break ir funkcija vykdoma toliau.

 

Na, gal blogai suformulavau sakinį :). Norėjau pasakyti, kad return nepanaudosi tam, kad sustabdyt ciklą, nes tam yra break.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Visų pirma, tai if statement'as ar bus su return ar ne, jis vis tiek patikrina sąlygą, ir jei ji buvo TRUE, jis vygdo tai, kas nurodyta ir viskas, if'as pasibaigia, nes jis neveikia kaip ciklas. Antriausiai, tavo kodas ar taip ar taip grąžint tik teigiamą skaičių. Nežinau, ar tu čia pats padarei klaidą, ar norėjai taip (nors abejoju). Ir galiausiai, return statemento į loop'ą įkišt negalima, jei nori sustabdyt loop'ą, tam yra break.

Nesuprantu, ką čia nusišnekėjai, bet tokia šitos funkcijos ir esmė...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tarkim šitoje programoje yra tas return, kai jį ištrinu, programa veikia kaip veikus. Tai kam ji ten išvis įkišta?

import random
import time

def displayIntro():
   print('You are in a land full of dragons. In front of you,')
   print('you see two caves. In one cave, the dragon is friendly')
   print('and will share his treasure with you. The other dragon')
   print('is greedy and hungry, and will eat you on sight.')
   print()

def chooseCave():
   cave = ''
   while cave != '1' and cave != '2':
       print('Which cave will you go into? (1 or 2)')
       cave = input()

   return cave

def checkCave(chosenCave):
   print('You approach the cave...')
   time.sleep(2)
   print('It is dark and spooky...')
   time.sleep(2)
   print('A large dragon jumps out in front of you! He opens his jaws and...')
   print()
   time.sleep(2)

   friendlyCave = random.randint(1, 2)

   if chosenCave == str(friendlyCave):
        print('Gives you his treasure!')
   else:
        print('Gobbles you down in one bite!')

playAgain = 'yes'
while playAgain == 'yes' or playAgain == 'y':

   displayIntro()

   caveNumber = chooseCave()

   checkCave(caveNumber)

   print('Do you want to play again? (yes or no)')
   playAgain = input()

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tarkim šitoje programoje yra tas return, kai jį ištrinu, programa veikia kaip veikus. Tai kam ji ten išvis įkišta?

import random
import time

def displayIntro():
   print('You are in a land full of dragons. In front of you,')
   print('you see two caves. In one cave, the dragon is friendly')
   print('and will share his treasure with you. The other dragon')
   print('is greedy and hungry, and will eat you on sight.')
   print()

def chooseCave():
   cave = ''
   while cave != '1' and cave != '2':
       print('Which cave will you go into? (1 or 2)')
       cave = input()

   return cave

def checkCave(chosenCave):
   print('You approach the cave...')
   time.sleep(2)
   print('It is dark and spooky...')
   time.sleep(2)
   print('A large dragon jumps out in front of you! He opens his jaws and...')
   print()
   time.sleep(2)

   friendlyCave = random.randint(1, 2)

   if chosenCave == str(friendlyCave):
        print('Gives you his treasure!')
   else:
        print('Gobbles you down in one bite!')

playAgain = 'yes'
while playAgain == 'yes' or playAgain == 'y':

   displayIntro()

   caveNumber = chooseCave()

   checkCave(caveNumber)

   print('Do you want to play again? (yes or no)')
   playAgain = input()

 

Nebuvau pasileidęs kodo, bet kiek matau dabar, tai jei ištrini return, visada, kai įrašysi 1 arba 2 atsakydamas į šitą klausimą:

 

print('Which cave will you go into? (1 or 2)')

 

Tu visą laiką gausi šitą atsakymą:

 

print('Gobbles you down in one bite!')

Redagavo facis1
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nebuvau pasileidęs kodo, bet kiek matau dabar, tai jei ištrini return, visada, kai įrašysi 1 arba 2 atsakydamas į šitą klausimą:

 

print('Which cave will you go into? (1 or 2)')

 

Tu visą laiką gausi šitą atsakymą:

 

print('Gobbles you down in one bite!')

ta prasme kokią cave reikšmę įvesiu pačia pirmą, tokia jis bus visą laiką?
Nuoroda į pranešimą
Dalintis kituose puslapiuose

ta prasme kokią cave reikšmę įvesiu pačia pirmą, tokia jis bus visą laiką?

 

Ar taip ar taip ji tokia ir pasilieka :). Visų pirma noriu paklausti, ar supranti kaip pats kodas veikia? Ar tiesiog random kodą susiradai kažkur internete, svarbu 'return' statement yra?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ar taip ar taip ji tokia ir pasilieka :). Visų pirma noriu paklausti, ar supranti kaip pats kodas veikia? Ar tiesiog random kodą susiradai kažkur internete, svarbu 'return' statement yra?

Suprantu, kaip pats kodas veikia, tik dar nevisai aišku kaip return veikia.
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Suprantu, kaip pats kodas veikia, tik dar nevisai aišku kaip return veikia.

 

Na gerai, žiūrėk dabar. Kodas prasideda nuo f-jos displayIntro(). Kai ši f-ja pasibaigia, prasideda kita f-ja - chooseCave(). Turi įvesti arba 1 arba 2. Tarkim įvedi 2 ir tavo atsakymą return'ina su return cave, kadangi input'as buvo išsaugotas cave kintamajame. Sekanti f-ja yra def checkCave(chosenCave) su argumentu chosenCave. Kadangi jau prieš tai sakiau, jog chooseCave return'ina tavo inputą, tai su if'u patikrina:

 

if chosenCave == str(friendlyCave):
        print('Gives you his treasure!')
   else:
        print('Gobbles you down in one bite!')

 

Jei ištrini return, choosenCave nieko negrąžina ir if sąlyga visada bus False, kas reiškia, jog visada gausi atsakymą "Gobbles you down in one bite!"

 

Privėliau čia daug, bet gal suprasi :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Arghhh... programeriai blyn.

 

chooseCave funkcija per return grazina pasirinkta "cave". Jeigu tu ji panaikini, tai by default ta funkcija grazina "None" reiksme ir viskas toliau eina kaip eje. Vat ir visa esme to "return".

 

O det ji galima bet kur ir bet kada, kai tik logika reikalauja funkcijos vykdymo nutraukimo.

 

Tarkim šitoje programoje yra tas return, kai jį ištrinu, programa veikia kaip veikus. Tai kam ji ten išvis įkišta?

import random
import time

def displayIntro():
   print('You are in a land full of dragons. In front of you,')
   print('you see two caves. In one cave, the dragon is friendly')
   print('and will share his treasure with you. The other dragon')
   print('is greedy and hungry, and will eat you on sight.')
   print()

def chooseCave():
   cave = ''
   while cave != '1' and cave != '2':
       print('Which cave will you go into? (1 or 2)')
       cave = input()

   return cave

def checkCave(chosenCave):
   print('You approach the cave...')
   time.sleep(2)
   print('It is dark and spooky...')
   time.sleep(2)
   print('A large dragon jumps out in front of you! He opens his jaws and...')
   print()
   time.sleep(2)

   friendlyCave = random.randint(1, 2)

   if chosenCave == str(friendlyCave):
        print('Gives you his treasure!')
   else:
        print('Gobbles you down in one bite!')

playAgain = 'yes'
while playAgain == 'yes' or playAgain == 'y':

   displayIntro()

   caveNumber = chooseCave()

   checkCave(caveNumber)

   print('Do you want to play again? (yes or no)')
   playAgain = input()

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na gerai, žiūrėk dabar. Kodas prasideda nuo f-jos displayIntro(). Kai ši f-ja pasibaigia, prasideda kita f-ja - chooseCave(). Turi įvesti arba 1 arba 2. Tarkim įvedi 2 ir tavo atsakymą return'ina su return cave, kadangi input'as buvo išsaugotas cave kintamajame. Sekanti f-ja yra def checkCave(chosenCave) su argumentu chosenCave. Kadangi jau prieš tai sakiau, jog chooseCave return'ina tavo inputą, tai su if'u patikrina:

 

if chosenCave == str(friendlyCave):
        print('Gives you his treasure!')
   else:
        print('Gobbles you down in one bite!')

 

Jei ištrini return, choosenCave nieko negrąžina ir if sąlyga visada bus False, kas reiškia, jog visada gausi atsakymą "Gobbles you down in one bite!"

 

Privėliau čia daug, bet gal suprasi :)

dėkingas už atsakyma. :)
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...