Tetapkan nilai pengembalian fungsi ke variabel python

Anda tidak hanya dapat melewatkan nilai parameter ke dalam fungsi, fungsi juga dapat menghasilkan nilai. Anda telah melihat ini di beberapa fungsi sebelumnya yang telah Anda gunakan. Misalnya, len mengambil daftar atau string sebagai nilai parameter dan mengembalikan angka, panjang daftar atau string itu. range mengambil bilangan bulat sebagai nilai parameter dan mengembalikan daftar yang berisi semua angka dari 0 hingga nilai parameter tersebut

Fungsi yang mengembalikan nilai terkadang disebut fungsi berbuah. Dalam banyak bahasa lain, fungsi yang tidak mengembalikan nilai disebut prosedur, tetapi kami akan tetap di sini dengan cara Python juga menyebutnya fungsi, atau jika kami ingin menekankannya, fungsi yang tidak bermanfaat

Tetapkan nilai pengembalian fungsi ke variabel python

Bagaimana kita menulis fungsi berbuah kita sendiri? . Fungsi kuadrat akan mengambil satu angka sebagai parameter dan mengembalikan hasil kuadrat angka itu. Berikut adalah diagram kotak hitam dengan kode Python berikut

Tetapkan nilai pengembalian fungsi ke variabel python

Pernyataan pengembalian diikuti oleh ekspresi yang dievaluasi. Hasilnya dikembalikan ke pemanggil sebagai "buah" dari pemanggilan fungsi ini. Karena pernyataan pengembalian dapat berisi ekspresi Python apa pun, kami dapat menghindari membuat variabel sementara

def addEm(x, y, z):
    print(x+y+z)
0 dan hanya menggunakan
def addEm(x, y, z):
    print(x+y+z)
1. Coba modifikasi fungsi kuadrat di atas untuk melihat bahwa ini berfungsi sama. Di sisi lain, menggunakan variabel sementara seperti
def addEm(x, y, z):
    print(x+y+z)
0 dalam program di atas membuat proses debug lebih mudah. Variabel sementara ini disebut sebagai variabel lokal

Perhatikan sesuatu yang penting di sini. Nama variabel yang kami berikan sebagai argumen —

def addEm(x, y, z):
    print(x+y+z)
3 — tidak ada hubungannya dengan nama parameter formal —
def addEm(x, y, z):
    print(x+y+z)
4. Seolah-olah
def addEm(x, y, z):
    print(x+y+z)
5 dieksekusi ketika square dipanggil. Tidak masalah nilai apa yang disebutkan di pemanggil (tempat fungsi dipanggil). Di dalam ________ 46 ______, namanya adalah
def addEm(x, y, z):
    print(x+y+z)
4. Anda dapat melihat ini dengan sangat jelas di codelens, di mana variabel global dan variabel lokal untuk fungsi kuadrat berada di kotak terpisah

Aktivitas. CodeLens 12. 5. 3 (klin11_4_1)

Ada satu aspek lagi dari nilai pengembalian fungsi yang harus diperhatikan. Semua fungsi Python mengembalikan nilai khusus

def addEm(x, y, z):
    print(x+y+z)
_9 kecuali ada pernyataan pengembalian eksplisit dengan nilai selain
def addEm(x, y, z):
    print(x+y+z)
9. Pertimbangkan kesalahan umum berikut yang dibuat oleh programmer Python pemula. Saat Anda menelusuri contoh ini, perhatikan baik-baik nilai pengembalian dalam daftar variabel lokal. Kemudian lihat apa yang dicetak saat fungsinya selesai

Aktivitas. CodeLens 12. 5. 4 (klin11_4_2)

Masalah dengan fungsi ini adalah meskipun ia mencetak nilai input kuadrat, nilai tersebut tidak akan dikembalikan ke tempat pemanggilan dilakukan. Sebagai gantinya, nilai

def addEm(x, y, z):
    print(x+y+z)
_9 akan dikembalikan. Karena baris 6 menggunakan nilai pengembalian sebagai sisi kanan pernyataan penugasan,
def square(x):
    y = x * x
    return y

print(square(5) + square(5))
2 akan memiliki
def addEm(x, y, z):
    print(x+y+z)
