Di Python, definisi fungsi adalah dengan def yang berupa statemen, tapi di PyScript tidak seperti itu. Fungsi dalam PyScript adalah sebuah ekspresi. Definisinya ada 3 kata kunci yakni func atau function (alias), dan constructor. Berikut penjelasannya:
func / functionStruktur fungsi terdiri dari nama fungsi (optional), parameter, dan tubuh seperti pada bagian ini:
func <function name (OPTIONAL)>(<parameter>)
<body> style="color:#D4D4D4"> <body></span>
Function name merupakan identifier atau tidak ada (optional), jika nama fungsi tidak diberikan maka fungsi mejadi anonimus yang biasanya dipakai didalam ekspresi.
Parameter fungsi bisa berupa argumen biasa (wajib diisi), atau argumen optional, argumen biasa berupa nama parameter identifier, kalau ingin parameter itu optional untuk diisi maka beri tanda sama dengan = setelahnya lalu kemudian nilai default parameter tersebut. Perlu diketahui bahwa evaluasi nilai default pada keyword argumen di eksekusi sekali saat fungsi dibuat.
Body adalah statemen tubuh dari fungsi.
constructorStruktur constructor terdiri dari parameter dan tubuh saja seperti pada bagian ini:
constructor(<parameter>)
<body> style="color:#D4D4D4"> <body></span>
Apa perbedaanya dengan fungsi biasa? Perbedaanya, constructor dipakai untuk initialisasi fungsi kelas dan hanya bisa dideklarasikan di dalam body class. Artinya, constructor sebenarnya adalah fungsi bernama __init__ yang memberikan parameter awal bernama self.
Tidak, parameter di Python seperti *args ataupun **kwargs tidak ada sama sekali dalam sinstaks PyScript agar pengecekan argument lebih cepat.
types.FunctionType?Tidak, objek fungsi adalah berasal dari pyscript.core.objects.PysFunction, merupakan implementasi fungsi khusus untuk PyScript. Dengan ini, kode PyScript bisa dieksekusi dan dapat membuat jejak traceback.
Tidak, dalam PyScript tidak ada teknik async dan await untuk kemudahan implementasi dan kesederhanaan bahasa.
Ya, fungsi yang dibuat didalam PyScript bisa dieksekusi di dalam scope Python, pyscript.core.objects.PysFunction memiliki metode __call__ dimana fungsi bisa di panggil di dalam Python. Akan tetapi jejak traceback bisa terputus sehingga akan sulit mencari jejak kesalahan yang terjadi. Jika terjadi kesalahan akan melempar eksekusi pyscript.core.exceptions.PysSignal.
Tidak, fungsi adalah mutable yang dapat membuat attribut didalam objek fungsi itu.
Ya, fungsi dapat didekorasi dengan @ sebelum deklarasi fungsi.