Python Selayang Pandang

Dari Wikibuku bahasa Indonesia, sumber buku teks bebas

Python Selayang Pandang

Pengantar[sunting]

Artikel ini merupakan rangkuman praktis bahasa pemprograman Python, materi yang disampaikan ditujukan terutama sekali bagi Pembaca yang telah memahami bahasa pemprograman lain seperti C, Java atau Perl dan ingin mengenal Python. Pembaca diharapkan telah meng-install Python pada sistem yang digunakan dan telah dapat menjalankan interpreter Python. Khusus untuk artikel ini, hanya akan dibahas penggunaan Python dalam sistem operasi Linux. Distro yang saya gunakan adalah OpenSUSE 10.3. Penggunaan distro yang lain seharusnya tidak mengalami kendala berarti. Jika Pembaca menggunakan sistem operasi Windows, silakan menyesuaikan.

Memulai Python[sunting]

Python merupakan Bahasa Interpreter, Anda tidak diharuskan melakukan kompilasi code sumber yang telah Anda buat, interpreter python-lah yang akan melakukannya. Sama halnya dengan bahasa pemprograman yang lain, pertama sekali Anda akan membutuhkan sebuah teks editor. Saya menggunakan “ vi “ dan 'sesuai tradisi', kita akan segera membuat program “Hello World”.

hello.py

#!/usr/bin/python

#hello.py

print "Hello World"

#eof

Ketik penggalan kode diatas dalam teks editor Anda dan simpan sebagai “ hello.py “. Perlu diingat tanda “ # “ (pagar) merupakan baris komentar dan tidak akan dieksekusi oleh interpreter, jika Anda pernah menggunakan Perl tentu Anda sudah familiar dengan ini. Sedangkan statement “ print “Hello World” “ adalah statement utama pada program ini dimana fungsi “ print “ digunakan untuk mencetak string “Hello World” pada layar. Tanda kutip digunakan untuk merepresentasikan string. Dalam kasus ini, tidak masalah apakah menggunakan baik kutip tunggal ( ' ) maupun kutip ganda ( “ )

Jika Anda sudah membuat file hello.py seperti diatas, maka Anda sudah dapat langsung menjalankannya. Silakan ketik:

hello.py

Hello World

Selamat, program pertama Anda sudah berhasil dijalankan dengan sukses!

Baris paling pertama kode diatas dikenal sebagai “ shebang “. Walaupun diawali dengan “ # “ (tanda pagar), namun dengan adanya “ ! “ (tanda seru) setelah tanda pagar, baris ini menginstruksikan bahwa lokasi interpreter python yang digunakan berada di: /usr/bin/python . Bagi yang pernah menggunakan bahasa pemprograman Perl, hal ini tentu sudah merupakan keseharian Anda. Untuk mengetahui lokasi interpreter python pada sistem linux Anda, gunakan perintah:

haddad@moria:~> which python

/usr/bin/python

Sesuai dengan contoh diatas, lokasi interpreter python pada sistem saya berada di: /usr/bin/python.

Sebagaimana bahasa scripting lainnya dalam lingkungan unix, script python juga dapat dieksekusi langsung seperti layaknya file executable. Yang perlu kita lakukan adalah mengubah mode file menjadi “ execute “:

haddad@moria:~> chmod +x hello.py

Setelah itu, program hello.py dapat langsung dijalankan melalui shell.

haddad@moria:~> ./hello.py

Hello World

Sekadar percobaan, coba Anda hilangkan baris paling pertama program “ hello.py “ diatas, dan jalankan seperti contoh diatas.

Ganti kode “ hello.py “ menjadi:

  1. hello.py

print "Hello World"

  1. eof

Lalu jalankan:

haddad@moria:~> ./hello.py

./hello.py: line 2: print: command not found

