ವಿಷಯಕ್ಕೆ ತೆರಳಿ

ಪೈಥಾನ್ ಫಂಕ್ಷನ್ಸ್: ಸಂದರ್ಶನ ಪ್ರಶ್ನೆಗಳು ಮತ್ತು ಉತ್ತರಗಳು

1. ಪೈಥಾನ್‌ನಲ್ಲಿ ಫಂಕ್ಷನ್ (Function) ಎಂದರೇನು?

ಉತ್ತರ: ಫಂಕ್ಷನ್ ಎನ್ನುವುದು ಒಂದು ನಿರ್ದಿಷ್ಟ ಕೆಲಸವನ್ನು ಮಾಡಲು ಬರೆದ ಕೋಡ್‌ನ ಒಂದು ಬ್ಲಾಕ್. ಇದನ್ನು ಮತ್ತೆ ಮತ್ತೆ ಬಳಸಬಹುದು. def ಕೀವರ್ಡ್ ಬಳಸಿ ಫಂಕ್ಷನ್‌ಗಳನ್ನು ಡಿಫೈನ್ ಮಾಡಲಾಗುತ್ತದೆ.

ಉಪಯೋಗಗಳು:

  • ಕೋಡ್ ಅನ್ನು ಪುನಃ ಬಳಸಲು (Code Reusability).
  • ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಸಣ್ಣ, ನಿರ್ವಹಿಸಬಹುದಾದ ಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಲು.
  • ಕೋಡ್ ಓದಲು ಮತ್ತು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾಗುತ್ತದೆ.

ಉದಾಹರಣೆ:

def greet(name):
    """This function greets the person passed in as a parameter."""
    print(f"Hello, {name}!")


greet("World")  # "Hello, World!"

2. *args ಮತ್ತು **kwargs ಎಂದರೇನು?

ಉತ್ತರ: *args ಮತ್ತು **kwargs ಫಂಕ್ಷನ್‌ಗೆ ಅನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಕಳುಹಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

  • *args (Non-Keyword Arguments):

    • ಇದು ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಒಂದು ಟಪಲ್ (tuple) ಆಗಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ.
    • ನೀವು ಫಂಕ್ಷನ್‌ಗೆ ಎಷ್ಟು ಪೊಸಿಷನಲ್ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಬೇಕಾದರೂ ಕಳುಹಿಸಬಹುದು.
  • **kwargs (Keyword Arguments):

    • ಇದು ಕೀವರ್ಡ್ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಒಂದು ಡಿಕ್ಷನರಿ (dictionary) ಆಗಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ.
    • key=value ರೂಪದಲ್ಲಿ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಕಳುಹಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.

ಉದಾಹರಣೆ:

def my_function(*args, **kwargs):
    print("args:", args)
    print("kwargs:", kwargs)


my_function(1, 2, "hello", name="John", age=30)
# args: (1, 2, 'hello')
# kwargs: {'name': 'John', 'age': 30}

3. ಲ್ಯಾಂಬ್ಡಾ (Lambda) ಫಂಕ್ಷನ್ ಎಂದರೇನು?

ಉತ್ತರ: ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ ಎನ್ನುವುದು ಹೆಸರಿಲ್ಲದ, ಸಣ್ಣ, ಅನಾಮಧೇಯ (anonymous) ಫಂಕ್ಷನ್. ಇದನ್ನು lambda ಕೀವರ್ಡ್ ಬಳಸಿ ಡಿಫೈನ್ ಮಾಡಲಾಗುತ್ತದೆ. ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಒಂದೇ ಸಾಲಿನಲ್ಲಿ ಬರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಇದು ಒಂದೇ ಎಕ್ಸ್‌ಪ್ರೆಶನ್ ಅನ್ನು ಹೊಂದಿರಬಹುದು.

ಸಿಂಟ್ಯಾಕ್ಸ್: lambda arguments: expression

ಉದಾಹರಣೆ:

# ನಾರ್ಮಲ್ ಫಂಕ್ಷನ್
def add(x, y):
    return x + y


# ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್
add_lambda = lambda x, y: x + y

