[{"data":1,"prerenderedAt":300},["ShallowReactive",2],{"tag-labels":3,"site-header":4,"article-fungsi-dan-sub-program-pada-python-id":72},{},{"featuredPost":5,"navigations":29},{"id":6,"title":7,"title_en":8,"slug":9,"excerpt":10,"excerpt_en":11,"has_translation":12,"published_at":13,"reading_time":14,"hidden_from_listing":15,"tags":16,"thumbnail_image":21,"og_image":22,"series":23,"authors":28},110,"Ketika Pilih Framework Cuma Biar Kelihatan Beda","When You Pick a Framework Just to Look Different","ketika-pilih-framework-cuma-biar-kelihatan-beda","Terakhir kali kamu milih framework atau library baru, itu karena masalahmu butuh alat itu, atau karena alatnya kedengaran keren dan belum banyak yang pakai? Pertanyaan ini nggak enak dijawab. Soalnya keputusan teknologi sering diambil dengan alasan yang nggak pernah ditulis di dokumen teknis mana pun.","The last time you chose a new framework or library, was it because your problem needed that tool, or because it sounded cool and few people around you were using it? That question is uncomfortable. Technology decisions are often made for reasons that never appear in any technical document.",true,"2026-10-06T15:25:21.000Z",5,false,[17,18,19,20],"karier","framework","opini","pengalaman",null,"\u002Fog\u002Fketika-pilih-framework-cuma-biar-kelihatan-beda.png",{"id":24,"title":25,"title_en":26,"slug":27},9,"Artikel","Articles","all",[],[30,46,67],{"collection":31,"item":32},"series",{"__typename":31,"title":25,"title_en":26,"slug":27,"children_series":33},[34,38,42],{"title":35,"title_en":36,"slug":37},"Kecerdasan Artifisial","Artificial Intelligence","kecerdasan-artifisial",{"title":39,"title_en":40,"slug":41},"Konsep Dasar Pemrograman","Programming Fundamentals","konsep-dasar-pemrograman",{"title":43,"title_en":44,"slug":45},"Algoritma dan Struktur Data","Algorithms and Data Structures","algoritma-struktur-data",{"collection":31,"item":47},{"__typename":31,"title":48,"title_en":48,"slug":49,"children_series":50},"Tutorial","tutorial",[51,55,59,63],{"title":52,"title_en":53,"slug":54},"Belajar Python","Learning Python","belajar-python",{"title":56,"title_en":57,"slug":58},"Belajar Golang","Learning Go","belajar-golang",{"title":60,"title_en":61,"slug":62},"Belajar Java","Learning Java","belajar-java",{"title":64,"title_en":65,"slug":66},"Belajar Pascal","Learning Pascal","belajar-pascal",{"collection":31,"item":68},{"__typename":31,"title":69,"title_en":69,"slug":70,"children_series":71},"Lab","lab",[],{"article":73,"renderedBody":187,"renderedTakeaway":188,"latestArticles":189,"toc":283},{"id":74,"title":75,"title_en":76,"slug":77,"excerpt":78,"excerpt_en":79,"has_translation":12,"published_at":80,"reading_time":14,"hidden_from_listing":15,"tags":81,"thumbnail_image":21,"og_image":85,"series":86,"authors":180,"body_locale":183,"available_locales":184,"body":186,"takeway":21,"prerequisite":21},98,"Fungsi dan Sub Program pada Python","Functions and Sub Programs in Python","fungsi-dan-sub-program-pada-python","Fungsi atau dalam istilah pemrograman disebut dengan “function” merupakan blok kode yang digunakan untuk menyelesaikan masalah spesifik.","A function is a block of code used to solve a specific problem, and functions are the key to building large programs in Python.","2022-09-06T03:33:06.000Z",[82,83,84],"python","fungsi","sub-program","\u002Fog\u002Ffungsi-dan-sub-program-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90,"description":91,"description_en":92,"articles":93,"children_series":149,"parent_series":150},20,"Pemrograman Fungsional dengan Python","Functional Programming with Python","python-pemrograman-fungsional","Bungkus kode jadi fungsi biar nggak nulis hal yang sama dua kali. Bahas parameter, return, sampai default argument.","Wrap your code in functions so you stop writing the same thing twice. Parameters, return values, and default arguments.",[94,103,119,135],{"id":74,"title":75,"title_en":76,"slug":77,"excerpt":78,"excerpt_en":79,"has_translation":12,"published_at":80,"reading_time":14,"hidden_from_listing":15,"tags":81,"thumbnail_image":21,"og_image":85,"series":95,"authors":96},{"id":87,"title":88,"title_en":89,"slug":90},[97],{"authors_id":98},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},1,"Daffa Izzuddin","izzudd","Writer",{"id":104,"title":105,"title_en":106,"slug":107,"excerpt":108,"excerpt_en":109,"has_translation":12,"published_at":110,"reading_time":111,"hidden_from_listing":15,"tags":112,"thumbnail_image":21,"og_image":114,"series":115,"authors":116},99,"Return Statement pada Python","The Return Statement in Python","return-statement-pada-python","Return statement memungkinkan kita mengembalikan nilai yang sudah diproses pada fungsi ke pemanggil.","The return statement lets you send a value a function has already processed back to the caller.","2022-01-03T03:40:03.000Z",6,[82,83,113],"syntax","\u002Fog\u002Freturn-statement-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90},[117],{"authors_id":118},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},{"id":120,"title":121,"title_en":122,"slug":123,"excerpt":124,"excerpt_en":125,"has_translation":12,"published_at":126,"reading_time":127,"hidden_from_listing":15,"tags":128,"thumbnail_image":21,"og_image":130,"series":131,"authors":132},100,"Pass Statement pada Python","The Pass Statement in Python","pass-statement-pada-python","pass statement pada python merupakan statement spesial yang hanya bisa digunakan di dalam compound statement","The pass statement in Python is a special statement you can only use inside a compound statement.","2022-01-17T03:51:58.000Z",3,[82,113,129],"struktur-kontrol","\u002Fog\u002Fpass-statement-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90},[133],{"authors_id":134},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},{"id":136,"title":137,"title_en":138,"slug":139,"excerpt":140,"excerpt_en":141,"has_translation":12,"published_at":142,"reading_time":127,"hidden_from_listing":15,"tags":143,"thumbnail_image":21,"og_image":144,"series":145,"authors":146},101,"Default Argument dan Keyword Argument pada Python","Default Argument and Keyword Argument in Python","default-argument-pada-python","Default argument merupakan argument fungsi yang memiliki nilai asal, dengan ini kita bisa membuat argument opsional","A default argument is a function argument with an initial value, which lets you make arguments optional.","2024-02-12T14:01:05.000Z",[82,83,113],"\u002Fog\u002Fdefault-argument-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90},[147],{"authors_id":148},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},[],{"id":151,"title":52,"title_en":53,"slug":54,"parent_series":152,"children_series":153},10,{"id":99,"title":48,"title_en":48,"slug":49},[154,159,164,169,174,175],{"id":155,"title":156,"title_en":157,"slug":158,"cover_image":21},16,"Berkenalan dengan Bahasa Python","Getting Started with Python","python-intro",{"id":160,"title":161,"title_en":162,"slug":163,"cover_image":21},17,"Variabel, Tipe Data, dan Operasi","Variables, Types, and Operations","python-variabel-tipe-data",{"id":165,"title":166,"title_en":167,"slug":168,"cover_image":21},18,"Menggunakan Script Python","Working with Python Scripts","python-pemrograman-dengan-script",{"id":170,"title":171,"title_en":172,"slug":173,"cover_image":21},19,"Struktur Kontrol","Control Structures","python-struktur-kontrol",{"id":87,"title":88,"title_en":89,"slug":90,"cover_image":21},{"id":176,"title":177,"title_en":178,"slug":179,"cover_image":21},30,"Koleksi dan String","Collections and Strings","python-collections",[181],{"authors_id":182},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},"id",[185,183],"en","Write something here\nDalam pemrograman python, fungsi merupakan kunci dari terbentuknya program yang besar. Bahkan hampir mustahil rasanya membuat program kompleks tanpa menggunakan fungsi ini. Oleh karena itulah sangat penting untuk memahami konsep fungsi, bukan hanya pada Python saja namun juga bahasa lainnya.\n\nNah pada kesempatan kali ini kita akan membahas tentang fungsi pada Python sekalian juga contoh kasusnya. Lanjutt..\n\n> Fungsi atau dalam istilah pemrograman disebut dengan “function” merupakan blok kode yang digunakan untuk menyelesaikan masalah spesifik.\n>\n> [Baca lebih lanjut..](https:\u002F\u002Finvasikode.com\u002Ffungsi-sub-program\u002F)\n\n## Format Pembuatan Blok Fungsi pada Pyhton\n\nSatu blok fungsi pada Python ditandai dengan keyword `def` yang menandakan definisi fungsi. Dilanjutkan dengan **identifier** atau nama fungsi dan bagian opsional yaitu **parameter**.\n\nSecara umum format fungsi pada python terlihat seperti ini:\n\n```\ndef \u003Cnama_fungsi>([param_1], [param_2], [param_n]):\n    \u003Ctubuh_fungsi>\n```\n\n* `nama_fungsi`: identifier yang digunakan untuk memanggil fungsi yang telah dibuat\n* `param_1`, `param_2`, dst: parameter atau masukan yang diberikan pada fungsi (opsional)\n* `tubuh_fungsi`: barisan kode yang akan dijalankan ketika fungsi dipanggil\n\nIngat! indentasi pada python ini sangat berpengaruh\n\nContoh fungsi yang benar 👍\n\n```python\ndef print_hello():\n    print(\"Hello World!\")\n```\n\nContoh fungsi yang salah 👎\n\n```python\ndef print_hello():\nprint(\"Hello World!\")\n```\n\nJadi jangan sampai lupa indentasinya, karena bisa-bisa berujung error 😫\n\n## Pemanggilan Fungsi pada Python\n\nFungsi pada Python tentu tidak dapat berdiri sendiri. Untuk menggunakannya tidak cukup hanya deklarasi saja, tetapi juga harus dilakukan pemanggilan.\n\nUntuk memanggil sebuah fungsi, kita dapat menuliskan identifier dari fungsi tersebut diikuti dengan tanda kurung buka dan tutup. Jika fungsi tersebut menerima parameter maka kita juga harus mengisikannya.\n\nFormatnya seperti ini:\n\n```\n\u003Cnama_fungsi>([param_1], [param_2], [param_n])\n```\n\n* `nama_fungsi`: identifier dari fungsi yang dipanggil\n* `param`: parameter yang diberikan pada fungsi untuk diproses (opsional sesuai kebutuhan fungsi)\n\nMungkin kode ini sudah tidak asing lagi ya…\n\n```python\nprint(\"Hello World\")\nprint()\nprint(\"Belajar python bareng Inva\")\n```\n\nOutput:\n\n```\nHello World\n\nBelajar python bareng Inva\n```\n\nSadar atau tidak, sebenarnya dengan menggunakan `print` statement ini kita sudah memanggil sebuah fungsi. Fungsi `print` ini menerima argumen opsional berupa string yang dapat diisi 1 nilai atau banyak nilai sekaligus atau bisa juga tidak diisi sama sekali.\n\n## Contoh Kasus Penggunaan Fungsi\n\nNah setelah tahu format pembuatan dan pemanggilan fungsi, sekarang kita akan coba membuat fungsi sendiri.\n\nMisal ada sebuah kasus, kita diminta untuk mencetak data siswa yang terdiri dari nama, umur, kelas, dan nilai akhir. Cukup sederhana ya, hanya memerlukan perintah `print` saja.\n\n```python\nnama = \"Inva\"\numur = 18\nkelas = \"12 MIPA\"\nnilai = 94\n\nprint(\"Nama  :\", nama)\nprint(\"Umur  :\", umur, \"tahun\")\nprint(\"Kelas :\", kelas)\nprint(\"Nilai :\", nilai)\n```\n\nOutput:\n\n```\nNama  : Inva\nUmur  : 18 tahun\nKelas : 12 MIPA\nNilai : 94\n```\n\nSejauh ini aman tidak ada kendala. Sekarang masalah lainnya muncul, bagaimana dengan data siswa yang lain? Semisal di kelas tersebut ada 30 siswa, kalau kita menulis kode tersebut sebanyak 30 kali bayangkan saja berapa baris kode yang harus dibuat.\n\nNah untuk mengakali masalah ini, kita bisa menggunakan fungsi. Sehingga cukup dengan memberi argumen maka data siswa akan tercetak.\n\nFungsi yang akan dibuat kali ini bernama `cetak_data` dengan 4 argumen yaitu `nama`, `umur`, `kelas`, dan `nilai`. Tidak perlu menulis ulang, tinggal kita modifikasi sedikit kode yang sebelumnya menjadi seperti ini:\n\n```python\n# deklarasi fungsi `cetak_data`\ndef cetak_data(nama, umur, kelas, nilai):\n    print(\"Nama  :\", nama)\n    print(\"Umur  :\", umur, \"tahun\")\n    print(\"Kelas :\", kelas)\n    print(\"Nilai :\", nilai)\n    print() # tambah baris kosong\n\n# memanggil fungsi `cetak_data`\ncetak_data(\"Inva\", 18, \"12 MIPA\", 94)\ncetak_data(\"Adi\", 17, \"11 IPS\", 80)\ncetak_data(\"Dita\", 17, \"10 BHS\", 100)\n```\n\nOutput:\n\n```\nNama  : Inva\nUmur  : 18 tahun\nKelas : 12 MIPA\nNilai : 94\n\nNama  : Adi\nUmur  : 17 tahun\nKelas : 11 IPS\nNilai : 80\n\nNama  : Dita\nUmur  : 17 tahun\nKelas : 10 BHS\nNilai : 100\n```\n\nNah jadi lebih singkat kan, tidak perlu memanggil `print` berkali-kali. Selain itu kode yang dibuat juga lebih mudah dibaca. Tapi apa yang sebenarnya terjadi?\n\n```python\n# deklarasi fungsi `cetak_data`\ndef cetak_data(nama, umur, kelas, nilai):\n    print(\"Nama  :\", nama)\n    print(\"Umur  :\", umur, \"tahun\")\n    print(\"Kelas :\", kelas)\n    print(\"Nilai :\", nilai)\n    print() # tambah baris kosong\n...\n```\n\nPertama kita melakukan deklarasi fungsi dengan nama `cetak_data` dan memberinya 4 variable parameter. Parameter ini bekerja selayaknya variable pada umumnya, yang membedakan hanya pengisiannya saja. Variable parameter ini hanya bisa (dan harus) diisi ketika pemanggilan fungsi.\n\nPada tubuh fungsi `cetak_data` kita menuliskan logika sesuai dari tujuan awal, yaitu mencetak data siswa. Nah data siswa yang dicetak (nama, umur, kelas, dan nilai) ini berasal dari variable parameter yang sebelumnya sudah disediakan.\n\n```\n...\n# memanggil fungsi `cetak_data`\ncetak_data(\"Inva\", 18, \"12 MIPA\", 94)\ncetak_data(\"Adi\", 17, \"11 IPS\", 80)\ncetak_data(\"Dita\", 17, \"10 BHS\", 100)\n```\n\nLanjut ke bagian pemanggilan. Di sini kita memanggil fungsi `cetak_data` dengan mengisikan semua parameter yang ada. Yang perlu diperhatikan di sini adalah urutan pengisian parameter. Karena pada bagian deklarasi kita menyediakan parameter dengan urutan `nama`, `umur`, `kelas`, `nilai` maka pengisian parameter juga harus urut. Jumlah parameter yang diberikan juga tidak boleh lebih atau kurang dari yang sudah dideklarasikan sebelumnya.\n\nKetika fungsi dipanggil, maka parameter pada fungsi akan terisi dan tubuh fungsi akan dieksekusi sesuai logika dan sesuai data yang sudah diberikan sebagai parameter. Sampai disini fungsi telah selesai dijalankan.\n\n## Apa Saja yang Bisa Dilakukan dengan Fungsi?\n\nTidak terbatas dengan perintah print saja. Pada tubuh fungsi ini kita dapat menempatkan kode python apa saja, asalkan valid dan sesuai logika. Deklarasi [variable](https:\u002F\u002Finvasikode.com\u002Fpenulisan-dan-penggunaan-variable-python\u002F), [perulangan](https:\u002F\u002Finvasikode.com\u002Ffor-loop-python\u002F), [percabangan](https:\u002F\u002Finvasikode.com\u002Fif-else-python\u002F), [ternary](https:\u002F\u002Finvasikode.com\u002Fternary-operator-python\u002F), [list comprehension](https:\u002F\u002Finvasikode.com\u002Flist-comprehension-pyhton\u002F) semua bisa dilakukan. Karena hal ini lah fungsi juga biasa disebut dengan sub prgram. Ini karena setiap fungsi bisa bekerja seperti program masing-masing.\n\nUntuk demonstrasi saja, mari kita tambahkan sedikit percabangan pada kode yang sebelumnya sudah dibuat.\n\n```python\n# deklarasi fungsi `cetak_data`\ndef cetak_data(nama, umur, kelas, nilai):\n    # buat variable predikat nilai\n    predikat = \"\"\n    if nilai > 94:\n        predikat = \"A\"\n    elif nilai > 82:\n        predikat = \"B\"\n    elif nilai > 72:\n        predikat = \"C\"\n    else:\n        predikat = \"D\"\n\n    print(\"Nama     :\", nama)\n    print(\"Umur     :\", umur, \"tahun\")\n    print(\"Kelas    :\", kelas)\n    print(\"Nilai    :\", nilai)\n    print(\"Predikat :\", predikat)\n    print() # tambah baris kosong\n\n# memanggil fungsi `cetak_data`\ncetak_data(\"Inva\", 18, \"12 MIPA\", 94)\ncetak_data(\"Adi\", 17, \"11 IPS\", 80)\ncetak_data(\"Dita\", 17, \"10 BHS\", 100)\ncetak_data(\"Budi\", 18, \"12 MIPA\", 68)\n```\n\nPenasaran outputnya? Coba jalankan sendiri ya 😉\n\nSelain bisa menampung semua kode python, tubuh fungsi ini juga memiliki beberapa statement dan keyword khusus yang hanya dapat digunakan didalam scope fungsi. Beberapa diantaranya adalah `return` dan `pass` yang akan kita bahas pada kesempatan selanjutnya.\n\n## Selanjutnya apa?\n\nSetelah berkenalam dengan fungsi, pada kesempatan selanjutnya kita akan membahas tentang salah satu keyword khusus yang ada pada fungsi, yaitu [return statement pada Python 3](https:\u002F\u002Finvasikode.com\u002Freturn-python\u002F).\n\nCukup sekian untuk kesempatan kali ini, semoga bermanfaat. See ya 👋\n","\u003Cp>Write something here\nDalam pemrograman python, fungsi merupakan kunci dari terbentuknya program yang besar. Bahkan hampir mustahil rasanya membuat program kompleks tanpa menggunakan fungsi ini. Oleh karena itulah sangat penting untuk memahami konsep fungsi, bukan hanya pada Python saja namun juga bahasa lainnya.\u003C\u002Fp>\n\u003Cp>Nah pada kesempatan kali ini kita akan membahas tentang fungsi pada Python sekalian juga contoh kasusnya. Lanjutt..\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Fungsi atau dalam istilah pemrograman disebut dengan “function” merupakan blok kode yang digunakan untuk menyelesaikan masalah spesifik.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ffungsi-sub-program\u002F\">Baca lebih lanjut..\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"format-pembuatan-blok-fungsi-pada-pyhton\">Format Pembuatan Blok Fungsi pada Pyhton\u003C\u002Fh2>\n\u003Cp>Satu blok fungsi pada Python ditandai dengan keyword \u003Ccode>def\u003C\u002Fcode> yang menandakan definisi fungsi. Dilanjutkan dengan \u003Cstrong>identifier\u003C\u002Fstrong> atau nama fungsi dan bagian opsional yaitu \u003Cstrong>parameter\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>Secara umum format fungsi pada python terlihat seperti ini:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"def%20%3Cnama_fungsi%3E(%5Bparam_1%5D%2C%20%5Bparam_2%5D%2C%20%5Bparam_n%5D)%3A%0A%20%20%20%20%3Ctubuh_fungsi%3E\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>def &lt;nama_fungsi&gt;([param_1], [param_2], [param_n]):\n    &lt;tubuh_fungsi&gt;\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cul>\n\u003Cli>\u003Ccode>nama_fungsi\u003C\u002Fcode>: identifier yang digunakan untuk memanggil fungsi yang telah dibuat\u003C\u002Fli>\n\u003Cli>\u003Ccode>param_1\u003C\u002Fcode>, \u003Ccode>param_2\u003C\u002Fcode>, dst: parameter atau masukan yang diberikan pada fungsi (opsional)\u003C\u002Fli>\n\u003Cli>\u003Ccode>tubuh_fungsi\u003C\u002Fcode>: barisan kode yang akan dijalankan ketika fungsi dipanggil\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Ingat! indentasi pada python ini sangat berpengaruh\u003C\u002Fp>\n\u003Cp>Contoh fungsi yang benar 👍\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"def%20print_hello()%3A%0A%20%20%20%20print(%22Hello%20World!%22)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">def\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> print_hello\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">():\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Hello World!\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Contoh fungsi yang salah 👎\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"def%20print_hello()%3A%0Aprint(%22Hello%20World!%22)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">def\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> print_hello\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">():\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Hello World!\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Jadi jangan sampai lupa indentasinya, karena bisa-bisa berujung error 😫\u003C\u002Fp>\n\u003Ch2 id=\"pemanggilan-fungsi-pada-python\">Pemanggilan Fungsi pada Python\u003C\u002Fh2>\n\u003Cp>Fungsi pada Python tentu tidak dapat berdiri sendiri. Untuk menggunakannya tidak cukup hanya deklarasi saja, tetapi juga harus dilakukan pemanggilan.\u003C\u002Fp>\n\u003Cp>Untuk memanggil sebuah fungsi, kita dapat menuliskan identifier dari fungsi tersebut diikuti dengan tanda kurung buka dan tutup. Jika fungsi tersebut menerima parameter maka kita juga harus mengisikannya.\u003C\u002Fp>\n\u003Cp>Formatnya seperti ini:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3Cnama_fungsi%3E(%5Bparam_1%5D%2C%20%5Bparam_2%5D%2C%20%5Bparam_n%5D)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&lt;nama_fungsi&gt;([param_1], [param_2], [param_n])\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cul>\n\u003Cli>\u003Ccode>nama_fungsi\u003C\u002Fcode>: identifier dari fungsi yang dipanggil\u003C\u002Fli>\n\u003Cli>\u003Ccode>param\u003C\u002Fcode>: parameter yang diberikan pada fungsi untuk diproses (opsional sesuai kebutuhan fungsi)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Mungkin kode ini sudah tidak asing lagi ya…\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"print(%22Hello%20World%22)%0Aprint()%0Aprint(%22Belajar%20python%20bareng%20Inva%22)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Hello World\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Belajar python bareng Inva\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Hello%20World%0A%0ABelajar%20python%20bareng%20Inva\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Hello World\n\nBelajar python bareng Inva\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Sadar atau tidak, sebenarnya dengan menggunakan \u003Ccode>print\u003C\u002Fcode> statement ini kita sudah memanggil sebuah fungsi. Fungsi \u003Ccode>print\u003C\u002Fcode> ini menerima argumen opsional berupa string yang dapat diisi 1 nilai atau banyak nilai sekaligus atau bisa juga tidak diisi sama sekali.\u003C\u002Fp>\n\u003Ch2 id=\"contoh-kasus-penggunaan-fungsi\">Contoh Kasus Penggunaan Fungsi\u003C\u002Fh2>\n\u003Cp>Nah setelah tahu format pembuatan dan pemanggilan fungsi, sekarang kita akan coba membuat fungsi sendiri.\u003C\u002Fp>\n\u003Cp>Misal ada sebuah kasus, kita diminta untuk mencetak data siswa yang terdiri dari nama, umur, kelas, dan nilai akhir. Cukup sederhana ya, hanya memerlukan perintah \u003Ccode>print\u003C\u002Fcode> saja.\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"nama%20%3D%20%22Inva%22%0Aumur%20%3D%2018%0Akelas%20%3D%20%2212%20MIPA%22%0Anilai%20%3D%2094%0A%0Aprint(%22Nama%20%20%3A%22%2C%20nama)%0Aprint(%22Umur%20%20%3A%22%2C%20umur%2C%20%22tahun%22)%0Aprint(%22Kelas%20%3A%22%2C%20kelas)%0Aprint(%22Nilai%20%3A%22%2C%20nilai)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \"Inva\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">umur \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 18\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">kelas \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \"12 MIPA\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nilai \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 94\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Nama  :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, nama)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Umur  :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, umur, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"tahun\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Kelas :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, kelas)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Nilai :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, nilai)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Nama%20%20%3A%20Inva%0AUmur%20%20%3A%2018%20tahun%0AKelas%20%3A%2012%20MIPA%0ANilai%20%3A%2094\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Nama  : Inva\nUmur  : 18 tahun\nKelas : 12 MIPA\nNilai : 94\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Sejauh ini aman tidak ada kendala. Sekarang masalah lainnya muncul, bagaimana dengan data siswa yang lain? Semisal di kelas tersebut ada 30 siswa, kalau kita menulis kode tersebut sebanyak 30 kali bayangkan saja berapa baris kode yang harus dibuat.\u003C\u002Fp>\n\u003Cp>Nah untuk mengakali masalah ini, kita bisa menggunakan fungsi. Sehingga cukup dengan memberi argumen maka data siswa akan tercetak.\u003C\u002Fp>\n\u003Cp>Fungsi yang akan dibuat kali ini bernama \u003Ccode>cetak_data\u003C\u002Fcode> dengan 4 argumen yaitu \u003Ccode>nama\u003C\u002Fcode>, \u003Ccode>umur\u003C\u002Fcode>, \u003Ccode>kelas\u003C\u002Fcode>, dan \u003Ccode>nilai\u003C\u002Fcode>. Tidak perlu menulis ulang, tinggal kita modifikasi sedikit kode yang sebelumnya menjadi seperti ini:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%23%20deklarasi%20fungsi%20%60cetak_data%60%0Adef%20cetak_data(nama%2C%20umur%2C%20kelas%2C%20nilai)%3A%0A%20%20%20%20print(%22Nama%20%20%3A%22%2C%20nama)%0A%20%20%20%20print(%22Umur%20%20%3A%22%2C%20umur%2C%20%22tahun%22)%0A%20%20%20%20print(%22Kelas%20%3A%22%2C%20kelas)%0A%20%20%20%20print(%22Nilai%20%3A%22%2C%20nilai)%0A%20%20%20%20print()%20%23%20tambah%20baris%20kosong%0A%0A%23%20memanggil%20fungsi%20%60cetak_data%60%0Acetak_data(%22Inva%22%2C%2018%2C%20%2212%20MIPA%22%2C%2094)%0Acetak_data(%22Adi%22%2C%2017%2C%20%2211%20IPS%22%2C%2080)%0Acetak_data(%22Dita%22%2C%2017%2C%20%2210%20BHS%22%2C%20100)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># deklarasi fungsi `cetak_data`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">def\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> cetak_data\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(nama, umur, kelas, nilai):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Nama  :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, nama)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Umur  :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, umur, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"tahun\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Kelas :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, kelas)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Nilai :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, nilai)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># tambah baris kosong\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># memanggil fungsi `cetak_data`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Inva\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">18\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"12 MIPA\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">94\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Adi\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">17\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"11 IPS\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">80\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Dita\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">17\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"10 BHS\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">100\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"Nama%20%20%3A%20Inva%0AUmur%20%20%3A%2018%20tahun%0AKelas%20%3A%2012%20MIPA%0ANilai%20%3A%2094%0A%0ANama%20%20%3A%20Adi%0AUmur%20%20%3A%2017%20tahun%0AKelas%20%3A%2011%20IPS%0ANilai%20%3A%2080%0A%0ANama%20%20%3A%20Dita%0AUmur%20%20%3A%2017%20tahun%0AKelas%20%3A%2010%20BHS%0ANilai%20%3A%20100\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>Nama  : Inva\nUmur  : 18 tahun\nKelas : 12 MIPA\nNilai : 94\n\nNama  : Adi\nUmur  : 17 tahun\nKelas : 11 IPS\nNilai : 80\n\nNama  : Dita\nUmur  : 17 tahun\nKelas : 10 BHS\nNilai : 100\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Nah jadi lebih singkat kan, tidak perlu memanggil \u003Ccode>print\u003C\u002Fcode> berkali-kali. Selain itu kode yang dibuat juga lebih mudah dibaca. Tapi apa yang sebenarnya terjadi?\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%23%20deklarasi%20fungsi%20%60cetak_data%60%0Adef%20cetak_data(nama%2C%20umur%2C%20kelas%2C%20nilai)%3A%0A%20%20%20%20print(%22Nama%20%20%3A%22%2C%20nama)%0A%20%20%20%20print(%22Umur%20%20%3A%22%2C%20umur%2C%20%22tahun%22)%0A%20%20%20%20print(%22Kelas%20%3A%22%2C%20kelas)%0A%20%20%20%20print(%22Nilai%20%3A%22%2C%20nilai)%0A%20%20%20%20print()%20%23%20tambah%20baris%20kosong%0A...\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># deklarasi fungsi `cetak_data`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">def\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> cetak_data\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(nama, umur, kelas, nilai):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Nama  :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, nama)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Umur  :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, umur, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"tahun\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Kelas :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, kelas)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Nilai :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, nilai)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># tambah baris kosong\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">...\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Pertama kita melakukan deklarasi fungsi dengan nama \u003Ccode>cetak_data\u003C\u002Fcode> dan memberinya 4 variable parameter. Parameter ini bekerja selayaknya variable pada umumnya, yang membedakan hanya pengisiannya saja. Variable parameter ini hanya bisa (dan harus) diisi ketika pemanggilan fungsi.\u003C\u002Fp>\n\u003Cp>Pada tubuh fungsi \u003Ccode>cetak_data\u003C\u002Fcode> kita menuliskan logika sesuai dari tujuan awal, yaitu mencetak data siswa. Nah data siswa yang dicetak (nama, umur, kelas, dan nilai) ini berasal dari variable parameter yang sebelumnya sudah disediakan.\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"...%0A%23%20memanggil%20fungsi%20%60cetak_data%60%0Acetak_data(%22Inva%22%2C%2018%2C%20%2212%20MIPA%22%2C%2094)%0Acetak_data(%22Adi%22%2C%2017%2C%20%2211%20IPS%22%2C%2080)%0Acetak_data(%22Dita%22%2C%2017%2C%20%2210%20BHS%22%2C%20100)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>...\n# memanggil fungsi `cetak_data`\ncetak_data(\"Inva\", 18, \"12 MIPA\", 94)\ncetak_data(\"Adi\", 17, \"11 IPS\", 80)\ncetak_data(\"Dita\", 17, \"10 BHS\", 100)\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Lanjut ke bagian pemanggilan. Di sini kita memanggil fungsi \u003Ccode>cetak_data\u003C\u002Fcode> dengan mengisikan semua parameter yang ada. Yang perlu diperhatikan di sini adalah urutan pengisian parameter. Karena pada bagian deklarasi kita menyediakan parameter dengan urutan \u003Ccode>nama\u003C\u002Fcode>, \u003Ccode>umur\u003C\u002Fcode>, \u003Ccode>kelas\u003C\u002Fcode>, \u003Ccode>nilai\u003C\u002Fcode> maka pengisian parameter juga harus urut. Jumlah parameter yang diberikan juga tidak boleh lebih atau kurang dari yang sudah dideklarasikan sebelumnya.\u003C\u002Fp>\n\u003Cp>Ketika fungsi dipanggil, maka parameter pada fungsi akan terisi dan tubuh fungsi akan dieksekusi sesuai logika dan sesuai data yang sudah diberikan sebagai parameter. Sampai disini fungsi telah selesai dijalankan.\u003C\u002Fp>\n\u003Ch2 id=\"apa-saja-yang-bisa-dilakukan-dengan-fungsi\">Apa Saja yang Bisa Dilakukan dengan Fungsi?\u003C\u002Fh2>\n\u003Cp>Tidak terbatas dengan perintah print saja. Pada tubuh fungsi ini kita dapat menempatkan kode python apa saja, asalkan valid dan sesuai logika. Deklarasi \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Fpenulisan-dan-penggunaan-variable-python\u002F\">variable\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ffor-loop-python\u002F\">perulangan\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Fif-else-python\u002F\">percabangan\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Fternary-operator-python\u002F\">ternary\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Flist-comprehension-pyhton\u002F\">list comprehension\u003C\u002Fa> semua bisa dilakukan. Karena hal ini lah fungsi juga biasa disebut dengan sub prgram. Ini karena setiap fungsi bisa bekerja seperti program masing-masing.\u003C\u002Fp>\n\u003Cp>Untuk demonstrasi saja, mari kita tambahkan sedikit percabangan pada kode yang sebelumnya sudah dibuat.\u003C\u002Fp>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%23%20deklarasi%20fungsi%20%60cetak_data%60%0Adef%20cetak_data(nama%2C%20umur%2C%20kelas%2C%20nilai)%3A%0A%20%20%20%20%23%20buat%20variable%20predikat%20nilai%0A%20%20%20%20predikat%20%3D%20%22%22%0A%20%20%20%20if%20nilai%20%3E%2094%3A%0A%20%20%20%20%20%20%20%20predikat%20%3D%20%22A%22%0A%20%20%20%20elif%20nilai%20%3E%2082%3A%0A%20%20%20%20%20%20%20%20predikat%20%3D%20%22B%22%0A%20%20%20%20elif%20nilai%20%3E%2072%3A%0A%20%20%20%20%20%20%20%20predikat%20%3D%20%22C%22%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20predikat%20%3D%20%22D%22%0A%0A%20%20%20%20print(%22Nama%20%20%20%20%20%3A%22%2C%20nama)%0A%20%20%20%20print(%22Umur%20%20%20%20%20%3A%22%2C%20umur%2C%20%22tahun%22)%0A%20%20%20%20print(%22Kelas%20%20%20%20%3A%22%2C%20kelas)%0A%20%20%20%20print(%22Nilai%20%20%20%20%3A%22%2C%20nilai)%0A%20%20%20%20print(%22Predikat%20%3A%22%2C%20predikat)%0A%20%20%20%20print()%20%23%20tambah%20baris%20kosong%0A%0A%23%20memanggil%20fungsi%20%60cetak_data%60%0Acetak_data(%22Inva%22%2C%2018%2C%20%2212%20MIPA%22%2C%2094)%0Acetak_data(%22Adi%22%2C%2017%2C%20%2211%20IPS%22%2C%2080)%0Acetak_data(%22Dita%22%2C%2017%2C%20%2210%20BHS%22%2C%20100)%0Acetak_data(%22Budi%22%2C%2018%2C%20%2212%20MIPA%22%2C%2068)\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># deklarasi fungsi `cetak_data`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">def\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> cetak_data\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(nama, umur, kelas, nilai):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # buat variable predikat nilai\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    predikat \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \"\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> nilai \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">>\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 94\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        predikat \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \"A\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    elif\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> nilai \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">>\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 82\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        predikat \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \"B\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    elif\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> nilai \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">>\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 72\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        predikat \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \"C\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    else\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        predikat \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \"D\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Nama     :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, nama)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Umur     :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, umur, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"tahun\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Kelas    :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, kelas)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Nilai    :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, nilai)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Predikat :\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, predikat)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() \u003C\u002Fspan>\u003Cspan style=\"color:#6A737D\"># tambah baris kosong\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># memanggil fungsi `cetak_data`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Inva\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">18\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"12 MIPA\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">94\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Adi\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">17\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"11 IPS\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">80\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Dita\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">17\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"10 BHS\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">100\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Budi\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">18\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"12 MIPA\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">68\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Penasaran outputnya? Coba jalankan sendiri ya 😉\u003C\u002Fp>\n\u003Cp>Selain bisa menampung semua kode python, tubuh fungsi ini juga memiliki beberapa statement dan keyword khusus yang hanya dapat digunakan didalam scope fungsi. Beberapa diantaranya adalah \u003Ccode>return\u003C\u002Fcode> dan \u003Ccode>pass\u003C\u002Fcode> yang akan kita bahas pada kesempatan selanjutnya.\u003C\u002Fp>\n\u003Ch2 id=\"selanjutnya-apa\">Selanjutnya apa?\u003C\u002Fh2>\n\u003Cp>Setelah berkenalam dengan fungsi, pada kesempatan selanjutnya kita akan membahas tentang salah satu keyword khusus yang ada pada fungsi, yaitu \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Freturn-python\u002F\">return statement pada Python 3\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Cukup sekian untuk kesempatan kali ini, semoga bermanfaat. See ya 👋\u003C\u002Fp>\n","",[190,203,216,229,242,263],{"id":191,"title":192,"title_en":21,"slug":193,"excerpt":194,"excerpt_en":21,"has_translation":15,"published_at":195,"reading_time":111,"hidden_from_listing":15,"tags":196,"thumbnail_image":21,"og_image":198,"series":199,"authors":200},133,"Python Strings: the Badge That Only Worked for One Name","python-strings","The badge script printed the right name for the person who wrote it and the wrong name for everybody else. Slicing counts characters, and a name is words.","2026-10-28T13:00:00.000Z",[82,197],"string","\u002Fog\u002Fpython-strings.png",{"id":176,"title":177,"title_en":178,"slug":179},[201],{"authors_id":202},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},{"id":204,"title":205,"title_en":21,"slug":206,"excerpt":207,"excerpt_en":21,"has_translation":15,"published_at":208,"reading_time":111,"hidden_from_listing":15,"tags":209,"thumbnail_image":21,"og_image":211,"series":212,"authors":213},132,"Python Tuples: Why All Three Points Are the Same Point","python-tuples","Three points walk into a loop and come out identical. The list was never copied three times; the name was. A tuple makes that bug impossible.","2026-10-28T12:00:00.000Z",[82,210],"tuple","\u002Fog\u002Fpython-tuples.png",{"id":176,"title":177,"title_en":178,"slug":179},[214],{"authors_id":215},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},{"id":217,"title":218,"title_en":21,"slug":219,"excerpt":220,"excerpt_en":21,"has_translation":15,"published_at":221,"reading_time":111,"hidden_from_listing":15,"tags":222,"thumbnail_image":21,"og_image":224,"series":225,"authors":226},131,"Python Sets: the Duplicate That Keeps Coming Back","python-sets","A de-duplication loop that works on clean data leaves four tags where there should be two. The bug is case, and the fix is a `set`.","2026-10-28T11:00:00.000Z",[82,223],"set","\u002Fog\u002Fpython-sets.png",{"id":176,"title":177,"title_en":178,"slug":179},[227],{"authors_id":228},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},{"id":230,"title":231,"title_en":21,"slug":232,"excerpt":233,"excerpt_en":21,"has_translation":15,"published_at":234,"reading_time":111,"hidden_from_listing":15,"tags":235,"thumbnail_image":21,"og_image":237,"series":238,"authors":239},130,"Python Dictionaries: the Key That Isn't There","python-dictionary","A word counter dies the first time it meets a word twice. The fix is one line; what takes longer is knowing which of a dict's three lookups to reach for.","2026-10-28T10:00:00.000Z",[82,236],"dictionary","\u002Fog\u002Fpython-dictionary.png",{"id":176,"title":177,"title_en":178,"slug":179},[240],{"authors_id":241},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},{"id":243,"title":244,"title_en":245,"slug":246,"excerpt":247,"excerpt_en":248,"has_translation":12,"published_at":249,"reading_time":14,"hidden_from_listing":15,"tags":250,"thumbnail_image":21,"og_image":257,"series":258,"authors":260},129,"Biar RAG nggak kena 504: pisahin jalur query dan ingestion","So Your RAG Stops Hitting 504: Split the Query Path From Ingestion","rag-pisah-jalur-query-dan-ingestion","Satu service RAG yang merangkap parsing dan menjawab kueri bakal tumbang pas ada yang upload PDF 200 halaman. Obatnya dua jalur dan satu queue.","One RAG service that both parses uploads and answers queries will fall over the moment someone uploads a 200-page PDF. The cure is two paths and one queue.","2026-10-22T01:30:00.000Z",[251,252,253,254,255,256],"rag","cloud-run","cloud-tasks","gcp","serverless","arsitektur","\u002Fog\u002Frag-pisah-jalur-query-dan-ingestion.png",{"id":259,"title":35,"title_en":36,"slug":37},8,[261],{"authors_id":262},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},{"id":264,"title":265,"title_en":266,"slug":267,"excerpt":268,"excerpt_en":269,"has_translation":12,"published_at":270,"reading_time":111,"hidden_from_listing":15,"tags":271,"thumbnail_image":21,"og_image":278,"series":279,"authors":280},128,"Linear atau graf: cara mengatur banyak agent tanpa loop abadi","Linear or Graph: How to Run Many Agents Without an Eternal Loop","multi-agen-linear-atau-grafik","Satu agent dengan dua puluh tool gampang kacau. Begitu beberapa agent saling revisi, kamu butuh graf yang mendukung cycle dan angka yang membuatnya berhenti.","One agent with twenty tools gets messy fast. Once several agents revise each other, you need a graph that allows cycles and a number that makes it stop.","2026-10-21T16:05:00.000Z",[272,273,274,275,276,277],"multi-agent","langgraph","autogen","orkestrasi","checkpoint","llm","\u002Fog\u002Fmulti-agen-linear-atau-grafik.png",{"id":259,"title":35,"title_en":36,"slug":37},[281],{"authors_id":282},{"id":99,"name":100,"slug":101,"role":102,"profile_picture":21},[284,288,291,294,297],{"text":285,"depth":286,"id":287},"Format Pembuatan Blok Fungsi pada Pyhton",2,"format-pembuatan-blok-fungsi-pada-pyhton",{"text":289,"depth":286,"id":290},"Pemanggilan Fungsi pada Python","pemanggilan-fungsi-pada-python",{"text":292,"depth":286,"id":293},"Contoh Kasus Penggunaan Fungsi","contoh-kasus-penggunaan-fungsi",{"text":295,"depth":286,"id":296},"Apa Saja yang Bisa Dilakukan dengan Fungsi?","apa-saja-yang-bisa-dilakukan-dengan-fungsi",{"text":298,"depth":286,"id":299},"Selanjutnya apa?","selanjutnya-apa",1793295834093]