Khóa học python

Đối số mặc định của hàm trong Python

0 phút đọc

Trong lập trình Python, đối số mặc định (default arguments) là một tính năng mạnh mẽ cho phép bạn định nghĩa các giá trị mặc định cho các tham số của hàm. Điều này giúp hàm trở nên linh hoạt hơn và dễ sử dụng hơn, đặc biệt khi bạn không muốn cung cấp giá trị cho tất cả các tham số mỗi khi gọi hàm. Bài viết này sẽ hướng dẫn chi tiết về đối số mặc định của hàm trong Python, bao gồm các chủ đề như định nghĩa đối số mặc định, cách hoạt động của đối số mặc định, các ví dụ minh họa, và các lưu ý khi sử dụng đối số mặc định.

Định nghĩa đối số mặc định

Để định nghĩa đối số mặc định trong Python, bạn chỉ cần gán giá trị mặc định cho tham số trong định nghĩa hàm. Nếu giá trị cho tham số không được cung cấp khi gọi hàm, giá trị mặc định sẽ được sử dụng.

Cú pháp định nghĩa đối số mặc định

def function_name(parameter1=default_value1, parameter2=default_value2, ...):
    # Khối mã của hàm
    pass

Ví dụ về định nghĩa đối số mặc định

def greet(name, message="Hello"):
    print(f"{message}, {name}!")

# Gọi hàm với cả hai đối số
greet("Alice", "Good morning")

# Gọi hàm chỉ với đối số bắt buộc
greet("Bob")

Cách hoạt động của đối số mặc định

Khi bạn định nghĩa một hàm với các đối số mặc định, Python sẽ gán giá trị mặc định cho các tham số nếu không có giá trị nào được cung cấp khi gọi hàm. Điều này giúp bạn tránh phải cung cấp giá trị cho tất cả các tham số mỗi khi gọi hàm, đặc biệt khi các giá trị mặc định là hợp lý cho hầu hết các trường hợp.

Ví dụ về cách hoạt động của đối số mặc định

def add(a, b=5):
    return a + b

# Gọi hàm với cả hai đối số
print(add(3, 7))  # Output: 10

# Gọi hàm chỉ với đối số bắt buộc
print(add(3))  # Output: 8

Các ví dụ minh họa (Illustrative Examples)

Ví dụ 1: Hàm tính diện tích hình chữ nhật

def calculate_area(length, width=10):
    return length * width

# Gọi hàm với cả hai đối số
print("Diện tích:", calculate_area(5, 20))  # Output: 100

# Gọi hàm chỉ với đối số bắt buộc
print("Diện tích:", calculate_area(5))  # Output: 50

Ví dụ 2: Hàm chào hỏi với nhiều ngôn ngữ

def greet(name, language="English"):
    if language == "English":
        print(f"Hello, {name}!")
    elif language == "Spanish":
        print(f"Hola, {name}!")
    elif language == "French":
        print(f"Bonjour, {name}!")
    else:
        print(f"Hello, {name}!")

# Gọi hàm với cả hai đối số
greet("Alice", "Spanish")  # Output: Hola, Alice!

# Gọi hàm chỉ với đối số bắt buộc
greet("Bob")  # Output: Hello, Bob!

Lưu ý khi sử dụng đối số mặc định

Đối số mặc định phải đứng sau đối số không mặc định

Khi định nghĩa hàm với các đối số mặc định, bạn phải đảm bảo rằng các đối số mặc định đứng sau các đối số không mặc định. Nếu không, Python sẽ báo lỗi SyntaxError.

Ví dụ về lỗi khi đối số mặc định đứng trước đối số không mặc định

# Sai: Đối số mặc định đứng trước đối số không mặc định
def greet(message="Hello", name):
    print(f"{message}, {name}!")

# Đúng: Đối số mặc định đứng sau đối số không mặc định
def greet(name, message="Hello"):
    print(f"{message}, {name}!")

Đối số mặc định là các đối tượng có thể thay đổi

Khi sử dụng các đối tượng có thể thay đổi (như danh sách, từ điển) làm đối số mặc định, bạn cần cẩn thận vì chúng có thể giữ lại giá trị giữa các lần gọi hàm.

Ví dụ về đối số mặc định là danh sách

def add_item(item, item_list=[]):
    item_list.append(item)
    return item_list

# Gọi hàm lần đầu
print(add_item("apple"))  # Output: ['apple']

# Gọi hàm lần thứ hai
print(add_item("banana"))  # Output: ['apple', 'banana']

Cách khắc phục vấn đề với đối tượng có thể thay đổi

def add_item(item, item_list=None):
    if item_list is None:
        item_list = []
    item_list.append(item)
    return item_list

# Gọi hàm lần đầu
print(add_item("apple"))  # Output: ['apple']

# Gọi hàm lần thứ hai
print(add_item("banana"))  # Output: ['banana']

Kết hợp đối số mặc định với các loại đối số khác

Bạn có thể kết hợp đối số mặc định với các loại đối số khác như đối số vị trí, đối số từ khóa, đối số tùy ý, v.v.

Ví dụ về kết hợp đối số mặc định với đối số tùy ý

def greet(name, message="Hello", *args):
    print(f"{message}, {name}!")
    for arg in args:
        print(arg)

# Gọi hàm với đối số tùy ý
greet("Alice", "Good morning", "How are you?", "Have a nice day!")

Hàm với giá trị trả về

Hàm trong Python có thể trả về giá trị bằng cách sử dụng từ khóa return. Nếu không có giá trị nào được trả về, hàm sẽ trả về None.

Ví dụ về hàm với giá trị trả về

def add(a, b=5):
    return a + b

result = add(3)
print("Kết quả:", result)  # Output: 8

Hàm ẩn danh với đối số mặc định

Hàm ẩn danh, còn được gọi là hàm lambda, cũng có thể sử dụng đối số mặc định.

Ví dụ về hàm lambda với đối số mặc định

# Hàm lambda để cộng hai số với đối số mặc định
add = lambda a, b=5: a + b
print("Kết quả:", add(3))  # Output: 8
print("Kết quả:", add(3, 7))  # Output: 10

Phạm vi của biến và đối số mặc định

Phạm vi của biến xác định nơi mà biến có thể được truy cập. Đối số mặc định có phạm vi toàn cục nếu chúng được định nghĩa bên ngoài hàm và phạm vi cục bộ nếu chúng được định nghĩa bên trong hàm.

Ví dụ về phạm vi của biến và đối số mặc định

x = 10  # Biến toàn cục

def my_function(a, b=x):
    print(a, b)

my_function(5)  # Output: 5 10

x = 20
my_function(5)  # Output: 5 10 (giá trị mặc định của b không thay đổi)

Kết luận

Đối số mặc định là một tính năng mạnh mẽ trong Python, giúp hàm trở nên linh hoạt và dễ sử dụng hơn. Bài viết này đã giới thiệu chi tiết về cách định nghĩa và sử dụng đối số mặc định, cách hoạt động của chúng, các ví dụ minh họa, và các lưu ý khi sử dụng đối số mặc định. Hy vọng rằng bạn đã có thể hiểu rõ hơn về đối số mặc định trong Python và sẵn sàng viết mã Python của riêng mình.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Có thể đổi tên cơ sở dữ liệu không? Nếu có, bạn sẽ đổi tên cơ sở dữ liệu như thế nào?

entry

Làm thế nào để gọi hàm constructor của lớp cơ sở từ lớp con trong TypeScript?

entry

Nêu một số đặc điểm của Python?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào

Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely