View Categories

Python Functions

11 min read

Агуулга

Python Functions – Python Функцууд #

A function is a block of code which only runs when it is called.

Функц гэдэг нь дуудсан үед л ажилладаг кодын блок юм.

You can pass data, known as parameters, into a function.

Өгөгдлийг дамжуулах боломжтой, үүнийг параметр гэнэ.

A function can return data as a result.

Функц үр дүн болгон өгөгдлийг буцаах боломжтой.

Creating a Function – Функц үүсгэх #

In Python a function is defined using the def keyword:

Python-д функцыг def түлхүүр үгээр тодорхойлдог:

Example – Жишээ #

def my_function():
  print("Миний анхны функц ажиллаж байна")

Calling a Function – Функцыг дуудах #

To call a function, use the function name followed by parenthesis:

Функцыг дуудахдаа функцийн нэрийг хаалтан дотор бичнэ:

Example – Жишээ #

def my_function():
  print("Миний анхны функц ажиллаж байна")
my_function()

Arguments – Аргументууд #

Information can be passed into functions as arguments.

Функц руу өгөгдлийг аргумент хэлбэрээр дамжуулж болно.

Arguments are specified after the function name, inside the parentheses. You can add as many arguments as you want, just separate them with a comma.

Аргументуудыг функцийн нэрийн дараа дугуй хаалтанд тодорхойлно. Хүссэнээрээ олон аргумент дамжуулах боломжтой, зүгээр л хооронд нь таслалаар тусгаарлана.

The following example has a function with one argument (fname). When the function is called, we pass along a first name, which is used inside the function to print the full name:

Доорх функцын жишээ нэг аргументтэй байна(fname). Функцийг дуудах үед бид өөрийн нэрийг бөглөж, функцан доторх овог нэрийг хэвлэхэд ашигладаг:

Example #

def my_function(fname):
  print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")

Arguments are often shortened to args in Python documentations.

Python аргументуудыг ихэвчлэн args гэж товчилсон байдаг.

Parameters or Arguments? – Параметр эсвэл Аргумент? #

The terms parameter and argument can be used for the same thing: information that are passed into a function.

Параметр болон аргументыг ижил зүйлсэд ашиглах боломжтой: Функцэд дамжуулсан мэдээлэл.

From a function’s perspective:

Функцийн үүднээс авч үзвэл:

A parameter is the variable listed inside the parentheses in the function definition.

Параметр нь функцийн тодорхойлолт доторх хаалтанд бичигдсэн хувьсагч юм.

An argument is the value that is sent to the function when it is called.

Аргумент нь функц дуудагдах үед дамжуулагдсан утга юм.

Number of Arguments – Аргументуудын тоо #

By default, a function must be called with the correct number of arguments. Meaning that if your function expects 2 arguments, you have to call the function with 2 arguments, not more, and not less.

Өгөгдмөл байдлаар, функцыг зөв тооны аргументуудаар дуудах ёстой. Өөрөөр хэлбэл, хэрэв таны функц 2 аргумент хүлээж байгаа бол та функцээ 2 аргументтайгаар дуудах ёстой, үүнээс илүү ч биш, бага ч биш.

Example – Жишээ #

This function expects 2 arguments, and gets 2 arguments:

Энэ функц 2 аргумент хүлээн авдаг бөгөөд 2 аргумент авсан үед зөв ажиллана:

def my_function(fname, lname):
  print(fname + " " + lname)
my_function("Emil", "Refsnes")

If you try to call the function with 1 or 3 arguments, you will get an error:

Хэрэв та функцээ 1 эсвэл 3 аргументтэй дуудахыг оролдвол алдаа гарна:

Example – Жишээ #

This function expects 2 arguments, but gets only 1:

Энэ функц 2 аргумент хүлээж авах ёстой боловч 1 аргумент авсан тул алдаа гарна:

def my_function(fname, lname):
  print(fname + " " + lname)
my_function("Emil")

Arbitrary Arguments, *args – Санамсаргүй аргументууд, *args #

If you do not know how many arguments that will be passed into your function, add a * before the parameter name in the function definition.

Хэрэв функц руу дамжуулагдах аргументуудын тоо тодорхойгүй бол параметрийн нэрийн өмнө * нэмнэ.

This way the function will receive a tuple of arguments, and can access the items accordingly:

Ингэснээр функц нь олон аргумент хүлээн авах бөгөөд эдгээрт тохируулан хандах боломжтой болно:

Example – Жишээ #

If the number of arguments is unknown, add a * before the parameter name:

Хэрэв аргументуудын тоо тодорхойгүй бол параметрийн нэрний өмнө * -г нэмнэ үү:

def my_function(*kids):
  print("The youngest child is " + kids[2])