print(add(5, 3))  # 8
print(add_lambda(5, 3))  # 8

4. ಗ್ಲೋಬಲ್ (Global) ಮತ್ತು ಲೋಕಲ್ (Local) ವೇರಿಯೇಬಲ್‌ಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವೇನು?

ಉತ್ತರ:

  • ಲೋಕಲ್ ವೇರಿಯೇಬಲ್ (Local Variable):

    • ಒಂದು ಫಂಕ್ಷನ್‌ನ ಒಳಗೆ ಡಿಕ್ಲೇರ್ ಮಾಡಿದ ವೇರಿಯೇಬಲ್.
    • ಇದರ ವ್ಯಾಪ್ತಿ (scope) ಆ ಫಂಕ್ಷನ್‌ಗೆ ಮಾತ್ರ ಸೀಮಿತವಾಗಿರುತ್ತದೆ. ಫಂಕ್ಷನ್‌ನ ಹೊರಗೆ ಇದನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ.
  • ಗ್ಲೋಬಲ್ ವೇರಿಯೇಬಲ್ (Global Variable):

    • ಫಂಕ್ಷನ್‌ಗಳ ಹೊರಗೆ, ಪ್ರೋಗ್ರಾಂನ ಮುಖ್ಯ ಭಾಗದಲ್ಲಿ ಡಿಕ್ಲೇರ್ ಮಾಡಿದ ವೇರಿಯೇಬಲ್.
    • ಇದನ್ನು ಪ್ರೋಗ್ರಾಂನ ಯಾವುದೇ ಭಾಗದಲ್ಲಿ (ಫಂಕ್ಷನ್‌ಗಳ ಒಳಗೆ ಮತ್ತು ಹೊರಗೆ) ಬಳಸಬಹುದು.
    • ಫಂಕ್ಷನ್‌ನ ಒಳಗೆ ಗ್ಲೋಬಲ್ ವೇರಿಯೇಬಲ್‌ನ ಮೌಲ್ಯವನ್ನು ಬದಲಾಯಿಸಲು global ಕೀವರ್ಡ್ ಬಳಸಬೇಕು.

ಉದಾಹರಣೆ:

global_var = "I am global"


def my_func():
    local_var = "I am local"
    print(local_var)
    print(global_var)  # ಗ್ಲೋಬಲ್ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಓದಬಹುದು


my_func()
# print(local_var) # NameError ಕೊಡುತ್ತದೆ

5. ರಿಕರ್ಸಿವ್ ಫಂಕ್ಷನ್ (Recursive Function) ಎಂದರೇನು?

ಉತ್ತರ: ಒಂದು ಫಂಕ್ಷನ್ ತನ್ನನ್ನೇ ತಾನು ಕಾಲ್ ಮಾಡಿಕೊಂಡರೆ, ಅದನ್ನು ರಿಕರ್ಸಿವ್ ಫಂಕ್ಷನ್ ಎನ್ನುತ್ತಾರೆ. ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಕಾಂಪ್ಲೆಕ್ಸ್ ಸಮಸ್ಯೆಗಳನ್ನು ಸಣ್ಣ, ಪುನರಾವರ್ತಿತ ಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.

ಪ್ರತಿ ರಿಕರ್ಸಿವ್ ಫಂಕ್ಷನ್‌ಗೆ ಒಂದು ಬೇಸ್ ಕೇಸ್ (base case) ಇರಬೇಕು, ಅದು ರಿಕರ್ಸಿವ್ ಕಾಲ್‌ಗಳನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ ಅದು ಇನ್ಫೈನೈಟ್ ಲೂಪ್‌ಗೆ ಕಾರಣವಾಗುತ್ತದೆ.

ಉದಾಹರಣೆ (ಫ್ಯಾಕ್ಟೋರಿಯಲ್):

def factorial(n):
    # ಬೇಸ್ ಕೇಸ್
    if n == 0 or n == 1:
        return 1
    # ರಿಕರ್ಸಿವ್ ಸ್ಟೆಪ್
    else:
        return n * factorial(n - 1)


print(factorial(5))  # 120 (5 * 4 * 3 * 2 * 1)