[{"data":1,"prerenderedAt":198},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-default-argument-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},"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","2024-02-12T14:01:05.000Z",{"id":49},"ee745ec6-eddf-4d26-bb05-2edb858286b1",[51,52,53],"python","fungsi","syntax",3,null,"Selama ini kita tahu bahwa ketika fungsi dipanggil maka seluruh argumen yang diperlukan harus diberikan. Tapi apa jadinya jika kita mendefinisikan nilai parameter tersebut ketika fungsi dibuat? Memangnya bisa?\n\nTentu bisa. Dalam python pemberian hal ini disebut default argument.\n\n## Default Argument\n\nPython memungkinakn pemberian nilai default ketika membuat argumen sebuah fungsi. Ketika fungsi dipanggil tanpa diberi argumen nantinya nilai inilah yang akan menggantikan nilainya.\n\nPembuatan default argument dilakukan seperti melakukan assignment pada umumnya, hanya saja letaknya ada pada deklarasi fungsi.\n\nBerikut ini adalah contoh fungsi dengan default argument:\n\n```python\ndef cetak_salam(salam='Halo', nama='Inva'):\n  print(salam, nama)\n```\n\nKarena sudah punya default argument fungsi tersebut bisa dipanggil tanpa diberi argumen sama sekali. Seperti ini:\n\n```python\ncetak_salam() # output: \"Halo Inva\"\ncetak_salam('Selamat siang', 'Budi') # output: \"Selamat siang Budi\"\n```\n\nNah sekarang bagaimana jika kita ingin mengganti argument `nama` tanpa mengganti argument `salam`? Tentu bisa, untuk melakukan ini kita perlu memberikan **keyword argument**.\n\n## Keyword Argument\n\nKeyword argument adalah cara untuk memberi nilai pada argument suatu fungsi dengan sekaligus menentukan nama argumennya.\n\nPenampakannya seperti ini:\n\n```python\ncetak_salam(nama='Budi') # output: \"Halo Budi\"\ncetak_salam(salam='Selamat datang') # output: \"Selamat datang Inva\"\n```\n\nDengan keyword argument ini kita dapat mengubah argumen sesuai kebutuhan kita saja. Argumen yang tidak diberikan nilai akan secara otomatis berisi nilai default yang sudah diberikan.\n\nPemberian keyword argument tidak harus sesuai dengan urutan argumennya. Kita bisa mengisikan nilai argumen dengan urutan apapun, selama nama argumen yang diberikan ada pada deklarasi fungsi.\n\n```python\n# Argumen tidak harus urut\ncetak_salam(nama='Budi', salam='Selamat siang') # output: \"Selamat siang Budi\"\n\n# Memberi argumen yang tidak ada pada deklarasi\ncetak_salam(nama='Budi', salam='Selamat siang', hari='senin') # output: error\n```\n\n## Aturan Deklarasi dan Pengisian Argument\n\nTerdapat beberapa peraturan yang harus ditepati dalam membuat argumen fungsi pada python, diantaranya:\n\n### Default argument harus diletakkan setelah non-default argument\n\nSalah ❌\n\n```python\ndef nama_fungsi(arg1, arg2=128, arg3=64, arg4)\n  ...\n```\n\nBenar ✅\n\n```python\ndef nama_fungsi(arg1, arg4, arg2=128, arg3=64)\n  ...\n```\n\n### Keyword argument diberikan setelah semua positional argument diberi nilai\n\nSalah ❌\n\n```python\ndef nama_fungsi(arg1, arg2, arg3=64, arg4=128)\n  ...\n\nnama_fungsi(arg3=70, arg4=56, 30, 64)\nnama_fungsi(30, arg3=64, arg4=56)\n```\n\nBenar ✅\n\n```python\ndef nama_fungsi(arg1, arg2, arg3=64, arg4=128)\n  ...\n\nnama_fungsi(30, 64, arg3=70, arg4=56)\nnama_fungsi(30, 64, arg4=40, arg3=102)\nnama_fungsi(30, arg4=64, arg2=102)\n```\n\n### Satu argumen hanya bisa diisi satu kali\n\nSalah ❌\n\n```python\ndef nama_fungsi(arg1, arg2, arg3=64, arg4=128)\n  ...\n\nnama_fungsi(22, 34, arg1=70) # arg1 diisi 2 kali\nnama_fungsi(22, 34, arg3=70, arg3=12) # arg3 diisi 2 kali\n```\n\n## Kapan Harus Menggunakan Default Argument?\n\nPenggunaan default argument bisa jadi salah satu cara untuk mempercepat kita dalam menulis dan memahami kode. Dengan adanya default argument kita dapat **meminimalisir pengisian argument** dengan nilai yang sama secara berulang-ulang.\n\nDengan begitu kode kita akan lebih ringkas dan mudah dibaca.\n\nAda juga kasus ketika suatu argumen sebenarnya **tidak terlalu penting**, namun kita masih ingin membuatnya menjadi fleksibel, nah default argument ini akan sangat membantu.\n\nBahkan kebanyakan library python juga menggunakan default argument ini untuk memudahkan para programmer. Sebagai contoh, kita coba comot salah satu fungsi di library [numpy](https://numpy.org).\n\nIni signature fungsi untuk membuat array numpy:\n\n```python\nnumpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None)\n```\n\nKalu kita lihat di situ, hanya ada 1 argument saja yang menjadi positional argument (argument pertama) dan sisanya default argument semua.\n\nHal ini mungkin karena sang empunya numpy tahu kalau kita akan jarang menggunakan argument lainnya. Yah, jarang kan bukan berarti tidak pernah, maka sebagai opsi tetap harus diberikan.\n\n## Selanjutnya…\n\nCukup sekian untuk kesempatan kali ini, selanjutnya kita akan membahas tentang variable length argument pada python 3.\n\nSelamat ber-koding ria 👋",[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,77,85,94],{"id":69,"title":70,"slug":71,"excerpt":72,"thumbnail_image":73,"tags":75},"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.",{"id":74},"7c341146-fd71-44a9-9685-3d9514f997c8",[51,52,76],"sub-program",{"id":78,"title":79,"slug":80,"excerpt":81,"thumbnail_image":82,"tags":84},"99","Return Statement pada Python","return-statement-pada-python","Return statement memungkinkan kita mengembalikan nilai yang sudah diproses pada fungsi ke pemanggil.",{"id":83},"84ba6cca-3cf8-4eec-a71b-841c9beec237",[51,52,53],{"id":86,"title":87,"slug":88,"excerpt":89,"thumbnail_image":90,"tags":92},"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":91},"88e549d9-dca0-408d-9eae-4763fcf32848",[51,53,93],"struktur-kontrol",{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":95,"tags":96},{"id":49},[51,52,53],{"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>Selama ini kita tahu bahwa ketika fungsi dipanggil maka seluruh argumen yang diperlukan harus diberikan. Tapi apa jadinya jika kita mendefinisikan nilai parameter tersebut ketika fungsi dibuat? Memangnya bisa?\u003C/p>\n\u003Cp>Tentu bisa. Dalam python pemberian hal ini disebut default argument.\u003C/p>\n\u003Ch2 id=\"default-argument\">Default Argument\u003C/h2>\n\u003Cp>Python memungkinakn pemberian nilai default ketika membuat argumen sebuah fungsi. Ketika fungsi dipanggil tanpa diberi argumen nantinya nilai inilah yang akan menggantikan nilainya.\u003C/p>\n\u003Cp>Pembuatan default argument dilakukan seperti melakukan assignment pada umumnya, hanya saja letaknya ada pada deklarasi fungsi.\u003C/p>\n\u003Cp>Berikut ini adalah contoh fungsi dengan default argument:\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%20cetak_salam(salam%3D'Halo'%2C%20nama%3D'Inva')%3A%0A%20%20print(salam%2C%20nama)\" 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\"> cetak_salam\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(salam\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Halo'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, nama\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Inva'\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\">(salam, nama)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Karena sudah punya default argument fungsi tersebut bisa dipanggil tanpa diberi argumen sama sekali. 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=\"cetak_salam()%20%23%20output%3A%20%22Halo%20Inva%22%0Acetak_salam('Selamat%20siang'%2C%20'Budi')%20%23%20output%3A%20%22Selamat%20siang%20Budi%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:#E1E4E8\">cetak_salam() \u003C/span>\u003Cspan style=\"color:#6A737D\"># output: \"Halo Inva\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_salam(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Selamat siang'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Budi'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#6A737D\"># output: \"Selamat siang Budi\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Nah sekarang bagaimana jika kita ingin mengganti argument \u003Ccode>nama\u003C/code> tanpa mengganti argument \u003Ccode>salam\u003C/code>? Tentu bisa, untuk melakukan ini kita perlu memberikan \u003Cstrong>keyword argument\u003C/strong>.\u003C/p>\n\u003Ch2 id=\"keyword-argument\">Keyword Argument\u003C/h2>\n\u003Cp>Keyword argument adalah cara untuk memberi nilai pada argument suatu fungsi dengan sekaligus menentukan nama argumennya.\u003C/p>\n\u003Cp>Penampakannya 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=\"cetak_salam(nama%3D'Budi')%20%23%20output%3A%20%22Halo%20Budi%22%0Acetak_salam(salam%3D'Selamat%20datang')%20%23%20output%3A%20%22Selamat%20datang%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:#E1E4E8\">cetak_salam(\u003C/span>\u003Cspan style=\"color:#FFAB70\">nama\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Budi'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#6A737D\"># output: \"Halo Budi\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_salam(\u003C/span>\u003Cspan style=\"color:#FFAB70\">salam\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Selamat datang'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#6A737D\"># output: \"Selamat datang Inva\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Dengan keyword argument ini kita dapat mengubah argumen sesuai kebutuhan kita saja. Argumen yang tidak diberikan nilai akan secara otomatis berisi nilai default yang sudah diberikan.\u003C/p>\n\u003Cp>Pemberian keyword argument tidak harus sesuai dengan urutan argumennya. Kita bisa mengisikan nilai argumen dengan urutan apapun, selama nama argumen yang diberikan ada pada deklarasi fungsi.\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%20Argumen%20tidak%20harus%20urut%0Acetak_salam(nama%3D'Budi'%2C%20salam%3D'Selamat%20siang')%20%23%20output%3A%20%22Selamat%20siang%20Budi%22%0A%0A%23%20Memberi%20argumen%20yang%20tidak%20ada%20pada%20deklarasi%0Acetak_salam(nama%3D'Budi'%2C%20salam%3D'Selamat%20siang'%2C%20hari%3D'senin')%20%23%20output%3A%20error\" 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\"># Argumen tidak harus urut\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_salam(\u003C/span>\u003Cspan style=\"color:#FFAB70\">nama\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Budi'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">salam\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Selamat siang'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#6A737D\"># output: \"Selamat siang Budi\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Memberi argumen yang tidak ada pada deklarasi\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">cetak_salam(\u003C/span>\u003Cspan style=\"color:#FFAB70\">nama\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Budi'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">salam\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Selamat siang'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">hari\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'senin'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#6A737D\"># output: error\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch2 id=\"aturan-deklarasi-dan-pengisian-argument\">Aturan Deklarasi dan Pengisian Argument\u003C/h2>\n\u003Cp>Terdapat beberapa peraturan yang harus ditepati dalam membuat argumen fungsi pada python, diantaranya:\u003C/p>\n\u003Ch3 id=\"default-argument-harus-diletakkan-setelah-non-default-argument\">Default argument harus diletakkan setelah non-default argument\u003C/h3>\n\u003Cp>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%20nama_fungsi(arg1%2C%20arg2%3D128%2C%20arg3%3D64%2C%20arg4)%0A%20%20...\" 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\"> nama_fungsi\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(arg1, arg2\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">128\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, arg4)\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>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%20nama_fungsi(arg1%2C%20arg4%2C%20arg2%3D128%2C%20arg3%3D64)%0A%20%20...\" 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\"> nama_fungsi\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(arg1, arg4, arg2\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">128\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\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>\u003Ch3 id=\"keyword-argument-diberikan-setelah-semua-positional-argument-diberi-nilai\">Keyword argument diberikan setelah semua positional argument diberi nilai\u003C/h3>\n\u003Cp>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%20nama_fungsi(arg1%2C%20arg2%2C%20arg3%3D64%2C%20arg4%3D128)%0A%20%20...%0A%0Anama_fungsi(arg3%3D70%2C%20arg4%3D56%2C%2030%2C%2064)%0Anama_fungsi(30%2C%20arg3%3D64%2C%20arg4%3D56)\" 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\"> nama_fungsi\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(arg1, arg2, arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, arg4\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">128\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama_fungsi(\u003C/span>\u003Cspan style=\"color:#FFAB70\">arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">70\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg4\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">56\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">30\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama_fungsi(\u003C/span>\u003Cspan style=\"color:#79B8FF\">30\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg4\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">56\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>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%20nama_fungsi(arg1%2C%20arg2%2C%20arg3%3D64%2C%20arg4%3D128)%0A%20%20...%0A%0Anama_fungsi(30%2C%2064%2C%20arg3%3D70%2C%20arg4%3D56)%0Anama_fungsi(30%2C%2064%2C%20arg4%3D40%2C%20arg3%3D102)%0Anama_fungsi(30%2C%20arg4%3D64%2C%20arg2%3D102)\" 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\"> nama_fungsi\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(arg1, arg2, arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, arg4\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">128\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama_fungsi(\u003C/span>\u003Cspan style=\"color:#79B8FF\">30\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">70\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg4\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">56\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama_fungsi(\u003C/span>\u003Cspan style=\"color:#79B8FF\">30\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg4\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">40\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">102\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama_fungsi(\u003C/span>\u003Cspan style=\"color:#79B8FF\">30\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg4\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg2\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">102\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch3 id=\"satu-argumen-hanya-bisa-diisi-satu-kali\">Satu argumen hanya bisa diisi satu kali\u003C/h3>\n\u003Cp>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%20nama_fungsi(arg1%2C%20arg2%2C%20arg3%3D64%2C%20arg4%3D128)%0A%20%20...%0A%0Anama_fungsi(22%2C%2034%2C%20arg1%3D70)%20%23%20arg1%20diisi%202%20kali%0Anama_fungsi(22%2C%2034%2C%20arg3%3D70%2C%20arg3%3D12)%20%23%20arg3%20diisi%202%20kali\" 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\"> nama_fungsi\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(arg1, arg2, arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">64\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, arg4\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">128\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama_fungsi(\u003C/span>\u003Cspan style=\"color:#79B8FF\">22\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">34\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg1\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">70\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#6A737D\"># arg1 diisi 2 kali\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">nama_fungsi(\u003C/span>\u003Cspan style=\"color:#79B8FF\">22\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">34\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">70\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">arg3\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">12\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#6A737D\"># arg3 diisi 2 kali\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch2 id=\"kapan-harus-menggunakan-default-argument\">Kapan Harus Menggunakan Default Argument?\u003C/h2>\n\u003Cp>Penggunaan default argument bisa jadi salah satu cara untuk mempercepat kita dalam menulis dan memahami kode. Dengan adanya default argument kita dapat \u003Cstrong>meminimalisir pengisian argument\u003C/strong> dengan nilai yang sama secara berulang-ulang.\u003C/p>\n\u003Cp>Dengan begitu kode kita akan lebih ringkas dan mudah dibaca.\u003C/p>\n\u003Cp>Ada juga kasus ketika suatu argumen sebenarnya \u003Cstrong>tidak terlalu penting\u003C/strong>, namun kita masih ingin membuatnya menjadi fleksibel, nah default argument ini akan sangat membantu.\u003C/p>\n\u003Cp>Bahkan kebanyakan library python juga menggunakan default argument ini untuk memudahkan para programmer. Sebagai contoh, kita coba comot salah satu fungsi di library \u003Ca href=\"https://numpy.org\">numpy\u003C/a>.\u003C/p>\n\u003Cp>Ini signature fungsi untuk membuat array numpy:\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=\"numpy.array(object%2C%20dtype%3DNone%2C%20*%2C%20copy%3DTrue%2C%20order%3D'K'%2C%20subok%3DFalse%2C%20ndmin%3D0%2C%20like%3DNone)\" 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\">numpy.array(\u003C/span>\u003Cspan style=\"color:#79B8FF\">object\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">dtype\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">None\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#F97583\">*\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">copy\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">True\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">order\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'K'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">subok\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">False\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">ndmin\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">0\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">like\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">None\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Kalu kita lihat di situ, hanya ada 1 argument saja yang menjadi positional argument (argument pertama) dan sisanya default argument semua.\u003C/p>\n\u003Cp>Hal ini mungkin karena sang empunya numpy tahu kalau kita akan jarang menggunakan argument lainnya. Yah, jarang kan bukan berarti tidak pernah, maka sebagai opsi tetap harus diberikan.\u003C/p>\n\u003Ch2 id=\"selanjutnya\">Selanjutnya…\u003C/h2>\n\u003Cp>Cukup sekian untuk kesempatan kali ini, selanjutnya kita akan membahas tentang variable length argument pada python 3.\u003C/p>\n\u003Cp>Selamat ber-koding ria 👋\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,189,192,195],{"text":174,"depth":175,"id":176},"Default Argument",2,"default-argument",{"text":178,"depth":175,"id":179},"Keyword Argument","keyword-argument",{"text":181,"depth":175,"id":182},"Aturan Deklarasi dan Pengisian Argument","aturan-deklarasi-dan-pengisian-argument",{"text":184,"depth":54,"id":185},"Default argument harus diletakkan setelah non-default argument","default-argument-harus-diletakkan-setelah-non-default-argument",{"text":187,"depth":54,"id":188},"Keyword argument diberikan setelah semua positional argument diberi nilai","keyword-argument-diberikan-setelah-semua-positional-argument-diberi-nilai",{"text":190,"depth":54,"id":191},"Satu argumen hanya bisa diisi satu kali","satu-argumen-hanya-bisa-diisi-satu-kali",{"text":193,"depth":175,"id":194},"Kapan Harus Menggunakan Default Argument?","kapan-harus-menggunakan-default-argument",{"text":196,"depth":175,"id":197},"Selanjutnya…","selanjutnya",1791045069732]