edubun
Bahasa Indonesia

Menulis fungsi sendiri

Fungsi yang berakhir tanpa return mengembalikan None. Itulah sebabnya print(print("hi")) menampilkan hi lalu None.

Dua fungsi yang tampak sama di layar

Kebanyakan pemula menganggap menampilkan nilai dan mengembalikannya adalah hal yang sama. Berikut dua fungsi yang tampaknya sama-sama "memberikan" luas persegi panjang. def memulai definisi fungsi: nama, masukan dalam kurung, titik dua, dan isi berinden. Jalankan program dan kedua baris keluaran tampak sama.

def show_area(w, h):
    print(w * h)

def area(w, h):
    return w * h

show_area(4, 3)
print(area(4, 3))
Keluaran
12
12

Sekarang coba gunakan hasilnya dalam perhitungan. Perbedaannya langsung terlihat.

def show_area(w, h):
    print(w * h)

def area(w, h):
    return w * h

a = show_area(4, 3)
b = area(4, 3)
print(a, b)
print(b * 2)
Keluaran
12
None 12
24

show_area mencetak 12 ke layar lalu berakhir. Tidak ada yang dikembalikan, dan fungsi yang tidak mengembalikan apa pun menghasilkan nilai khusus None. Jadi, a adalah None. area tidak mencetak apa pun; fungsi ini mengembalikan 12 ke baris pemanggilnya, dan 12 itu dapat disimpan, dicetak, atau dikalikan dua. Mencetak ditujukan untuk orang yang melihat layar. Mengembalikan nilai ditujukan untuk bagian program lainnya. Jika ingin menggunakan hasil nanti, kembalikan hasilnya.

Fungsi menerima argumen, menjalankan isinya dengan argumen itu, dan mengembalikan satu nilai dengan return. area(4, 3) menjadi 12 di mana pun ditulis.

Parameter adalah nama, argumen adalah nilai

Dalam def area(w, h):, w dan h adalah parameter: nama yang hanya ada di dalam fungsi. Dalam area(4, 3), 4 dan 3 adalah argumen: nilai yang mengisi nama tersebut untuk satu pemanggilan itu. Keduanya dicocokkan berdasarkan posisi, sehingga argumen pertama masuk ke parameter pertama. Jika jumlah argumen salah saat fungsi dipanggil, Python berhenti dengan TypeError yang menyebutkan parameter yang kurang.

Parameter dapat memiliki nilai bawaan, ditulis dengan = dalam definisi. Pemanggil boleh tidak menyertakan argumen itu, dan nilai bawaan akan digunakan. Dalam tutorial Python, nilai bawaan dibahas pada bagian mendefinisikan fungsi, dan nilai itu umum dijumpai pada fungsi bawaan. print sendiri memilikinya: parameter end bernilai bawaan baris baru.

def greet(name, greeting="Hello"):
    return f"{greeting}, {name}!"

print(greet("Mina"))
print(greet("Jun", "Hi"))
print("no new line", end=" ")
print("here")
Keluaran
Hello, Mina!
Hi, Jun!
no new line here

return langsung mengakhiri fungsi

Fungsi berhenti pada return pertama yang dicapai, meskipun masih ada baris di bawahnya. Karena itu, pengembalian awal merupakan cara rapi untuk menangani kasus khusus. Fungsi di bawah menggunakan aturan tiket dari unit if, kini dikemas agar bagian program mana pun bisa meminta harga.

def ticket_price(age):
    if age < 7:
        return 0
    if age <= 18:
        return 3000
    return 5000

family = [40, 15, 5]
total = 0
for age in family:
    total += ticket_price(age)
print(total)
Keluaran
8000

Variabel yang dibuat di dalam fungsi bersifat lokal: variabel itu ada selama fungsi berjalan dan hilang saat fungsi berakhir. Variabel bernama total di dalam satu fungsi tidak berhubungan dengan total di luarnya. Dengan begitu, kamu bisa menggunakan kembali fungsi tanpa mengkhawatirkan nama yang kebetulan digunakan bagian program lainnya.

defMemulai definisi fungsi
parameterNama dalam definisi: w pada def area(w, h)
argumenNilai yang diberikan dalam pemanggilan: 4 pada area(4, 3)
returnMengembalikan nilai dan mengakhiri fungsi
NoneNilai yang dikembalikan fungsi jika tidak memiliki return
variabel lokalVariabel yang hanya ada di dalam fungsi
  1. Apa yang dicetak kode ini?
    def double(x):
        return x * 2
    
    print(double(7))
  2. Apa yang dicetak kode ini?
    def hello():
        print("hi")
    
    result = hello()
    print(result)
    • hi
      hi
    • hi
      None
    • None
    • hi
  3. Apa yang dicetak kode ini?
    def add(a, b):
        return a + b
    
    print(add(2, 3) * add(1, 1))
  4. Apa yang dicetak kode ini?
    def f(x):
        return x + 1
        print("never")
    
    print(f(1))
  5. Apa yang dicetak kode ini?
    def greet(name, greeting="Hello"):
        return greeting + " " + name
    
    print(greet("Bo"))
  6. Apa yang dicetak kode ini?
    def sign(n):
        if n > 0:
            return "plus"
        if n < 0:
            return "minus"
        return "zero"
    
    print(sign(-4), sign(0))
  7. Apa yang dicetak kode ini?
    print("a", end="-")
    print("b")
  8. Apa yang dicetak kode ini?
    def total_of(nums):
        t = 0
        for n in nums:
            t += n
        return t
    
    print(total_of([4, 5, 6]))
  9. Dalam def area(w, h):, apa sebutan w dan h?
    • Argumen
    • Parameter
    • Nilai kembalian
    • Kata kunci
  10. Urutkan baris agar program mencetak 25.
    Keluaran
    25
Kesalahan umum
  • "Fungsi yang mencetak jawaban sudah mengembalikannya." Mencetak hanya menampilkan nilai. Fungsi tetap mengembalikan None, sehingga x = show_area(4, 3) membuat x bernilai None dan x * 2 berhenti dengan TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'.
  • "Aku bisa memanggil fungsi di atas baris tempat aku mendefinisikannya." Python berjalan dari atas, sehingga pada titik itu namanya belum ada: NameError: name 'area' is not defined. Tempatkan def di atas pemanggilan pertama.
  • "Argumen yang tidak disertakan hanya menjadi nol." Tanpa nilai bawaan, Python berhenti: area(4) menghasilkan TypeError: area() missing 1 required positional argument: 'h'.
Catatan untuk guruKebingungan antara print dan return adalah kesalahpahaman paling umum pada tahap ini, dan tersembunyi karena tampilan layar identik. Minta siswa menyimpan hasil dalam variabel lalu menggunakannya dalam perhitungan kedua; None langsung terlihat. Pilihan kata membantu: katakan fungsi "mengembalikan" nilai, dan gunakan "menampilkan" untuk print. Kurikulum informatika SMP Korea memasangkan penggunaan fungsi dengan menemukan serta memperbaiki kesalahan, sehingga argumen yang kurang dan pemanggilan sebelum def cocok untuk latihan singkat mencari kesalahan.
Poin penting
  • def name(params): memulai fungsi; isinya berinden.
  • return mengembalikan nilai dan mengakhiri fungsi.
  • print menampilkan nilai; bukan mengembalikannya. Tanpa return, hasilnya None.
  • Argumen mengisi parameter berdasarkan posisi; nilai bawaan mengisi yang tidak disertakan.
  • Variabel yang dibuat di dalam fungsi bersifat lokal pada fungsi itu.
Sumber kursus ini (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Diperiksa: 2026-10-19