Belajar Python 3 - Function - Scope
Scope
Katakanlah kita memiliki fungsi dari latihan terakhir yang membuat string tentang item khusus:
def create_special_string(special_item):
return "Our special is " + special_item + "."
Bagaimana jika kita ingin mengakses variabel
special_item
di luar fungsi? Bisakah kita menggunakannya?def create_special_string(special_item):
return "Our special is " + special_item + "."
print("I don't like " + special_item)
Jika kami mencoba menjalankan kode ini, kami akan mendapatkan NameError, yang memberi tahu kami bahwa
'special_item' is not defined
. Variabel special_item
hanya didefinisikan di dalam ruang fungsi, jadi tidak ada di luar fungsi. Kami menyebut bagian dari program di mana special_item
dapat diakses ruang lingkupnya. Ruang lingkup special_item
hanya fungsi create_special_string
.Variabel yang ditentukan di luar lingkup fungsi dapat diakses di dalam tubuh fungsi:
header_string = "Spesial kami adalah"
def create_special_string (special_item):
return header_string + special_item + "."
print (create_special_string ("grapes"))
Tidak ada kesalahan di sini. header_string dapat digunakan di dalam fungsi create_special_string karena cakupan header_string adalah seluruh file. File ini akan menghasilkan:
Spesial kami adalah anggur.
Instruksi
1. Di luar fungsi calcul_age (), cobalah untuk mencetak current_year. Apakah itu bekerja?
Script latihan :
def calculate_age(current_year, birth_year):
age = current_year - birth_year
return age
print(current_year)
Hasil :
Traceback (most recent call last):
File "script.py", line 4, in <module>
print(age)
NameError: name 'age' is not defined
2. Bagaimana dengan usia? Di luar calcul_age (), cobalah untuk mencetak usia. Apakah itu bekerja?
Script latihan :
def calculate_age(current_year, birth_year):
age = current_year - birth_year
return age
print(age)
Hasil :
Traceback (most recent call last):
File "script.py", line 4, in <module>
print(age)
NameError: name 'age' is not defined
3. Tidak! Meskipun kita mengembalikan usia di akhir fungsi, usia variabel tetap hanya ada dalam konteks fungsi.
Hapus kedua pernyataan cetak.
Script latihan :
Hasil :
4. Mari kita coba sesuatu yang berbeda. Hapus parameter current_year sehingga tidak lagi menjadi parameter dari calcul_age ().
Script latihan :
def calculate_age( birth_year):
age = current_year - birth_year
return age
Hasil :
5. Ini tahun 2048.
Tentukan current_year sebagai variabel SEBELUM mendefinisikan fungsi dan memberinya nilai 2048. Sekarang, setiap kali calcul_age () dipanggil, ia hanya akan mengambil birth_year.
Script latihan :
current_year = 2048
def calculate_age(birth_year):
age = current_year - birth_year
return age
6. Coba cetak current_year untuk terakhir kalinya. Apakah akhirnya berhasil?
Script latihan :
current_year = 2048
def calculate_age(birth_year):
age = current_year - birth_year
return age
print(current_year)
Hasil :
2048
7. Hore! Sekarang kita memiliki current_year yang didefinisikan secara global. Kerja bagus!
Mari kita pastikan fungsi kita masih berfungsi: cetak nilai calcul_age () dengan 1970 sebagai argumen.
Script latihan :
current_year = 2048
def calculate_age(birth_year):
age = current_year - birth_year
return age
print(calculate_age(1970))
Hasil :
78
Labels: Python
<< Home