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))12
12Sekarang 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)12
None 12
24show_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.
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")Hello, Mina!
Hi, Jun!
no new line herereturn 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)8000Variabel 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.
| def | Memulai definisi fungsi |
| parameter | Nama dalam definisi: w pada def area(w, h) |
| argumen | Nilai yang diberikan dalam pemanggilan: 4 pada area(4, 3) |
| return | Mengembalikan nilai dan mengakhiri fungsi |
| None | Nilai yang dikembalikan fungsi jika tidak memiliki return |
| variabel lokal | Variabel yang hanya ada di dalam fungsi |
- Apa yang dicetak kode ini?
def double(x): return x * 2 print(double(7)) - Apa yang dicetak kode ini?
def hello(): print("hi") result = hello() print(result)hi
hihi
NoneNonehi
- Apa yang dicetak kode ini?
def add(a, b): return a + b print(add(2, 3) * add(1, 1)) - Apa yang dicetak kode ini?
def f(x): return x + 1 print("never") print(f(1)) - Apa yang dicetak kode ini?
def greet(name, greeting="Hello"): return greeting + " " + name print(greet("Bo")) - 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)) - Apa yang dicetak kode ini?
print("a", end="-") print("b") - 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])) - Dalam def area(w, h):, apa sebutan w dan h?
- Argumen
- Parameter
- Nilai kembalian
- Kata kunci
- Urutkan baris agar program mencetak 25.Keluaran
25
- "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'.
- 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