2.2. Variabel dan tipe dasar

Sebuah variabel adalah nama yang Anda ikat ke sebuah nilai dengan operator =. Setelah penugasan, nama tersebut dapat digunakan di mana pun nilai tersebut dapat digunakan:

width = 320
height = 240
pixels = width * height
print(pixels)               # prints 76800

Sisi kanan = dievaluasi terlebih dahulu, kemudian hasilnya diikat ke nama di sebelah kiri. Membaca nama yang belum pernah ditugaskan akan memunculkan NameError.

Variabel hanyalah sebuah label. Ia menunjuk pada sebuah nilai -- nilai tersebut berada di tempat lain, dan nilai yang sama dapat memiliki sejumlah label apa pun.

Three labels pointing at three boxed values; reassigning a label moves the arrow, not the value.

Variabel adalah label yang menunjuk pada nilai. Menugaskan ulang sebuah variabel memindahkan label; tidak mengubah nilai yang ditunjuk label tersebut sebelumnya.

2.2.1. Aturan penamaan

  • Nama dimulai dengan huruf atau garis bawah dan dapat berisi huruf, angka, dan garis bawah. frame_count dan _internal valid; 1st_frame adalah kesalahan sintaks.

  • Nama bersifat case-sensitive: Width dan width adalah dua variabel yang berbeda.

  • Hindari menggunakan kembali nama bawaan seperti list, str, id(), atau print() -- membayangi mereka tidak menimbulkan kesalahan, tetapi bawaan aslinya menjadi tidak dapat diakses untuk sisa skrip.

  • Konvensi: snake_case untuk variabel dan fungsi, ALL_CAPS untuk konstanta yang tidak dimaksudkan untuk diubah, CamelCase untuk nama kelas.

2.2.2. Tipe dasar

Setiap nilai di Python memiliki tipe yang menentukan operasi apa yang didukungnya. Empat tipe yang paling sering Anda tulis adalah:

  • int -- bilangan bulat, positif atau negatif. Bilangan bulat MicroPython dapat tumbuh sebesar yang diizinkan oleh memori. Literal ditulis sebagai digit biasa: 0, 42, -7. Literal heks (0x1A), oktal (0o17), dan biner (0b1010) juga valid dan berguna untuk register dan bitmask.

  • float -- angka dengan titik desimal atau eksponen: 3.14, 1.0, -0.5, 2e6 (= 2.000.000,0). Semua float pada kamera adalah IEEE 754 32-bit -- presisi sekitar tujuh digit signifikan.

  • bool -- salah satu dari dua literal True atau False (perhatikan huruf kapitalnya).

  • str -- teks, ditulis sebagai karakter di antara tanda kutip tunggal atau ganda: "hello", 'OpenMV'. Kedua gaya kutip adalah setara; pilih yang memungkinkan Anda menghindari escape karakter kutip yang muncul di dalam string.

Ada juga nilai kelima yang perlu segera diketahui:

  • None -- nilai tunggal dari tipe NoneType. Digunakan untuk berarti "tidak ada nilai" atau "belum disetel". Fungsi yang tidak secara eksplisit mengembalikan apa pun secara implisit mengembalikan None.

2.2.3. Memeriksa dan mengonversi tipe

Fungsi bawaan type() mengembalikan tipe dari nilai apa pun:

>>> type(42)
<class 'int'>
>>> type(3.14)
<class 'float'>
>>> type("hello")
<class 'str'>

Setiap tipe juga berfungsi ganda sebagai fungsi konversi. Berikan nilai dari tipe yang berbeda dan Anda akan mendapatkan nilai setara dari tipe baru -- ketika konversi terdefinisi dengan baik:

>>> int("42")
42
>>> int(3.9)
3                           # truncates toward zero, not rounds
>>> float("1.5")
1.5
>>> str(255)
'255'
>>> bool(0), bool(1), bool("")
(False, True, False)

Konversi yang tidak terdefinisi dengan baik akan memunculkan ValueError:

>>> int("hello")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid syntax for integer with base 10

2.2.4. Penugasan ulang dan pengetikan dinamis

Sebuah nama dapat ditugaskan ulang ke nilai dari tipe apa pun kapan saja. Berikut ini adalah valid:

x = 42
x = "now I'm a string"
x = 3.14

Python tidak mengikat variabel ke sebuah tipe. Kode yang bergantung pada x sebagai bilangan bulat cukup mengharapkan bilangan bulat di titik penggunaannya; jika mendapatkan sesuatu yang lain, Anda akan mendapat TypeError saat runtime.

Catatan

Menugaskan ulang x tidak mengubah nilai yang ditunjuk oleh binding lama. Jika dua nama berbagi nilai yang sama, menugaskan ulang satu tidak memengaruhi yang lain:

a = [1, 2, 3]
b = a                       # both point at the same list
a = "different now"
print(b)                    # still [1, 2, 3]

Memutasi nilai yang dibagikan berbeda: metode seperti list.append mengubah nilai yang ditunjuk oleh binding, sehingga setiap nama lain yang menunjuk ke nilai yang sama akan melihat perubahannya.