Python / Функцүүд

Функцүүд

Нэг ажлыг програмын олон газар хийх шаардлага гарах үед кодыг дахин дахин бичих нь алдаатай, уйтгартай. Function (функц) нь нэг удаа бичээд, хүссэн газраа дуудаж ашиглах боломж олгодог — програмчлалын хамгийн чухал ойлголтуудын нэг.

Функц зарлах ба дуудах

python
# Функц зарлах — def түлхүүр үг
def мэндчилэх():
    print("Сайн уу, дэлхий!")
    print("Python дээр функц ажиллаж байна.")

# Функц дуудах
мэндчилэх()
мэндчилэх()   # дахин ашиглах боломжтой

# Сайн уу, дэлхий!
# Python дээр функц ажиллаж байна.
# Сайн уу, дэлхий!
# Python дээр функц ажиллаж байна.

Бүтэц:

  • def — функц зарлах түлхүүр үг
  • мэндчилэх — функцийн нэр (snake_case)
  • () — параметрүүд орох хаалт
  • : — блок эхлэх тэмдэг
  • Функцийн биеийн код 4 зайгаар догол оруулагдана

Параметр (parameter) ба аргумент (argument)

Функцт өгөгдөл дамжуулахад параметр ашигладаг:

python
def мэндчилэх(нэр):
    print(f"Сайн уу, {нэр}!")

мэндчилэх("Болд")     # Сайн уу, Болд!
мэндчилэх("Сарнай")   # Сайн уу, Сарнай!
мэндчилэх("Төгс")     # Сайн уу, Төгс!

Хэд хэдэн параметр:

python
def нэмэх(а, б):
    нийлбэр = а + б
    print(f"{а} + {б} = {нийлбэр}")

нэмэх(5, 3)      # 5 + 3 = 8
нэмэх(100, 250)  # 100 + 250 = 350

return — үр дүн буцаах

Функц зөвхөн хэвлэхээс гадна утга буцааж болно — ингэснээр үр дүнг дараа нь ашиглаж болно:

python
def нэмэх(а, б):
    return а + б

# Үр дүнг variable-д хадгалах
нийлбэр = нэмэх(10, 20)
print(нийлбэр)          # 30

# Шууд ашиглах
print(нэмэх(5, 3) * 2)  # 16

# Функцийн үр дүнг өөр функцэд дамжуулах
print(f"Нийлбэр: {нэмэх(7, 8)}")   # Нийлбэр: 15

return мөр ажиллахад функц тэр даруй зогсдог:

python
def шалгах(тоо):
    if тоо < 0:
        return "Сөрөг тоо"    # энд зогсоно
    if тоо == 0:
        return "Тэг"           # энд зогсоно
    return "Эерэг тоо"        # дээрх хоёр биш бол

print(шалгах(-5))   # Сөрөг тоо
print(шалгах(0))    # Тэг
print(шалгах(7))    # Эерэг тоо

Өгөгдмөл параметр (default parameter)

Параметрт өгөгдмөл утга өгч болно — аргумент дамжуулаагүй үед ашиглагдана:

python
def мэндчилэх(нэр, хэл="Монгол"):
    if хэл == "Монгол":
        print(f"Сайн уу, {нэр}!")
    elif хэл == "Англи":
        print(f"Hello, {нэр}!")
    else:
        print(f"Привет, {нэр}!")

мэндчилэх("Болд")              # Сайн уу, Болд!   — өгөгдмөл хэрэглэнэ
мэндчилэх("Alice", "Англи")    # Hello, Alice!
мэндчилэх("Иван", "Орос")      # Привет, Иван!

Keyword argument

Аргументуудыг нэрээр нь дамжуулж болно — дараалал хамаагүй:

python
def профайл(нэр, нас, хот):
    print(f"{нэр} ({нас} нас) — {хот}")

# Байршлаар
профайл("Болд", 25, "Улаанбаатар")

# Нэрээр — дараалал хамаагүй
профайл(хот="Дархан", нэр="Анар", нас=30)

Бодит жишээ — оноо шинжлэгч

python
def дүгнэлт(нэр, оноо):
    if оноо >= 90:
        үсэг = "A"
        тайлбар = "Маш сайн"
    elif оноо >= 80:
        үсэг = "B"
        тайлбар = "Сайн"
    elif оноо >= 70:
        үсэг = "C"
        тайлбар = "Дунд зэрэг"
    elif оноо >= 60:
        үсэг = "D"
        тайлбар = "Хангалттай"
    else:
        үсэг = "F"
        тайлбар = "Тэнцсэнгүй"

    return f"{нэр}: {оноо} оноо — {үсэг} ({тайлбар})"


оюутнууд = [("Болд", 92), ("Сарнай", 74), ("Анар", 55)]

for нэр, оноо in оюутнууд:
    print(дүгнэлт(нэр, оноо))

Гаралт:

код
Болд: 92 оноо — A (Маш сайн)
Сарнай: 74 оноо — C (Дунд зэрэг)
Анар: 55 оноо — F (Тэнцсэнгүй)

JavaScript-тэй харьцуулбал

javascript
// JavaScript
function нэмэх(а, б) {
  return а + б;
}
const үр_дүн = нэмэх(5, 3);
python
# Python
def нэмэх(а, б):
    return а + б

үр_дүн = нэмэх(5, 3)

Гол ялгаа: function биш def, { } биш догол мөр (indentation), return хэрэглэх хэлбэр адилхан.

Дараагийн хичээлд:

Функц зарлаж, дуудаж, утга буцаах аргыг сурлаа! Дараа нь lambda функц — нэг мөрөнд бичигддэг товч функцийн хэлбэрийг судална. Жагсаалт боловсруулахад маш тохиромжтой.