The print()Fungsi menulis, yaitu, "cetakan", string di konsol. The returnpernyataan menyebabkan fungsi Anda untuk keluar dan tangan kembali nilai ke pemanggil nya. Titik fungsi secara umum adalah untuk menerima masukan dan mengembalikan sesuatu. The returnpernyataan digunakan ketika fungsi siap untuk mengembalikan nilai ke pemanggil nya.
Misalnya, inilah fungsi yang memanfaatkan print()dan return:
deffoo():
print("hello from inside of foo")
return1
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 .pyfile) 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:
>>> deffoo():... print("hello from within foo")
... return1
...
>>> foo()
hello from within foo
1>>> defbar():... return10 * 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. returnmenyebabkan fungsi berhenti mengeksekusi dan mengembalikan nilai ke apa pun yang memanggilnya.
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 ?
defsquare(n):return n * n
defadd_one(n):return n + 1print square(12)
# square(12) is the same as writing 144print 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.
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:
>>> defgetN():... 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.
Hanya untuk menambah jawaban luar biasa @Nathan Hughes:
The returnpernyataan dapat digunakan sebagai semacam aliran kontrol. Dengan meletakkan satu (atau lebih) returnpernyataan di tengah-tengah fungsi, kita dapat mengatakan: "berhenti menjalankan fungsi ini. Kita mendapatkan apa yang kita inginkan atau ada yang tidak beres!"
Berikut contohnya:
>>> defmake_3_characters_long(some_string):... if len(some_string) == 3:
... returnFalse... 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.
Hmm, kode cetak Anda tidak gagal untuk kasus uji yang Anda berikan. Semuanya benar!
codingbryan
4
Saya pikir jawaban yang sangat sederhana mungkin berguna di sini:
returnmembuat nilai (variabel, sering kali) tersedia untuk digunakan oleh pemanggil (misalnya, untuk disimpan oleh fungsi yang digunakan fungsi returntersebut 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).
defcount_number_of(x):
count = 0for item in x:
if item == "what_you_look_for":
count = count + 1return 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.
Hal terbaik tentang returnfungsi adalah Anda dapat mengembalikan nilai dari fungsi tetapi Anda dapat melakukan hal yang sama, printjadi apa bedanya? Pada dasarnya returnbukan 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 printkarena sama seperti stdout/coutdi C Programming.
Ikuti kode di bawah ini untuk pemahaman yang lebih baik
KODE
defadd(a, b):print"ADDING %d + %d" % (a, b)
return a + b
defsubtract(a, b):print"SUBTRACTING %d - %d" % (a, b)
return a - b
defmultiply(a, b):print"MULTIPLYING %d * %d" % (a, b)
return a * b
defdivide(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:
Fungsi kami dipanggil dengan dua argumen: adan b.
Kami mencetak apa yang fungsi kami lakukan, dalam hal ini "MENAMBAH".
Kemudian kami memberi tahu Python untuk melakukan sesuatu secara terbalik: kami mengembalikan penambahan a + b. Anda bisa mengatakan ini seperti, "Saya menambahkan adan bmengembalikannya."
Python menambahkan dua angka tersebut. Kemudian ketika fungsi tersebut berakhir, setiap baris yang menjalankannya akan dapat menetapkan a + bhasil ini ke variabel.
returnharus 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 returndan printbenar:
deffact(x):if x < 2:
return1return x * fact(x - 1)
print(fact(5))
Penjelasan ini berlaku untuk semua bahasa pemrograman bukan hanya python .
Jawaban:
The
print()
Fungsi menulis, yaitu, "cetakan", string di konsol. Thereturn
pernyataan menyebabkan fungsi Anda untuk keluar dan tangan kembali nilai ke pemanggil nya. Titik fungsi secara umum adalah untuk menerima masukan dan mengembalikan sesuatu. Thereturn
pernyataan digunakan ketika fungsi siap untuk mengembalikan nilai ke pemanggil nya.Misalnya, inilah fungsi yang memanfaatkan
print()
danreturn
: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 daribar()
, 1 tidak ditulis ke konsol. Sebaliknya, ini digunakan untuk menghitung nilai yang dikembalikan daribar()
.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.sumber
"foo returned " + str(x)
atau Anda akan mendapatkannyaTypeError: cannot concatenate 'str' and 'int' objects
.Saya pikir kamus adalah referensi terbaik Anda di sini
Kembali dan Cetak
Pendeknya:
return memberikan sesuatu kembali atau membalas pemanggil fungsi sementara print menghasilkan teks
sumber
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.
sumber
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.
sumber
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 >>>
sumber
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 karenareturn temp
(baris 4). Jadiprint("return statement")
tidak bisa dieksekusi.Keluaran:
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'
sumber
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
.sumber
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
sumber
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 fungsireturn
tersebut di dalam). Tanpareturn
, 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.)
sumber
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.
sumber
return
adalah bagian dari definisi fungsi, sedangkanprint
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 dengandef
.Contoh:
def timestwo(x): return x*2
sumber
Hal terbaik tentang
return
fungsi adalah Anda dapat mengembalikan nilai dari fungsi tetapi Anda dapat melakukan hal yang sama,print
jadi apa bedanya? Pada dasarnyareturn
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 melakukannyaprint
karena sama sepertistdout/cout
diC Programming
.Ikuti kode di bawah ini untuk pemahaman yang lebih baik
KODE
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,
dandivide
. Hal penting yang harus diperhatikan adalah baris terakhir di mana kita mengatakan returna + b
(inadd
). Apa yang dilakukannya adalah sebagai berikut:a
danb
.a + b
. Anda bisa mengatakan ini seperti, "Saya menambahkana
danb
mengembalikannya."a + b
hasil ini ke variabel.sumber
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
danprint
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 .
sumber