Function
Apakah Anda sadar sedari awal kita sudah menggunakan function print()? Dalam documentasinya , function print() memiliki beberapa arguments
print(*objects, sep=' ', end='\n', file=None, flush=False)
Kita juga bisa membuat function sendiri. Berikut contoh membuat function
def perdana():
print("Hello world")
perdana()
Function perdana() akan mengeluarkan output “Hello world”
Perhatikan ketika membuat function, function tidak akan berjalan apabila tidak dipanggil. Berikut contoh function yg tidak dipanggil
def perdana():
print("Hello world")
Function membantu menyederhanakan perintah dan mencegah duplikasi perintah yang akan digunakan di berbagai kondisi program.
Parameters Function
Function memberi akses nilai yg ingin di masukkan. Berikut contoh parameters function
def hello(name):
print('Hello '+name)
hello('world')
Return Function
Function memiliki return yang bertindak untuk mengembalikan nilai function. Berikut contoh return function
import random
def hadiah(angka_acak):
if angka_acak == 1:
return "Laptop"
if angka_acak == 2:
return "Tumbler"
if angka_acak == 3:
return "Card holder"
return "Hadiah kosong"
angka_acak = random.randint(1,3)
print(hadiah(angka_acak))
Yield Function
Yield berbeda dengan return dalam function. Yield akan menunda hasil yang dikembalikan function dan dapat mengingat nilai dari function tersebut. Perbedaan return dan yield yaitu return mengembalikan nilai yang spesifik sedangkan yield mengembalikan nilai yang berurutan. Berikut contoh yield function
def count():
yield 1
yield 2
yield 3
c = count()
print(next(c))
print(next(c))
print(next(c))
Contoh kode diatas akan memanggil urutan satu per satu nilai yang di keluarkan, dengan bantuan yield, function tidak akan langsung berhenti setelah di jalankan. Function yang menggunakan yield biasa disebut Generator. Contoh kode generator adalah seperti berikut
def multiple_by_two(n):
for i in range(n):
yield i*2
for a in multiple_by_two(6):
print(a)
Menulis generator juga bisa menggunakan metode list comprehension, alih alih menyimpan nilai dengan list, nilai di simpan sebagai generator object. Berikut contoh kodenya
generator_five = (i * 5 for i in range(5))
for y in generator_five:
print(y)
Lambda Function
Lambda atau biasa disebut Anonymous function, merupakah function yang tidak bernama. Lambda digunakan untuk membuat function yang simple dan tidak kompleks. Berikut contoh lambda function
calc = lambda num: "genap" if num % 2 == 0 else "ganjil"
print(calc(10))
Untuk mudah dibaca, lambda harus memiliki satu ekspresi sedangkan jumlah parameternya bisa banyak. Berikut contoh lambda yang digunakan dalam global function filter()
my_list = [1, 2, 3, 4, 5]
new_list = list(filter(lambda x: x % 2 != 0, my_list))
print(new_list)
Type Hint Function
Type hint pada Python bersifat opsional, namun untuk menulis code yang bersih dan mudah dibaca, disarankan menggunakan type hint. Type hint yaitu mengidentifikasi jenis type apa yang diberikan ke dalam function beserta jenis return type nya, lihat codingan berikut
def num_to_string(number: int) -> str:
if not isinstance(number,int):
raise Exception("invalid parameter")
if number > 3:
raise Exception("number must lower than 3")
match number:
case 1:
return "one"
case 2:
return "two"
case 3:
return "three"
case _:
return "..."
print(num_to_string(3))
Perhatikan bagian (number: int) → str. Syntax tersebut memberikan info bahwa parameter number bertipe integer dan return type nya bertipe string.
Parameters Function Order
Urutan dalam parameter function sangat menentukan jalannya sebuah function, lihat contoh function print() berikut
print(*objects, sep=' ', end='\n', file=None, flush=False)
Anda juga bisa membuat urutan sebuah parameter. Berikut contoh parameter function order
def namaLengkap(nama, jenis_kelamin='laki-laki'):
if jenis_kelamin == 'perempuan':
return f'Halo mbak {nama}'
return f'Halo mas {nama}'
print(namaLengkap('nana', jenis_kelamin='perempuan'))
Sebenarnya, jika Anda hanya menulis namaLengkap('nana', 'perempuan') fungsi tetap berjalan tanpa harus menulis key dari parameter. Isi key parameter ketika Anda hanya ingin custom satu parameter dan biarkan parameter lainnya default. Contohnya dalam parameter end di function print()
print("Hello ", end='')
print("world")
Default end adalah membuat baris baru yaitu '\n' lalu di rubah menjadi string kosong.
Parameters * and **
Dalam paramater berbentuk multiple (array dan sejenisnya), biasa programmer menyebutnya dengan *args dan **kwargs. Apa saja perbedaannya?
*args yaitu parameter non key
**kwargs yaitu parameter key
*args dan **kwargs hanyalah sebutan belaka, Anda bisa menentukan sendiri nama kedua parameter tersebut.
def listing(*arguments):
print(*arguments)
listing('hai')
listing('hai','saya','suka','python')
Menggunakan * dalam parameter cocok ketika Anda tidak bisa menentukan berapa jumlah parameter yang masuk kedalam function. Berikut contohnya
def multipleSum(*numbers):
iterNum = 0
for number in numbers:
iterNum += number
return iterNum
print(multipleSum(1,2,3))
Keyword arguments ** akan menerima parameter bertipe key = value. Berikut contohnya
def shoeInspector(**shoe):
for key, value in shoe.items():
print(key, value)
shoeInspector(name='adidas yeezy', size=42)
Tidak banyak contoh keyword arguments dikarenakan syntax nya yang bisa membuat pembaca bingung karena bersifat dinamis terhadap parameter key