Bisakah Anda meneruskan fungsi ke fungsi dengan python?

Argumen ditentukan setelah nama fungsi, di dalam tanda kurung. Anda dapat menambahkan argumen sebanyak yang Anda inginkan, cukup pisahkan dengan koma

Contoh berikut memiliki fungsi dengan satu argumen (fname). Saat fungsi dipanggil, kami meneruskan nama depan, yang digunakan di dalam fungsi untuk mencetak nama lengkap

Contoh

def my_function(fname)
print(fname + " Refsnes")

my_function("Emil")
my_function("Tobias")
my_function("Linus")

Cobalah sendiri "

Argumen sering disingkat menjadi argumen dalam dokumentasi Python

Parameter atau Argumen?

Istilah parameter dan argumen dapat digunakan untuk hal yang sama. informasi yang diteruskan ke suatu fungsi

Dari perspektif fungsi

Parameter adalah variabel yang tercantum di dalam tanda kurung dalam definisi fungsi

Argumen adalah nilai yang dikirim ke fungsi saat dipanggil


Jumlah Argumen

Secara default, sebuah fungsi harus dipanggil dengan jumlah argumen yang benar. Artinya jika fungsi Anda mengharapkan 2 argumen, Anda harus memanggil fungsi tersebut dengan 2 argumen, tidak lebih, dan tidak kurang

Pada artikel ini, kita akan mempelajari cara meneruskan metode sebagai argumen dengan Python. Kami akan membahas metodologi yang berbeda dari metode dan fungsi passing sebagai argumen menggunakan kode khusus juga

Dalam Python, segala sesuatu seperti objek, variabel, dll. diperlakukan sebagai obyek. Oleh karena itu, fungsi/metode, terlalu diperlakukan sebagai objek. Pada artikel ini, kami akan tetap berpegang pada metode. Suatu metode dapat mengambil banyak argumen, seperti objek, variabel (dari tipe data yang sama atau berbeda), dan bahkan metode lain karena metode python adalah objek kelas satu. Metode adalah objek yang dapat dipanggil sehingga Anda dapat meneruskannya, menyimpannya, dan dapat melakukan apa pun yang Anda inginkan. __call__ metode diasosiasikan dengan setiap metode dan dipanggil secara otomatis saat Anda memanggil metode dengan atau tanpa argumen. Anda dapat menganggap metode (atau fungsi) sebagai variabel yang nilainya adalah objek kode yang dapat dipanggil sebenarnya. Metode yang ditentukan pengguna atau metode bawaan keduanya dapat diteruskan sebagai argumen ke metode lain di python

Catatan

Pada artikel ini, kita akan menggunakan metode dalam contoh berikut, tetapi perhatikan bahwa semua hal di bawah ini berlaku identik dengan fungsi (kecuali tanpa parameter self ). Fungsi dan metode keduanya adalah blok kode utilitas, tetapi ketika fungsi utilitas didefinisikan di dalam kelas, itu dikenal sebagai metode. Jangan bingung antara metode dan fungsi. Semua fungsi di Python dapat diteruskan sebagai argumen ke fungsi lain

Contoh. Metode Kelas Lulus sebagai Argumen

Metode diteruskan sebagai argumen seperti halnya variabel. Dalam contoh ini, kita mendefinisikan kelas dan objeknya. Kami membuat objek untuk memanggil metode kelas. Sekarang, untuk memanggil metode atau fungsi yang diteruskan, Anda cukup menggunakan nama yang terikat dengan cara yang sama seperti Anda menggunakan nama biasa metode (atau fungsi)

Note: Jika Anda ingin meneruskan metode kelas sebagai argumen tetapi belum memiliki objek yang akan Anda panggil, Anda cukup meneruskan objek setelah Anda memilikinya sebagai argumen pertama (i. e. argumen "diri")

class my_class:
    def method1(self):
        return "Hello World"
    def method2(self, methodToRun):
        result = methodToRun()
        return result

obj = my_class()
#method1 is passed as an argument
print(obj.method2(obj.method1))


Halo Dunia

Contoh. Fungsi Tingkat Tinggi Diloloskan sebagai Argumen

Sama seperti metode kelas yang dipanggil menggunakan objek kelas dan diteruskan sebagai argumen, fungsi umum yang ditentukan pengguna juga dapat diteruskan sebagai argumen ke fungsi lain karena fungsi adalah objek. Fungsi yang dapat menerima fungsi lain sebagai argumen disebut fungsi tingkat tinggi. Pada contoh di bawah ini, sebuah fungsi func1 dibuat yang mengambil fungsi sebagai argumen