my_function("Emil", "Tobias", "Linus")

Arbitrary Arguments are often shortened to *args in Python documentations.

Python аргументуудыг ихэвчлэн *args гэж товчилсон байдаг.

Keyword Arguments – Түлхүүр үг бүхий аргументууд #

You can also send arguments with the key = value syntax.

Түлхүүр үг = утга хэлбэрээр аргументуудыг дамжуулж болно.

This way the order of the arguments does not matter.

Ингэснээр аргументуудын дараалал хамаагүй болно.

Example – Жишээ  #

def my_function(child3, child2, child1):
  print("The youngest child is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")

The phrase Keyword Arguments are often shortened to kwargs in Python documentations.

Python-д Түлхүүр үг аргументуудыг ихэвчлэн kwargs гэж товчилдог. 

Arbitrary Keyword Arguments, **kwargs – Санамсаргүй түлхүүр үг бүхий аргументууд, **kwargs #

If you do not know how many keyword arguments that will be passed into your function, add two asterisk: ** before the parameter name in the function definition.

Хэрэв функц руу дамжуулагдах түлхүүр үг бүхий аргументуудын тоо тодорхойгүй бол параметрийн нэрийн өмнө ** нэмнэ.

This way the function will receive a dictionary of arguments, and can access the items accordingly:

Ингэснээр функц аргументуудын dictionary хүлээн авч, тухайн зүйлсэд хандаж болно:

Example – Жишээ #

If the number of keyword arguments is unknown, add a double ** before the parameter name:

Хэрэв аргументуудын тоо тодорхойгүй бол параметрийн нэрний өмнө ** -г нэмнэ үү:

def my_function(**kid):
  print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")

Arbitrary Kword Arguments are often shortened to **kwargs in Python documentations.

Python-д Түлхүүр үг аргументуудыг ихэвчлэн **kwargs гэж товчилдог. 

Default Parameter Value – Өгөгдмөл параметрийн утга #

The following example shows how to use a default parameter value.

Өгөгдмөл параметрийн утгыг ашиглах жишээ:

If we call the function without argument, it uses the default value:

Бид функцыг аргументгүйгээр дуудах үед өгөгдмөл утга хэрэглэх болно: 

Example – Жишээ #

def my_function(country = "Norway"):
  print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

Passing a List as an Argument – Жагсаалтыг аргумент хэлбэрээр дамжуулах #

You can send any data types of argument to a function (string, number, list, dictionary etc.), and it will be treated as the same data type inside the function.

Функц руу ямар ч төрлийн өгөгдлийг (тэмдэгт мөр, тоо, list, dictionary гэх мэт) дамжуулах боломжтой.

E.g. if you send a List as an argument, it will still be a List when it reaches the function:

Жишээ нь: Хэрэв та Жагсаалтыг аргумент болгон илгээвэл энэ нь функцэд хүрэхэд Жагсаалт хэвээр байх болно:

Example – Жишээ #

If the number of keyword arguments is unknown, add a double ** before the parameter name:

Хэрэв аргументуудын тоо тодорхойгүй бол параметрийн нэрний өмнө ** -г нэмнэ үү:

def my_function(food):
  for x in food:
    print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)

Return Values – Утгуудыг Буцаах #

To let a function return a value, use the return statement:

Утга буцаахын тулд return мэдэгдлийг ашиглана:

Example – Жишээ #

def my_function(x):
  return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))

The pass Statement – pass мэдэгдэл #

function definitions cannot be empty, but if you for some reason have a function definition with no content, put in the pass statement to avoid getting an error.

Функцийн тодорхойлолт хоосон байж болохгүй, гэхдээ зарим тохиолдолд pass мэдэгдлийг ашиглаж алдаан авахгүй байж болно.

Example -Жишээ #

def myfunction():
  pass

Positional-Only Arguments – Зөвхөн байршлын аргументууд #

You can specify that a function can have ONLY positional arguments, or ONLY keyword arguments.

Функц тодорхойлох доо ЗӨВХӨН байршлын аргументуудтай байж болно, эсвэл ЗӨВХӨН түлхүүр үг аргументуудтай байж болно.

To specify that a function can have only positional arguments, add , / after the arguments:

Функц нь зөвхөн байрлалын аргументтай байж болохыг зааж өгөхийн тулд аргументуудын ард , /  нэмнэ:

Example – Жишээ #

def my_function(x, /):
  print(x)
my_function(3)

Without the , / you are actually allowed to use keyword arguments even if the function expects positional arguments:

Байрлалын аргументуудгүй , / функцэнд түлхүүр үг аргументуудыг ашиглах боломжтой байдаг:

Example – Жишээ #

def my_function(x):
  print(x)
