Artikel ini akan membantu pembaca melanjutkan dari blog fungsi Python sebelumnya bersama dengan beberapa aplikasi dasar di dunia nyata. Kami akan menggunakan Visual Studio Code sebagai editor kode kami. Jika Anda belum menginstal Visual Studio Code, instruksi diberikan di blog pertama.

Fungsi lanjutan dalam Python – daftar isi:

  1. Meneruskan fungsi ke fungsi lain
  2. Menggunakan fungsi di dalam fungsi
  3. *Args dalam Python
  4. Operator “*” dalam Python
  5. **kwargs dalam Python

Meneruskan fungsi ke fungsi lain

Seperti yang dibahas di blog sebelumnya, fungsi dalam Python diperlakukan sebagai objek. Jadi seperti objek di Python, fungsi juga dapat diteruskan sebagai argumen ke fungsi lain.

Contoh:

def mul(x, y):
    return x*y
 
 
def add(mul, y):
    return mul+y
 
 
x = add(mul(9, 10), 10)
print(x)

Dalam blok kode di atas, dapat dilihat bahwa fungsi mul diteruskan sebagai argumen ke fungsi add dan disimpan dalam variabel x yang kemudian dicetak untuk memverifikasi jawaban.

100

Menggunakan fungsi di dalam fungsi

Dalam Python, kita dapat mendefinisikan fungsi di dalam fungsi lain. Fungsi-fungsi ini disebut sebagai fungsi bersarang. Namun dalam kasus penggunaan ini, fungsi di dalam atau fungsi bersarang tidak dapat dipanggil secara terpisah. Kedua contoh diilustrasikan dalam blok kode berikut.

Mari kita tulis fungsi pertama kita.

def mul(x, y):
 
    m = x*y
 
    def square(m):
        return m*m
 
    return square(m)
 
 
x = mul(9, 10)
 
print(x)
Output:
8100

Dalam blok kode di atas, fungsi luar adalah “mul” yang mengembalikan fungsi square yang mengambil argumen “m” yang merupakan hasil kali dari dua argumen yang diberikan ke fungsi “mul”. Eksekusi kode pertama dimulai dengan memanggil fungsi “mul”, kemudian hasil kali “x” dan “y” disimpan dalam variabel “m”. Karena fungsi ini mengembalikan fungsi square, fungsi “square” dipanggil dan hasil akhir yang merupakan kuadrat dari “m” dikembalikan.

Mari kita pelajari beberapa hal penting dalam Python, yang akan membuat perjalanan pengkodean Anda dengan Python jauh lebih baik.

*Args dalam Python

Ini adalah argumen yang kita gunakan sebagai parameter fungsi. Mari kita tulis fungsi biasa menggunakan apa yang telah kita pelajari sampai sekarang. Kita akan menulis fungsi yang dapat memberikan kita area maksimum dari sebuah persegi panjang yang diberikan 2 area persegi panjang sebagai parameter untuk fungsi tersebut.

def maxarea(a, b):
    if a > b:
        return f'rectangle a memiliki area lebih besar yaitu {a}'
    else:
        return f'rectangle a memiliki area lebih besar yaitu {b}'
 
 
x = maxarea(100, 60)
print(x)
 
Output:
rectangle a memiliki area lebih besar yaitu 100
[code lang="js"]

Fungsi ini baik untuk 2 parameter atau argumen, tetapi bagaimana jika kita perlu membandingkan lebih dari 2 area. Salah satu pendekatannya adalah dengan meneruskan daftar area ke dalam fungsi.

def maxarea(lis):
 
    max = 0
    for i in lis:
        if i > max:
            max = i
 
    return f"rectangle yang memiliki area lebih besar adalah {max}"
 
 
x = maxarea([100, 60, 50])
print(x)
Output:
rectangle yang memiliki area lebih besar adalah 100

Pendekatan ini baik, tetapi kita harus mengetahui jumlah parameter atau argumen yang akan diberikan sebelumnya. Dalam eksekusi kode waktu nyata ini akan menjadi masalah. Oleh karena itu, untuk memudahkan hidup programmer, Python menggunakan *args dan **kwargs.

Operator “*” dalam Python

