pyscript-programming-language 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyscript-programming-language might be problematic. Click here for more details.
- pyscript_programming_language-1.2.0/PKG-INFO +354 -0
- pyscript_programming_language-1.2.0/README.md +323 -0
- pyscript_programming_language-1.2.0/pyscript/__init__.py +26 -0
- pyscript_programming_language-1.2.0/pyscript/__init__.pyi +51 -0
- pyscript_programming_language-1.2.0/pyscript/__main__.py +137 -0
- pyscript_programming_language-1.2.0/pyscript/core/__init__.py +53 -0
- pyscript_programming_language-1.2.0/pyscript/core/bases.py +2 -0
- pyscript_programming_language-1.2.0/pyscript/core/buffer.py +31 -0
- pyscript_programming_language-1.2.0/pyscript/core/cache.py +9 -0
- pyscript_programming_language-1.2.0/pyscript/core/constants.py +136 -0
- pyscript_programming_language-1.2.0/pyscript/core/context.py +13 -0
- pyscript_programming_language-1.2.0/pyscript/core/exceptions.py +34 -0
- pyscript_programming_language-1.2.0/pyscript/core/highlight.py +202 -0
- pyscript_programming_language-1.2.0/pyscript/core/interpreter.py +994 -0
- pyscript_programming_language-1.2.0/pyscript/core/lexer.py +752 -0
- pyscript_programming_language-1.2.0/pyscript/core/nodes.py +318 -0
- pyscript_programming_language-1.2.0/pyscript/core/objects.py +197 -0
- pyscript_programming_language-1.2.0/pyscript/core/parser.py +1864 -0
- pyscript_programming_language-1.2.0/pyscript/core/position.py +11 -0
- pyscript_programming_language-1.2.0/pyscript/core/pysbuiltins.py +309 -0
- pyscript_programming_language-1.2.0/pyscript/core/results.py +105 -0
- pyscript_programming_language-1.2.0/pyscript/core/runner.py +298 -0
- pyscript_programming_language-1.2.0/pyscript/core/singletons.py +56 -0
- pyscript_programming_language-1.2.0/pyscript/core/symtab.py +76 -0
- pyscript_programming_language-1.2.0/pyscript/core/token.py +21 -0
- pyscript_programming_language-1.2.0/pyscript/core/utils.py +350 -0
- pyscript_programming_language-1.2.0/pyscript/core/validator.py +391 -0
- pyscript_programming_language-1.2.0/pyscript/core/version.py +9 -0
- pyscript_programming_language-1.2.0/pyscript/lib/_tantee/__init__.pys +44 -0
- pyscript_programming_language-1.2.0/pyscript/lib/_tantee/animate.pys +9 -0
- pyscript_programming_language-1.2.0/pyscript/lib/_tantee/lyrics.pys +12 -0
- pyscript_programming_language-1.2.0/pyscript/lib/_tantee/tantee.mp3 +0 -0
- pyscript_programming_language-1.2.0/pyscript/lib/clock.pys +49 -0
- pyscript_programming_language-1.2.0/pyscript/lib/getch.pys +22 -0
- pyscript_programming_language-1.2.0/pyscript/lib/hello.pys +5 -0
- pyscript_programming_language-1.2.0/pyscript/lib/parser.pys +81 -0
- pyscript_programming_language-1.2.0/pyscript/lib/sys.pys +12 -0
- pyscript_programming_language-1.2.0/pyscript/lib/this.pys +19 -0
- pyscript_programming_language-1.2.0/pyscript/this.py +8 -0
- pyscript_programming_language-1.2.0/pyscript_programming_language.egg-info/PKG-INFO +354 -0
- pyscript_programming_language-1.2.0/pyscript_programming_language.egg-info/SOURCES.txt +43 -0
- pyscript_programming_language-1.2.0/pyscript_programming_language.egg-info/dependency_links.txt +1 -0
- pyscript_programming_language-1.2.0/pyscript_programming_language.egg-info/top_level.txt +1 -0
- pyscript_programming_language-1.2.0/setup.cfg +4 -0
- pyscript_programming_language-1.2.0/setup.py +35 -0
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyscript-programming-language
|
|
3
|
+
Version: 1.2.0
|
|
4
|
+
Summary: PyScript Programming Language
|
|
5
|
+
Home-page: https://github.com/azzammuhyala/pyscript
|
|
6
|
+
Author: azzammuhyala
|
|
7
|
+
Author-email: azzammuhyala@gmail.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Source, https://github.com/azzammuhyala/pyscript
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/azzammuhyala/pyscript/issues
|
|
11
|
+
Keywords: pyscript,pys,programming,language,programming language
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
16
|
+
Classifier: Topic :: Software Development :: Interpreters
|
|
17
|
+
Classifier: Topic :: Software Development :: Compilers
|
|
18
|
+
Requires-Python: >=3.5
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
Dynamic: author
|
|
21
|
+
Dynamic: author-email
|
|
22
|
+
Dynamic: classifier
|
|
23
|
+
Dynamic: description
|
|
24
|
+
Dynamic: description-content-type
|
|
25
|
+
Dynamic: home-page
|
|
26
|
+
Dynamic: keywords
|
|
27
|
+
Dynamic: license
|
|
28
|
+
Dynamic: project-url
|
|
29
|
+
Dynamic: requires-python
|
|
30
|
+
Dynamic: summary
|
|
31
|
+
|
|
32
|
+
# PyScript Language📖
|
|
33
|
+
|
|
34
|
+
<p align="center">
|
|
35
|
+
<img src="PyScript.png" alt="PyScript Logo" width="200">
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
PyScript adalah bahasa pemprograman sederhana yang dibuat di atas bahasa Python. Bahasa ini mengabungkan beberapa sintaks dari Python dan JavaScript, jadi bagi Anda yang sudah familiar dengan sintaks Python atau JavaScript atau keduanya pasti seharusnya cukup mudah mempelajari bahasa ini.
|
|
39
|
+
|
|
40
|
+
## Bagaimana Cara Pemasangannya?
|
|
41
|
+
1. Pertama-tama Anda perlu mengunduh Python terlebih dahulu. Usahakan versi yang digunakan sudah paling terbaru di atas versi `3.5` agar kode bisa di jalankan dengan benar. Kunjungi [website resmi Python](https://python.org) untuk mengunduhnya.
|
|
42
|
+
2. Setelah mengunduh dan melakukan beberapa konfigurasi aplikasi Python, unduh repositori ini atau melalui direktori `pyscript` atau dengan perintah `python -m pip install pyscript-programming-language` (_Direkomendasikan_).
|
|
43
|
+
3. Sekarang coba Anda jalankan PyScript shell (REPL) dengan perintah `python -m pyscript`. Jika berhasil maka harusnya anda akan melihat versi, tanggal dan tanda `>>>`.
|
|
44
|
+
4. _OPSIONAL_. Anda bisa mengunduh dan menyiapkan kode editor seperti VS Code atau kode editor lainnya untuk menulis program. Atau kalau mau yang berbeda Anda bisa menggunakan Notepad.
|
|
45
|
+
5. Jika semua sudah aman dan berjalan dengan benar, sekarang Anda sudah bisa masuk ke sesi pengenalan bahasa PyScript!
|
|
46
|
+
|
|
47
|
+
## Pengenalan PyScript
|
|
48
|
+
Mungkin PyScript dikenal bukanlah bahasa yang akan kita bahas, tetapi sebenarnya nama PyScript sendiri sudah ada yang merupakan platform untuk menjalankan Python dalam browser yang fleksibel dan mudah. Sebelumnya sejak awal bahasa ini dibuat, nama ini dipilih karena memang terinspirasi dengan bahasa Python dan JavaScript yang bahasanya cukup mudah untuk di baca manusia. Dengan itulah nama itu dipilih, karena memang belum diketahui secara langsung apakah nama ini sudah dipakai atau belum.
|
|
49
|
+
|
|
50
|
+
Bahasa ini tidak di rancang untuk masuk sebagai bahasa pemprograman modern yang bersaing dengan bahasa lain, tetapi bahasa ini sebagai metode pembelajaran soal bagaimana bahasa pemprograman bekerja dan cara sebuah kode yang manusia tulis bisa di mengerti oleh mesin. Selain daripada itu, bahasa ini dibuat sebagai projek yang cukup kompleks. Dengan bahasa Python sebagai dasar pembuatan bahasa PyScript dengan sintaksnya yang cukup mudah dipahami membuatnya bisa menjadi mudah di mengerti soal bagaimana bahasa itu dibuat tanpa memahami tentang instruksi lain yang kompleks seperti di C, C++, dan bahasa tingkat rendah lain.
|
|
51
|
+
|
|
52
|
+
## Memulai Koding!
|
|
53
|
+
Anda sudah mengetahui cara menjalankan PyScript serta tujuan bahasa ini dibuat. Sekarang Anda masuk ke sesi koding untuk membuat kode di PyScript. Untuk memulai Anda perlu membuat sebuah file, buatlah file bernama `belajar.pys` dan kemudian buka kode editor Anda. Kini kita akan membuat kode program _Hello World_ lalu menampilkannya di layar atau terminal. Caranya cukup sederhana, seperti Python cukup tulis kode seperti ini:
|
|
54
|
+
<pre class="pyscript-code"><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="string">"Hello World!"</span><span id="parenthesis-0">)</span></pre>
|
|
55
|
+
|
|
56
|
+
Kemudian jangan lupa Anda simpan hasilnya lalu jalankan kodenya dengan perintah:
|
|
57
|
+
```sh
|
|
58
|
+
python -m pyscript belajar.pys
|
|
59
|
+
```
|
|
60
|
+
> Catatan: `python` disini memanggil interpreter Python untuk menjalankan file `__main__.py` dari dalam folder `pyscript`, kemudian file `__main__.py` menerima argumen `belajar.pys` sebagai path file yang lalu di jalankan interpreter PyScript. Perlu di ingat ini akan bekerja jika direktori PyScript berada di direktori yang sama dengan direktori kerja.
|
|
61
|
+
|
|
62
|
+
Maka hasilnya di terminal Anda adalah:
|
|
63
|
+
```
|
|
64
|
+
Hello World!
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Ini bukan dijalankan oleh Python dengan fungsi `exec` atau `eval`, ini murni dari bahasa PyScript! Sekarang Anda masuk ke sesi Pengenalan Sintaks!
|
|
68
|
+
|
|
69
|
+
## Pengenalan Bahasa
|
|
70
|
+
Di sesi ini, Anda akan mempelajari semua aspek bahasa dalam bahasa PyScript yang ada.
|
|
71
|
+
|
|
72
|
+
### Komentar
|
|
73
|
+
Pertama-tama Anda akan mempelajari tentang komentar, komentar adalah cara kita memberikan penjelasan tertentu pada blok kita agar jika suatu nanti atau orang lain bisa mengetahui maksud kode yang Anda tulis. Komentar di PyScript mirip dengan Python dimana ia dikuti dengan pagar `#` lalu setelah itu Anda bisa memberikan komentar. Komentar tidak diesekusi oleh program.
|
|
74
|
+
<pre class="pyscript-code"><span id="comment"># Ini adalah komentar</span><br><br><span id="comment"># Ini mencetak kata "Halo!" ke layar</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="string">"Halo!"</span><span id="parenthesis-0">)</span><br><br><span id="number">1</span><span id="default"> + </span><span id="number">1</span><span id="default"> </span><span id="comment"># Ekspresi</span></pre>
|
|
75
|
+
|
|
76
|
+
### Variabel
|
|
77
|
+
Variabel secara singkat yakni menyimpan suatu nilai. Pasti harusnya Anda sudah tidak asing dengan variabel. Variabel di buat sebagai berikut ini:
|
|
78
|
+
<pre class="pyscript-code"><span id="identifier">x</span><span id="default"> = </span><span id="number">1</span><br><span id="identifier">y</span><span id="default"> = </span><span id="number">1</span><br><span id="identifier">z</span><span id="default"> = </span><span id="number">1</span></pre>
|
|
79
|
+
|
|
80
|
+
Di bahasa Python pun juga sama, kita membuat suatu nama lalu di lanjutkan tanda sama dengan lalu nilai yang mau kita isi.
|
|
81
|
+
|
|
82
|
+
Untuk membuat variabel ada aturan penamaannya, ia tidak boleh dipisah dengan spasi atau `-`. Ia harus berupa karakter huruf, angka (bukan di awal), dan underscore `_`.
|
|
83
|
+
|
|
84
|
+
Anda juga bisa sekaligus menyimpan lebih dari 1 variabel dengan hanya 1 nilai sekaligus seperti ini:
|
|
85
|
+
<pre class="pyscript-code"><span id="identifier">data</span><span id="default"> = </span><span id="identifier">daftar</span><span id="default"> = </span><span id="identifier">array</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="default">, </span><span id="number">5</span><span id="parenthesis-0">]</span></pre>
|
|
86
|
+
|
|
87
|
+
### Objek dan Tipe Data
|
|
88
|
+
Di PyScript sebenarnya objek dan tipe data di atur oleh Python. Jadi semua objek serta sifat-sifat dan fungsi-fungsinya semuanya di atur dari Python. Berikut ini beberapa objek literal dari Python/PyScript:
|
|
89
|
+
<pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">1</span><span id="default"> </span><span id="comment"># int</span><br><span id="identifier">b</span><span id="default"> = </span><span id="number">1.0</span><span id="default"> </span><span id="comment"># float</span><br><span id="identifier">c</span><span id="default"> = </span><span id="number">1j</span><span id="default"> </span><span id="comment"># complex</span><br><span id="identifier">d</span><span id="default"> = </span><span id="number">1</span><span id="default">+</span><span id="number">1j</span><span id="default"> </span><span id="comment"># ini juga complex</span><br><span id="identifier">e</span><span id="default"> = </span><span id="string">'string'</span><span id="default"> </span><span id="comment"># ini str</span><br><span id="identifier">f</span><span id="default"> = </span><span id="string">"string"</span><span id="default"> </span><span id="comment"># ini juga str (beda kutipan saja)</span><br><span id="identifier">g</span><span id="default"> = </span><span id="string">r'raw'</span><span id="default"> </span><span id="comment"># ini raw str (string mentah tidak memproses escape)</span><br><span id="identifier">h</span><span id="default"> = </span><span id="string">b'bytes'</span><span id="default"> </span><span id="comment"># ini bytes</span><br><span id="identifier">i</span><span id="default"> = </span><span id="keyword-identifier">True</span><span id="default"> </span><span id="comment"># ini bool</span><br><span id="identifier">j</span><span id="default"> = </span><span id="keyword-identifier">False</span><span id="default"> </span><span id="comment"># ini juga bool (lawannya)</span><br><span id="identifier">k</span><span id="default"> = </span><span id="keyword-identifier">None</span><span id="default"> </span><span id="comment"># ini NoneType (tidak ada nilai)</span><br><span id="identifier">l</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># ini list</span><br><span id="identifier">m</span><span id="default"> = </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># ini tuple</span><br><span id="identifier">n</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># ini set (himpunan)</span><br><span id="identifier">o</span><span id="default"> = </span><span id="parenthesis-0">{</span><span id="string">'a'</span><span id="default">: </span><span id="number">1</span><span id="parenthesis-0">}</span><span id="default"> </span><span id="comment"># ini dict (dictionary atau kamus)</span></pre>
|
|
90
|
+
|
|
91
|
+
Sebenarnya masih banyak pembahasan soal tipe data dan objek ini, Anda bisa mempelajarinya lebih dalam dari Python. Mungkin beberapa hal yang perlu Anda ketahui bahwa tidak semua literal Python bisa di tulis secara langsung di PyScript. Misalnya f-string atau formated string, untuk menulis literalnya di Python anda cukup beri prefix di string `f` seperti ini:
|
|
92
|
+
```py
|
|
93
|
+
data = f'Hello'
|
|
94
|
+
```
|
|
95
|
+
Sayangnya, ini tidak valid di PyScript dan bisa error!
|
|
96
|
+
|
|
97
|
+
Untuk menggantikannya, Anda bisa menggunakan berbagai cara, salah satunya menggunakan metode `str` di Python berupa `format`, dengan modulus `%`, atau lainnya.
|
|
98
|
+
|
|
99
|
+
Tapi ada juga beberapa literal unik yang masih bisa anda tulis seperti objek int dengan 0x, 0b, dan lainnya. Misalnya:
|
|
100
|
+
<pre class="pyscript-code"><span id="number">1j</span><span id="default"> </span><span id="comment"># kompleks</span><br><span id="number">0xffff</span><span id="default"> </span><span id="comment"># hex</span><br><span id="number">0b0101</span><span id="default"> </span><span id="comment"># bit</span><br><span id="number">0o777</span><span id="default"> </span><span id="comment"># oktal</span><br><span id="number">11_000_000_000_000</span><span id="default"> </span><span id="comment"># underscore</span><br><span id="number">1e10</span><span id="default"> </span><span id="comment"># notasi ilmiah</span><br><span id="number">2e2j</span><span id="default"> </span><span id="comment"># notasi ilmiah + kompleks</span><br><br><span id="comment"># ini tidak valid di Python, tapi di PyScript ini valid</span><br><span id="number">0xffj</span><br><span id="number">0o1111j</span><br><br><span id="comment"># literal kutip 3 string</span><br><span id="string">'''<br>Hallo ini adalah string!<br>Ini adalah baris baru!<br>'''</span><br><br><span id="string">"""<br>Ini juga kutip 3 string!<br>"""</span></pre>
|
|
101
|
+
|
|
102
|
+
### Fungsi dan Variabel Bawaan
|
|
103
|
+
Fungsi dan variabel bawaan atau disebut _builtins_ adalah fungsi yang bisa Anda pakai dalam keperluan tertentu sehingga Anda tidak perlu membuat fungsi dasar secara manual. Cukup memahami cara pemakaiannya.
|
|
104
|
+
|
|
105
|
+
Bagaimana sih cara memanggil fungsi? Caranya cukup mudah! Anda cukup tulis nama fungsi apa yang anda mau panggil, lalu kemudian jangan lupa selanjutnya beri tanda kurung `(` dan juga jangan lupa tutup kembali dengan tutup kurung `)`. Didalam kurung, Anda bisa memasukan beberapa parameter di dalamnya. Jika tadi Anda lihat cara memprogram _Hello World_ Anda akan menyadari bahwa itu pasti adalah fungsi dari penjelasan ini.
|
|
106
|
+
<pre class="pyscript-code"><span id="identifier-call">print</span><span id="parenthesis-0">()</span><span id="default"> </span><span id="comment"># ini fungsi tanpa parameter</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="string">"Cetak!"</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># ini fungsi dengan parameter</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="string">"Hello"</span><span id="default">, </span><span id="string">"World!"</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># ini fungsi dengan beberapa parameter</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="string">"Fufu"</span><span id="default">, </span><span id="identifier">end</span><span id="default">=</span><span id="string">"Fafa!\n"</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># ini fungsi dengan parameter serta kata kunci argumen</span></pre>
|
|
107
|
+
|
|
108
|
+
Anda bisa memanggil fungsi tanpa parameter apapun, asalkan fungsi secara langsung tidak butuh parameter atau bisa menerima tidak ada parameter.
|
|
109
|
+
|
|
110
|
+
Lanjut ke beberapa fungsi dan variabel bawaan atau _builtins_. Semua ini juga berasal dari Python. Untuk mempelajari builtins Python selengkapnya bisa cek di [website resmi _builtins_ Python](https://docs.python.org/3/library/builtins.html?utm_source=chatgpt.com) (pengecualian _builtins_ berupa `compile`, `copyright`, `credits`, `dir`, `eval`, `exec`, `globals`, `license`, `locals`, dan `vars`).
|
|
111
|
+
|
|
112
|
+
Ada beberapa pengecualian di atas sebenarnya cuma di ganti agar sinkron dengan bahasa PyScript dan tidak terhubung ke Python seperti `dir`, `eval`, `exec`, `globals`, `license`, `locals`, dan `vars`. Berikut ini fungsi dan pemakaiannya masing-masing:
|
|
113
|
+
|
|
114
|
+
- `dir` (_`dir()`_, _`dir(o)`_) <br>
|
|
115
|
+
Fungsi ini sama saja seperti cara kerja `dir` yang ada dalam Python. Perbedaanya ketika parameter `o` tidak diberikan alias di panggil dengan tidak ada parameter, maka akan mengambalikan nilai _namespace_ program saat ini. Berikut contoh penggunaannya:
|
|
116
|
+
<pre class="pyscript-code"><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier-call">dir</span><span id="parenthesis-1">()</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># akan menghasilkan nilai namespace program</span></pre>
|
|
117
|
+
|
|
118
|
+
- `eval` (_`eval(source, globals=None)`_) <br>
|
|
119
|
+
Fungsi ini meevaluasi ekspresi PyScript dari source yang diberikan. Source bisa diisi dengan `str`, `bytes`, `bytearray`, dan `IObase` (bisa dibaca). Fungsi ini akan mengembalikan nilai hasil evaluasi tersebut. Parameter `globals` adalah _namespace_ berupa objek `dict` yang bisa di muat dan disimpan di dalam kode. Jika parameter ini tidak diberikan atau nilainya `None` maka menggunakan _namespace_ program saat ini. Berikut contoh penggunannya:
|
|
120
|
+
<pre class="pyscript-code"><span id="identifier">result</span><span id="default"> = </span><span id="identifier-call">eval</span><span id="parenthesis-0">(</span><span id="string">"1 + 4 * 2"</span><span id="parenthesis-0">)</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">result</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># 9</span></pre>
|
|
121
|
+
|
|
122
|
+
- `exec` (_`exec(source, globals=None)`_) <br>
|
|
123
|
+
Fungsi ini cukup mirip dengan `eval` bedanya ia meeksekusi keseluruhan kode termasuk statemen dan ekspresi yang ada dan fungsi ini tidak mengembalikan nilai apapun. Berikut contoh penggunaannya:
|
|
124
|
+
<pre class="pyscript-code"><span id="identifier-call">exec</span><span id="parenthesis-0">(</span><span id="string">"print('Hello!')\na = 2"</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># Hello!</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># 2</span></pre>
|
|
125
|
+
|
|
126
|
+
- `globals` (_`globals()`_)
|
|
127
|
+
Fungsi ini meakses semua nilai _namespace_ yang bisa di akses (tidak terpaku pada _namespace_ modul) dan akan mengembalikan dalam bentuk objek `dict` baru atau refrensi langsung (hanya jika di panggil di _namespace_ modul bukan di dalam fungsi). Berikut ini adalah contoh penggunaannya:
|
|
128
|
+
<pre class="pyscript-code"><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier-call">globals</span><span id="parenthesis-1">()</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># semua identifier modul. globals() sama dengan locals()</span><br><br><span id="identifier">x</span><span id="default"> = </span><span id="number">1</span><br><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">hello</span><span id="parenthesis-0">()</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier">y</span><span id="default"> = </span><span id="number">1</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="identifier-call">globals</span><span id="parenthesis-2">()</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="comment"># semua identifier di namespace ini yang bisa di akses</span><br><br><span id="default"> </span><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">inner</span><span id="parenthesis-1">()</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier">z</span><span id="default"> = </span><span id="number">1</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-2">(</span><span id="identifier-call">globals</span><span id="parenthesis-0">()</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><br><span id="default"> </span><span id="identifier-call">inner</span><span id="parenthesis-1">()</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier-call">hello</span><span id="parenthesis-0">()</span></pre>
|
|
129
|
+
|
|
130
|
+
- `license` (_`license()`_) <br>
|
|
131
|
+
Fungsi ini adalah berupa lisensi PyScript.
|
|
132
|
+
|
|
133
|
+
- `locals` (_`locals()`_) <br>
|
|
134
|
+
Fungsi ini cukup mirip dengan fungsi `globals` barusan, tetapi ini lingkupannya cuma di area lokal saja, dan _namespace_ bisa di muat disini. Berikut contoh penggunaannya:
|
|
135
|
+
<pre class="pyscript-code"><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier-call">locals</span><span id="parenthesis-1">()</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># namespace modul</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier-call">globals</span><span id="parenthesis-1">()</span><span id="default"> </span><span id="keyword-identifier">is</span><span id="default"> </span><span id="identifier-call">locals</span><span id="parenthesis-1">()</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># benar</span><br><br><span id="identifier-call">locals</span><span id="parenthesis-0">()[</span><span id="string">'a'</span><span id="parenthesis-0">]</span><span id="default"> = </span><span id="number">1</span><span id="default"> </span><span id="comment"># buat variabel 'a' dengan nilai 1</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># 1</span></pre>
|
|
136
|
+
|
|
137
|
+
- `vars` (_`vars(object=None)`_) <br>
|
|
138
|
+
Fungsi ini sama saja dengan fungsi _builtins_ `vars` di Python. Perbedaanya ketika parameter `object` berisi nilai `None` atau tidak diberi parameter apapun maka akan mengembalikan _namespace_ program saat ini yang sama saja dengan fungsi `locals`.
|
|
139
|
+
|
|
140
|
+
Ada penambahan fungsi bawaan yang ada dalam bahasa PyScript, di antara lain sebagai berikut:
|
|
141
|
+
|
|
142
|
+
- `pyimport` (_`pyimport(name)`_) <br>
|
|
143
|
+
Fungsi ini untuk meimpor modul atau file Python. Berasal dari `importlib.import_module`.
|
|
144
|
+
|
|
145
|
+
- `require` (_`require(name)`_) <br>
|
|
146
|
+
Fungsi ini cara kerjanya sama seperti fungsi `pyimport`, perbedaannya untuk meimpor modul atau file PyScript.
|
|
147
|
+
|
|
148
|
+
- `ce` (_`ce(a, b, *, rel_tol=1e-9, abs_tol=0)`_) <br>
|
|
149
|
+
Fungsi ini adalah singkatan dari _close equal_ yang artinya membandingkan nilai berupa hampir sama dengan. Berguna untuk metolerir perbedaan jauh antara kedua nilai.
|
|
150
|
+
|
|
151
|
+
- `nce` (_`nce(a, b, *, rel_tol=1e-9, abs_tol=0)`_) <br>
|
|
152
|
+
Fungsi ini adalah singkatan dari _not close equal_ dan sama saja konsepnya dengan fungsi `ce` tetapi ini berupa tidak hampir sama dengan.
|
|
153
|
+
|
|
154
|
+
- `increment` (_`increment(object)`_) <br>
|
|
155
|
+
Fungsi ini menambahkan satu nilai dari objek yang diberikan.
|
|
156
|
+
|
|
157
|
+
- `decrement` (_`decrement(object)`_) <br>
|
|
158
|
+
Fungsi ini mengurangkan satu nilai dari objek yang diberikan.
|
|
159
|
+
|
|
160
|
+
- `comprehension` (_`comprehension(init, wrap, condition=None)`_) <br>
|
|
161
|
+
Fungsi ini menggantikan sintaks Python yang ini:
|
|
162
|
+
```py
|
|
163
|
+
[wrap(i) for i in init if condition(i)]
|
|
164
|
+
```
|
|
165
|
+
Parameter `wrap` adalah berupa fungsi untuk menghasilkan nilai baru, parameter `condition` adalah berupa fungsi untuk memfilter nilai.
|
|
166
|
+
|
|
167
|
+
- `isobjectof` (_`isobjectof(obj, class_or_tuple)`_) <br>
|
|
168
|
+
Fungsi ini mirip dengan fungsi _builtins_ Python `isinstance`, tetapi ini juga termasuk mengecek parameter `obj` adakah objek itu turunan dari `class_or_tuple` yang diberikan jika `obj` adalah berupa `type`.
|
|
169
|
+
|
|
170
|
+
### _Unpacking Variable_
|
|
171
|
+
Anda sudah mempelajari cara membuat variabel, sekarang Anda masuk ke unpacking variabel. Intinya ini adalah cara kita membuat banyak variabel sekaligus dalam 1 baris kode agar kode mudah diperlihara dan mudah dimonesasi. Berikut ini adalah contoh dari unpacking variabel.
|
|
172
|
+
<pre class="pyscript-code"><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">)</span><span id="default"> = </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">)</span></pre>
|
|
173
|
+
|
|
174
|
+
Untuk membuat unpacking variabel, anda perlu memberikan tanda kurung `()`, `[]`, atau `{}` kemudian diisi beberapa nama variabel. Nilai juga harus sesuai yakni berupa urutan dan keduanya harus memiliki panjang yang sama.
|
|
175
|
+
<pre class="pyscript-code"><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">)</span><span id="default"> = </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># valid</span><br><span id="parenthesis-0">[</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">]</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># valid</span><br><span id="parenthesis-0">{</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">}</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># valid</span><br><br><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="default">, </span><span id="identifier">c</span><span id="parenthesis-0">)</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># tidak valid karena yang di unpack 3 tapi nilainya cuma menyimpan 2</span><br><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">)</span><span id="default"> = </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># tidak valid karena yang di unpack 2 tapi nilainya 4</span><br><br><span id="comment"># tidak valid keduanya harus di berikan tanda kurung</span><br><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">]</span><br><span id="parenthesis-0">{</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">}</span><span id="default"> = </span><span id="number">1</span><span id="default">, </span><span id="number">2</span><br><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="default"> = </span><span id="number">1</span><span id="default">, </span><span id="number">2</span></pre>
|
|
176
|
+
|
|
177
|
+
Nilai yang akan di unpack bisa cukup kompleks (beranak) seperti ini:
|
|
178
|
+
<pre class="pyscript-code"><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="default">, </span><span id="parenthesis-1">[</span><span id="identifier">c</span><span id="default">, </span><span id="identifier">d</span><span id="default">, </span><span id="parenthesis-2">{</span><span id="identifier">e</span><span id="default">, </span><span id="identifier">f</span><span id="parenthesis-2">}</span><span id="parenthesis-1">]</span><span id="default">, </span><span id="identifier">g</span><span id="parenthesis-0">)</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="parenthesis-1">[</span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="default">, </span><span id="parenthesis-2">[</span><span id="number">5</span><span id="default">, </span><span id="number">6</span><span id="parenthesis-2">]</span><span id="parenthesis-1">]</span><span id="default">, </span><span id="number">7</span><span id="parenthesis-0">]</span></pre>
|
|
179
|
+
|
|
180
|
+
Dengan pemahaman ini Anda bisa juga menukar 2 variabel seperti ini:
|
|
181
|
+
<pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">1</span><br><span id="identifier">b</span><span id="default"> = </span><span id="number">2</span><br><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># 1 2</span><br><br><span id="comment"># menukar nilai</span><br><span id="parenthesis-0">[</span><span id="identifier">b</span><span id="default">, </span><span id="identifier">a</span><span id="parenthesis-0">]</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">]</span><br><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># 2 1</span></pre>
|
|
182
|
+
|
|
183
|
+
### Operasi
|
|
184
|
+
Dalam matematika ada berbagai macam operasi seperti penjumlahan `+`, pengurangan `-`, dan lain sebagainya. Berikut ini adalah beberapa operasi aritmatika:
|
|
185
|
+
<pre class="pyscript-code"><span id="number">1</span><span id="default"> + </span><span id="number">1</span><span id="default"> </span><span id="comment"># penjumlahan</span><br><span id="number">1</span><span id="default"> - </span><span id="number">1</span><span id="default"> </span><span id="comment"># pengurangan</span><br><span id="number">1</span><span id="default"> * </span><span id="number">1</span><span id="default"> </span><span id="comment"># perkalian</span><br><span id="number">1</span><span id="default"> / </span><span id="number">1</span><span id="default"> </span><span id="comment"># pembagian</span><br><span id="number">1</span><span id="default"> // </span><span id="number">1</span><span id="default"> </span><span id="comment"># pembagian bulat</span><br><span id="number">1</span><span id="default"> % </span><span id="number">1</span><span id="default"> </span><span id="comment"># pembagian sisa (modulus)</span><br><span id="number">1</span><span id="default"> ** </span><span id="number">1</span><span id="default"> </span><span id="comment"># perpangkatan</span></pre>
|
|
186
|
+
|
|
187
|
+
Lalu ada operasi _matmul_ `@`, ini cuma bekerja pada objek atau tipe data yang mendukungnya seperti array pada modul terkenal di Python yakni `numpy`:
|
|
188
|
+
<pre class="pyscript-code"><span id="keyword">import</span><span id="default"> </span><span id="identifier">numpy</span><br><br><span id="identifier">numpy</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-0">(</span><span id="parenthesis-1">[</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">]</span><span id="parenthesis-0">)</span><span id="default"> @ </span><span id="identifier">numpy</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-0">(</span><span id="parenthesis-1">[</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">]</span><span id="parenthesis-0">)</span></pre>
|
|
189
|
+
|
|
190
|
+
Selanjutnya, ada operasi bitwise yang bekerja dalam implementasi kode biner (0 dan 1). Berikut ini adalah operasi-operasi tersebut:
|
|
191
|
+
<pre class="pyscript-code"><span id="number">1</span><span id="default"> & </span><span id="number">1</span><span id="default"> </span><span id="comment"># and</span><br><span id="number">1</span><span id="default"> | </span><span id="number">1</span><span id="default"> </span><span id="comment"># or</span><br><span id="number">1</span><span id="default"> ^ </span><span id="number">1</span><span id="default"> </span><span id="comment"># xor</span><br><span id="number">1</span><span id="default"> << </span><span id="number">1</span><span id="default"> </span><span id="comment"># lshift</span><br><span id="number">1</span><span id="default"> >> </span><span id="number">1</span><span id="default"> </span><span id="comment"># rshift</span><br><span id="default">~</span><span id="number">1</span><span id="default"> </span><span id="comment"># not</span></pre>
|
|
192
|
+
|
|
193
|
+
Kemudian, ada operasi perbandingan. Berikut ini adalah beberapa operasinya:
|
|
194
|
+
<pre class="pyscript-code"><span id="number">1</span><span id="default"> == </span><span id="number">1</span><span id="default"> </span><span id="comment"># sama dengan</span><br><span id="number">1</span><span id="default"> != </span><span id="number">1</span><span id="default"> </span><span id="comment"># tidak sama dengan</span><br><span id="number">1</span><span id="default"> ~= </span><span id="number">1</span><span id="default"> </span><span id="comment"># hampir sama dengan</span><br><span id="number">1</span><span id="default"> ~! </span><span id="number">1</span><span id="default"> </span><span id="comment"># tidak hampir sama dengan</span><br><span id="number">1</span><span id="default"> < </span><span id="number">1</span><span id="default"> </span><span id="comment"># lebih kecil</span><br><span id="number">1</span><span id="default"> > </span><span id="number">1</span><span id="default"> </span><span id="comment"># lebih besar</span><br><span id="number">1</span><span id="default"> <= </span><span id="number">1</span><span id="default"> </span><span id="comment"># lebih kecil sama dengan</span><br><span id="number">1</span><span id="default"> >= </span><span id="number">1</span><span id="default"> </span><span id="comment"># lebih besar sama dengan</span></pre>
|
|
195
|
+
|
|
196
|
+
Berikutnya juga operasi logika:
|
|
197
|
+
<pre class="pyscript-code"><span id="keyword-identifier">True</span><span id="default"> </span><span id="keyword-identifier">and</span><span id="default"> </span><span id="keyword-identifier">True</span><span id="default"> </span><span id="comment"># dan</span><br><span id="keyword-identifier">False</span><span id="default"> </span><span id="keyword-identifier">or</span><span id="default"> </span><span id="keyword-identifier">True</span><span id="default"> </span><span id="comment"># atau</span><br><span id="keyword-identifier">not</span><span id="default"> </span><span id="keyword-identifier">False</span><span id="default"> </span><span id="comment"># bukan</span></pre>
|
|
198
|
+
|
|
199
|
+
Ada juga operasi ke anggotaan:
|
|
200
|
+
<pre class="pyscript-code"><span id="number">1</span><span id="default"> </span><span id="keyword-identifier">in</span><span id="default"> </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># ada dalam elemen</span><br><span id="number">1</span><span id="default"> </span><span id="keyword-identifier">not</span><span id="default"> </span><span id="keyword-identifier">in</span><span id="default"> </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># bukan dalam elemen</span><br><span id="number">1</span><span id="default"> </span><span id="keyword-identifier">is</span><span id="default"> </span><span id="number">1</span><span id="default"> </span><span id="comment"># refrensi yang sama</span><br><span id="number">1</span><span id="default"> </span><span id="keyword-identifier">is</span><span id="default"> </span><span id="keyword-identifier">not</span><span id="default"> </span><span id="number">1</span><span id="default"> </span><span id="comment"># bukan refrensi yang sama</span></pre>
|
|
201
|
+
|
|
202
|
+
Sisanya adalah operasi unik:
|
|
203
|
+
<pre class="pyscript-code"><span id="keyword-identifier">None</span><span id="default"> ?? </span><span id="number">0</span><span id="default"> </span><span id="comment"># operasi nullish (beda dengan or ia hanya peduli dengan nilai None)</span><br><span id="keyword-identifier">True</span><span id="default"> ? </span><span id="string">"Benar"</span><span id="default"> : </span><span id="string">"Salah"</span><span id="default"> </span><span id="comment"># operasi terner</span><br><br><span id="identifier">a</span><span id="default"> = </span><span id="number">0</span><br><br><span id="identifier">a</span><span id="default">++ </span><span id="comment"># operasi jumlahkan (menghasilkan nilai a sebelum di jumlahkan 1)</span><br><span id="default">++</span><span id="identifier">a</span><span id="default"> </span><span id="comment"># operasi jumlahkan (menghasilkan nilai a di tambahkan 1)</span><br><span id="identifier">a</span><span id="default">-- </span><span id="comment"># operasi kurangkan</span><br><span id="default">--</span><span id="identifier">a</span><span id="default"> </span><span id="comment"># operasi kurangkan</span></pre>
|
|
204
|
+
|
|
205
|
+
### Operasi Penugasan
|
|
206
|
+
Anda baru saja mempelajari cara menyimpan nilai ke sebuah variabel dan soal _unpacking variable_ itu semua adalah operasi penugasan. Operasi penugasan tidak berupa sama dengan `=`, tapi bisa operasi nilai seperti yang di sebutkan di atas berupa operasi-operasi, ini adalah cara sederhana memaksudkan arti `a = a <operasi> b` menjadi `a <operasi>= b`. Berikut ini contohnya:
|
|
207
|
+
<pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">0</span><br><br><span id="identifier">a</span><span id="default"> += </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> -= </span><span id="number">1</span><br><span id="identifier">a</span><span id="default"> *= </span><span id="number">10</span><br><span id="identifier">a</span><span id="default"> /= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> //= </span><span id="number">2</span><br><span id="identifier">a</span><span id="default"> %= </span><span id="number">3</span><br><span id="identifier">a</span><span id="default"> **= </span><span id="number">2</span><br><br><span id="identifier">b</span><span id="default"> = </span><span id="identifier">numpy</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-0">(</span><span id="parenthesis-1">[</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">]</span><span id="parenthesis-0">)</span><br><span id="identifier">b</span><span id="default"> @= </span><span id="identifier">numpy</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-0">(</span><span id="parenthesis-1">[</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">]</span><span id="parenthesis-0">)</span><br><br><span id="identifier">c</span><span id="default"> = </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> &= </span><span id="number">8</span><br><span id="identifier">c</span><span id="default"> |= </span><span id="number">16</span><br><span id="identifier">c</span><span id="default"> ^= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> <<= </span><span id="number">2</span><br><span id="identifier">c</span><span id="default"> >>= </span><span id="number">2</span></pre>
|
|
208
|
+
|
|
209
|
+
### Blok kode
|
|
210
|
+
Blok kode dalam PyScript mengikuti bahasa seperti JavaScript, C, C++, dan sesamanya yang dimana menggunakan tanda kurung keriting `{}` untuk menyertakan bagian blok kode. Kadang, jika blok kode hanya berupa 1 statemen maka Anda bisa langsung menulis statemen itu tanpa perlu menggunakan tanda kurung.
|
|
211
|
+
<pre class="pyscript-code"><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="comment"># blok kode</span><br><span id="parenthesis-0">}</span><br><br><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> ... </span><span id="comment"># blok kode tunggal</span><br><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fufu</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default">; </span><span id="comment"># statemen return seperti ini harus diberi</span><br><span id="default"> </span><span id="comment"># titik koma sebagai akhir statemen agar</span><br><span id="default"> </span><span id="comment"># tidak bocor ke statemen bawahnya</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># kesalahan fatal (sulit diketahui karena apa)</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">fafa</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">a</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="comment"># tidak ada tanda koma</span><br><span id="default"> </span><span id="identifier">b</span><span id="default"> = </span><span id="identifier">a</span><span id="default"> </span><span id="comment"># parser mengiranya akan berupa return b</span><br><span id="default"> </span><span id="comment"># bukan return, hasilnya terjadi kesalahan di '='</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier">loop</span><span id="default"> = </span><span id="number">100</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">loop</span><span id="default">--</span><span id="parenthesis-0">)</span><span id="default">; </span><span id="comment"># tanpa ada blok kode sama sekali (tidak berlaku</span><br><span id="default"> </span><span id="comment"># untuk semuanya kadang suatu statemen perlu blok kode)</span><br><span id="default"> </span><span id="comment"># sekali lagi jangan lupakan titik koma!</span></pre>
|
|
212
|
+
|
|
213
|
+
### Statemen _if-elif-else_
|
|
214
|
+
Statemen ini berfungsi untuk mengecek suatu nilai kondisi dimana jika kondisi itu benar, maka blok kodenya akan dieksekusi. _elif_ atau singkatan dari _else if_ adalah lanjutan blok kondisi jika kondisi di atasnya tidak terpenuhi sampai jika semuanya tidak terpenuhi maka akan menuju blok _else_.
|
|
215
|
+
<pre class="pyscript-code"><span id="identifier">kondisi</span><span id="default"> = </span><span id="number">0</span><br><br><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"kondisi benar"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><span id="keyword">elif</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">kondisi</span><span id="default"> == </span><span id="number">1</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"kondisi adalah 1"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"kondisi tidak memenuhi kriteria di atas"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
|
|
216
|
+
|
|
217
|
+
### Statemen _for_
|
|
218
|
+
Statemen ini adalah statemen perulangan dimana biasanya perulangannya sudah di ketahui berapa kali.
|
|
219
|
+
<pre class="pyscript-code"><span id="comment"># perulangan 0 sampai 4 (totalnya 5 perulangan)</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> = </span><span id="number">0</span><span id="default">; </span><span id="identifier">i</span><span id="default"> < </span><span id="number">5</span><span id="default">; </span><span id="identifier">i</span><span id="default">++</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"i ke"</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># strukturnya:</span><br><span id="comment"># for (<initilisasi>; <kondisi>; <pembaruan>) <blok perulangannnya></span><br><br><span id="comment"># for-each (perulangan tiap elemen)</span><br><span id="identifier">element</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="number">4</span><span id="default">, </span><span id="number">5</span><span id="parenthesis-0">]</span><br><span id="keyword">for</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">i</span><span id="default"> </span><span id="keyword-identifier">of</span><span id="default"> </span><span id="identifier">element</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"i ke"</span><span id="default">, </span><span id="identifier">i</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
|
|
220
|
+
|
|
221
|
+
### Statemen _while_
|
|
222
|
+
Statemen ini juga perulangan mirip dengan statemen _for_, tapi bedanya ini perulangannya belum diketahui sampai akhirnya kondisinya salah atau tidak memenuhi.
|
|
223
|
+
<pre class="pyscript-code"><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="keyword-identifier">not</span><span id="default"> </span><span id="identifier">selesai</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier">masukan</span><span id="default"> = </span><span id="identifier-call">input</span><span id="parenthesis-1">(</span><span id="string">"Ketik sesuatu (keluar untuk keluar): "</span><span id="parenthesis-1">)</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="identifier">masukan</span><span id="default">.</span><span id="identifier-call">strip</span><span id="parenthesis-2">()</span><span id="default">.</span><span id="identifier-call">lower</span><span id="parenthesis-2">()</span><span id="default"> == </span><span id="string">'keluar'</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier">selesai</span><span id="default"> = </span><span id="keyword-identifier">True</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"Anda memasukan:"</span><span id="default">, </span><span id="identifier">masukan</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
|
|
224
|
+
|
|
225
|
+
### Statemen _do-while_
|
|
226
|
+
Statemen perulangan ini mirip dengan statemen _while_, bedanya adalah blok kode setidaknya dijalankan sekali meski kondisinya salah atau tidak memenuhi sejak awal.
|
|
227
|
+
<pre class="pyscript-code"><span id="identifier">selanjutnya</span><span id="default"> = </span><span id="keyword-identifier">False</span><br><span id="keyword">do</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"Selanjutnya"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">while</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">selanjutnya</span><span id="parenthesis-0">)</span></pre>
|
|
228
|
+
|
|
229
|
+
### Statemen _switch-case-default_
|
|
230
|
+
Statemen ini adalah bentuk kontrol untuk memilih suatu aksi dari target nilai yang diberikan untuk dijalankan.
|
|
231
|
+
<pre class="pyscript-code"><span id="parenthesis-0">[</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">]</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="number">1</span><span id="default">, </span><span id="number">1</span><span id="parenthesis-0">]</span><br><span id="identifier">operasi</span><span id="default"> = </span><span id="string">'+'</span><br><br><span id="keyword">switch</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">operasi</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">case</span><span id="default"> </span><span id="string">'+'</span><span id="default">:</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="identifier">a</span><span id="default"> + </span><span id="identifier">b</span><span id="parenthesis-1">)</span><br><span id="default"> </span><span id="keyword">break</span><span id="default"> </span><span id="comment"># break untuk menghentikan kasus selanjutnya</span><br><span id="default"> </span><span id="keyword">case</span><span id="default"> </span><span id="string">'-'</span><span id="default">:</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="identifier">a</span><span id="default"> - </span><span id="identifier">b</span><span id="parenthesis-1">)</span><br><span id="default"> </span><span id="keyword">break</span><br><span id="default"> </span><span id="keyword">default</span><span id="default">: </span><span id="comment"># tidak memenuhi semua kasus di atas</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"Operasi belum tersedia untuk"</span><span id="default">, </span><span id="identifier">operasi</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
|
|
232
|
+
|
|
233
|
+
### Statemen _func_
|
|
234
|
+
Statemen ini untuk mendeklarasikan sebuah fungsi. Fungsi ini bisa ditulis dalam ekspresi.
|
|
235
|
+
<pre class="pyscript-code"><span id="comment"># buat fungsi</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">foo</span><span id="parenthesis-0">()</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"Halo!"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier-call">foo</span><span id="parenthesis-0">()</span><span id="default"> </span><span id="comment"># panggil fungsi</span><br><br><span id="comment"># dengan parameter</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">add</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="identifier">a</span><span id="default"> + </span><span id="identifier">b</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier-call">add</span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># 3</span><br><br><span id="comment"># dengan parameter dan parameter dengan nilai default</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">sapa</span><span id="parenthesis-0">(</span><span id="identifier">nama</span><span id="default">, </span><span id="identifier">pekerjaan</span><span id="default">=</span><span id="string">'pengaguran'</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="identifier">pekerjaan</span><span id="default"> == </span><span id="string">'pengaguran'</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-2">(</span><span id="string">"get a job vro"</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="default"> </span><span id="keyword">else</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-2">(</span><span id="string">"Halo {}! Kamu bekerja sebagai {}"</span><span id="default">.</span><span id="identifier-call">format</span><span id="parenthesis-0">(</span><span id="identifier">nama</span><span id="default">, </span><span id="identifier">pekerjaan</span><span id="parenthesis-0">)</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier-call">sapa</span><span id="parenthesis-0">(</span><span id="string">"Budi"</span><span id="parenthesis-0">)</span><br><span id="identifier-call">sapa</span><span id="parenthesis-0">(</span><span id="string">"Ahmad"</span><span id="default">, </span><span id="string">"Teknik"</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># parameter pekerjaan kini menjadi 'Teknik'</span><br><br><span id="comment"># mengembalikan nilai</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">kurang</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="default">, </span><span id="identifier">b</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">a</span><span id="default"> - </span><span id="identifier">b</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier-call">kurang</span><span id="parenthesis-1">(</span><span id="number">1</span><span id="default">, </span><span id="number">1</span><span id="parenthesis-1">)</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># 0</span><br><br><span id="identifier">data</span><span id="default"> = </span><span id="parenthesis-0">[</span><span id="string">'5'</span><span id="default">, </span><span id="string">'4'</span><span id="default">, </span><span id="number">1</span><span id="default">, </span><span id="number">3</span><span id="default">, </span><span id="string">'2'</span><span id="parenthesis-0">]</span><br><br><span id="comment"># membuat fungsi di dalam ekspresi (bisa ditulis tanpa nama fungsi)</span><br><span id="identifier">urut</span><span id="default"> = </span><span id="identifier-call">sorted</span><span id="parenthesis-0">(</span><span id="identifier">data</span><span id="default">, </span><span id="identifier">key</span><span id="default">=</span><span id="keyword">func</span><span id="default"> </span><span id="parenthesis-1">(</span><span id="identifier">item</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="keyword">if</span><span id="default"> </span><span id="parenthesis-2">(</span><span id="identifier-call">isinstance</span><span id="parenthesis-0">(</span><span id="identifier">item</span><span id="default">, </span><span id="identifier-class">str</span><span id="parenthesis-0">)</span><span id="parenthesis-2">)</span><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier-class">int</span><span id="parenthesis-2">(</span><span id="identifier">item</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">item</span><br><span id="parenthesis-1">}</span><span id="parenthesis-0">)</span><br><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">data</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># [1, '2', 3, '4', '5']</span></pre>
|
|
236
|
+
|
|
237
|
+
### Statemen _del_
|
|
238
|
+
Statemen ini menghapus refrensi variabel (kadang objek dihapus atau tidak dihapus tergantung pada _garbage collector_ Python).
|
|
239
|
+
<pre class="pyscript-code"><span id="identifier">a</span><span id="default"> = </span><span id="number">1</span><br><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># 1</span><br><br><span id="keyword">del</span><span id="default"> </span><span id="identifier">a</span><br><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">a</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># NameError</span></pre>
|
|
240
|
+
|
|
241
|
+
### Statemen _assert_
|
|
242
|
+
Statemen ini menegaskan suatu kondisinya harus benar, jika tidak maka akan melempar `AssertionError`. Statemen ini bisa di _bypass_ dengan flag `-O` (_optimize_)
|
|
243
|
+
<pre class="pyscript-code"><span id="keyword">assert</span><span id="default"> </span><span id="number">1</span><span id="default"> + </span><span id="number">1</span><span id="default"> == </span><span id="number">2</span><span id="default"> </span><span id="comment"># tidak masalah</span><br><br><span id="keyword">assert</span><span id="default"> </span><span id="number">1</span><span id="default"> + </span><span id="number">1</span><span id="default"> == </span><span id="number">1</span><span id="default">, </span><span id="string">"1 + 1 bukan 1"</span><span id="default"> </span><span id="comment"># bermasalah (kondisinya salah)</span><br><br><span id="keyword">assert</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="number">1</span><span id="default"> + </span><span id="number">1</span><span id="default"> == </span><span id="number">1</span><span id="default">, </span><span id="string">"1 + 1 bukan 1"</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># tidak masalah karena kondisi adalah tuple</span><br><span id="default"> </span><span id="comment"># dan tuple itu berisi yang dimana akan selalu</span><br><span id="default"> </span><span id="comment"># benar</span></pre>
|
|
244
|
+
|
|
245
|
+
### Statemen _throw_
|
|
246
|
+
Statemen ini akan melempar kesalahan. Tidak seperti statemen _assert_, ia tidak bisa di _bypass_ dengan flag tertentu kecuali dengan statemen _try-catch_.
|
|
247
|
+
<pre class="pyscript-code"><span id="keyword">throw</span><span id="default"> </span><span id="identifier-class">Exception</span><span id="parenthesis-0">(</span><span id="string">"Kesalahan fatal!"</span><span id="parenthesis-0">)</span></pre>
|
|
248
|
+
|
|
249
|
+
### Statemen _try-catch-finally_
|
|
250
|
+
Statemen ini mencoba untuk menangkap eksepsi yang terjadi pada blok kode. Blok _finally_ berfungsi agar blok _finally_ itu di eksekusi apapun yang terjadi entah itu adanya kesalahan, adanya statemen penghenti seperti _break_, _continue_, dan _return_. Blok _catch_ adalah blok yang menganani terjadinya sebuah kesalahan jika itu terjadi.
|
|
251
|
+
<pre class="pyscript-code"><span id="keyword">try</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="number">1</span><span id="default"> / </span><span id="number">0</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><span id="keyword">catch</span><span id="default"> </span><span id="parenthesis-0">(</span><span id="identifier">e</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"Terjadi kesalahan:"</span><span id="default">, </span><span id="identifier">e</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><span id="keyword">finally</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"Program Selesai"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="comment"># jika tanpa blok catch (hanya finally) maka lemparan eksepsi akan terjadi</span><br><span id="comment"># dan blok finally tetap dijalankan</span><br><span id="keyword">try</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">throw</span><span id="default"> </span><span id="identifier-class">Exception</span><span id="parenthesis-1">(</span><span id="string">"fatal!"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><span id="default"> </span><span id="keyword">finally</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"Program Selesai"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span></pre>
|
|
252
|
+
|
|
253
|
+
### Statemen _class_
|
|
254
|
+
Statemen ini adalah untuk membuat objek yang dikenal dengan istilah _Object Oriented Programming_ (_OOP_).
|
|
255
|
+
<pre class="pyscript-code"><span id="keyword">class</span><span id="default"> </span><span id="identifier-class">Posisi2D</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">__init__</span><span id="parenthesis-1">(</span><span id="identifier">self</span><span id="default">, </span><span id="identifier">x</span><span id="default">, </span><span id="identifier">y</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier">self</span><span id="default">.</span><span id="identifier">x</span><span id="default"> = </span><span id="identifier">x</span><br><span id="default"> </span><span id="identifier">self</span><span id="default">.</span><span id="identifier">y</span><span id="default"> = </span><span id="identifier">y</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><br><span id="default"> </span><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">__repr__</span><span id="parenthesis-1">(</span><span id="identifier">self</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="string">'Posisi2D({!r}, {!r})'</span><span id="default">.</span><span id="identifier-call">format</span><span id="parenthesis-2">(</span><span id="identifier">self</span><span id="default">.</span><span id="identifier">x</span><span id="default">, </span><span id="identifier">self</span><span id="default">.</span><span id="identifier">y</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier">posisiku</span><span id="default"> = </span><span id="identifier-call">Posisi2D</span><span id="parenthesis-0">(</span><span id="number">0</span><span id="default">, </span><span id="number">0</span><span id="parenthesis-0">)</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">posisiku</span><span id="parenthesis-0">)</span></pre>
|
|
256
|
+
|
|
257
|
+
### Statemen dekorasi (_decorator_)
|
|
258
|
+
Statemen ini digunakan untuk mendekorasi sebuah definisi fungsi atau kelas. Prefix yang digunakan ialah `@` diikuti dengan statemen _func_, _class_, atau dekorator lain/tambahan.
|
|
259
|
+
<pre class="pyscript-code"><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">dekorasiku</span><span id="parenthesis-0">(</span><span id="identifier">fungsi</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="keyword">func</span><span id="parenthesis-1">()</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-2">(</span><span id="string">"Menjankan fungsi utama"</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="identifier">hasil</span><span id="default"> = </span><span id="identifier-call">fungsi</span><span id="parenthesis-2">()</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-2">(</span><span id="string">"Selesai"</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="keyword">return</span><span id="default"> </span><span id="identifier">hasil</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="parenthesis-0">}</span><br><br><span id="default">@</span><span id="identifier">dekorasiku</span><br><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">foo</span><span id="parenthesis-0">()</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-1">(</span><span id="string">"Foo!!"</span><span id="parenthesis-1">)</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier-call">foo</span><span id="parenthesis-0">()</span><br><br><span id="default">@</span><span id="identifier">dekorasiku</span><br><span id="keyword">class</span><span id="default"> </span><span id="identifier-class">Test</span><span id="default"> </span><span id="parenthesis-0">{</span><br><span id="default"> </span><span id="keyword">func</span><span id="default"> </span><span id="identifier-call">__init__</span><span id="parenthesis-1">(</span><span id="identifier">self</span><span id="parenthesis-1">)</span><span id="default"> </span><span id="parenthesis-1">{</span><br><span id="default"> </span><span id="identifier-call">print</span><span id="parenthesis-2">(</span><span id="string">"Test.."</span><span id="parenthesis-2">)</span><br><span id="default"> </span><span id="parenthesis-1">}</span><br><span id="parenthesis-0">}</span><br><br><span id="identifier-call">Test</span><span id="parenthesis-0">()</span></pre>
|
|
260
|
+
|
|
261
|
+
### Statemen _from-import_
|
|
262
|
+
Statemen ini dipakai untuk me-impor file modul yang bisa berupa modul PyScript atau Python.
|
|
263
|
+
<pre class="pyscript-code"><span id="keyword">import</span><span id="default"> </span><span id="identifier">time</span><span id="default"> </span><span id="comment"># impor time dari python</span><br><span id="identifier">time</span><span id="default">.</span><span id="identifier-call">sleep</span><span id="parenthesis-0">(</span><span id="number">2</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># tidur 2 detik</span><br><br><span id="keyword">from</span><span id="default"> </span><span id="identifier">time</span><span id="default"> </span><span id="keyword">import</span><span id="default"> </span><span id="identifier">sleep</span><span id="default"> </span><span id="comment"># impor salah satu paket di dalam time</span><br><span id="identifier-call">sleep</span><span id="parenthesis-0">(</span><span id="number">3</span><span id="parenthesis-0">)</span><span id="default"> </span><span id="comment"># tidur 3 detik</span><br><br><span id="keyword">from</span><span id="default"> </span><span id="identifier">time</span><span id="default"> </span><span id="keyword">import</span><span id="default"> </span><span id="parenthesis-0">[</span><span id="identifier">time</span><span id="default">, </span><span id="identifier">monotonic</span><span id="parenthesis-0">]</span><span id="default"> </span><span id="comment"># impor lebih dari 1 paket (wajib pakai kurung)</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier-call">time</span><span id="parenthesis-1">()</span><span id="default">, </span><span id="identifier-call">monotonic</span><span id="parenthesis-1">()</span><span id="parenthesis-0">)</span><br><br><span id="keyword">import</span><span id="default"> </span><span id="identifier">numpy</span><span id="default"> </span><span id="keyword">as</span><span id="default"> </span><span id="identifier">np</span><span id="default"> </span><span id="comment"># alias numpy adalah np</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">np</span><span id="default">.</span><span id="identifier-call">array</span><span id="parenthesis-1">(</span><span id="parenthesis-2">[</span><span id="number">1</span><span id="default">, </span><span id="number">2</span><span id="default">, </span><span id="number">3</span><span id="parenthesis-2">]</span><span id="parenthesis-1">)</span><span id="parenthesis-0">)</span><br><br><span id="comment"># alias pada masing paket</span><br><span id="keyword">from</span><span id="default"> </span><span id="identifier">this</span><span id="default"> </span><span id="keyword">import</span><span id="default"> </span><span id="identifier">s</span><span id="default"> </span><span id="keyword">as</span><span id="default"> </span><span id="identifier">kata_kata</span><br><span id="keyword">from</span><span id="default"> </span><span id="identifier">time</span><span id="default"> </span><span id="keyword">import</span><span id="default"> </span><span id="parenthesis-0">[</span><span id="identifier">time</span><span id="default"> </span><span id="keyword">as</span><span id="default"> </span><span id="identifier">waktu</span><span id="default">, </span><span id="identifier">monotonic</span><span id="default"> </span><span id="keyword">as</span><span id="default"> </span><span id="identifier">monotonik</span><span id="parenthesis-0">]</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">kata_kata</span><span id="parenthesis-0">)</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">waktu</span><span id="default">, </span><span id="identifier">monotonik</span><span id="parenthesis-0">)</span><br><br><span id="comment"># meimpor modul dalam bentuk file path</span><br><span id="keyword">import</span><span id="default"> </span><span id="string">"kalkulatorku.pys"</span><span id="default"> </span><span id="keyword">as</span><span id="default"> </span><span id="identifier">kalkulator</span><span id="default"> </span><span id="comment"># kalo string pakai alias untuk meakses modulnya</span><br><span id="identifier-call">print</span><span id="parenthesis-0">(</span><span id="identifier">kalkulator</span><span id="default">.</span><span id="identifier-call">tambah</span><span id="parenthesis-1">(</span><span id="number">2</span><span id="default">, </span><span id="number">2</span><span id="parenthesis-1">)</span><span id="parenthesis-0">)</span></pre>
|
|
264
|
+
|
|
265
|
+
## Penutup
|
|
266
|
+
Anda sudah sampai akhir, harusnya Anda sudah cukup bisa menulis dan memahami syntax dari PyScript ini. Saya ada tantangan untuk Anda, cobalah untuk membuat beberapa kode PyScript sesuai dengan permintaan dibawah ini:
|
|
267
|
+
|
|
268
|
+
1. Buat program untuk menghitung nilai pitagoras.
|
|
269
|
+
2. Buat program untuk mencari nilai faktorial.
|
|
270
|
+
3. Buat program untuk mencari nilai fibonaci.
|
|
271
|
+
4. Buat program gim sederhana yakni tebak angka.
|
|
272
|
+
5. Buat program gim ular menggunakan _egine_ atau modul Python [PyGame](https://pygame.org).
|
|
273
|
+
|
|
274
|
+
_Good Luck :)_
|
|
275
|
+
|
|
276
|
+
<style>
|
|
277
|
+
/*
|
|
278
|
+
if you seeing this it means this platform has disabled style tags
|
|
279
|
+
for security reasons.
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
:root {
|
|
283
|
+
--default: #D4D4D4;
|
|
284
|
+
--keyword: #C586C0;
|
|
285
|
+
--keyword-identifier: #307CD6;
|
|
286
|
+
--identifier: #8CDCFE;
|
|
287
|
+
--identifier-const: #2EA3FF;
|
|
288
|
+
--identifier-call: #DCDCAA;
|
|
289
|
+
--identifier-class: #4EC9B0;
|
|
290
|
+
--number: #B5CEA8;
|
|
291
|
+
--string: #CE9178;
|
|
292
|
+
--parenthesis-unmatch: #B51819;
|
|
293
|
+
--parenthesis-0: #FFD705;
|
|
294
|
+
--parenthesis-1: #D45DBA;
|
|
295
|
+
--parenthesis-2: #1A9FFF;
|
|
296
|
+
--comment: #549952;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.pyscript-code span#default {
|
|
300
|
+
color: var(--default);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.pyscript-code span#keyword {
|
|
304
|
+
color: var(--keyword);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.pyscript-code span#keyword-identifier {
|
|
308
|
+
color: var(--keyword-identifier);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.pyscript-code span#identifier {
|
|
312
|
+
color: var(--identifier);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.pyscript-code span#identifier-const {
|
|
316
|
+
color: var(--identifier-const);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.pyscript-code span#identifier-call {
|
|
320
|
+
color: var(--identifier-call);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.pyscript-code span#identifier-class {
|
|
324
|
+
color: var(--identifier-class);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.pyscript-code span#number {
|
|
328
|
+
color: var(--number);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.pyscript-code span#string {
|
|
332
|
+
color: var(--string);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.pyscript-code span#parenthesis-unmatch {
|
|
336
|
+
color: var(--parenthesis-unmatch);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.pyscript-code span#parenthesis-0 {
|
|
340
|
+
color: var(--parenthesis-0);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.pyscript-code span#parenthesis-1 {
|
|
344
|
+
color: var(--parenthesis-1);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.pyscript-code span#parenthesis-2 {
|
|
348
|
+
color: var(--parenthesis-2);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.pyscript-code span#comment {
|
|
352
|
+
color: var(--comment);
|
|
353
|
+
}
|
|
354
|
+
</style>
|