9 sebagai nilainya dan hasil yang dicetak di baris 7 salah. Biasanya, fungsi akan mengembalikan nilai yang dapat dicetak atau diproses dengan cara lain oleh pemanggil

Pernyataan pengembalian, setelah dieksekusi, segera menghentikan eksekusi suatu fungsi, meskipun itu bukan pernyataan terakhir dalam fungsi tersebut. Dalam kode berikut, ketika baris 3 dijalankan, nilai 5 dikembalikan dan ditetapkan ke variabel x, lalu dicetak. Baris 4 dan 5 tidak pernah dieksekusi. Jalankan kode berikut dan coba buat beberapa modifikasi untuk memastikan Anda mengerti mengapa "di sana" dan 10 tidak pernah dicetak

Fakta bahwa pernyataan kembali segera mengakhiri eksekusi blok kode di dalam suatu fungsi penting untuk dipahami untuk menulis program yang kompleks, dan ini juga bisa sangat berguna. Contoh berikut adalah situasi di mana Anda dapat menggunakan ini untuk keuntungan Anda – dan memahami ini akan membantu Anda memahami kode orang lain dengan lebih baik, dan dapat menelusuri kode dengan lebih percaya diri

Pertimbangkan situasi di mana Anda ingin menulis sebuah fungsi untuk mengetahui, dari daftar kehadiran kelas, apakah nama depan seseorang lebih dari lima huruf, disebut

def square(x):
    y = x * x
    return y

print(square(5) + square(5))
4. Jika ada seseorang di kelas yang nama depannya lebih dari 5 huruf, fungsinya harus mengembalikan
def square(x):
    y = x * x
    return y

print(square(5) + square(5))
5. Jika tidak, itu harus mengembalikan
def square(x):
    y = x * x
    return y

print(square(5) + square(5))
6