my_function(x = 3)

But when adding the , / you will get an error if you try to send a keyword argument:

Харин , /-г нэмэх үед түлхүүр-утга аргумент ашиглахыг зөвшөөрөхгүй:

Example – Жишээ #

def my_function(x, /):
  print(x)
my_function(x = 3)

Keyword-Only Arguments – Зөвхөн түлхүүр үг бүхий аргументууд #

To specify that a function can have only keyword arguments, add *, before the arguments:

Функц зөвхөн түлхүүр үг бүхий аргументуудтай байж болохыг, аргументуудыг өмнө нэмж тодорхойлж болно: 

Example – Жишээ #

def my_function(*, x):
  print(x)
my_function(x = 3)

Without the *, you are allowed to use positional arguments even if the function expects keyword arguments:

Хэрэв *, хэрэглэхгүй байгаа ч гэсэн байрлалын аргументуудыг ашиглахыг зөвшөөрнө.

Example – Жишээ #

def my_function(x):
  print(x)
my_function(3)

But when adding the *, / you will get an error if you try to send a positional argument:

Гэхдээ *, / -г нэмэх үед та байрлалын аргумент илгээхийг оролдвол алдаа гарах болно:

Example – Жишээ #

def my_function(*, x):
  print(x)
my_function(3)

Combine Positional-Only and Keyword-Only – Байршлын болон түлхүүр үг бүхий аргументуудыг хослуулах #

You can combine the two argument types in the same function.

Та хоёр аргументын төрлийг нэг функцэд нэгтгэж болно.

Any argument before the / , are positional-only, and any argument after the *, are keyword-only.

Функцийн , /-аас өмнөх аливаа аргументууд байршлын аргументууд (positional-only) байж болох бөгөөд *,-ийн дараах аливаа аргументууд түлхүүр-утга аргументууд (keyword-only) байж болно.

Example – Жишээ #

def my_function(a, b, /, *, c, d):
  print(a + b + c + d)
my_function(5, 6, c = 7, d = 8)

Recursion – Давтамж #

Python also accepts function recursion, which means a defined function can call itself.

Python нь функцийн давтамжийг дэмждэг бөгөөд энэ нь тодорхойлсон функц нь өөрийгөө дуудаж болохыг илэрхийлдэг.

Recursion is a common mathematical and programming concept. It means that a function calls itself. This has the benefit of meaning that you can loop through data to reach a result.

Давтамж нь нийтлэг математик болон програмчлалын ойлголт бөгөөд энэ нь функц өөрийгөө дуудаж байгаа явдал юм. Энэ нь мэдээллийг давтаж боловсруулах замаар үр дүнд хүрэх боломжийг олгодог.

The developer should be very careful with recursion as it can be quite easy to slip into writing a function which never terminates, or one that uses excess amounts of memory or processor power. However, when written correctly recursion can be a very efficient and mathematically-elegant approach to programming.

Програм зохиогч давтамжийг ашиглахдаа маш болгоомжтой байх хэрэгтэй. Учир нь функц дуусахгүйгээр бичигдэх, эсвэл хэт их санах ой болон процессорын хүч хэрэглэж болзошгүй юм. Гэхдээ зөв бичигдвэл давтамж нь маш үр дүнтэй, математик-тунхаг арга хэлбэр болж чадна.

In this example, tri_recursion() is a function that we have defined to call itself (“recurse”). We use the k variable as the data, which decrements (-1) every time we recurse. The recursion ends when the condition is not greater than 0 (i.e. when it is 0).

Энэ жишээнд, tri_recursion() гэдэг функц нь өөрийгөө дахин дуудах (“давтах”) функц юм. Бид k хувьсагчийг өгөгдөл болгон ашиглаж байгаа бөгөөд давтамж хийх бүрдээ -1-ээр буурдаг. Давтамжийн процесс нь нөхцөл 0-ээс бага үед дуусдаг (өөрөөр хэлбэл 0 болоход дуусдаг).

To a new developer it can take some time to work out how exactly this works, best way to find out is by testing and modifying it.

Шинэ хөгжүүлэгчдэд энэ нь хэрхэн ажилладагийг ойлгоход хугацаа шаардлагатай байж болох юм, хамгийн сайн арга бол туршилт хийх болон өөрчлөлт оруулах явдал юм.

Example #

Recursion Example

def tri_recursion(k):
  if(k > 0):
    result = k + tri_recursion(k - 1)
    print(result)
  else:
    result = 0
  return result
print("\n\nRecursion Example Results")
tri_recursion(6)

үр дүн яаж гарч ирж байгаа вэ?
chatGPT:

