Secara umum, variabel yang didefinisikan dalam sebuah blok hanya tersedia di blok itu. Itu tidak dapat diakses di luar blok. Variabel seperti itu disebut variabel lokal. Pengidentifikasi argumen formal juga berperilaku sebagai variabel lokal
Contoh berikut akan menggarisbawahi poin ini. Upaya untuk mencetak variabel lokal di luar cakupannya akan memunculkan pengecualian >>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined 0
Contoh. Variabel Lokal
Salinandef greet(): name = 'Steve' print('Hello ', name) _
Di sini, >>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined 1 adalah variabel lokal untuk fungsi >>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined 2 dan tidak dapat diakses di luarnya
Contoh. Variabel Lokal
Salinan>>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined
Variabel apa pun yang ada di luar blok fungsi apa pun disebut variabel global. Nilainya dapat diakses dari dalam fungsi apa pun. Dalam contoh berikut, variabel >>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined _1 diinisialisasi sebelum definisi fungsi. Oleh karena itu, ini adalah variabel global
Contoh. Variabel Global
Salinanname='John' def greet(): print ("Hello ", name) _
Sekarang, Anda dapat mengakses variabel global >>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined 1 karena telah didefinisikan dari suatu fungsi
>>> greet() Hello Steve >>> name 'Steve' _
Namun, jika kita menetapkan nilai lain ke variabel yang dideklarasikan secara global di dalam fungsi, variabel lokal baru akan dibuat di ruang nama fungsi. Penugasan ini tidak akan mengubah nilai variabel global. Sebagai contoh
Contoh. Variabel Lokal dan Global
Salinanname = 'Steve' def greet(): name = 'Bill' print('Hello ', name) _
Sekarang, mengubah nilai variabel global >>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined 1 di dalam suatu fungsi tidak akan memengaruhi nilai globalnya
>>> greet() Hello Bill >>> name 'Steve'
Jika Anda perlu mengakses dan mengubah nilai variabel global dari dalam suatu fungsi, izin ini diberikan oleh kata kunci >>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined 6
Contoh. Akses Variabel Global
Salinanname = 'Steve' def greet(): global name name = 'Bill' print('Hello ', name)
Di atas akan menampilkan output berikut di shell Python
>>> name 'Steve' >>> greet() Hello Bill >>> name 'Bill'
Dimungkinkan juga untuk menggunakan variabel global dan lokal dengan nama yang sama secara bersamaan. Fungsi bawaan >>> greet() Hello Steve >>> name Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> name NameError: name 'name' is not defined 7 mengembalikan objek kamus dari semua variabel global dan nilainya masing-masing. Menggunakan nama variabel sebagai kunci, nilainya dapat diakses dan dimodifikasi
Contoh. Variabel Global
Salinanname = 'Steve' def greet(): globals()['name'] = 'James' name='Steve' print ('Hello ', name)
Hasil dari kode di atas menunjukkan adanya konflik antara variabel global dan lokal dengan nama yang sama dan bagaimana penyelesaiannya