Pengantar Variabel Global dan Lokal dengan Python

Diterbitkan: 2021-08-26

Python menangani variabel dengan cara yang sangat maverick. Sementara banyak bahasa pemrograman menganggap variabel sebagai global secara default (kecuali dideklarasikan sebagai lokal), Python menganggap variabel sebagai lokal kecuali dinyatakan sebaliknya. Alasan pendorong di balik Python yang mempertimbangkan variabel sebagai lokal secara default adalah bahwa menggunakan variabel global umumnya dianggap sebagai praktik pengkodean yang buruk.

Jadi, saat memprogram dengan Python, ketika definisi variabel muncul di dalam suatu fungsi, mereka adalah lokal secara default. Modifikasi atau manipulasi apa pun yang Anda lakukan pada variabel ini di dalam badan fungsi hanya akan tetap berada dalam cakupan fungsi ini. Atau, dengan kata lain, perubahan tersebut tidak akan tercermin dalam variabel lain di luar fungsi, bahkan jika variabel tersebut memiliki nama yang sama dengan variabel fungsi. Semua variabel ada dalam lingkup fungsi yang mereka definisikan dan memiliki nilai itu. Untuk mendapatkan pengalaman langsung tentang variabel dan proyek python, cobalah sertifikasi ilmu data kami dari universitas terbaik dari AS.

Melalui artikel ini, mari kita jelajahi pengertian variabel lokal dan global dengan Python, bersama dengan cara Anda mendefinisikan variabel global. Kita juga akan melihat sesuatu yang dikenal sebagai "variabel nonlokal".

Baca terus!

Daftar isi

Variabel Global dan Lokal dengan Python

Mari kita lihat contoh untuk memahami bagaimana nilai global dapat digunakan di dalam tubuh fungsi dengan Python:

Program:

fungsi def():

cetak (string)

string = “Saya suka Python!”

fungsi()

Keluaran

Saya suka Python!

Seperti yang Anda lihat, string variabel diberi nilai "I love Python!" sebelum func() dipanggil. Badan fungsi hanya terdiri dari pernyataan cetak. Karena tidak ada penetapan ke variabel string di dalam badan fungsi, itu akan mengambil nilai variabel global sebagai gantinya.

Akibatnya, outputnya akan menjadi apa pun nilai global dari string variabel, yang dalam hal ini adalah "I love Python!".

Sekarang, mari kita ubah nilai string di dalam func() dan lihat bagaimana pengaruhnya terhadap variabel global:

Program:

fungsi def():

string = “Saya suka Jawa!”

cetak (string)

string = “Saya suka Python!”

fungsi()

cetak (string)

Keluaran:

Saya suka Jawa!

Saya suka Python!

Dalam program di atas, kita telah mendefinisikan fungsi func(), dan di dalamnya, kita memiliki string variabel dengan nilai “I love Java!”. Jadi, variabel ini lokal ke fungsi func(). Kemudian, kita memiliki variabel global seperti sebelumnya, dan kemudian kita memanggil fungsi dan pernyataan cetak. Pertama, fungsi dipicu, memanggil pernyataan cetak dari fungsi itu dan memberikan output "I love Java!" – yang merupakan variabel lokal untuk fungsi tersebut. Kemudian, setelah program berada di luar cakupan fungsi, nilai s akan diubah menjadi "I love Python", dan itulah sebabnya kami mendapatkan kedua baris sebagai output.

Sekarang, mari kita tambahkan dua contoh pertama, dan coba akses string menggunakan pernyataan print, lalu coba berikan nilai baru padanya. Pada dasarnya, kami mencoba membuat string sebagai variabel lokal dan global.

Untungnya, Python tidak membiarkan kebingungan ini dan menimbulkan kesalahan. Berikut caranya:

Program:

fungsi def():

cetak (string)

string = “Saya suka Jawa!”

cetak (string)

string = “Saya suka Python!”

fungsi()

Keluaran (Kesalahan):

———————————————————————————

UnboundLocalError Traceback (panggilan terakhir terakhir)

<ipython-input-3-d7a23bc83c27> di <module>

5

6 string = “Saya suka Python!”

—-> 7 fungsi()

<ipython-input-3-d7a23bc83c27> di func()

1 fungsi def():

—-> 2 cetak(string)

3 string = “Saya suka Jawa!”