Алхам алхмаар тайлбар: #

  1. Эхний дуудлага: tri_recursion(6)

    • k нь 6 байна.
    • tri_recursion(5) гэж дахин дуудна.
  2. Дуудлага: tri_recursion(5)

    • k нь 5 байна.
    • tri_recursion(4) гэж дахин дуудна.
  3. Дуудлага: tri_recursion(4)

    • k нь 4 байна.
    • tri_recursion(3) гэж дахин дуудна.
  4. Дуудлага: tri_recursion(3)

    • k нь 3 байна.
    • tri_recursion(2) гэж дахин дуудна.
  5. Дуудлага: tri_recursion(2)

    • k нь 2 байна.
    • tri_recursion(1) гэж дахин дуудна.
  6. Дуудлага: tri_recursion(1)

    • k нь 1 байна.
    • tri_recursion(0) гэж дахин дуудна.
  7. Дуудлага: tri_recursion(0)

    • k нь 0 байна.
    • result нь 0 болно.

Буцах утгууд: #

  1. Буцах: tri_recursion(0)

    • result = 0
    • Буцаж дуудлага tri_recursion(1) руу очно.
  2. Буцах: tri_recursion(1)

    • result = 1 + 0 = 1
    • 1 хэвлэгдэнэ.
    • Буцаж дуудлага tri_recursion(2) руу очно.
  3. Буцах: tri_recursion(2)

    • result = 2 + 1 = 3
    • 3 хэвлэгдэнэ.
    • Буцаж дуудлага tri_recursion(3) руу очно.
  4. Буцах: tri_recursion(3)

    • result = 3 + 3 = 6
    • 6 хэвлэгдэнэ.
    • Буцаж дуудлага tri_recursion(4) руу очно.
  5. Буцах: tri_recursion(4)

    • result = 4 + 6 = 10
    • 10 хэвлэгдэнэ.
    • Буцаж дуудлага tri_recursion(5) руу очно.
  6. Буцах: tri_recursion(5)

    • result = 5 + 10 = 15
    • 15 хэвлэгдэнэ.
    • Буцаж дуудлага tri_recursion(6) руу очно.
  7. Буцах: tri_recursion(6)

    • result = 6 + 15 = 21
    • 21 хэвлэгдэнэ.

яагаад эхлээд функцийн параметр буурч байгаад сүүлд нэмэх үйлдэл хийгдэж байгаа вэ?

ChatGPT:

Python дахь рекурсив функцийн үйлдэл нь параметр буурч, дараа нь нэмэгдэхийн учир шалтгаан нь функцийг дуудлагын овоолго ашиглан гүйцэтгэдэгт оршдог. Энэ процессыг илүү сайн ойлгохын тулд дараах алхмуудыг харуулъя:

  1. Дуудлагын овоолгын зохицуулалт:

    • Рекурсив функц нь өөрийгөө дуудахад параметр нь буурах ба tri_recursion(k - 1) хэлбэрээр шинэ дуудлага үүсгэдэг.
    • Функцийн одоогийн гүйцэтгэл нь дуудлагын овоолгонд түр хугацаанд зогсдог ба шинэ функцийн дуудлага эхэлдэг.
  2. Гүехэн зогсолт:

    • Энэ процесс давтагдана, үүнээс үүдэн рекурсив функц нь гүехэн болох хүртэл буюу k нь 0 болох хүртэл үргэлжилнэ.
    • Жишээлбэл, tri_recursion(6) нь tri_recursion(5), tri_recursion(4), tri_recursion(3), tri_recursion(2), tri_recursion(1) гэж дуудсаар, эцэст нь tri_recursion(0) хүрнэ.
  3. Гүехэн утгаас нэмэгдүүлэх үйл явц:

    • k нь 0 болох үед result = 0 гэж буцаагдана.
    • Энэ нь рекурсив дуудлагын овоолгоос гарч, хамгийн сүүлчийн дуудлагаас эхлэн утгуудыг нэмэгдүүлэх үйл явц эхэлнэ.
  4. Нэмэх үйлдэл:

    • Жишээ нь, tri_recursion(1) функц руу буцахад result = 1 + tri_recursion(0) буюу 1 болно.
    • Энэ нь рекурсив дуудлагын овоолгоос гарч, хамгийн сүүлчийн дуудлагаас эхлэн утгуудыг нэмэгдүүлэх үйл явц эхэлнэ.
  5. Буцах үйлдэл:

    • Түүнчлэн, tri_recursion(2) нь result = 2 + tri_recursion(1) буюу 3 болно.
    • Энэ процесс нь хамгийн анхны дуудлага болох tri_recursion(6) хүртэл үргэлжилж, result = 6 + 15 буюу 21 гэж дуусна.

Powered by BetterDocs

Leave a Reply