def func2(text):
    return text.upper()

def func3(text):
    return text.lower()

def func1(func):
    # storing the function in a variable
    res = func("Hello World")
    print(res)

#funtion calls
func1(func2)
func1(func3)
_


HALO DUNIA
Halo Dunia

Contoh. Fungsi Pembungkus Lulus sebagai Argumen

Dalam Python, fungsi Pembungkus atau dekorator membungkus fungsi lain untuk memperluas perilaku fungsi yang dibungkus, tanpa mengubahnya secara permanen. Di Dekorator, fungsi diteruskan sebagai argumen ke fungsi lain dan kemudian dipanggil di dalam fungsi pembungkus

Contoh di bawah ini mendefinisikan dekorator hello_decorator sederhana. inner1 adalah fungsi Pembungkus di mana argumen dipanggil. Fungsi dalam dapat mengakses fungsi lokal luar seperti dalam kasus ini func(). func() dipanggil di dalam fungsi pembungkus

#decorator
def hello_decorator(func):
    #Wrapper function
    def inner1():
        print("Hello, this is before function execution")

        func()
        print("This is after function execution")
    
    return  inner1

# defining a function, to be called inside wrapper
def function_to_be_used():
    print("This is inside the function !!")

# pass 'function_to_be_used' inside the decorator to control its behavior
function_to_be_used = hello_decorator(function_to_be_used)

# calling the function
function_to_be_used()


Halo, ini sebelum eksekusi fungsi
Ini ada di dalam fungsi
Ini setelah eksekusi fungsi

Contoh. Lambda Lulus sebagai argumen untuk map()

Contoh paling penting dari melewatkan metode sebagai argumen adalah lambda. Anda sering menggunakan map() dan lambda bersama-sama untuk melakukan berbagai operasi daftar dan banyak lagi di python. Dalam python, ekspresi lambda adalah sintaks khusus untuk membuat fungsi anonim. Saat Anda mengevaluasi ekspresi lambda, objek yang Anda dapatkan kembali disebut fungsi lambda. Fungsi Lambda sama seperti fungsi Python biasa, dengan beberapa peringatan

Python mengimplementasikan fungsi map() di mana parameter pertama adalah fungsi dan yang kedua dapat diulang. Dalam contoh ini, pemanggilan fungsi meneruskan fungsi sqr(x) sebagai argumen fungsi menggunakan metode peta. Cara lain untuk menggunakan metode map() adalah dengan melewatkan lambda sebagai argumen dengan iterable

def sqr(x):
    return x ** 2

list1 = [1, 3, 5, 7, 9]
list(map(sqr, list1))

#use lambda
print(list(map((lambda x: x**2), list1)))


[1, 9, 25, 49, 81]

Kesimpulan

Dalam artikel ini, kita belajar meneruskan metode dan fungsi sebagai argumen ke fungsi lain. Setiap contoh memiliki metodologinya sendiri. Ekspresi Lambda sebagai argumen untuk metode map() adalah contoh terbaik untuk memahami artikel ini karena Anda telah menggunakannya bersama beberapa kali. Coba berikan fungsi yang berbeda sebagai argumen ke fungsi lain dan amati perilakunya

Bisakah Anda melewatkan fungsi dalam suatu fungsi?

Fungsi dapat diteruskan ke fungsi lain .

Bagaimana cara meneruskan data dari satu fungsi ke fungsi lain dengan Python?

Nama fungsi dapat menjadi nama variabel (dan dengan demikian diteruskan sebagai argumen) dengan menghilangkan tanda kurung . Nama variabel dapat menjadi nama fungsi dengan menambahkan tanda kurung. Dalam contoh Anda, samakan aturan variabel dengan salah satu fungsi Anda, tinggalkan tanda kurung dan penyebutan argumen.

Bisakah Anda memanggil fungsi dari fungsi lain dengan Python?

Dengan Python, setiap fungsi tertulis dapat dipanggil oleh fungsi lain . Perhatikan bahwa ini bisa menjadi cara paling elegan untuk memecah masalah menjadi potongan-potongan kecil.

Apakah mungkin untuk meneruskan suatu fungsi ke fungsi lain sebagai parameter?

Kita tidak dapat meneruskan fungsi sebagai argumen ke fungsi lain . Tapi kita bisa meneruskan referensi fungsi sebagai parameter dengan menggunakan penunjuk fungsi. Proses ini dikenal sebagai call by reference karena parameter fungsi diteruskan sebagai penunjuk yang menyimpan alamat argumen.