4 cetak (string)

5

UnboundLocalError: variabel lokal 's' direferensikan sebelum penugasan

Jelas, Python tidak mengizinkan variabel menjadi global dan lokal di dalam suatu fungsi. Jadi, ini memberi kita variabel lokal karena kita menetapkan nilai ke string di dalam func(). Akibatnya, pernyataan cetak pertama menunjukkan pemberitahuan kesalahan. Semua variabel yang dibuat atau diubah dalam lingkup fungsi apa pun adalah lokal kecuali jika telah dinyatakan sebagai "global" secara eksplisit.

Mendefinisikan Variabel Global dengan Python

Kata kunci global diperlukan untuk menginformasikan Python bahwa kita sedang mengakses variabel global. Berikut caranya:

Program:

fungsi def():

string global

cetak (string)

string = “Tapi saya juga ingin belajar Python!”

cetak (string)

string = “Saya ingin belajar Java!”

fungsi()

cetak (string)

Keluaran:

Saya ingin belajar Java!

Tapi saya juga ingin belajar Python!

Tapi saya juga ingin belajar Python!

Seperti yang dapat Anda lihat dari output, Python mengenali variabel global di sini dan mengevaluasi pernyataan print sesuai, memberikan output yang sesuai.

Menggunakan Variabel Global dalam Fungsi Bersarang

Sekarang, mari kita periksa apa yang akan terjadi jika variabel global digunakan dalam fungsi bersarang. Lihat contoh ini di mana variabel 'bahasa' didefinisikan dan digunakan dalam berbagai cakupan:

Program:

fungsi def():

bahasa = “Bahasa Inggris”

fungsi def1():

bahasa global

bahasa = “Spanyol”

print("Sebelum memanggil fungsi1: " + bahasa)

print("Memanggil func1 sekarang:")

fungsi1()

print("Setelah memanggil func1: " + bahasa)

fungsi()

print("Nilai bahasa di main: " + bahasa)

Keluaran:

Sebelum menelepon fungsi1: Bahasa Inggris

Memanggil func1 sekarang:

Setelah menelepon func1: Bahasa Inggris

Nilai bahasa utama: Spanyol

Seperti yang Anda lihat, kata kunci global, ketika digunakan dalam fungsi 1 bersarang, tidak berdampak pada variabel 'bahasa' dari fungsi induk. Artinya, nilainya dipertahankan sebagai "Bahasa Inggris". Ini juga menunjukkan bahwa setelah memanggil func(), ada variabel 'bahasa' di ruang nama modul dengan nilai 'Spanyol'.

Temuan ini konsisten dengan apa yang kami temukan di bagian sebelumnya juga – bahwa variabel, ketika didefinisikan di dalam tubuh fungsi, selalu lokal kecuali ditentukan lain. Namun, harus ada mekanisme untuk mengakses variabel milik lingkup lain yang berbeda juga.

Di situlah variabel nonlokal masuk!

Variabel Nonlokal

Variabel nonlokal adalah jenis variabel baru yang diperkenalkan oleh Python3. Ini memiliki banyak kesamaan dengan variabel global dan juga sangat penting. Namun, satu perbedaan antara variabel nonlokal dan global adalah bahwa variabel nonlokal tidak memungkinkan untuk mengubah variabel dari lingkup modul.

Lihat contoh berikut untuk memahaminya:

Program:

fungsi def():

bahasa global

cetak (bahasa)

bahasa = “Jerman”

fungsi()

Keluaran:

Jerman

Seperti yang diharapkan, program mengembalikan 'Frankfurt' sebagai output. Sekarang, mari kita ubah 'global' menjadi 'nonlocal' dan lihat apa yang terjadi:

Program:

fungsi def():

bahasa nonlokal

cetak (bahasa)

bahasa = “Jerman”

fungsi()

Keluaran:

File “<ipython-input-9-97bb311dfb80>”, baris 2

bahasa nonlokal

^

SyntaxError: tidak ditemukan ikatan untuk 'bahasa' nonlokal

Seperti yang Anda lihat, program di atas memunculkan kesalahan sintaksis. Dari sini kita dapat memahami bahwa penugasan nonlokal hanya dapat dilakukan dari definisi fungsi bersarang. Variabel nonlokal harus didefinisikan dalam ruang lingkup fungsi, dan jika bukan itu masalahnya, ia juga tidak dapat menemukan definisinya dalam ruang lingkup bersarang. Sekarang, periksa program berikut:

