Operator dan Ekspresi (Expressions) Python
Daftar Isi
Setiap logika komputasi yang berada dalam program Anda akan menggunakan ekspresi.
Sebuah ekspresi dapat terdiri dari operator dan operan.
Salah satu contoh termudah adalah a + b atau 2 + 3, yang dapat kita pecah yakni + sebagai operator dan a, b, 2, atau 3 sebagai variabel/operand. Operator jelas memiliki fungsinya masing-masing dan direpresentasikan dengan simbol atau keyword tertentu.
Tip: Anda dapat melakukan expression tanpa menggunakan variabel secara langsung pada mode interaktif Python:
- 2 + 3
Output:
5 |
- 3 * 5
Output:
15 |
Jenis-jenis operator
Matematika dan string
- + (tambah)
- Menambahkan dua objek.
- 3 + 5 menghasilkan 8
- 'a' + 'b' menghasilkan 'ab'.
- - (kurang)
- Mengurangkan operand kedua dari operand pertama. Jika hanya satu operand, diasumsikan nilai operand pertama adalah 0.
- -5.2 adalah expression yang sama dengan 0 - 5.2 menghasilkan -5.2.
- 50 - 24 menghasilkan 26.
- Tidak berlaku untuk string, akan menghasilkan error unsupported operand.
- * (perkalian)
- Mengembalikan hasil perkalian angka atau mengembalikan string yang diulang sejumlah tertentu.
- 2 * 3 menghasilkan 6.
- 'la' * 3 menghasilkan 'lalala'.
- ** (pangkat)
- Mengembalikan operand pertama pangkat operand kedua.
- 3 ** 4 menghasilkan 81 (sama dengan 3 * 3 * 3 * 3).
| Tips: untuk akar dua, gunakan pangkat 0.5.
- / (pembagian)
- Mengembalikan hasil pembagian operand pertama dengan operand kedua (float).
- 13 / 3 menghasilkan 4.333333333333333.
- // (pembagian habis dibagi / div)
- Mengembalikan hasil pembagian operand pertama dengan operand kedua (bilangan bulat), kecuali jika salah satu operand adalah float, akan menghasilkan float.
- 13 // 3 menghasilkan 4.
- -13 // 3 menghasilkan -5.
- 9//1.81 menghasilkan 4.0.
- % (modulo)
- Mengembalikan sisa bagi.
- 13 % 3 menghasilkan 1.
- -25.5 % 2.25 menghasilkan 1.5.
Operasi Bit
- << (left shift)
- Menggeser representasi bit/binary dari operand pertama sebanyak operand kedua ke kiri.
- 2 << 2 menghasilkan 8.
- 2 direpresentasikan sebagai 10 dalam binary.
- Geser ke kiri sebanyak 2x, menjadi 1000 (tambahkan 0 di belakangnya).
- 1000 dalam binary bernilai 8 dalam desimal.
- >> (right shift)
- Menggeser representasi bit/binary dari operand pertama sebanyak operand kedua ke kanan.
- 11 >> 1 menghasilkan 5.
- 11 direpresentasikan sebagai 1011 dalam binary.
- Geser ke kanan sebanyak 1x, menjadi 101.
- 101 dalam binary bernilai 5 dalam desimal.
- & (bit-wise AND)
- Menjalankan operasi binary AND pada representasi operand pertama dan kedua.
- 5 & 3 menghasilkan 1.
- Representasi binary 5 adalah 101 dan representasi binary 3 adalah 011.
- 101 and 011 bernilai 001.
- 001 dalam desimal adalah 1.
- | (bit-wise OR)
- Menjalankan operasi binary OR pada representasi operand pertama dan kedua.
- 5 | 3 menghasilkan 7.
- Representasi binary 5 adalah 101 dan representasi binary 3 adalah 011.
- 101 or 011 bernilai 111.
- 111 dalam desimal adalah 7.
- ^ (bit-wise XOR)
- Menjalankan operasi binary XOR pada representasi operand pertama dan kedua.
- 5 ^ 3 menghasilkan 6.
- Representasi binary 5 adalah 101 dan representasi binary 3 adalah 011.
- 101 xor 011 bernilai 110.
- 110 dalam desimal adalah 6.
- ~ (bit-wise invert)
- Menjalankan operasi binary invert pada representasi operand.
- Nilai invert dari x adalah -(x+1), menggunakan metode Two’s Complement
- ~5 menghasilkan -6.
- Lebih lanjut mengenai Two’s Complement dapat dibaca pada https://en.wikipedia.org/wiki/Two%27s_complement
Perbandingan
- < atau operator.lt (less than)
- Menjalankan perbandingan apakah operand pertama lebih kecil dari operand kedua.
- 5 < 3 menghasilkan False and 3 < 5 menghasilkan True.
- Perbandingan dapat berisi lebih dari dua operand, misalnya 3 < 5 < 7 menghasilkan True.
- > atau operator.gt (greater than)
- Menjalankan perbandingan apakah operand pertama lebih besar dari operand kedua.
- 5 > 3 menghasilkan True.
- <= atau operator.le (less than or equal to)
- Menjalankan perbandingan apakah operand pertama lebih kecil atau sama dengan operand kedua.
- x = 3; y = 6;
- x <= y menghasilkan True.
- >= atau operator.ge (greater than or equal to)
- Menjalankan perbandingan apakah operand pertama lebih besar atau sama dengan operand kedua.
- x = 4; y = 3;
- x >= y menghasilkan True.
- == atau operator.eq (equal to)
- Menjalankan perbandingan apakah operand pertama sama dengan operand kedua.
- x = 2; y = 2;
- x == y menghasilkan True.
- x = 'str'; y = 'stR';
- x == y menghasilkan False.
- x = 'str'; y = 'str';
- x == y menghasilkan True.
- != atau operator.ne (not equal to)
- Menjalankan perbandingan apakah operand pertama tidak sama dengan operand kedua.
- x = 2; y = 3;
- x != y returns True.
Penggunaan le, lt, gt, ge, eq, ne
from operator import *
a = 1
b = 5.0
print('a = {}'.format(a))
print('b = {}'.format(b))
for func in (lt, le, eq, ne, ge, gt):
print ('{}(a, b): {}'.format(func.__name__, func(a, b)))
Output:
a = 1 b = 5.0 lt(a, b): True le(a, b): True eq(a, b): False ne(a, b): True ge(a, b): False gt(a, b): False |
Boolean Operator
- not (boolean NOT)
- Jika x bernilai True, fungsi akan mengembalikan nilai False.
- Jika x bernilai False, fungsi akan mengembalikan nilai True.
- x = True;
- not x akan mengembalikan nilai False.
- and (boolean AND)
- x AND y akan mengembalikan nilai False jika x bernilai False, atau fungsi akan mengembalikan nilai y.
- x = False; y = True;
- x AND y, Fungsi akan mengembalikan nilai False karena x bernilai False.
- Dalam kasus ini, Python tidak akan mengevaluasi nilai y karena apapun nilai y tidak akan mempengaruhi hasil. Hal ini dinamakan short-circuit evaluation.
- or (boolean OR)
- x OR y, Jika x bernilai True, fungsi akan mengembalikan nilai True, atau fungsi akan mengembalikan nilai dari y.
- x = True; y = False;
- x OR y, fungsi akan mengembalikan nilai True.
- Dalam kasus ini, Python juga menggunakan short-circuit evaluation karena apapun nilai y tidak akan mempengaruhi hasil.
Cara singkat menuliskan operasi
Jika Anda melakukan assignment kembali hasil sebuah expression, beberapa di antaranya bisa disingkat sebagai berikut:
- a = 2
- a = a * 3
Dapat dituliskan sebagai
- a = 2
- a *= 3
Perhatikan formatnya menjadi [operand] [operasi] = expression.
Urutan matematis dalam melakukan evaluasi
Jika Anda memiliki expression 2 + 3 * 4, Apakah penambahan dilakukan terlebih dahulu sebelum perkalian? Jika merujuk pada aturan yang benar, maka perkalian dilakukan lebih dahulu, sehingga perkalian memiliki urutan lebih awal/tinggi.
Berikut adalah tabel urutan yang diambil dari referensi Dokumentasi Python:
Operator | Description |
---|---|
lambda | Lambda expression |
if - else | Conditional expression |
or | Boolean OR |
and | Boolean AND |
not x | Boolean NOT |
in, not in, is, is not, <, <=, >, >=, !=, == | Comparisons, including membership tests and identity tests |
| | Bitwise OR |
^ | Bitwise XOR |
& | Bitwise AND |
<<, >> | Shifts |
+, - | Addition and subtraction |
*, @, /, //, % | Multiplication, matrix multiplication, division, floor division, remainder |
+x, -x, ~x | Positive, negative, bitwise NOT |
** | Exponentiation |
await x | Await expression |
x[index], x[index:index], x(arguments...), x.attribute | Subscription, slicing, call, attribute reference |
(expressions...), [expressions...], {key: value...},{expressions...} | Binding or tuple display, list display, dictionary display, set display |
Tip: Gunakan kurung untuk memudahkan keterbacaan dan memastikan urutan secara tepat.
2 + (3 * 4) akan lebih mudah dibaca daripada 2 + 3 * 4, meskipun hasilnya samaGunakan kurung untuk mengubah urutan operasi. 2 + 3 * 4 seharusnya dikalikan terlebih dahulu.
Anda dapat menggunakan (2 + 3) * 4 untuk memastikan penjumlahan dilakukan terlebih dahulu.
Operator di Python juga bersifat asosiatif dari kiri ke-kanan. Artinya, semua operator yang memiliki tingkatan yang sama akan dijalankan berurutan dari kiri ke kanan
Posting Komentar