Operator ini adalah operator unpacking yang biasanya digunakan untuk meneruskan jumlah parameter atau argumen yang tidak ditentukan.

Unpacking argumen menjadi tuple menggunakan operator *

Seperti yang telah kita lihat, operator “*” digunakan untuk membongkar nilai. Contoh diilustrasikan di bawah ini.


x = [1, 2, 3, 4]
y = [5, 6, 7, 8]
 
z = *x, *y
 
print(type(z))
print(z)
Output:
<class 'tuple'>
(1, 2, 3, 4, 5, 6, 7, 8)

Seperti yang kita lihat, operator unpacking telah membongkar daftar x dan daftar y menjadi tuple yaitu z. Kita juga dapat melihat bahwa hasilnya adalah tuple.

Mari kita tulis fungsi yang sama menggunakan *Args.

def maxarea(*lis):
 
    max = 0
    for i in lis:
        if i > max:
            max = i
 
    return f"rectangle yang memiliki area lebih besar adalah {max}"
 
 
x = maxarea(100, 60, 50, 200)
y = maxarea(100, 60, 50, 200, 9000)
z = maxarea(100, 60, 50, 20, 90)
print(x)
print(y)
print(z)
Output:
rectangle yang memiliki area lebih besar adalah 200
rectangle yang memiliki area lebih besar adalah 9000
rectangle yang memiliki area lebih besar adalah 100

Dalam blok kode ini kita dapat melihat bahwa sekarang argumennya dinamis, kita dapat menambahkan jumlah argumen yang akan dibongkar dalam fungsi maxarea untuk memberikan hasil yang diinginkan. Juga, kita dapat membandingkan jumlah area dalam konteks ini.

**kwargs dalam Python

kwargs mirip dengan args tetapi menerima argumen posisi. Ini menggunakan operator ** yang memiliki beberapa atribut seperti membongkar beberapa argumen posisi dengan panjang berapa pun, juga dapat membongkar kamus, juga dapat digunakan untuk menggabungkan dua kamus.

Menggabungkan kamus

a = {"h": 1, "n": 2}
b = {"m": 5, "l": 10}
 
c = {**a, **b}
 
print(type(c))
print(c)
 

Kita dapat melihat dari kode di atas bahwa kita memiliki 2 kamus a dan b yang digabungkan menggunakan operator ** untuk memberikan kamus lain.
Output:
 
<class 'dict'>
{'h': 1, 'n': 2, 'm': 5, 'l': 10}

Ketika kita menggunakan operator * alih-alih operator **, kode untuk kasus ini diilustrasikan di bawah ini.

a = {"h": 1, "n": 2}
b = {"m": 5, "l": 10}
 
c = {*a, *b}
 
print(type(c))
print(c)
Output:
<class 'set'>
{'n', 'l', 'm', 'h'}

Oleh karena itu, ketika operator * digunakan pada dua kamus untuk digabungkan, hasilnya adalah set dengan hanya kunci dari kamus.

Fungsi maxarea menggunakan **kwargs diilustrasikan dalam blok kode di bawah ini.

def maxarea(**lis):
 
    max = 0
    for i in lis.values():
        if i > max:
            max = i
 
    return f"rectangle yang memiliki area lebih besar adalah {max}"
 
 
x = maxarea(a=1, b=2, c=3)
y = maxarea(a=1, b=2)
z = maxarea(a=1, b=2, c=3, d=9)
print(x)
print(y)
print(z)
Output:
rectangle yang memiliki area lebih besar adalah 3
rectangle yang memiliki area lebih besar adalah 2
rectangle yang memiliki area lebih besar adalah 9

Dalam blog ini tentang fungsi lanjutan dalam Python, kita telah membahas topik seperti meneruskan fungsi ke fungsi lain, menggunakan fungsi di dalam fungsi, *Args dalam Python, operator “*” dalam Python, **kwargs dalam Python, dan lainnya. Topik selanjutnya yang mencakup kelas akan dibahas di blog post berikutnya. Pekerjaan rumah mengenai fungsi lanjutan dalam Python diberikan di bawah ini.

advanced_functions_in_Python

Agnieszka Markowska-Szmaj

View all posts →