Dalam hal ini, Anda akan menggunakan pernyataan bersyarat dalam kode yang ada di badan fungsi, blok kode diindentasi di bawah pernyataan definisi fungsi (seperti kode yang dimulai dengan baris

def square(x):
    y = x * x
    return y

print(square(5) + square(5))
7 pada contoh di atas – itu adalah badan

Tantangan bonus untuk belajar. Setelah anda melihat penjelasan di bawah ini, berhentilah melihat kode – deskripsi fungsi diatasnya saja, dan coba tulis kodenya sendiri. Kemudian uji pada daftar yang berbeda dan pastikan itu berfungsi. Namun bacalah penjelasannya terlebih dahulu, agar Anda yakin memiliki pemahaman yang kuat tentang mekanika fungsi tersebut

Pertama, rencana bahasa Inggris untuk mendefinisikan fungsi baru ini disebut

def square(x):
    y = x * x
    return y

print(square(5) + square(5))
4

  • Anda ingin meneruskan daftar string (mewakili nama depan orang) ke fungsi

  • Anda ingin mengulangi semua item dalam daftar, masing-masing string

  • Segera setelah Anda mendapatkan satu nama yang lebih panjang dari lima huruf, Anda tahu fungsinya harus mengembalikan

    def square(x):
        y = x * x
        return y
    
    print(square(5) + square(5))
    
    5 – ya, setidaknya ada satu nama yang lebih panjang dari lima huruf

  • Dan jika Anda menelusuri seluruh daftar dan tidak ada nama yang lebih dari lima huruf, maka fungsinya harus mengembalikan

    def square(x):
        y = x * x
        return y
    
    print(square(5) + square(5))
    
    6

Sekarang, kodenya

Sejauh ini, kita baru saja melihat nilai pengembalian yang ditugaskan ke variabel. Misalnya, kami memiliki garis

def square(x):
    y = x * x
    return y

print(square(square(2)))
2. Seperti semua pernyataan penugasan, sisi kanan dieksekusi terlebih dahulu. Ini memanggil fungsi square_, meneruskan nilai parameter 10 (nilai saat ini dari
def addEm(x, y, z):
    print(x+y+z)
3). Itu mengembalikan nilai 100, yang melengkapi evaluasi sisi kanan tugas. 100 kemudian ditugaskan ke variabel
def square(x):
    y = x * x
    return y

print(square(5) + square(5))
2. Dalam hal ini, pemanggilan fungsi adalah seluruh ekspresi yang dievaluasi

Akan tetapi, pemanggilan fungsi juga dapat digunakan sebagai bagian dari ekspresi yang lebih rumit. Misalnya, ________20______6. Dalam hal ini, nilai 100 dikembalikan dan kemudian dikalikan dengan 2 untuk menghasilkan nilai 200. Ketika python mengevaluasi ekspresi seperti

def square(x):
    y = x * x
    return y

print(square(square(2)))
7, itu menggantikan nilai x saat ini ke dalam ekspresi dan kemudian melakukan perkalian. Ketika python mengevaluasi ekspresi seperti
def square(x):
    y = x * x
    return y

print(square(square(2)))
_8, itu menggantikan nilai pengembalian 100 untuk seluruh pemanggilan fungsi dan kemudian melakukan perkalian

Untuk mengulangi, ketika mengeksekusi baris kode

def square(x):
    y = x * x
    return y

print(square(square(2)))
6, juru bahasa python melakukan langkah-langkah ini

  1. Ini adalah pernyataan penugasan, jadi evaluasi ekspresi sisi kanan

    def square(x):
        y = x * x
        return y
    
    print(square(square(2)))
    
    8

  2. Cari nilai variabel kuadrat dan kuadrat. persegi adalah objek fungsi dan toSquare adalah 10

  3. Lewati 10 sebagai nilai parameter ke fungsi, dapatkan kembali nilai pengembalian 100

  4. Gantikan 100 dengan kuadrat(ke Kuadrat), sehingga ekspresinya sekarang terbaca

    def cyu2(s1, s2):
        x = len(s1)
        y = len(s2)
        return x-y
    
    z = cyu2("Yes", "no")
    if z > 0:
        print("First one was longer")
    else:
        print("Second one was at least as long")
    
    1

  5. Tetapkan 200 ke variabel

    def square(x):
        y = x * x
        return y
    
    print(square(5) + square(5))
    
    2

Periksa pemahaman Anda

    Apa yang salah dengan definisi fungsi berikut

    def addEm(x, y, z):
        return x+y+z
        print('the answer is', x+y+z)
    

  • Anda tidak boleh menggunakan pernyataan cetak dalam definisi fungsi
  • Meskipun Anda tidak boleh salah mengira cetak sebagai pengembalian, Anda dapat menyertakan pernyataan cetak di dalam fungsi Anda
  • Anda seharusnya tidak memiliki pernyataan apa pun dalam suatu fungsi setelah pernyataan pengembalian. Setelah fungsi sampai ke pernyataan kembali itu akan segera berhenti mengeksekusi fungsi
  • Ini adalah kesalahan yang sangat umum jadi pastikan untuk berhati-hati saat menulis kode
  • Anda harus menghitung nilai x+y+z sebelum mengembalikannya
  • Python akan secara otomatis menghitung nilai x+y+z dan kemudian mengembalikannya dalam pernyataan seperti yang tertulis
  • Suatu fungsi tidak dapat mengembalikan angka
  • Fungsi dapat mengembalikan data legal apa pun, termasuk (namun tidak terbatas pada) angka, string, daftar, kamus, dll

    Apa yang akan dikembalikan oleh fungsi berikut?

    def addEm(x, y, z):
        print(x+y+z)
    

  • Nilai Tidak ada
  • Kami tidak sengaja menggunakan print yang kami maksud kembali. Oleh karena itu, fungsi akan mengembalikan nilai Tidak ada secara default. Ini adalah kesalahan yang SANGAT UMUM jadi hati-hati. Kesalahan ini juga sangat sulit ditemukan karena ketika Anda menjalankan fungsi, hasilnya terlihat sama. Tidak sampai Anda mencoba untuk menetapkan nilainya ke variabel, Anda dapat melihat perbedaannya
  • Nilai x+y+z
  • Hati-hati. Ini adalah kesalahan yang sangat umum. Di sini kami telah mencetak nilai x+y+z tetapi kami belum mengembalikannya. Untuk mengembalikan nilai, kita HARUS menggunakan kata kunci return
  • String 'x+y+z'
  • x+y+z menghitung angka (dengan asumsi x+y+z adalah angka) yang mewakili jumlah nilai x, y dan z

    Apa yang akan dihasilkan oleh kode berikut?

    def square(x):
        y = x * x
        return y
    
    print(square(5) + square(5))
    

  • 25
  • Itu mengkuadratkan 5 dua kali, dan menjumlahkannya
  • 50
  • Dua nilai pengembalian ditambahkan bersama
  • 25 + 25
  • Kedua hasil disubstitusi ke dalam ekspresi dan kemudian dievaluasi. Nilai yang dikembalikan adalah bilangan bulat dalam hal ini, bukan string

    Apa yang akan dihasilkan oleh kode berikut?

    def square(x):
        y = x * x
        return y
    
    print(square(square(2)))
    

  • 8
  • Ini kuadrat 2, menghasilkan nilai 4. Tapi itu tidak berarti nilai selanjutnya mengalikan 2 dan 4
  • 16
  • Ini kuadrat 2, menghasilkan nilai 4. 4 kemudian diteruskan sebagai nilai untuk dikuadratkan lagi, menghasilkan 16
  • Kesalahan. tidak dapat memasukkan pemanggilan fungsi di dalam tanda kurung
  • Ini adalah ekspresi yang lebih rumit, tetapi tetap valid. Ekspresi kuadrat(2) dievaluasi, dan nilai kembalian 4 menggantikan kuadrat(2) dalam ekspresi

    Apa yang akan dihasilkan oleh kode berikut?

    def cyu2(s1, s2):
        x = len(s1)
        y = len(s2)
        return x-y
    
    z = cyu2("Yes", "no")
    if z > 0:
        print("First one was longer")
    else:
        print("Second one was at least as long")
    

  • 1
  • cyu2 mengembalikan nilai 1, tapi bukan itu yang dicetak
  • Ya
  • "Ya" lebih panjang, tapi bukan itu yang tercetak
  • Yang pertama lebih panjang
  • cyu2 mengembalikan nilai 1, yang ditugaskan ke z
  • Yang kedua setidaknya selama itu
  • cyu2 mengembalikan nilai 1, yang ditugaskan ke z
  • Kesalahan
  • menurut Anda apa yang akan menyebabkan kesalahan

    Mana yang akan dicetak terlebih dahulu, persegi, g, atau angka?

    def square(x):
        print("square")
        return x*x
    
    def g(y):
        print("g")
        return y + 3
    
    print(square(g(2)))
    

  • persegi
  • Sebelum mengeksekusi square, ia harus mencari tahu nilai apa yang akan dimasukkan, lagu dieksekusi terlebih dahulu
  • g
  • g harus dieksekusi dan mengembalikan nilai untuk mengetahui nilai parameter apa yang harus diberikan ke x
  • sebuah angka
  • square dan g keduanya harus dieksekusi sebelum nomor dicetak

    Berapa banyak baris kode berikut yang akan dicetak?

    def show_me_numbers(list_of_ints):
        print(10)
        print("Next we'll accumulate the sum")
        accum = 0
        for num in list_of_ints:
            accum = accum + num
        return accum
        print("All done with accumulation!")
    
    show_me_numbers([4,2,3])
    

  • 3
  • Fungsi mendapatkan pernyataan pengembalian setelah 2 baris dicetak, sehingga pernyataan cetak ketiga tidak akan berjalan
  • 2
  • Ya. Dua baris tercetak, dan kemudian eksekusi badan fungsi mencapai pernyataan pengembalian
  • Tidak ada
  • Fungsi mengembalikan nilai integer. Namun, kode ini tidak mencetak hasil pemanggilan fungsi, jadi Anda tidak dapat melihatnya (cetak untuk orang). Satu-satunya baris yang Anda lihat tercetak adalah baris yang muncul di pernyataan cetak sebelum pernyataan pengembalian

8. Tulis fungsi bernama

def cyu2(s1, s2):
    x = len(s1)
    y = len(s2)
    return x-y

z = cyu2("Yes", "no")
if z > 0:
    print("First one was longer")
else:
    print("Second one was at least as long")
3 yang mengambil string sebagai input, dan cukup mengembalikan string itu

9. Tulis fungsi bernama

def cyu2(s1, s2):
    x = len(s1)
    y = len(s2)
    return x-y

z = cyu2("Yes", "no")
if z > 0:
    print("First one was longer")
else:
    print("Second one was at least as long")
_4 yang mengembalikan parameter, tidak berubah

10. Tulis fungsi yang disebut

def cyu2(s1, s2):
    x = len(s1)
    y = len(s2)
    return x-y

z = cyu2("Yes", "no")
if z > 0:
    print("First one was longer")
else:
    print("Second one was at least as long")
_5 yang mengambil bilangan bulat atau angka apa pun sebagai input, dan mengembalikan angka itu dikurangi tiga

11. Tulis fungsi yang disebut

def cyu2(s1, s2):
    x = len(s1)
    y = len(s2)
    return x-y

z = cyu2("Yes", "no")
if z > 0:
    print("First one was longer")
else:
    print("Second one was at least as long")
_6 yang mengambil satu angka sebagai inputnya dan mengembalikan angka itu, ditambah 7

12. Tulis fungsi bernama

def cyu2(s1, s2):
    x = len(s1)
    y = len(s2)
    return x-y

z = cyu2("Yes", "no")
if z > 0:
    print("First one was longer")
else:
    print("Second one was at least as long")
_7 yang menggunakan string sebagai input. String ini dimaksudkan sebagai nama seseorang dan keluarannya adalah sapaan standar. Misalnya, diberi string "Becky" sebagai input, fungsi tersebut harus dikembalikan. “Halo, nama saya Becky dan saya suka SI 106. ”

13. Tulis fungsi yang disebut

def cyu2(s1, s2):
    x = len(s1)
    y = len(s2)
    return x-y

z = cyu2("Yes", "no")
if z > 0:
    print("First one was longer")
else:
    print("Second one was at least as long")
8 yang mengambil satu string sebagai input dan mengembalikan string itu, digabungkan dengan string ” untuk bersenang-senang. ”

14. Tulis fungsi bernama

def cyu2(s1, s2):
    x = len(s1)
    y = len(s2)
    return x-y

z = cyu2("Yes", "no")
if z > 0:
    print("First one was longer")
else:
    print("Second one was at least as long")
9 yang menggunakan string sebagai input, lalu periksa jumlah karakter. Jika memiliki lebih dari 17 karakter, kembalikan "Ini adalah string yang panjang", jika lebih pendek atau memiliki 17 karakter, kembalikan "Ini adalah string pendek"

Bagaimana Anda menetapkan nilai pengembalian ke variabel dengan Python?

Pernyataan pengembalian Python adalah pernyataan khusus yang dapat Anda gunakan di dalam fungsi atau metode untuk mengirim kembali hasil fungsi ke pemanggil. Pernyataan return terdiri dari kata kunci return diikuti dengan nilai return opsional . Nilai pengembalian fungsi Python bisa berupa objek Python apa saja.

Bagaimana Anda menetapkan hasil fungsi ke variabel dengan Python?

Operator penugasan, dilambangkan dengan simbol “=”, adalah operator yang digunakan untuk menetapkan nilai ke variabel dalam Python . Baris x=1 mengambil nilai yang diketahui, 1, dan menugaskan nilai itu ke variabel dengan nama "x". Setelah mengeksekusi baris ini, angka ini akan disimpan ke dalam variabel ini.

Bisakah suatu fungsi mengembalikan variabel Python?

Fungsi Python dapat mengembalikan banyak variabel . Variabel ini dapat disimpan dalam variabel secara langsung. Suatu fungsi tidak diharuskan untuk mengembalikan variabel, ia dapat mengembalikan nol, satu, dua atau lebih variabel. Ini adalah properti unik Python, bahasa pemrograman lain seperti C++ atau Java tidak mendukung ini secara default.

Bagaimana Anda mengembalikan nilai dari variabel ke fungsi?

Untuk mengembalikan nilai dari suatu fungsi, Anda harus menyertakan pernyataan pengembalian, diikuti dengan nilai yang akan dikembalikan, sebelum pernyataan akhir fungsi. If you do not include a return statement or if you do not specify a value after the keyword return, the value returned by the function is unpredictable.