Python | konsep dasar yang perlu diketahui
Tags: python, codenewbie, beginners, tutorial
Published: 2020-06-28 01:58:40

## **Materi 2 | Konsep yang perlu diketahui**
> Diambil dari chanel youtube camp.114
> https://youtu.be/juX9v6Y-2js

Pada materi kali ini awalnya kita akan membahas tentang tipe data. tetapi karena satu dan lain hal mungkin sebaiknya sebelum kita baha tipe data ada baiknya kita membahas beberapa konsep yang ada dalam python.

#### Python Object

Di dalam python, objek merupakan abtraksi dari data. Bahkan semua yang ada di dalam python adalah objek. Jika kita mengingat kembali materi sebelumnya, kita mempunya contoh a = 10 , setelah sekarang kita mengetahui bahwa semua yang ada di python adalah object. Kita akan bertanya ketika objek dibuat, kemudian apa yang terjadi pada a. Yang terjadi adalah variable tersebut akan mempunyai id, kemudia tipe datanya akan diset menjadi integer dan object ini akan mempunyai value atau nilai yang akan diisi oleh angka 10. Terakhir objek dari a ini akan disimpan dalam global namespace. 

#### variable

kemudian kita akan membahas tentang variable, variabel dalam python sama seperti variable dalam bahasa pemrograman lain. Dalam python variable akan merujuk kepada sebuah object.misalnya a = [1,2,3] , maka a akan merujuk atau mereference ke dalam sebuah object list yang berisi 1,2,3. atau contoh lain kita akan bahas dalam contok kode berikut

```
budi = ['handphone', 'kacamata', 'smartwatch'] 
andi= ['handphone', 'kacamata', 'smartwatch'] 

a = (budi==andi)
b = (budi is andi)

print ('id budi adalah', id(budi))
print ('id andi adalah', id(andi))
print('barang yang dimiliki sama', a)
print('apakah budi sama dengan andi', b)
```

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/16n1qj31do07ht759gal.png)

dari contoh di atas dapat dilihat bahwa budi, andi, a, b adalah  variable yang memiliki value meriference ke dalam sebuah list yang berisi barangnya, yaitu handphone, kacamata, smartwatch. Sedangkan a dan b adalah objek yang masing-masing memiliki value perbandingan barang budi dan andi, juga value id yang membandingkan id budi dan andi. 

#### namespace

Namespace, adalah tempat/kontainer dari variableyang kemudian digunakan untuk  maping dari names ke dalam objek. dari contoh sebelumnya kita bisa melihat namespasenya adalah Global. Jika kita kembali lagi ke contoh budi. dan global frame kita anggap kecamatan, misalkan budi tinggal di kec.cicendo jika kita ingi mencari budi kita dapat mengimport budi ke dalam module kita seperti 

```
from bandung.cicendo.pajajaran import budi
from jakarta.menteng.sudirman import andi
```

contoh ini menggambarkan bandung merupakan namespace pertama, kemudian kita mencari cicendo di dalam bandung, lalu kita mencari pajajaran sebagai namespace selanjutnya maka kita akan menemukan budi di pajajaran.  untuk sekarang jangan terlalu bingung dengan namespace, nanti jika kita sudah masuk ke dalam real code maka kita akan lebih mudah untuk memahami namespace.

Sebagai contoh, misal kita mempunyai 2 buah file seperti :

```
from testImport.alamat import alamatgw

nama = 'budi'
jl = 'Rumah gw ada di'
isi = input('masukan alamat sebenarnya : ')

print(nama)
print(jl)
alamatgw(isi)



def alamatgw(jalan):
    jl = jalan
    print(jl)
```

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/t49pji856dcf9d0pxpl8.png)

#### scope

Satu lagi yang perlu kita bahas adalah scope, scope ini berhubungan erat dengan namespace. Menurut pythonya sendiri scope ***"a scope is a textual region of a Python program, where a namespace is directly accessible"***. Jika merujuk pada w3c yang defenisikanya lebih praktikal  akan seperti ini ***"A variable is only available from inside the region it is created. This is called scope."***. 

Dari kedua defenisi di atas dapat disimpulkan scope adalah daerah dimana sebuah variabel dapat di akses. Dalam python sendiri scope meliputi :

- **local scope,** merupakan scope terdalam yang berisi variable lokal
- **enclosing scope,** merupakan scope yang mempunyai variabel non-lokal tetapi tidak mengandung variable dari global scope
- **global scope,** contains global names.
- **built-in scope,** berisikan built-in names atau Built-in Functions, misalnya `float(), print(), super() dan lain lain

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/9xx0qy1lndudo7dofucd.png)


```
def Luar():                 
    nama = 'Budi'                     # Local
    def Dalam():                    # Local
        umur = 25                       # enclose
        print('nama : ', nama)          # enclose
        print('umur: ', umur)           # enclose            
    Dalam()                         # Local    
    print('tes panggil umur')       # Local 
    print('umur: ', umur)           # Local 


Tes = 'Test Enclose'        # Global
print(Tes)
Luar()
```

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/tk5po2uzf2pusg6lrtzu.png)



#### Mutable dan Immutable

Perbedaan mendasar Python ada pada data yaitu apakah nilai suatu objek berubah atau tidak. Jika nilainya dapat berubah, objek disebut disebut Mutable, sedangkan jika nilainya tidak bisa berubah, objek itu disebut Immutable. mengetahui muttable dan immutable pada python cukup penting, karana akan mempengaruhi kode yang kita buat.

mari kita lihat contohnya 

```
angka = 1000
print(id(angka))
print(angka)
angka = 2000
print(id(angka))
print(angka)

class orang():
    def __init__(self, umur, kota, tanggal):
        self.umur = umur
        self.kota = kota
        self.tanggal = tanggal


orang = orang(20, "bandung", 2000)
print(id(orang))
print(orang.umur)

orang.umur = 10
orang.kota
orang.tanggal

print(id(orang))
print(orang.umur)
```

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/djae3zylli1xd6skk0fg.png)