Khóa học python

Đối số vị trí (positional) của hàm trong Python

0 phút đọc

Trong lập trình Python, đối số vị trí (positional arguments) là một trong những cách phổ biến nhất để truyền giá trị cho các tham số của hàm. Đối số vị trí được truyền cho hàm theo thứ tự mà chúng được định nghĩa trong danh sách tham số của hàm. Bài viết này sẽ hướng dẫn chi tiết về đối số vị trí của hàm trong Python, bao gồm các chủ đề như định nghĩa đối số vị trí, cách sử dụng đối số vị trí, sự khác biệt giữa đối số vị trí và đối số từ khóa, các ví dụ minh họa, và các lưu ý khi sử dụng đối số vị trí.

Định nghĩa đối số vị trí

Đối số vị trí là các đối số được truyền cho hàm theo thứ tự mà chúng được định nghĩa trong danh sách tham số của hàm. Khi gọi hàm, bạn phải truyền giá trị cho các tham số theo đúng thứ tự mà chúng xuất hiện trong định nghĩa hàm.

Cú pháp định nghĩa đối số vị trí

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

Ví dụ về định nghĩa đối số vị trí

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

# Gọi hàm với đối số vị trí
result = add(3, 5)
print("Kết quả:", result)  # Output: 8

Cách sử dụng đối số vị trí

Khi gọi hàm, bạn phải truyền giá trị cho các tham số theo đúng thứ tự mà chúng xuất hiện trong định nghĩa hàm. Điều này giúp đảm bảo rằng các giá trị được gán đúng cho các tham số tương ứng.

Ví dụ về cách sử dụng đối số vị trí

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

# Gọi hàm với đối số vị trí
greet("Alice", "Good morning")

Sự khác biệt giữa đối số vị trí và đối số từ khóa

Đối số vị trí (positional arguments) được truyền cho hàm theo thứ tự mà chúng được định nghĩa, trong khi đối số từ khóa (keyword arguments) được truyền bằng cách sử dụng tên của chúng. Đối số từ khóa giúp mã nguồn trở nên rõ ràng hơn và cho phép bạn bỏ qua thứ tự của các tham số.

Ví dụ về đối số vị trí và đối số từ khóa

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

# Gọi hàm với đối số vị trí
greet("Alice", "Good morning")

# Gọi hàm với đối số từ khóa
greet(name="Bob", message="Good evening")

# Gọi hàm với đối số vị trí và đối số từ khóa
greet("Charlie", message="Hi")

Kết hợp đối số vị trí và đối số từ khóa

Bạn có thể kết hợp đối số vị trí và đối số từ khóa khi gọi hàm. Tuy nhiên, đối số vị trí phải được truyền trước đối số từ khóa.

Ví dụ về kết hợp đối số vị trí và đối số từ khóa

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

# Gọi hàm với đối số vị trí và đối số từ khóa
greet("Alice", message="Good morning")

# Gọi hàm với đối số từ khóa và đối số vị trí (sẽ gây lỗi)
# greet(message="Good morning", "Alice")  # SyntaxError

Đối số vị trí tùy ý

Python cho phép bạn định nghĩa các hàm có thể nhận một số lượng đối số vị trí không xác định bằng cách sử dụng cú pháp *args. args là một tuple chứa tất cả các đối số vị trí được truyền cho hàm.

Cú pháp định nghĩa đối số vị trí tùy ý

def function_name(*args):
    # Khối mã của hàm
    pass

Ví dụ về đối số vị trí tùy ý

def add(*args):
    return sum(args)

# Gọi hàm với đối số vị trí tùy ý
result = add(1, 2, 3, 4, 5)
print("Kết quả:", result)  # Output: 15

Đối số vị trí với giá trị mặc định

Bạn có thể kết hợp đối số vị trí với giá trị mặc định để tạo ra các hàm linh hoạt hơn. 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.

Ví dụ về đối số vị trí với giá trị mặc định

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

# Gọi hàm với đối số vị trí và giá trị mặc định
greet("Alice")
greet("Bob", "Good evening")

Lưu ý khi sử dụng đối số vị trí

Đối số vị trí phải được truyền theo thứ tự

Khi gọi hàm, bạn phải truyền giá trị cho các tham số theo đúng thứ tự mà chúng xuất hiện trong định nghĩa hàm. Nếu không, Python sẽ báo lỗi hoặc gán giá trị sai cho các tham số.

Ví dụ về lỗi khi truyền đối số vị trí sai thứ tự

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

# Sai: Truyền đối số vị trí sai thứ tự
# greet("Good morning", "Alice")  # Output: Good morning, Alice!

# Đúng: Truyền đối số vị trí đúng thứ tự
greet("Alice", "Good morning")  # Output: Good morning, Alice!

Đối số vị trí phải được truyền trước đối số từ khóa

Khi gọi hàm, đối số vị trí phải được truyền trước đối số từ khóa. Nếu không, Python sẽ báo lỗi SyntaxError.

Ví dụ về lỗi khi đối số vị trí đứng sau đối số từ khóa

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

# Sai: Đối số vị trí đứng sau đối số từ khóa
# greet(message="Good morning", "Alice")  # SyntaxError

# Đúng: Đối số vị trí đứng trước đối số từ khóa
greet("Alice", message="Good morning")

Kết hợp đối số vị trí với các loại đối số khác (Combining Positional Arguments with Other Argument Types)

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

Ví dụ về kết hợp đối số vị trí với các loại đối số khác

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

# Gọi hàm với đối số vị trí và các loại đối số khác
greet("Alice", "Good morning", "How are you?", "Have a nice day!", age=25, location="New York")

Hàm ẩn danh với đối số vị trí

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

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

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

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

Phạm vi của biến xác định nơi mà biến có thể được truy cập. Đối số vị trí có 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ố vị trí

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ố vị trí là một tính năng quan trọng trong Python, giúp bạn truyền giá trị cho các tham số của hàm theo thứ tự mà chúng được định nghĩa. 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ố vị trí, sự khác biệt giữa đối số vị trí và đối số từ khóa, các ví dụ minh họa, và các lưu ý khi sử dụng đối số vị trí. Hy vọng rằng bạn đã có thể hiểu rõ hơn về đối số vị trí 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