☰ Mundarija · Informatika

Lokal va global o‘zgaruvchilar, EKUB funksiyasi

Darslar 49–50 · 2 ta dars · M. R. Fayziyeva, D. M. Sayfurov, N. S. Xaytullayeva. Informatika va axborot texnologiyalari, 9-sinf. «Nashriyot uyi Tasvir», Toshkent, 2020
49

Funksiyalar va o‘zgaruvchilar

Darslik: 96–98-betlar
MaqsadLokal va global o‘zgaruvchilarning farqini biladi, global kalit so‘zini qo‘llaydi, parametr qiymati funksiya ichida o‘zgarsa tashqaridagi o‘zgaruvchi o‘zgarmasligini tushunadi.
Yangi so‘zlar
lokal o‘zgaruvchi · local variable: a variable created inside a function; it exists only thereglobal o‘zgaruvchi · global variable: a variable created outside functions; it can be read everywhereglobal · global: the keyword that lets a function change a global variableko‘rinish doirasi · scope: the part of the program where a name can be used
Tushuntirish

Funksiya ichida e’lon qilingan o‘zgaruvchi lokal bo‘lib, faqat shu funksiyada mavjud: funksiya tugagach u yo‘qoladi, tashqarida unga murojaat qilinsa NameError chiqadi. Funksiyadan tashqarida (asosiy dasturda) e’lon qilingan o‘zgaruvchi global bo‘lib, uni funksiya ichida o‘qish mumkin. Global o‘zgaruvchining qiymatini funksiyada o‘zgartirish uchun funksiya boshida global nom yozish kerak; aks holda Python nomni lokal deb hisoblaydi va b = b + 1 da UnboundLocalError chiqadi. Parametr ham lokal o‘zgaruvchi: funksiyaga k = 7 berilsa, ichkarida parametrni ikki baravar qilish tashqaridagi k ni o‘zgartirmaydi. Global o‘zgaruvchilar dasturni chalkashtirib yuboradi, shuning uchun mumkin qadar qiymatni parametr bilan berib, natijani return bilan qaytarish afzal. Lokal o‘zgaruvchilar boshqa joyda qiymat tasodifan buzilishidan saqlaydi.

Namunalar
Lokal o‘zgaruvchi: def f(): ⏎     t = 7 ⏎     print(t) ⏎ f() ⏎ print(t) f() 7 ni chiqaradi, so‘ng oxirgi print(t) NameError beradi, chunki t faqat f ichida bor.
global va parametr: hisob = 0 ⏎ def oshir(): ⏎     global hisob ⏎     hisob = hisob + 1 ⏎ oshir() ⏎ oshir() ⏎ print(hisob) global hisob tufayli funksiya tashqaridagi hisob ni o‘zgartiradi; ikki chaqiruvdan keyin 2 chiqadi. Parametr: def f(n): ⏎     n = n * 2 ⏎     print(n) ⏎ k = 7 ⏎ f(k) ⏎ print(k) ichkarida 14, tashqarida esa k 7 bo‘lib qoladi.
Sinfda faoliyat

«Doira chegarasi»: sinf xonasi «funksiya» – partalar doirasi; ichkaridagi o‘quvchi qo‘lidagi kartochka (lokal) ni faqat shu doirada ishlatadi, doska yozuvi (global) hammaga ko‘rinadi. O‘qituvchi savollar berib, kim nimani ko‘ra olishini aniqlaydi.

Mashq
1
Funksiya ichida global yozmasdan b = b + 1 qilinsa, qaysi xato chiqadi?
2
Quyidagi dastur nimani chiqaradi? x = 1 ⏎ def f(): ⏎     x = 2 ⏎     print(x) ⏎ f() ⏎ print(x)
3
global ishlatmasdan b = 5 ni 1 ga oshiradigan oshir(x) funksiyasini yozing va natijani b ga qaytaring.
4
Nima uchun global o‘zgaruvchilardan imkon qadar kamroq foydalanish tavsiya etiladi?