Back to blog

Generators
- Savol: Python’da generators` nima va u qanday ishlaydi?
- Javob:
Generators
– bu iterator yaratishning oddiy usuli. Generators qiymatlarni kerak bo‘lganda hisoblaydi (lazy evaluation). Ular oddiy funksiya kabi ishlaydi, lekin qiymatlarni qaytarish uchun yield kalit so‘zidan foydalanadi.
def my_generator():
for i in range(5):
yield i
gen = my_generator()
for value in gen:
print(value)
init
- Savol: Python’da
__init__
metodining vazifasi nima? - Javob:
__init__
– sinf konstruktoridir. U obyekt yaratilganda avtomatik chaqiriladi va obyekt xususiyatlarini belgilashga xizmat qiladi.
class Car:
def __init__(self, model, color):
self.model = model
self.color = color
car1 = Car("BMW", "qora")
print(car1.model) # Natija: BMW
self
- Savol: self` parametri nima va u qachon ishlatiladi?
- Javob:
self
obyektning o‘zini ifodalaydi. Sinf ichida metodlar yoki o‘zgaruvchilarni murojaat qilish uchunself
dan foydalaniladi.
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return f"Salom, mening ismim {self.name}."
person = Person("Jacob")
print(person.greet()) # Natija: Salom, mening ismim Jacob.
str
- Savol:
__str__
metodining vazifasi nima? - Javob:
__str__
obyektni string ko‘rinishida ifodalash uchun ishlatiladi. Bu metodprint()
yokistr()
funksiyalari chaqirilganda avtomatik ishlaydi.
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def __str__(self):
return f"Kitob: {self.title}, Muallif: {self.author}"
book = Book("Python Basics", "Jacob")
print(book) # Natija: Kitob: Python Basics, Muallif: Jacob
append() va extend()
- Savol:
append()
vaextend()
orasidagi farq nima? - Javob:
append()
– bitta elementni ro‘yxat oxiriga qo‘shadi.extend()
– berilgan iterable (masalan, ro‘yxat) ichidagi elementlarni alohida-alohida ro‘yxatga qo‘shadi.
numbers = [1, 2, 3]
numbers.append([4, 5])
print(numbers) # Natija: [1, 2, 3, [4, 5]]
numbers.extend([6, 7])
print(numbers) # Natija: [1, 2, 3, [4, 5], 6, 7]
Docstring
- Savol:
Docstring
nima va uning vazifasi qanday? - Javob:
Docstring
– funksiya, sinf yoki modul nima vazifa bajarishini izohlovchi matn. U uchta qo‘shtirnoq yordamida yoziladi va kodni tushunishni osonlashtiradi.
def add_numbers(a, b):
"""Ikki sonni qo‘shuvchi funksiya."""
return a + b
print(add_numbers.__doc__) # Natija: Ikki sonni qo‘shuvchi funksiya.
Global va lokal o‘zgaruvchilar
- Savol:
Global
valokal
o‘zgaruvchilar orasidagi farq nima? - Javob:
Global
o‘zgaruvchilar – butun dastur davomida ishlatiladi.Lokal
o‘zgaruvchilar – faqat funksiya yoki blok ichida ishlatiladi.
x = 10 # Global
def example():
y = 5 # Lokal
return x + y
print(example()) # Natija: 15
pass operatori
- Savol:
pass
operatorining vazifasi nima? - Javob:
pass
hech qanday amalni bajarmaydi. U vaqtinchalik kod tuzilmasini saqlab qolish uchun ishlatiladi.
def my_function():
pass # Keyinchalik kod yoziladi
class MyClass:
pass # Bo‘sh sinf
== va is farqi
- Savol: Python’da
==
vais
operatorlari qanday farq qiladi? - Javob:
==
– qiymatlarni tengligini tekshiradi.is
– obyektlarning xotira manzilini, ya'ni ularning identifikatorlarini solishtiradi.
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a == b) # Natija: True (Qiymatlar teng)
print(a is b) # Natija: False (Xotira manzillari har xil)
print(a is c) # Natija: True (Xuddi shu obyekt)
Session nima?
- Savol: Python’da session nima?
- Javob:
Session
– bu bir nechta so‘rovlar davomida muayyan ma'lumotlarni saqlash imkonini beradigan mexanizm. U odatda veb-ilovalarda foydalanuvchi sessiyasini kuzatishda ishlatiladi. - Misol:
Flask
da sessiondan foydalanish:
from flask import Flask, session
app = Flask(__name__)
app.secret_key = "secret"
@app.route("/")
def index():
session["username"] = "Jacob"
return "Session saqlandi!"
break, continue, va pass farqi
- Savol:
break
,continue
, vapass
qanday farq qiladi? - Javob:
break
– tsiklni to‘xtatadi.continue
– joriy iteratsiyani o‘tkazib yuborib, keyingisiga o‘tadi.pass
– hech narsa qilmaydi, vaqtinchalik kod uchun ishlatiladi.
for i in range(5):
if i == 2:
break # Tsikl to'xtaydi
elif i == 1:
continue # 1 ni o'tkazib yuboradi
else:
pass # Harakat qilmaydi
print(i) # Natija: 0
*args va **kwargs
- Savol: Python’da
*args
va**kwargs
qanday ishlatiladi? - Javob:
*args
– funksiyaga istalgan miqdorda pozitsion argumentlar uzatadi.**kwargs
– funksiyaga kalit-qiymat juftliklari sifatida argumentlarni uzatadi.
def my_function(*args, **kwargs):
print("Args:", args)
print("Kwargs:", kwargs)
my_function(1, 2, 3, name="Jacob", age=30)
Natija:
Args: (1, 2, 3)
Kwargs: {'name': 'Jacob', 'age': 30}
isinstance() va type() farqi
- Savol:
isinstance()
vatype()
qanday farq qiladi? - Javob:
isinstance()
– obyektning sinf yoki uning vorisi ekanligini tekshiradi.type()
– obyektning aniq turini qaytaradi.
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Animal)) # True
print(type(dog) == Animal) # False
.py va .pyc farqi
- Savol: Python’da
.py
va.pyc
fayllari o‘rtasidagi farq nima? - Javob:
.py
– dastur manba kodi yozilgan fayl..pyc
– Python kodining bayt kodga kompilyatsiya qilingan versiyasi, u tezroq ishlaydi. - Misol: Python dasturi ishga tushirilganda
.pyc
fayllari avtomatik yaratiladi.
name
- Savol: Python’da name o‘zgaruvchisining vazifasi nima?
- Javob:
__name__
– bu ichki o‘zgaruvchi bo‘lib, modul qanday ishga tushirilganini aniqlashga yordam beradi: Agar modul bevosita ishga tushirilsa,__name__
qiymati"__main__"
bo‘ladi. Agar uimport
qilinsa,__name__
modul nomiga teng bo‘ladi.
# my_module.py
if __name__ == "__main__":
print("Modul to‘g‘ridan-to‘g‘ri ishga tushirildi.")
else:
print("Modul import qilindi.")
Metaclasses
- Savol: Python’da metaclasses nima?
- Javob:
Metaclasses
– bu class larni yaratadigan class lardir. Ular class ning xatti-harakatlarini belgilaydi.
class Meta(type):
def __new__(cls, name, bases, dct):
print(f"Yangi sinf yaratilmoqda: {name}")
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=Meta):
pass
Monkey patching
- Savol: Python’da monkey patching nima?
- Javob:
Monkey patching
– bu mavjud kodni runtime vaqtida o‘zgartirish usuli.
class MyClass:
def greet(self):
return "Salom!"
# Monkey patch
def new_greet(self):
return "Yangi salom!"
MyClass.greet = new_greet
obj = MyClass()
print(obj.greet()) # Natija: Yangi salom!