Apa penjelasan dasar sederhana dari pernyataan return, bagaimana cara menggunakannya dengan Python?
Dan apa perbedaan antara itu dan print
pernyataan itu?
Apa penjelasan dasar sederhana dari pernyataan return, bagaimana cara menggunakannya dengan Python?
Dan apa perbedaan antara itu dan print
pernyataan itu?
Jawaban:
The print()
Fungsi menulis, yaitu, "cetakan", string di konsol. The return
pernyataan menyebabkan fungsi Anda untuk keluar dan tangan kembali nilai ke pemanggil nya. Titik fungsi secara umum adalah untuk menerima masukan dan mengembalikan sesuatu. The return
pernyataan digunakan ketika fungsi siap untuk mengembalikan nilai ke pemanggil nya.
Misalnya, inilah fungsi yang memanfaatkan print()
dan return
:
def foo():
print("hello from inside of foo")
return 1
Sekarang Anda dapat menjalankan kode yang memanggil foo, seperti:
if __name__ == '__main__':
print("going to call foo")
x = foo()
print("called foo")
print("foo returned " + str(x))
Jika Anda menjalankan ini sebagai skrip (misalnya .py
file) sebagai kebalikan dari interpreter Python, Anda akan mendapatkan output berikut:
going to call foo
hello from inside foo
called foo
foo returned 1
Saya harap ini membuatnya lebih jelas. Penerjemah menulis nilai kembalian ke konsol sehingga saya bisa melihat mengapa seseorang bisa bingung.
Berikut contoh lain dari interpreter yang menunjukkan bahwa:
>>> def foo():
... print("hello from within foo")
... return 1
...
>>> foo()
hello from within foo
1
>>> def bar():
... return 10 * foo()
...
>>> bar()
hello from within foo
10
Anda dapat melihat bahwa ketika foo()
dipanggil dari bar()
, 1 tidak ditulis ke konsol. Sebaliknya, ini digunakan untuk menghitung nilai yang dikembalikan dari bar()
.
print()
adalah fungsi yang menyebabkan efek samping (menulis string di konsol), tetapi eksekusi dilanjutkan dengan pernyataan berikutnya. return
menyebabkan fungsi berhenti mengeksekusi dan mengembalikan nilai ke apa pun yang memanggilnya.
"foo returned " + str(x)
atau Anda akan mendapatkannya TypeError: cannot concatenate 'str' and 'int' objects
.
Pikirkan pernyataan cetak sebagai penyebab efek samping , itu membuat fungsi Anda menulis beberapa teks kepada pengguna, tetapi tidak dapat digunakan oleh fungsi lain.
Saya akan mencoba menjelaskan ini lebih baik dengan beberapa contoh, dan beberapa definisi dari Wikipedia.
Berikut adalah definisi sebuah fungsi dari Wikipedia
Suatu fungsi, dalam matematika, mengasosiasikan satu besaran, argumen fungsi, juga dikenal sebagai masukan, dengan besaran lain, nilai fungsi, juga dikenal sebagai keluaran.
Pikirkan itu sebentar. Apa artinya jika Anda mengatakan fungsi tersebut memiliki nilai?
Artinya adalah Anda sebenarnya dapat mengganti nilai suatu fungsi dengan nilai normal! (Dengan asumsi kedua nilai adalah jenis nilai yang sama)
Mengapa Anda ingin bertanya?
Bagaimana dengan fungsi lain yang mungkin menerima tipe nilai yang sama sebagai input ?
def square(n):
return n * n
def add_one(n):
return n + 1
print square(12)
# square(12) is the same as writing 144
print add_one(square(12))
print add_one(144)
#These both have the same output
Ada istilah matematika yang mewah untuk fungsi yang hanya bergantung pada masukannya untuk menghasilkan keluarannya: Transparansi Referensial. Sekali lagi, definisi dari Wikipedia.
Transparansi referensial dan ketidakjelasan referensial adalah properti dari bagian program komputer. Sebuah ekspresi dikatakan transparan secara referensial jika dapat diganti dengan nilainya tanpa mengubah perilaku program
Mungkin agak sulit untuk memahami apa artinya ini jika Anda baru mengenal pemrograman, tetapi saya pikir Anda akan mendapatkannya setelah beberapa eksperimen. Namun secara umum, Anda dapat melakukan hal-hal seperti mencetak dalam suatu fungsi, dan Anda juga dapat memiliki pernyataan return di akhir.
Ingatlah bahwa ketika Anda menggunakan return, pada dasarnya Anda mengatakan "Panggilan ke fungsi ini sama dengan menulis nilai yang dikembalikan"
Python benar-benar akan memasukkan nilai pengembalian untuk Anda jika Anda menolak untuk memasukkannya sendiri, itu disebut "Tidak Ada", dan itu adalah jenis khusus yang tidak berarti apa-apa, atau nol.
Dalam python, kita mulai mendefinisikan sebuah fungsi dengan "def" dan umumnya, tetapi tidak harus, mengakhiri fungsi dengan "return".
Fungsi dari variabel x dilambangkan sebagai f (x). Apa fungsi ini? Misalkan, fungsi ini menambahkan 2 ke x. Jadi, f (x) = x + 2
Sekarang, kode dari fungsi ini adalah:
def A_function (x):
return x + 2
Setelah mendefinisikan fungsi, Anda dapat menggunakannya untuk variabel apa saja dan mendapatkan hasil. Seperti:
print A_function (2)
>>> 4
Kami bisa saja menulis kode sedikit berbeda, seperti:
def A_function (x):
y = x + 2
return y
print A_function (2)
Itu juga akan memberi "4".
Sekarang, kita bahkan dapat menggunakan kode ini:
def A_function (x):
x = x + 2
return x
print A_function (2)
Itu juga akan memberikan 4. Lihat, bahwa "x" di samping return sebenarnya berarti (x + 2), bukan x dari "A_function (x)".
Saya kira dari contoh sederhana ini, Anda akan mengerti arti dari perintah return.
return
berarti, "keluarkan nilai ini dari fungsi ini".
print
artinya, "kirim nilai ini ke (umumnya) stdout"
Dalam Python REPL, fungsi yang dikembalikan akan ditampilkan ke layar secara default (ini tidak persis sama dengan print).
Ini adalah contoh cetakannya:
>>> n = "foo\nbar" #just assigning a variable. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
Ini adalah contoh pengembalian:
>>> def getN():
... return "foo\nbar"
...
>>> getN() #When this isn't assigned to something, it is just output
'foo\nbar'
>>> n = getN() # assigning a variable to the return value. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>
Jawaban ini membahas beberapa kasus yang belum dibahas di atas.
The kembali pernyataan memungkinkan Anda untuk mengakhiri pelaksanaan fungsi sebelum Anda mencapai akhir. Ini menyebabkan aliran eksekusi segera kembali ke pemanggil.
Sejalan nomor 4:
def ret(n):
if n > 9:
temp = "two digits"
return temp #Line 4
else:
temp = "one digit"
return temp #Line 8
print("return statement")
ret(10)
Setelah pernyataan kondisional dijalankan, ret()
fungsi dihentikan karena return temp
(baris 4). Jadi print("return statement")
tidak bisa dieksekusi.
Keluaran:
two digits
Kode yang muncul setelah pernyataan bersyarat, atau tempat aliran kontrol tidak bisa dijangkau, adalah kode mati .
Returning Values
Pada baris nomor 4 dan 8, pernyataan return digunakan untuk mengembalikan nilai variabel sementara setelah kondisi dieksekusi.
Untuk menonjolkan perbedaan antara mencetak dan mengembalikan :
def ret(n):
if n > 9:
print("two digits")
return "two digits"
else :
print("one digit")
return "one digit"
ret(25)
Keluaran:
two digits
'two digits'
Hanya untuk menambah jawaban luar biasa @Nathan Hughes:
The return
pernyataan dapat digunakan sebagai semacam aliran kontrol. Dengan meletakkan satu (atau lebih) return
pernyataan di tengah-tengah fungsi, kita dapat mengatakan: "berhenti menjalankan fungsi ini. Kita mendapatkan apa yang kita inginkan atau ada yang tidak beres!"
Berikut contohnya:
>>> def make_3_characters_long(some_string):
... if len(some_string) == 3:
... return False
... if str(some_string) != some_string:
... return "Not a string!"
... if len(some_string) < 3:
... return ''.join(some_string,'x')[:,3]
... return some_string[:,3]
...
>>> threechars = make_3_characters_long('xyz')
>>> if threechars:
... print threechars
... else:
... print "threechars is already 3 characters long!"
...
threechars is already 3 characters long!
Lihat bagian Gaya Kode dari Panduan Python untuk saran lebih lanjut tentang cara penggunaan ini return
.
Perbedaan antara "return" dan "print" juga dapat ditemukan pada contoh berikut:
KEMBALI:
def bigger(a, b):
if a > b:
return a
elif a <b:
return b
else:
return a
Kode di atas akan memberikan hasil yang benar untuk semua masukan.
MENCETAK:
def bigger(a, b):
if a > b:
print a
elif a <b:
print b
else:
print a
CATATAN: Ini akan gagal untuk banyak kasus uji.
KESALAHAN:
----
FAILURE
: Test case input: 3, 8.
Expected result: 8
FAILURE
: Test case input: 4, 3.
Expected result: 4
FAILURE
: Test case input: 3, 3.
Expected result: 3
You passed 0 out of 3 test cases
Saya pikir jawaban yang sangat sederhana mungkin berguna di sini:
return
membuat nilai (variabel, sering kali) tersedia untuk digunakan oleh pemanggil (misalnya, untuk disimpan oleh fungsi yang digunakan fungsi return
tersebut di dalam). Tanpa return
, nilai atau variabel Anda tidak akan tersedia untuk disimpan / digunakan kembali oleh pemanggil.
print
mencetak ke layar, tetapi tidak membuat nilai atau variabel tersedia untuk digunakan oleh pemanggil.
(Mengakui sepenuhnya bahwa jawaban yang lebih menyeluruh lebih akurat.)
Inilah pemahaman saya. (berharap itu akan membantu seseorang dan itu benar).
def count_number_of(x):
count = 0
for item in x:
if item == "what_you_look_for":
count = count + 1
return count
Jadi potongan kode sederhana ini menghitung jumlah kemunculan sesuatu. Penempatan laba signifikan. Ini memberi tahu program Anda di mana Anda membutuhkan nilainya. Jadi saat Anda mencetak, Anda mengirim keluaran ke layar. Ketika Anda kembali, Anda memberi tahu nilainya untuk pergi ke suatu tempat. Dalam hal ini Anda dapat melihat bahwa count = 0 diindentasi dengan return - kami ingin nilai (count + 1) menggantikan 0. Jika Anda mencoba mengikuti logika kode saat Anda mengindentasi perintah return selanjutnya, output akan selalu 1 , karena kami tidak akan pernah memberi tahu hitungan awal untuk berubah. Saya harap saya melakukannya dengan benar. Oh, dan kembali selalu di dalam fungsi.
return
adalah bagian dari definisi fungsi, sedangkan print
teks keluaran ke keluaran standar (biasanya konsol).
Fungsi adalah prosedur yang menerima parameter dan mengembalikan nilai. return
adalah untuk yang terakhir, sedangkan yang pertama selesai dengan def
.
Contoh:
def timestwo(x):
return x*2
Hal terbaik tentang return
fungsi adalah Anda dapat mengembalikan nilai dari fungsi tetapi Anda dapat melakukan hal yang sama, print
jadi apa bedanya? Pada dasarnya return
bukan hanya mengembalikan itu memberikan keluaran dalam bentuk objek sehingga kita dapat menyimpan nilai kembali itu dari fungsi ke variabel apa pun tetapi kita tidak dapat melakukannya print
karena sama seperti stdout/cout
di C Programming
.
Ikuti kode di bawah ini untuk pemahaman yang lebih baik
def add(a, b):
print "ADDING %d + %d" % (a, b)
return a + b
def subtract(a, b):
print "SUBTRACTING %d - %d" % (a, b)
return a - b
def multiply(a, b):
print "MULTIPLYING %d * %d" % (a, b)
return a * b
def divide(a, b):
print "DIVIDING %d / %d" % (a, b)
return a / b
print "Let's do some math with just functions!"
age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)
print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)
# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))
print "That becomes: ", what, "Can you do it by hand?"
Kami sekarang melakukan fungsi matematika kami sendiri untuk add, subtract, multiply,
dan divide
. Hal penting yang harus diperhatikan adalah baris terakhir di mana kita mengatakan return a + b
(in add
). Apa yang dilakukannya adalah sebagai berikut:
a
dan b
.a + b
. Anda bisa mengatakan ini seperti, "Saya menambahkan a
dan b
mengembalikannya."a + b
hasil ini ke variabel.return
harus digunakan untuk fungsi / metode rekursif atau Anda ingin menggunakan nilai yang dikembalikan untuk aplikasi selanjutnya dalam algoritme Anda.
print
sebaiknya digunakan saat Anda ingin menampilkan hasil yang bermakna dan diinginkan kepada pengguna dan Anda tidak ingin mengacaukan layar dengan hasil antara yang tidak diminati pengguna, meskipun berguna untuk men-debug kode Anda.
Kode berikut menunjukkan cara menggunakan return
dan print
benar:
def fact(x):
if x < 2:
return 1
return x * fact(x - 1)
print(fact(5))
Penjelasan ini berlaku untuk semua bahasa pemrograman bukan hanya python .