[{"data":1,"prerenderedAt":189},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-fungsi-dan-sub-program-pada-python-with-latest":41},{"navigations":4},[5,20],{"collection":6,"item":7},"series",{"__typename":6,"title":8,"slug":9,"children_series":10},"Artikel","all",[11,14,17],{"title":12,"slug":13},"Algoritma dan Struktur Data","algoritma-struktur-data",{"title":15,"slug":16},"Konsep Dasar Pemrograman","konsep-dasar-pemrograman",{"title":18,"slug":19},"Kecerdasan Artifisial","kecerdasan-artifisial",{"collection":6,"item":21},{"__typename":6,"title":22,"slug":23,"children_series":24},"Tutorial","tutorial",[25,28,31,34],{"title":26,"slug":27},"Belajar Java","belajar-java",{"title":29,"slug":30},"Belajar Pascal","belajar-pascal",{"title":32,"slug":33},"Belajar Python","belajar-python",{"title":35,"slug":36},"Belajar Golang","belajar-golang",{"name":38,"url":39,"show":40},"CC BY-SA","https://creativecommons.org/licenses/by-sa/4.0/",false,{"article":42,"renderedBody":119,"renderedTakeaway":120,"latestArticles":121,"toc":172},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":54,"takeway":55,"body":56,"authors":57,"series":63},"98","Fungsi dan Sub Program pada Python","fungsi-dan-sub-program-pada-python","Fungsi atau dalam istilah pemrograman disebut dengan “function” merupakan blok kode yang digunakan untuk menyelesaikan masalah spesifik.","2022-09-06T03:33:06.000Z",{"id":49},"7c341146-fd71-44a9-9685-3d9514f997c8",[51,52,53],"python","fungsi","sub-program",5,null,"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://invasikode.com/fungsi-sub-program/)\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://invasikode.com/penulisan-dan-penggunaan-variable-python/), [perulangan](https://invasikode.com/for-loop-python/), [percabangan](https://invasikode.com/if-else-python/), [ternary](https://invasikode.com/ternary-operator-python/), [list comprehension](https://invasikode.com/list-comprehension-pyhton/) 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://invasikode.com/return-python/).\n\nCukup sekian untuk kesempatan kali ini, semoga bermanfaat. See ya 👋",[58],{"authors_id":59},{"name":60,"slug":61,"role":62,"profile_picture":55},"Daffa Izzuddin","izzudd","Writer",{"id":64,"title":65,"slug":66,"articles":67,"parent_series":97},"20","Pemrograman Fungsional dengan Python","python-pemrograman-fungsional",[68,71,80,89],{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":69,"tags":70},{"id":49},[51,52,53],{"id":72,"title":73,"slug":74,"excerpt":75,"thumbnail_image":76,"tags":78},"99","Return Statement pada Python","return-statement-pada-python","Return statement memungkinkan kita mengembalikan nilai yang sudah diproses pada fungsi ke pemanggil.",{"id":77},"84ba6cca-3cf8-4eec-a71b-841c9beec237",[51,52,79],"syntax",{"id":81,"title":82,"slug":83,"excerpt":84,"thumbnail_image":85,"tags":87},"100","Pass Statement pada Python","pass-statement-pada-python","pass statement pada python merupakan statement spesial yang hanya bisa digunakan di dalam compound statement",{"id":86},"88e549d9-dca0-408d-9eae-4763fcf32848",[51,79,88],"struktur-kontrol",{"id":90,"title":91,"slug":92,"excerpt":93,"thumbnail_image":94,"tags":96},"101","Default Argument dan Keyword Argument pada Python","default-argument-pada-python","Default argument merupakan argument fungsi yang memiliki nilai asal, dengan ini kita bisa membuat argument opsional",{"id":95},"ee745ec6-eddf-4d26-bb05-2edb858286b1",[51,52,79],{"id":98,"title":32,"slug":33,"parent_series":99,"children_series":101},"10",{"id":100,"title":22,"slug":23,"parent_series":55},"1",[102,106,110,114,118],{"id":103,"title":104,"slug":105,"cover_image":55},"16","Berkenalan dengan Bahasa Python","python-intro",{"id":107,"title":108,"slug":109,"cover_image":55},"17","Variabel, Tipe Data, dan Operasi","python-variabel-tipe-data",{"id":111,"title":112,"slug":113,"cover_image":55},"18","Menggunakan Script Python","python-pemrograman-dengan-script",{"id":115,"title":116,"slug":117,"cover_image":55},"19","Struktur Kontrol","python-struktur-kontrol",{"id":64,"title":65,"slug":66,"cover_image":55},"\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/p>\n\u003Cp>Nah pada kesempatan kali ini kita akan membahas tentang fungsi pada Python sekalian juga contoh kasusnya. Lanjutt..\u003C/p>\n\u003Cblockquote>\n\u003Cp>Fungsi atau dalam istilah pemrograman disebut dengan “function” merupakan blok kode yang digunakan untuk menyelesaikan masalah spesifik.\u003C/p>\n\u003Cp>\u003Ca href=\"https://invasikode.com/fungsi-sub-program/\">Baca lebih lanjut..\u003C/a>\u003C/p>\n\u003C/blockquote>\n\u003Ch2 id=\"format-pembuatan-blok-fungsi-pada-pyhton\">Format Pembuatan Blok Fungsi pada Pyhton\u003C/h2>\n\u003Cp>Satu blok fungsi pada Python ditandai dengan keyword \u003Ccode>def\u003C/code> yang menandakan definisi fungsi. Dilanjutkan dengan \u003Cstrong>identifier\u003C/strong> atau nama fungsi dan bagian opsional yaitu \u003Cstrong>parameter\u003C/strong>.\u003C/p>\n\u003Cp>Secara umum format fungsi pada python terlihat seperti ini:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cul>\n\u003Cli>\u003Ccode>nama_fungsi\u003C/code>: identifier yang digunakan untuk memanggil fungsi yang telah dibuat\u003C/li>\n\u003Cli>\u003Ccode>param_1\u003C/code>, \u003Ccode>param_2\u003C/code>, dst: parameter atau masukan yang diberikan pada fungsi (opsional)\u003C/li>\n\u003Cli>\u003Ccode>tubuh_fungsi\u003C/code>: barisan kode yang akan dijalankan ketika fungsi dipanggil\u003C/li>\n\u003C/ul>\n\u003Cp>Ingat! indentasi pada python ini sangat berpengaruh\u003C/p>\n\u003Cp>Contoh fungsi yang benar 👍\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003Cspan style=\"color:#B392F0\"> print_hello\u003C/span>\u003Cspan style=\"color:#E1E4E8\">():\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Hello World!\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Contoh fungsi yang salah 👎\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003Cspan style=\"color:#B392F0\"> print_hello\u003C/span>\u003Cspan style=\"color:#E1E4E8\">():\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Hello World!\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Jadi jangan sampai lupa indentasinya, karena bisa-bisa berujung error 😫\u003C/p>\n\u003Ch2 id=\"pemanggilan-fungsi-pada-python\">Pemanggilan Fungsi pada Python\u003C/h2>\n\u003Cp>Fungsi pada Python tentu tidak dapat berdiri sendiri. Untuk menggunakannya tidak cukup hanya deklarasi saja, tetapi juga harus dilakukan pemanggilan.\u003C/p>\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/p>\n\u003Cp>Formatnya seperti ini:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cul>\n\u003Cli>\u003Ccode>nama_fungsi\u003C/code>: identifier dari fungsi yang dipanggil\u003C/li>\n\u003Cli>\u003Ccode>param\u003C/code>: parameter yang diberikan pada fungsi untuk diproses (opsional sesuai kebutuhan fungsi)\u003C/li>\n\u003C/ul>\n\u003Cp>Mungkin kode ini sudah tidak asing lagi ya…\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Hello World\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">()\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Belajar python bareng Inva\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Output:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Sadar atau tidak, sebenarnya dengan menggunakan \u003Ccode>print\u003C/code> statement ini kita sudah memanggil sebuah fungsi. Fungsi \u003Ccode>print\u003C/code> ini menerima argumen opsional berupa string yang dapat diisi 1 nilai atau banyak nilai sekaligus atau bisa juga tidak diisi sama sekali.\u003C/p>\n\u003Ch2 id=\"contoh-kasus-penggunaan-fungsi\">Contoh Kasus Penggunaan Fungsi\u003C/h2>\n\u003Cp>Nah setelah tahu format pembuatan dan pemanggilan fungsi, sekarang kita akan coba membuat fungsi sendiri.\u003C/p>\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/code> saja.\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Inva\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">umur \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 18\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">kelas \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"12 MIPA\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nilai \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 94\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Nama  :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nama)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Umur  :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, umur, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"tahun\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Kelas :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, kelas)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Nilai :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nilai)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Output:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\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/p>\n\u003Cp>Nah untuk mengakali masalah ini, kita bisa menggunakan fungsi. Sehingga cukup dengan memberi argumen maka data siswa akan tercetak.\u003C/p>\n\u003Cp>Fungsi yang akan dibuat kali ini bernama \u003Ccode>cetak_data\u003C/code> dengan 4 argumen yaitu \u003Ccode>nama\u003C/code>, \u003Ccode>umur\u003C/code>, \u003Ccode>kelas\u003C/code>, dan \u003Ccode>nilai\u003C/code>. Tidak perlu menulis ulang, tinggal kita modifikasi sedikit kode yang sebelumnya menjadi seperti ini:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">def\u003C/span>\u003Cspan style=\"color:#B392F0\"> cetak_data\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(nama, umur, kelas, nilai):\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Nama  :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nama)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Umur  :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, umur, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"tahun\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Kelas :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, kelas)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Nilai :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nilai)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">() \u003C/span>\u003Cspan style=\"color:#6A737D\"># tambah baris kosong\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># memanggil fungsi `cetak_data`\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Inva\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">18\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"12 MIPA\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">94\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Adi\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">17\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"11 IPS\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">80\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Dita\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">17\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"10 BHS\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">100\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Output:\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Nah jadi lebih singkat kan, tidak perlu memanggil \u003Ccode>print\u003C/code> berkali-kali. Selain itu kode yang dibuat juga lebih mudah dibaca. Tapi apa yang sebenarnya terjadi?\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">def\u003C/span>\u003Cspan style=\"color:#B392F0\"> cetak_data\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(nama, umur, kelas, nilai):\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Nama  :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nama)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Umur  :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, umur, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"tahun\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Kelas :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, kelas)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Nilai :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nilai)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">() \u003C/span>\u003Cspan style=\"color:#6A737D\"># tambah baris kosong\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">...\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Pertama kita melakukan deklarasi fungsi dengan nama \u003Ccode>cetak_data\u003C/code> 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/p>\n\u003Cp>Pada tubuh fungsi \u003Ccode>cetak_data\u003C/code> 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/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Lanjut ke bagian pemanggilan. Di sini kita memanggil fungsi \u003Ccode>cetak_data\u003C/code> 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/code>, \u003Ccode>umur\u003C/code>, \u003Ccode>kelas\u003C/code>, \u003Ccode>nilai\u003C/code> maka pengisian parameter juga harus urut. Jumlah parameter yang diberikan juga tidak boleh lebih atau kurang dari yang sudah dideklarasikan sebelumnya.\u003C/p>\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/p>\n\u003Ch2 id=\"apa-saja-yang-bisa-dilakukan-dengan-fungsi\">Apa Saja yang Bisa Dilakukan dengan Fungsi?\u003C/h2>\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://invasikode.com/penulisan-dan-penggunaan-variable-python/\">variable\u003C/a>, \u003Ca href=\"https://invasikode.com/for-loop-python/\">perulangan\u003C/a>, \u003Ca href=\"https://invasikode.com/if-else-python/\">percabangan\u003C/a>, \u003Ca href=\"https://invasikode.com/ternary-operator-python/\">ternary\u003C/a>, \u003Ca href=\"https://invasikode.com/list-comprehension-pyhton/\">list comprehension\u003C/a> 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/p>\n\u003Cp>Untuk demonstrasi saja, mari kita tambahkan sedikit percabangan pada kode yang sebelumnya sudah dibuat.\u003C/p>\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/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C/span>\n    \u003C/div>\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/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\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/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">def\u003C/span>\u003Cspan style=\"color:#B392F0\"> cetak_data\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(nama, umur, kelas, nilai):\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # buat variable predikat nilai\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    predikat \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> nilai \u003C/span>\u003Cspan style=\"color:#F97583\">>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 94\u003C/span>\u003Cspan style=\"color:#E1E4E8\">:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        predikat \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"A\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    elif\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> nilai \u003C/span>\u003Cspan style=\"color:#F97583\">>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 82\u003C/span>\u003Cspan style=\"color:#E1E4E8\">:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        predikat \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"B\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    elif\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> nilai \u003C/span>\u003Cspan style=\"color:#F97583\">>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 72\u003C/span>\u003Cspan style=\"color:#E1E4E8\">:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        predikat \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"C\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    else\u003C/span>\u003Cspan style=\"color:#E1E4E8\">:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        predikat \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"D\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Nama     :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nama)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Umur     :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, umur, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"tahun\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Kelas    :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, kelas)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Nilai    :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nilai)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Predikat :\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, predikat)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">() \u003C/span>\u003Cspan style=\"color:#6A737D\"># tambah baris kosong\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># memanggil fungsi `cetak_data`\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Inva\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">18\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"12 MIPA\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">94\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Adi\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">17\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"11 IPS\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">80\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Dita\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">17\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"10 BHS\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">100\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_data(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Budi\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">18\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"12 MIPA\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">68\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Penasaran outputnya? Coba jalankan sendiri ya 😉\u003C/p>\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/code> dan \u003Ccode>pass\u003C/code> yang akan kita bahas pada kesempatan selanjutnya.\u003C/p>\n\u003Ch2 id=\"selanjutnya-apa\">Selanjutnya apa?\u003C/h2>\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://invasikode.com/return-python/\">return statement pada Python 3\u003C/a>.\u003C/p>\n\u003Cp>Cukup sekian untuk kesempatan kali ini, semoga bermanfaat. See ya 👋\u003C/p>\n","",[122,135,150,162],{"id":123,"title":124,"slug":125,"excerpt":126,"thumbnail_image":127,"tags":129},"46","Mengapa C Mulai Ditinggalkan: Duel Filosofi Keamanan Rust vs Kesederhanaan Zig","mengapa-c-mulai-ditinggalkan-duel-filosofi-rust-vs-zig","Pernah denger kalau sekitar 70% celah keamanan kritis software modern itu asalnya dari bahasa C? Iya, bahasa yang udah jadi fondasi internet ini 😅. Yuk, kita bedah duel filosofi Rust vs Zig dan cari tahu mana yang pas buat proyek kalian!",{"id":128},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[130,131,132,133,134],"system-programming","rust","zig","c","memory-safety",{"id":136,"title":137,"slug":138,"excerpt":139,"thumbnail_image":140,"tags":142},"45","Rate Limiting Algorithms: Token Bucket vs Leaky Bucket vs Sliding Window","rate-limiting-algorithms-token-bucket-leaky-bucket-sliding-window","Udah tahu kenapa *rate limiting* itu wajib, tapi masih bingung beda Token Bucket, Leaky Bucket, Fixed Window, dan Sliding Window? Yuk, kita adu empat algoritma ini bareng-bareng dan cari tahu mana yang paling pas buat API kalian!",{"id":141},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[143,144,145,146,147,148,149],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":151,"title":152,"slug":153,"excerpt":154,"thumbnail_image":155,"tags":157},"44","Transactional Outbox Pattern: Solusi Konsistensi Database dan Message Broker Tanpa 2PC","transactional-outbox-pattern-konsistensi-database-message-broker","Pernah nggak kalian lihat pesanan udah masuk database, tapi email konfirmasinya nggak pernah kekirim? Itu gejala *dual-write problem*. Yuk, kita bedah Transactional Outbox Pattern biar data dan *event* kalian nggak lagi berselisih paham!",{"id":156},"e3c617fd-1486-4b82-b937-94fbec846c77",[143,158,148,159,160,144,161],"microservices","database","message-broker","postgresql",{"id":163,"title":164,"slug":165,"excerpt":166,"thumbnail_image":167,"tags":169},"43","Dead Letter Queue (DLQ) & Retry Policy: Menyelamatkan Pesan Nyasar di RabbitMQ Tanpa Bikin Worker Macet","dead-letter-queue-retry-policy-rabbitmq-resilient-messaging","Pernah nggak sih, *worker* kalian nolak satu pesan terus-terusan sampai CPU melonjak 100%? Itu namanya *poison message loop*, jebakan klasik di RabbitMQ. Yuk, kita bahas cara pasang *retry policy* dan *dead letter queue* yang bener!",{"id":168},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[170,160,143,148,158,171,51],"rabbitmq","async",[173,177,180,183,186],{"text":174,"depth":175,"id":176},"Format Pembuatan Blok Fungsi pada Pyhton",2,"format-pembuatan-blok-fungsi-pada-pyhton",{"text":178,"depth":175,"id":179},"Pemanggilan Fungsi pada Python","pemanggilan-fungsi-pada-python",{"text":181,"depth":175,"id":182},"Contoh Kasus Penggunaan Fungsi","contoh-kasus-penggunaan-fungsi",{"text":184,"depth":175,"id":185},"Apa Saja yang Bisa Dilakukan dengan Fungsi?","apa-saja-yang-bisa-dilakukan-dengan-fungsi",{"text":187,"depth":175,"id":188},"Selanjutnya apa?","selanjutnya-apa",1791045067007]