Program:

fungsi def():

bahasa = “Bahasa Inggris”

fungsi def1():

bahasa nonlokal

bahasa = “Jerman”

print("Sebelum memanggil fungsi1: " + bahasa)

print("Memanggil func1 sekarang:")

fungsi1()

print("Setelah memanggil func1: " + bahasa)

bahasa = “Spanyol”

fungsi()

print("'bahasa' di main: ” + bahasa)

Keluaran:

Sebelum menelepon fungsi1: Bahasa Inggris

Memanggil func1 sekarang:

Setelah memanggil fungsi1: Jerman

'bahasa' dalam bahasa utama: Spanyol

Program di atas berfungsi karena variabel 'bahasa' didefinisikan sebelum memanggil func1(). Jika tidak didefinisikan, kita akan mendapatkan kesalahan seperti di bawah ini:

Program:

fungsi def():

#bahasa = “Bahasa Inggris”

fungsi def1():

bahasa nonlokal

bahasa = “Jerman”

print("Sebelum memanggil fungsi1: " + bahasa)

print("Memanggil func1 sekarang:")

fungsi1()

print("Setelah memanggil func1: " + bahasa)

bahasa = “Spanyol”

fungsi()

print("'bahasa' di main: ” + bahasa)

Keluaran:

File “<ipython-input-11-5417be93b6a6>”, baris 4

bahasa nonlokal

^

SyntaxError: tidak ditemukan ikatan untuk 'bahasa' nonlokal

Namun, program akan bekerja dengan baik jika kita mengganti nonlocal dengan global:

Program:

fungsi def():

#bahasa = “Bahasa Inggris”

fungsi def1():

bahasa global

bahasa = “Jerman”

print("Sebelum memanggil func1`: " + bahasa)

print("Memanggil func1 sekarang:")

fungsi1()

print("Setelah memanggil func1: " + bahasa)

bahasa = “Spanyol”

fungsi()

print("'bahasa' di main: ” + bahasa)

Keluaran:

Sebelum menelepon fungsi1: Bahasa Inggris

Memanggil func1 sekarang:

Setelah memanggil fungsi1: Jerman

'bahasa' dalam bahasa utama: Jerman

Jika Anda perhatikan, nilai variabel global (bahasa) juga berubah dalam program di atas! Itulah kekuatan yang dibawa oleh variabel nonlokal!

Kesimpulannya

Dalam artikel ini, kami membahas variabel lokal, global, dan nonlokal dengan Python, bersama dengan kasus penggunaan yang berbeda dan kemungkinan kesalahan yang harus Anda waspadai. Dengan pengetahuan ini di sisi Anda, Anda dapat melanjutkan dan mulai berlatih dengan berbagai jenis variabel dan memperhatikan perbedaan yang halus.

Python adalah bahasa pemrograman yang sangat populer di seluruh dunia – terutama dalam hal memecahkan masalah dan tantangan terkait data. Di upGrad, kami memiliki basis pelajar di 85+ negara, dengan 40.000+ pelajar berbayar secara global, dan program kami telah memengaruhi lebih dari 500.000 profesional yang bekerja. Kursus kami dalam Ilmu Data dan Pembelajaran Mesin telah dirancang untuk membantu siswa yang termotivasi dari latar belakang apa pun memulai perjalanan mereka dan unggul dalam bidang ilmu data. Bantuan karir 360 derajat kami memastikan bahwa setelah Anda terdaftar bersama kami, karir Anda hanya akan naik. Hubungi kami hari ini, dan rasakan kekuatan pembelajaran sebaya dan jaringan global!

Apa saja jenis variabel dalam Python?

Berdasarkan cakupannya, variabel dalam Python adalah lokal, global, atau nonlokal.

Bisakah variabel global dalam Python diakses dari dalam suatu fungsi?

Ya, variabel global dapat diakses dari dalam suatu fungsi dengan Python.

Apa perbedaan antara variabel lokal dan global?

Variabel global memiliki seluruh program sebagai ruang lingkupnya, sedangkan variabel lokal hanya memiliki fungsi di mana mereka didefinisikan sebagai ruang lingkupnya.