Setelah menjalankan program “ hello.py ” seperti contoh diatas, kita mendapatkan error: “ ./hello.py: line 2: print: command not found “. Hal ini terjadi karena kita tidak memberi tahu komputer lokasi interpreter python. Kurang lebih, seperti inilah fungsi “ shebang “ (“ #!/usr/bin/python “) yang telah disampaikan diatas. Sekarang, silahkan perbaiki program Anda.

Python Interactive Interpreter[sunting]

Salah satu kelebihan python adalah tersedianya “ Interactive Interpreter “. Interactive Interpreter akan otomatis muncul jika kita memanggil interpreter python tanpa argumen.

haddad@moria:~> python

Python 2.5.1 (r251:54863, Sep 22 2007, 01:43:31)

[GCC 4.2.1 (SUSE Linux)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>>

Setelah tanda promt “ >>> “ Anda dapat langsung mengetikkan kode python baris per-baris dan akan langsung dieksekusi oleh interpreter. Jika kode yang kita gunakan memiliki kelanjutan, misalnya kode “ for “ yang dapat memiliki beberapa baris lanjutan (statement “ for “ seperti halnya pada bahasa pemprograman lain merupakan sebuah “ blok “ statement) maka interactive interpreter akan memberikan promt “ ... “ (titik tiga kali) sebagai tempat kita mengetikkan kode lanjutan. Setelah kode lanjutan selesai, cukup tekan “ enter “ untuk menyudahi blok statement yang telah kita buat.

Hasil eksekusi akan ditampilkan pada baris di bawah kode yang kita ketik tanpa promt (tanda ” >>> “ atau “ ... “). Untuk beberapa jenis kode, misalnya fungsi / method / class, hasil eksekusi akan ditampilkan setelah fungsi, method atau class tersebut dipanggil.

Contoh kode satu baris:

>>> print "Saya sedang belajar PYTHON !"

Saya sedang belajar PYTHON !

Contoh jika kode kita memiliki kelanjutan:

>>> for number in range (10):

... print number

...

0

1

2

3

4

5

6

7

8

9

Interactive interpreter memungkinkan kita menjalankan kode python secara baris per baris. Semua variabel yang didefenisikan juga tersimpan dalam memori sehingga dapat dipanggil kembali dalam sesi yang sama . Perhatikan contoh dibawah:

>>> a = 2

>>> b = 3

>>> c = 4

>>> print a + b + c

9

Baris pertama, kedua dan ketiga contoh kode diatas mendefenisiskan nilai variabel “ a “ dengan nilai “ 2 “, “ b “ dengan nilai “ 3 “ dan “ c “ dengan nilai “ 4 “. Baris ke empat kita memanggil fungsi “ print “ untuk menampilkan nilai variabel “ a “ ditambah variabel “ b “ ditambah variabel “ c “. Dalam contoh diatas 2 + 3 + 4 adalah 9.

Hal yang serupa juga berlaku untuk “ fungsi “, “ method “ atau “ class “. Sebagai contoh, fungsi yang kita buat dapat dipanggil dimana saja dalam sesi yang sama.

Contoh pembuatan fungsi “ pangkat “:

>>> def pangkat():

... print "a = 2 dan b = 3, maka a + b adalah 5"

...

Pemanggilan fungsi “ pangkat “

>>> pangkat()

a = 2 dan b = 3, maka a + b adalah 5

Lebih tradisional lagi, karena interactive interpreter python mampu menjalankan kode python secara baris-per-baris, maka secara tidak langsung interactive interpreter juga bisa berfungsi sebagai kalkulator. Perhatikan contoh dibawah:

>>> 7 + 3

10

>>> 8 - 5

3

>>> 9 / 3

3

>>> 9 * 2

18

>>> 9 % 3

0

>>> 2 ** 3

8

>>>

Banyak sekali nilai tambah interactive interpreter python, Anda dapat menggunakannya sesuai kebutuhan. Dan untuk saya pribadi, saya menggunakan interactive interpreter ini sebagai uji coba penggunaan fungsi / method yang terdapat dalam modul-modul tambahan untuk python, sebelum saya menggunakannya secara nyata dalam bentuk aplikasi siap pakai.

Saya menggunakan interactive interpreter untuk mencoba modul bluetooth pada python:

>>> import bluetooth

>>> device = bluetooth.discover_devices()

>>> for dev in device:

... alamat = dev

... nama = bluetooth.lookup_name(dev)

... print "Perangkat yang ditemukan: " + str(nama) + " dengan alamat: " + str(alamat)

...

Perangkat yang ditemukan: hax0r dengan alamat: 00:16:B8:82:00:87

Dengan adanya interactive interpreter, proses pengembangan aplikasi menjadi lebih efisien. Contoh-contoh kode program dalam artikel ini dibuat dalam interactive interpreter. Jika Anda ingin mencoba, jalankan interactive interpreter python dalam sistem Anda dan mulailah mengetik !.

Analisa Leksikal

Setelah mengikuti contoh-contoh yang diberikan sebelumnya, mungkin Anda melihat perbedaan mendasar penggunaan sintak-sintak python dibandingkan dengan bahasa pemprograman lainnya. Pada python, di setiap akhir statement tidak diharuskan memiliki titik koma (“ ; “). Boleh saja Anda memberikan titik koma pada akhir kode anda, namun hal ini tidak diperlukan dan jika tidak hati-hati, penggunaan titik koma bahkan bisa menghasilkan error.

Contoh penggunaan titik koma dalam python:

>>> print "Statement ini menggunakan titik koma";

Statement ini menggunakan titik koma

>>> print "Sedangkan yang ini tidak!"

Sedangkan yang ini tidak!

Menurut “ Language Reference “ dari dokumentasi python, bahasa pemprograman python dibagi menjadi sekumpulan “ Logical Line “ atau garis / baris logika. Akhir sebuah logical lines ditandai dengan token NEWLINE sedangkan logical lines itu sendiri dibangun dari satu atau lebih “ Phisical Lines “.

Phisical lines merupakan sekumpulan urutan karakter, yang diakhiri dengan “ end-of-line “. Dalam Unix end-of-line ditandai dengan karakter ASCII LF (Line Feed). Pada Windows, end-of-line ditandai dengan karakter ASCII CR LF (Cariage Return diikuti dengan Line Feed). Lain halnya dengan Machintosh, menggunakan ASCII CR (Cariage Return) sebagai end-of-line. Hal ini tidak menjadi masalah dalam source code, karena python akan mengikuti bentuk yang digunakan oleh platform dimana ia berjalan.

Sederhananya, interpreter python memisahkan statement python dengan baris baru. Tidak seperti bahasa pemprograman lain yang menggunakan semicolon “ ; “ untuk memisahkan statement.

>>> print "statement ini salah" print "karena tidak dipisahkan dengan baris bari \(NEWLINE\)"

File "<stdin>", line 1

print "statement ini salah" print "karena tidak dipisahkan dengan baris bari \(NEWLINE\)"

^

SyntaxError: invalid syntax

Cara yang benar menuliskan statement python adalah memisahkannya dengan baris baru!.

print “Ini adalah penulisan statement yang benar”

print “Begitu juga dengan ini”

Untuk menandakan baris komentar, seperti yang telah disampaikan diatas, python menggunakan tanda pagar (“ # “). Setiap baris / statement yang diawali dengan tanda pagar tidak akan dieksekusi oleh interpreter python.

>>> # ini adalah komentar

...

>>> print "Hello ..." # ini adalah komentar

Hello ...

Dalam operasi tertentu, misalnya perulangan dan percabangan, kita menggunakan sekelompok statement yang bekerja sebagai sebuah kesatuan. Sekelompok statement tersebut haruslah berada dalam sebuah blok. Sebagai contoh menggunakan perulangan “ for “ dalam bahasa pemprograman C, kita menggunakan kurung kurawal “ { } “ sebagai penanda blok statement.

Lain halnya dengan python. Penanda sebuah blok program menggunakan “ identation “. Dengan memberikan white space (spasi) dengan jumlah tertentu dan konsisten sebelum statement, akan memberi tahu interpreter bahwa statement yang berada setelah jumlah spasi tertentu tersebut merupakan sebuah blok program.

Perhatikan contoh dibawah:

>>> gender = "Pria"

>>> umur = 22

>>> if gender is "Pria":

... if umur >= 21:

... print "Sudah boleh menikah"

... else:

... print "Belum boleh menikah"

... else:

... if umur >= 16:

... print "Sudah boleh menikah"

... else:

... print "Belum boleh menikah"

...

Sudah boleh menikah

Contoh diatas merupakan contoh pemakaian “ if “ bersarang (nested if). Sengaja saya pilihkan agar pembaca lebih mudah memahami konsep identasi.

Dua baris pertama contoh diatas merupakan pemberian nilai untuk variabel “ gender “ dan “ umur “. Masing-masing diberi nilai “ Pria “ (diberi tanda kutip karena merupakan string) dan 22 (bertipe integer). Pada baris ke tiga, kita memulai sebuah “ blok “ “ if “. Perhatikan baris statement yang menjorok ke dalam. Saya menggunakan tiga buah spasi untuk memberi identasi dan memberi tahu interpreter bahwa statement tersebut merupakan sebuah blok statement. Pada baris ke empat saya memulai lagi pemakaian “ if “ yang juga memiliki blok tersendiri, maka statement di bawahnya yaitu pada baris ke lima diberi identasi relatif terhadap statement pembuka di atasnya. Saya memberi tiga spasi relatif terhadap statement “ if “ diatasnya.

Statement “ else “ pada baris ke enam, merupakan statement yang setingkat dengan “ if “ pada baris ke empat karena merupakan kelanjutan logikanya. Oleh karena itu, statement “ else “ tersebut ditulis sejajar dengan “ if “ pada baris ke empat. Begitu pula halnya dengan “ else “ yang berada pada baris ke delapan. Dibuat sejajar dengan “ if “ pada baris ketiga karena merupakan satu kesatuan logika.

Ilustrasi di bawah akan menjelaskan penggunaan blok statement dalam pseudo code. Statement yang memiliki background dengan warna yang sama, merupakan satu kelompok statement.

blok statement 1:

statement 1

statement 1

statement 1

blok statement 2 dalam blok statement 1:

statement 2

statement 2

statement 2

blok statement 3 dalam blok statement 2:

statement 3

statement 3

kelanjutan blok statement 3:

statement 3

kelanjutan blok statement 2:

statement 2

kelanjutan blok statement 1:

statement 1

statement 1

Jumlah spasi yang Anda berikan pada identasi boleh berapa saja, selama Anda menggunakannya secara konsisten. Anda bisa juga menggunakan TAB untuk memberi identasi. Bahkan untuk beberapa IDE (Integrated Development Environment) misalnya “ Komodo Edit “, akan memberikan identasi secara otomatis.

Dalam bahasa pemprograman kita mengenal adanya “ Keywords ” yang tidak boleh dijadikan identifier dalam penulisan program. Python memiliki sejumlah keywords yaitu:

and

del

from

not

while

as

elif

global

or

with

assert

else

if

pass

yield

break

except

import

print

class

exec

in

raise

continue

finally

is

return

def

for

lambda

try

Keywords diatas harus diketik apa adanya. Misalkan keyword “ print “ yang digunakan untuk menampilkan string di console, tidak boleh diketik “ Print “ (dengan huruf “ P “ besar). Jika dilakukan hal itu akan menimbulkan error.

>>> Print "Hello World"

File "<stdin>", line 1

Print "Hello World"

^

SyntaxError: invalid syntax

Python memiliki operator berikut yang digunakan untuk operasi aritmatika dan logika:

+ - * ** / // %

<< >> & | ^ ~

< > <= >= == != <>

Tidak hanya operator, python juga memiliki delimiter:

( ) [ ] { } @

, : . ` = ;

+= -= *= /= //= %=

&= |= ^= >>= <<= **=

Penggunaan delimiter adalah untuk memisahkan atau mengelompokkan identifier. Sebagai contoh delimiter “ ( “ yang digunakan bersamaan dengan “ ) “ digunakan untuk mengelompokkan integer dalam operasi aritmatika seperti pada contoh berikut:

>>> a = 2

>>> b = 3

>>> c = 4

>>> print (a + b) * c

20

>>> print a * (b + c)

14

>>> print a * b + c

10

Python merupakan bahasa pemprograman yang bersifat “ dinamic typing “ yang berarti Anda tidak perlu mendeklarasikan setiap variabel. Interpreter python akan memilihkan tipe data yang cocok sesuai dengan konteks pemberian nilai variabel.

>>> integer = 3

>>> string = "3"

>>> float = 3.0

>>> print integer + 2

5

>>> print string + "2"

32

>>> print float / 2.0

1.5

Adakalanya kita ingin mencetak string lalu menggabungkannya dengan nilai variabel. Hal ini disebut “ concatenation “. Yang perlu diperhatikan jika Anda hendak melakukan concatenation adalah setiap variabel yang bukan bertipe string, harus diubah terlebih dahulu menjadi string sebelum digabungkan. Hal ini bisa dilakukan dengan menjadikan identifier variabel tersebut sebagai argumen fungsi “ str() “. Perhatikan contoh dibawah:

>>> x = 3

>>> y = 2

>>> z = 3 * 2

>>> print "Jika " + str(x) + " dikali dengan " + str(y) + " maka hasilnya adalah: " + str(z)

Jika 3 dikali dengan 2 maka hasilnya adalah: 6

Pada contoh diatas, statement pada baris ke empat dan ke lima (“ print “jika .... + str(z)“) diketik dalam satu baris. Dikarenakan keterbatasan kolom dari lembar kerja OpenOffice Writer yang saya gunakan dalam penulisan artikel ini, maka baris keempat harus dilanjutkan pada baris kelima. Dalam penulisan statement python, tidak dibenarkan menyambung statement yang terlalu panjang ke baris dibawah. Setiap statement harus berada dalam satu logical line. Jika suatu saat Anda menulis kode pada satu baris yang terlalu panjang, lakukanlah “ explicit line joining “.

Explicit line joining dilakukan dengan menggunakan karakter back slash “ \ “. Perhatikan contoh di bawah!

>>> print "Belajar \

... python"

Belajar python

Ada banyak sekali perbedaan penggunaan sintak python dibandingkan bahasa pemprograman lain. Namun menurut pandangan saya, python memiliki konsep leksikal yang sangat unik. Pendekatan leksikal yang dilakukan python mengarahkan bahasa pemprograman yang lebih mendekati bahasa manusia. Ini adalah masa depan !

Variabel

Sebagai bahasa pemprograman yang bersifat dinamic typing, python tidak membutuhkan deklarasi tipe data variabel. Yang perlu diperhatikan, pemberian nama variabel boleh apa saja asalkan tidak sama dengan keyword.

Contoh penggunaan variabel yang salah:

>>> in = 3

File "<stdin>", line 1

in = 3

^

SyntaxError: invalid syntax

>>> print = "Hello"

File "<stdin>", line 1

print = "Hello"

^

SyntaxError: invalid syntax

Penggunaan variabel yang benar:

>>> integer = 3

>>> string = "Belajar Python" # diberi kutip

>>> float = 2.5 #menggunakan delimiter " . "

Dalam python, sebuah variabel merupakan sebuah objek. Tentu saja setiap variabel memiliki method yang sesuai dengan tipe datanya.

>>> angka = 3

>>> angka.__ [tab][tab]

angka.__abs__ angka.__hash__ angka.__or__ angka.__ror__

angka.__add__ angka.__hex__ angka.__pos__ angka.__rpow__

angka.__and__ angka. angka.__pow__ angka.__rrshift__

angka.__class__ angka.__init__ angka.__radd__ angka.__rshift__

angka.__cmp__ angka.__int__ angka.__rand__ angka.__rsub__

angka.__coerce__ angka.__invert__ angka.__rdiv__ angka.__rtruediv__

angka.__delattr__ angka.__long__ angka.__rdivmod__ angka.__rxor__

angka.__div__ angka.__lshift__ angka.__reduce__ angka.__setattr__

angka.__divmod__ angka.__mod__ angka.__reduce_ex__ angka.__str__

angka.__doc__ angka.__mul__ angka.__repr__ angka.__sub__

angka.__float__ angka.__neg__ angka.__rfloordiv__ angka.__truediv__

angka.__floordiv__ angka.__new__ angka.__rlshift__ angka.__xor__

angka.__getattribute__ angka.__nonzero__ angka.__rmod__

angka.__getnewargs__ angka.__oct__ angka.__rmul__

Diatas merupakan daftar method yang dimiliki oleh variabel “ angka “. Pengaksesan method tersebut dapat dilakukan dengan cara:

>>> angka.__mod__(2)

1

Dengan menggunakan delimiter “ . “ (titik) lalu diikuti nama method yang akan dipanggil beserta argumen yang dibutuhkan, kita dapat menngakses method yang dimiliki sebuah variabel. Dalam contoh diatas kita memanggil method “ __mod__() “ dengan argumen “ 2 “ yang akan mengembalikan modulus 3 % 2 (ingat, variabel angka bernilai 3) yaitu “1 “. Hal ini juga berlaku untuk tipe data yang lain seperti float dan string.

Sehubungan dengan sifat dinamic typing dalam python, python menyediakan build in function untuk mengetahui tipe data sebuah variabel yaitu “ type() “. Penggunaan type adalah dengan memanggil fungsi type dengan argumen berupa identifier sebuah variabel. Perhatikan contoh dibawah:

>>> angka = 3

>>> kalimat = "Belajar python"

>>> berkoma = 2.3

>>>

>>> type(angka)

<type 'int'>

>>> type(kalimat)

<type 'str'>

>>> type(berkoma)

<type 'float'>

List

List adalah variabel yang menghimpun sekumpulan. Nilai-nilai dalam sebuah list dipisahkan menggunakan delimiter koma “ , “ dan dihimpun didalam delimiter kurung siku “ [ ] “. Nilai-nilai dalam sebuah list tidak harus memiliki tipe yang sama.

Pemakaian List:

>>> a = ['belajar','python',1,'kali','sehari']

>>> print a

['belajar', 'python', 1, 'kali', 'sehari']

Nilai-nilai yang tersimpan dalam list dapat dipanggil satu-per-satu dengan menggunakan “ index “ yang dimulai dari 0.

>>> myList = ["python",100,2.0]

>>> print myList[0]

python

>>> print myList[1]

100

>>> print myList[2]

2.0

Dengan mengacu kepada index, kita juga dapat mengganti nilai element list yang ditunjuk oleh index-nya.

>>> print myList

['python', 100, 2.0]

>>> myList[1] = 555

>>> print myList

['python', 555, 2.0]

Multi dimensional list dalam python dapat dibuat dengan cara:

>>> mdList = [[2,'palado'],[200,2,6]]

>>> mdList

[[2, 'palado'], [200, 2, 6]]

Dan dapat diakses menggunakan indeks:

>>> mdList[1]

[200, 2, 6]

>>> mdList[1][2]

6

>>> mdList[0][1]

'palado'

Python memiliki “ build in function “ untuk mendapatkan jumlah elemen yang dimiliki sebuah list. Yaitu fungsi “ len() “ yang mengembalikan nilai berupa jumlah elemen di dalam sebuah list. Penggunaannya seperti contoh dibawah:

>>> len(mdList)

2

>>> len(mdList[0])

2

>>> len(mdList[1])

3

Fungsi len() dengan memberi argumen berupa objek list (dalam contoh “ mdList “) akan mengembalikan nilai berupa jumlah elemen list tersebut. Namun jika elemen sebuah list, memiliki elemen didalamnya (multi dimensional list), argumen berupa object list disertai nomor indeks elemen yang memiliki elemen didalamnya, akan mengembalikan nilai berupa jumlah elemen yang terdapat di dalam elemen tersebut. Perhatikan kembali contoh diatas.

Tidak hanya itu, sebagai sebuah objek. List juga memiliki built in method yang dapat diakses menggunakan delimiter “ . “ (titik). Daftar panjang method yang dimiliki sebuah objek dapat dilihat dengan mengetikkan nama objek diikuti dengan delimiter “ . “ lalu tekan TAB dua kali, maka interactive interpreter akan menampilkan daftar method yang dimiliki objek tersebut.

Contoh mengakses method dari objek list:

>>> mdList. # tekan TAB dua kali

mdList.__add__ mdList.__getslice__ mdList.__ne__ mdList.append

mdList.__class__ mdList.__gt__ mdList.__new__ mdList.count

mdList.__contains__ mdList.__hash__ mdList.__reduce__ mdList.extend

mdList.__delattr__ mdList.__iadd__ mdList.__reduce_ex__ mdList.index

mdList.__delitem__ mdList.__imul__ mdList.__repr__ mdList.insert

mdList.__delslice__ mdList.__init__ mdList.__reversed__ mdList.pop

mdList.__doc__ mdList.__iter__ mdList.__rmul__ mdList.remove

mdList.__eq__ mdList.__le__ mdList.__setattr__ mdList.reverse

mdList.__ge__ mdList.__len__ mdList.__setitem__ mdList.sort

mdList.__getattribute__ mdList.__lt__ mdList.__setslice__

mdList.__getitem__ mdList.__mul__ mdList.__str__

Contoh mengakses method __len__() dari objek myList:

>>> mdList.__len__()

2

Menggunakan method yang dimiliki “ list “, kita dapat menambah dan mengurangi elemen-elemen list tersebut.

Method “ append “ digunakan untuk menambah elemen list:

>>> myList = ['a','b',3,'python']

>>> myList

['a', 'b', 3, 'python']

>>> myList.append('boa')

>>> myList

['a', 'b', 3, 'python', 'boa']

Method “ pop “ digunakan untuk mengurangi / menghapus elemen sebuah list dengan argumen berupa nomor indeks elemen tersbut:

>>> myList

['a', 'b', 3, 'python', 'boa']

>>> myList.pop(2)

3

>>> myList

['a', 'b', 'python', 'boa']

Dictionaries

Pada bahasa pemprograman yang lain, dictionaries dikenal juga sebagai “ associative array “ atau “ hash “. Dictionaries mirip seperti list, namun tidak di-indeks berdasarkan yrytan angka, namun bersasarkan pasangan “ key:value “. Key yang digunakan sebagai indeks menunjuk ke value pasangannya. Key dapat berupa string atau numbers.

Contoh membuat dictionaries:

>>> myDict = {'nama':'haddad','umur':22}

>>> myDict

{'nama': 'haddad', 'umur': 22}

Memanggil value berdasarkan key:

>>> myDict['nama']

'haddad'

>>> myDict['umur']

22

>>> print "Data mahasiswa: "+myDict['nama']+" umur: "+str(myDict['umur'])

Data mahasiswa: haddad umur: 22

Sebagai sebuah object, dictionaries juga memiliki method. Pemanggilan method yang dimiliki dictionaries sama seperti pemanggilan method yang dimiliki “ list “. Melalui interactive interpreter kita juga dapat mengetahui method-method apa saja yang dimiliki dictionaries. Cara mengetahuinya sama seperti mengetahuinya sama seperti list.

Contoh penggunaan method yang dimiliki dictionaries:

>>> myDict.keys()

['nama', 'umur']

>>> myDict.values()

['haddad', 22]

Method “ keys() “ digunakan untuk menampilkan ” keys “ yang miliki sebuah dictionaries, sedangkan “ values() “ digunakan untuk menampilkan values.

Aritmatika

Dalam python operasi matematika dapat dilakukan dengan cara yang cukup sederhana. Cara yang paling umum dilakukan adalah dengan menggunakan operator.

Aritmatika dalam python:

>>> a = 2

>>> b = 3

>>> c = 4

>>> a + b # penjumlahan

5

>>> a - c # pengurangan

-2

>>> a * b # perkalian

6

>>> c / a # pembagian

2

>>> b % a # modulus

1

Python juga memiliki fungsi-fungsi yang memudahkan operasi aritmatika:

>>> z = -2

>>> abs(z) # absolute value

2

Untuk menggunakan fungsi aritmatika yang lebih kompleks gunakan method-method yang dimiliki class “ math “:

>>> import math

>>> math.

math.__class__ math.__reduce_ex__ math.degrees math.modf

math.__delattr__ math.__repr__ math.e math.pi

math.__dict__ math.__setattr__ math.exp math.pow

math.__doc__ math.__str__ math.fabs math.radians

math.__file__ math.acos math.floor math.sin

math.__getattribute__ math.asin math.fmod math.sinh

math.__hash__ math.atan math.frexp math.sqrt

math.__init__ math.atan2 math.hypot math.tan

math.__name__ math.ceil math.ldexp math.tanh

math.__new__ math.cos math.log

math.__reduce__ math.cosh math.log10

>>> math.sqrt(9)# akar 9

3.0

>>> math.pi# PI

3.1415926535897931

>>> math.sin(30)# sin 30

-0.98803162409286183

>>> math.pow(2,8)# 2 pangkat 8

256.0

Perulangan

Perulangan dalam python sedikit berbeda dengan bahasa pemprograman lainnya. Python tidak hanya melakukan perulangan berdasarkan perubahan urutan artimatika, namun python juga mampu mengurut berdasarkan item-item ber-urut (sequence) seperti string dan list.

Untuk melakukan perulangan pada python, kita menggunakan keyword “ for “ yang dipasangkan dengan “ in “. Perlu diingat, perulangan merupakan sebuah blok statement yang dalam python ditandai dengan identasi.

Contoh perulangan berdasarkan item dalam string:

>>> kata = 'python'

>>> for i in kata:

... print i

...

p

y

t

h

o

n

Contoh perulangan berdasarkan item dalam list:

>>> keluarga = ['Ayah','Ibu','Anak','Kakek', 'Nenek']

>>> for n in keluarga:

... print 'Selamat ulang tahun '+n

...

Selamat ulang tahun Ayah

Selamat ulang tahun Ibu

Selamat ulang tahun Anak

Selamat ulang tahun Kakek

Selamat ulang tahun Nenek

>>> z = 0 # inisialisasi nilai variabel z

>>> kalimat = 'Belajar Python'

>>> kalimat.__len__() # jumlah item

14

>>> for y in kalimat:

... print z

... z += 1

...

0

1

2

3

4

5

6

7

8

9

10

11

12

13

Contoh diatas mencoba menggambarkan perulangan yang menggunakan urutan item, dalam contoh diatas kita menggunakan string. Python juga mendukung perulangan dengan cara yang lebih tradisional dengan menggunakan perubahan urutan aritmatika. Untuk melakukan ini, kita menggunakan built in function “ range() “.

Perulangan menggunakan range():

>>> for i in range(10):

... print i

...

0

1

2

3

4

5

6

7

8

9

Pada contoh diatas, kita melakukan perulangan sebanyak sepuluh kali. Fungsi range() dapat digunakan dalam beberapa bentuk, perhatkan contoh dibawah!

>>> for i in range(1,10,2):

... print i

...

1

3

5

7

9

Fungsi range() pada contoh diatas, menggunakan tiga argumen ( “ 1 “, “ 10 “, “ 2 “). Argumen pertama merupakan awal mulai perulangan, yang kedua akhir perulangan, sedangkan yang ketiga adalah jumlah penambahan.

Perulangan dimulai dari 1, lalu diikuti dengan 1 + 2 yaitu 3, diikuti lagi dengan 3 + 2 yaitu 5 dan begitu seterusnya.

Fungsi range() juga dapat mengurut kebawah dengan melakukan pengurangan. Misalkan awal perulangan adalah 10 dan akan dikurangi 1 untuk setiap perulangan hingga medapatkan nilai 0, kode kita harus diubah menjadi:

>>> for i in range(10,0,-1):

... print i

...

10

9

8

7

6

5

4

3

2

1

Selain menggunakan “ for “, kita juga dapat melakukan perulangan dengan menggunakan “ while “. Perulangan akan dilakukan selama acuan bernilai True. Dalam python untuk setiap number selain nol (“ 0 “) bernilai true.

Perulangan menggunakan while:

>>> x = 3

>>> while x:

... print x

... x -= 1

...

3

2

1

Percabangan

Sama seperti bahasa pemprograman lain, python juga menggunakan “ if “ sebagai keyword. Pemakaian “if “ lebih kurang mirip dengan “ for “, hal ini dikarenakan keyword if merupakan sebuah blok statement.

Keyword yang umum digunakan bersama “ if “ adalah: “ else “ (selain itu) dan “ elif “ (selain itu, jika).

Perhatikan contoh dibawah:

>>> x = True

>>> if x:

... print "X bernilai benar"

... else:

... print "X bernilai salah"

...

X bernilai benar

>>> x = False

>>> if x:

... print "X bernilai benar"

... else:

... print "X bernilai salah"

...

X bernilai salah

Untuk kasus yang lebih konvensional perhatikan contoh dibawah:

>>> nilai_angka = 87

>>> if (nilai_angka > 0) and (nilai_angka <= 35):

... print "Nilai angka = " + str(nilai_angka) + " sedangkan nilai huruf = C"

... elif (nilai_angka >=36) and (nilai_angka <=70):

... print "Nilai angka = " + str(nilai_angka) + " sedangkan nilai huruf = B"

... else:

... print "Nilai angka = " + str(nilai_angka) + " sedangkan nilai huruf = A"

...

Nilai angka = 87 sedangkan nilai huruf = A

Contoh diatas mendemonstrasikan percabangan yang melibatkan operator logika “ and “. Kasus yang diselesaikan adalah konversi nilai angka menjadi nilai huruf. Jika nilai angka besar dari nol dan kecil sama dengan 35, maka nilai huruf adalah C. Jika nilai angka besar sama dengan 36 dan kecil sama dengan 70 maka nilai huruf adalah B, selain itu (jika besar sama dari 71) maka nilai huruf adalah A. Pada prinsipnya tidak jauh berbeda dengan bahasa pemprograman yang lain.

Sesuai kebutuhan, operator logika “ or “ juga bisa digunakan dalam percabangan. Perhatikan contoh dibawah:

>>> login = False

>>> password = 'python'

>>> if (login) or (password == 'python'):

... print 'Selamat datang'

... else:

... print 'Silahkan login dahulu'

...

Selamat datang

>>> login = False

>>> password = 'sython'

>>> if (login) or (password == 'python'):

... print 'Selamat datang'

... else:

... print 'Silahkan login dahulu'

...

Silahkan login dahulu

Contoh penggunaan “ if “ di dalam “ if “ (Nested IF):

>>> gender = "Pria"

>>> umur = 22

>>> if gender is "Pria":

... if umur >= 21:

... print "Sudah boleh menikah"

... else:

... print "Belum boleh menikah"

... else:

... if umur >= 16:

... print "Sudah boleh menikah"

... else:

... print "Belum boleh menikah"

...

Sudah boleh menikah

Berikut operator yang umumnya digunakan dalam percabangan:

==Sama dengan

!=Tidak sama dengan

>Besar dari

<Kecil dari

>=Besar sama

<=Kecil sama

Fungsi

Fungsi adalah salah satu cara mengelompokkan statement. Dengan fungsi, kode yang kita buat akan lebih mudah dibaca.

Pembuatan fungsi dalam python:

>>> def fungsi1(a,b):

... return a + b

...

Contoh diatas mendemonstrasikan pembuatan sebuah fungsi dengan nama “ fungsi1 “. Fungsi ini menerima dua buah argumen yang diberi nama “ a “ dan “ b “. Sifat dinamic typing python memungkinkan kita untuk tidak mendefenisikan tipe data argumen-argumen tersebut. Lalu pada baris kedua, keyword return akan mengembalikan nilai argumen “ a “ ditambah argumen “ b “.

Menjalankan fungsi:

>>> fungsi1(1,3)

4

>>> fungsi1('Hello','World')

'HelloWorld'

Dua contoh diatas adalah hasil yang ditampilkan interactive interpreter python yang pada conoth diatas masing-masing diberi argumen yang berbeda tipe (number dan string). Dinamic typing memungkinkan melakukan hal ini.

>>> type(fungsi1(1,3))

<type 'int'>

>>> type(fungsi1('Hello','World'))

<type 'str'>

Built in function “ type() “ dapat digunakan untuk mengetahui tipe data nilai balik (return) “ fungsi1() “ jika menggunakan argumen berbeda.

Sehubungan dengan tipe data, nilai balik sebuah fungsi dapat langsung dikombinasikan / digunakan bersama statement lain.

>>> for i in range(fungsi1(1,3)):

... print i

...

0

1

2

3

>>> for i in fungsi1('Hello','World'):

... print i

...

H

e

l

l

o

W

o

r

l

d

Tidak hanya itu, nilai balik sebuah fungsi adalah objek, sehingga kita dapat menggunakan method yang sesuai dengan tipe data nilai balik fungsi tersebut.

>>> fungsi1(1,3)

4

>>> type(fungsi1(1,3))

<type 'int'>

>>> fungsi1(1,3).__str__()

'4'

>>> type(fungsi1(1,3).__str__())

<type 'str'>

Fungsi “ fungsi(1,3) “ mengembalikan nilai integer 4, sedangkan method “__str__() “ akan mengubah nilai balik “ fungsi1(1,3) “ menjadi string.

Input Console

Python memiliki dua fungsi sederhana umtuk mengambil input dari console. Fungsi-fungsi tersebut, pada prinsipnya sangat sederhana, sehingga pada implementasinya, kita butuh metoda pemprosesan input yang lebih canggih agar program berjalan dengan baik tanpa mengalami kesalahan akibat input data yang tidak diharapkan.

Fungsi pertama adalah “ raw_input() “.

>>> raw_input('Masukkan Input Anda: ')

Masukkan Input Anda: saya belajar python

'saya belajar python'

Fungsi raw_input menerima input sebagai string:

>>> type(raw_input('Input anda: '))

Input anda: 2

<type 'str'>

Untuk itu, kita perlu mengkonversikan tipe data input yang diambil melalui raw_input():

>>> kode = int(raw_input('Masukkan angka: '))

Masukkan angka: 2

>>> type(kode)

<type 'int'>

>>> kode = float(raw_input('Masukkan pecahan: '))

Masukkan pecahan: 2.3

>>> type(kode)

<type 'float'>

Fungsi kedua adalah “ input() “.

Fungsi “ input() “ mengambil input dari console, lalu mengaplikasikan string input tersebut ke fungsi “ eval() “. Fungsi ini nantinya akan mengevaluasi input menjadi nilai yang kita harapkan seperti misalnya integer atau float. Misalnya kita meng-inputkan nilai “ 2 “, maka fungsi “ input() “ akan memberikan nilai balik berupa integer “ 2 “. Perhatikan contoh dibawah:

>>> type(input('Input: '))

Input: 23

<type 'int'>

>>> type(input('Input: '))

Input: 2.3

<type 'float'>

>>> type(input('Input: '))

Input: python

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "<string>", line 1, in <module>

NameError: name 'python' is not defined

Fungsi input akan membaca input kita sebagai sebuah expresi dan memberikan tipe data yang cocok. Namun jika memberikan nilai string pada fungsi input(), maka akan tampil pesan kesalahan karena string “ python “ bukanlah sebuah ekspresi.

Beberapa contoh penggunaan fungsi input():

>>> input('Input: ')

Input: 2+3/4

2

>>> input('Input: ')

Input: 2+3/4.0

2.75

Operasi File

Python memiliki prosedur sederhana dalam operasi input/output. Ada tiga langkah yang harus dilakukan yaitu:

  • Buka file / dapatkan objek file tersebut dengan fungsi “ open() “ dan sesuaikan mode pembukaan file (apakah Read “r”, Append “a” atau Write “w”).
  • Lakukan operasi pada objek file tersebut sesuai dengan mode yang diinginkan diatas (read, append atau write)
  • Tutup file / objek file.

Fungsi “ open() “ membutuhkan dua parameter yaitu lokasi file bersangkutan dan mode pembukaan file serta mengembalikan objek file.

>>> type(open("/home/haddad/pyfile", "r"))

<type 'file'>

Operasi file nantinya akan dilakukan melalui objek file ini. Perhatikan contoh dibawah:

>>> objek_file = open("/home/haddad/pyfile", "w")

>>> objek_file.write("Python selayang pandang")

>>> objek_file.close()

“ objek_file “ merupakan identifier terhadap objek file yaitu file “ pyfile “ yang terdapat dalam direktori “ /home/haddad “. File tersebut dibuka dengan mode write (“w”), berarti operasi yang dapat kita lakukan terhadap file tersebut adalah “menulis”.

Method “ write() “ yang dimiliki objek_file digunakan untuk menulis string ke dalam file pyfile. Sesuai contoh diatas, kita menulis baris “Python selayang pandang” ke pyfile. Lalu prosedur ini diakhiri dengan method “ close() “

haddad@moria:~> less pyfile

Python selayang pandang

pyfile lines 1-1/1 (END)

Sampai saat ini, kita telah memiliki sebuah file bernama pyfile pada direktori /home/haddad.

Untuk menampilkan isi file tersebut, kita cukup mengubah mode operasi file menjadi read dan menggunakan method “ read() “ dari objek file. Perhatikan contoh dibawah:

>>> objek_file = open("/home/haddad/pyfile", "r")

>>> print objek_file.read()

Python selayang pandang

>>> objek_file.close()

Untuk menambah isi sebuah file, mode yang kita gunakan adalah Append “a”.

>>> objek_file = open("/home/haddad/pyfile", "a")

>>> objek_file.write("\nBaris baru yang ditambahkan kedalam file")

>>> objek_file.close()

Perhatikan “ \n “, escape character ini digunakan untuk memberikan baris baru pada file.

Python OOP

Pada prinsipnya, paradigma Object Oriented pada python tidak jauh berbeda dengan bahasa lainnya. Python mengenal konsep “ class “, “ inheritance “, “ method “ dan lain-lain.

Pembuatan class dapat dilakukan dengan cara yang cukup sederhana:

>>> class manusia:

... nama = "Yosero"

... umur = 18

...

Diawali dengan keyword “ class “, defenisi sebuah class dapat dibuat dalam identasi yang menadakan kelompok statement. Pada contoh diatas, field class terdiri dari “ nama “ yang bernilai string “Yosero” dan umur yang bernilai integer 18.

Untuk melakukan instantiation dilakukan dengan cara:

>>> m = manusia()

Setelah itu, field dapat diakses dengan cara:

>>> print m.nama

Yosero

>>> print m.umur

18

Delimiter titik “ . “ digunakan untuk menunjuk baik itu field maupun method dari class yang telah di-instantiasi-kan.

Pembuatan method mirip dengan pembuatan fungsi. Namun dalam mendefenisikan method, diharuskan memasukkan “ self “ sebagai salah satu argumen. Menurut dokumentasi python, hal ini hanya konvensi penggunaan saja.

>>> class manusia:

... nama = "Yosero"

... umur = 18

... def getNama(self):

... return self.nama

... def getUmur(self):

... return self.umur

...

>>> m = manusia()

>>> m.getNama()

'Yosero'

>>> m.getUmur()

18

Perhatikan contoh diatas, defenisi method “ getNama() “ pada dasarnya tidak memiliki argumen, namun dalam konvensi penulisannya, kita memasukkan argumen “ self “. Jika Anda membuat method yang memiliki argumen, Anda tetap harus memasukkan argumen ini.

Lain kasus pada baris yang terdapat “ return self.nama “ dan “ return self.umur “. Self disini berperan menunjukkan lingkup field “ nama “ dan “ umur “ bahwa field-field tersebut berada dalam lingkup class “ manusia “. Analoginya seperti keyword “ this “ dalam Java.

Method juga diperlakukan dengan cara yang sama, jika Anda ingin mengakses sebuah method dalam method yang lain pada class yang sama. Anda juga diharuskan mengunakan varibel “ self “ ini.

Lebih jelasnya, coba perhatikan contoh dibawah:

>>> class aritmatika:

... def tambah(self, a, b):

... return a + b

... def tambahlagidengantiga(self, a, b):

... return self.tambah(a, b)+3

...

>>> a = aritmatika()

>>> a.tambah(2,3)

5

>>> a.tambahlagidengantiga(2,3)

8

Method “ tambahlagidengantiga() “ pada contoh diatas memanggil method “ tambah() “ untuk dieksekusi terlebih dahulu sebelum hasilnya ditambahkan dengan tiga. Untuk itu, kita menggunakan variabel “ self “ selelum method “ tambah() “.

Sebuah class dapat melakukan inisialisasi, yaitu satu atau sekumpulan kode yang langsung berjalan ketika class tersebut di-instantiasi-kan. Dalam Java kita mengenalnya dengan “ constructor “.

Untuk melakukannya, Python mengharuskan kita untuk mendefenisikan method spesial “ __init__() “. Perhatikan dua buah underscore (baris bawah) sebelum dan sesudah kata “ init “. Melalui method spesial ini, class yang kita buat dapat menerima parameter.

>>> class mahasiswa:

... def __init__(self, nama, no_bp):

... self.nama = nama

... self.no_bp = no_bp

... def getInfo(self):

... return "Nama mahasiswa = " + str(self.nama) + " dan nomor bp = " + str(self.no_bp)

...

>>> m = mahasiswa("Haddad", "080989997")

>>> m.getInfo()

'Nama mahasiswa = Haddad dan nomor bp = 080989997'

Salah satu fitur OOP adalah inheritance. Dalam Python, inheritance atau pewarisan dapat dilakukan dengan cara memberikan argumen berupa class yang hendak diturunkan dalam defenisi class. Contoh dibawah akan menggambarkan pewarisan class “ manusia “ yang memiliki field “ nama “ dan “ umur “ serta method “ getInfo() “ terhadap class “ mahasiswa “ yang memiliki field “ no_bp “ dan melakukan “ overriden “ method “ getInfo() “.

>>> class manusia:

... nama = None # None = tidak terdefenisi (dapat didefenisikan kemudian)

... umur = None

... def getInfo(self):

... return (self.nama, self.umur)

...

>>> class mahasiswa(manusia): # inheritance class manusia - class manusia sebagai argumen

... no_bp = None

... def getInfo(self): # overriden method getInfo()

... return (self.nama, self.umur, self.no_bp)

...

>>> man = manusia() # instantiation class manusia

>>> man.nama = "Yosero Institute"

>>> man.umur = 1

>>> man.getInfo()

('Yosero Institute', 1)

>>>

>>> mah = mahasiswa() # instantiation class mahasiswa

>>> mah.nama = "Rindu Prada"

>>> mah.umur = 23

>>> mah.no_bp = "0405111"

>>> mah.getInfo()

('Rindu Prada', 23, '0405111')

Cukup sederhana bukan ?

Saat program mengalami kesalahan (error) pada saat dijalankan, Python memiliki mekanisme untuk menangani kesalahan tersebut tanpa harus berhenti dieksekusi. Mekanisme ini – mirip dengan Java – disebut “ exeception “.

Tipe-tipe exception:

>>> 1/0

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ZeroDivisionError: integer division or modulo by zero

>>> "Hello" + 2

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: cannot concatenate 'str' and 'int' objects

>>> apasih + lo

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

NameError: name 'apasih' is not defined

Ada sekumpulan built in exception yang dimiliki Python, seperti contoh diatas: ZeroDivisionError, TypeError, NameError. Untuk daftar yang lebih lengkap silahkan mengacu ke Python Library Reference.

Sebelum masuk pada penjelasan, coba perhatikan contoh dibawah:

>>> def testInput():

... try:

... myinput = int(raw_input("Entrikan nilai integer: "))

... print "Nilai yang Anda entrikan adalah: " + str(myinput)

... except ValueError:

... print "Nilai yang Anda entrikan salah ! Harap entrikan nilai integer"

...

>>> testInput()

Entrikan nilai integer: 4

Nilai yang Anda entrikan adalah: 4

>>> testInput()

Entrikan nilai integer: t

Nilai yang Anda entrikan salah ! Harap entrikan nilai integer

Menurut dokumentasi Python, exception bekerja dengan langkah-langkah sebagai berikut:

  • Gunakan keyword “ try “. Blok statement yang berada didalam klausa try, akan dieksekusi.
  • Jika tidak ada exception terjadi, blok “ excep “ dilewatkan.
  • Jika exception terjadi selama eksekusi statement yang berada dalam blok “ try “, sisa statement akan dilewatkan. Jika tipe exception sesuai dengan tipe yang didefenisikan pada keyword “ except “ (dalam contoh diatas ValueError), maka blok “ except “ dieksekusi dan eksekusi program dilanjutkan kepada kode yang terletak setelah blok “ try “.
  • Jika exception terjadi dan tipenya tidak sesuai dengan tipe yang didefenisikan pada blok “ except “, exception dilanjutkan keluar blok “ try “. Jika tidak ditemukan juga kode yang akan menanganinya (except dengan tipe yang sesuai), maka terjadi “ unhandled exception “. Eksekusi dihentikan dan pesan error ditampilkan pada terminal.

Quo Vadis

Kode-kode yang ada dalam artikel ini, dibuat langsung mengunakan interactive interpreter. Agar dapat tersimpan dalam sebuah file, Anda harus mengetiknya pada teks editor dan jangan lupa menggunakan “ she-bang “. Ketiklah kode-kode Python dalam teks editor sebagaimana Anda mengetiknya pada interactive interpreter. Perhatikan identasi sesuai dengan yang telah dijelaskan pada bagian “ Analisa Leksikal “ Sebagai konvensi pemberian suffix, kode-kode python diberi ekstensi “ .py “.

Anda bisa menemukan banyak sekali sumber-sumber di Internet yang membahas pemprograman python. Untuk hal ini, google akan sangat membantu Anda.

Jangan lupa untuk membaca dokumentasi Python. Sebagian besar referensi yang saya gunakan dalam pembuatan artikel ini adalah dokumentasi Python yang bisa Anda dapatkan di: www.python.org .

Selamat belajar.

[]